Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


NoamM last won the day on January 4

NoamM had the most liked content!

Community Reputation

5 Neutral

About NoamM

Profile Information

  • Gender

Recent Profile Visitors

697 profile views
  1. Hi Swervomotor, Currently its not possible to use a tag for the file name. I will add your feature request to Unitronics R&D. thanks.
  2. Hi sgull, Thanks for the feedback. I will pass your request for this feature.
  3. Swap Bytes Extended

    Hi snizami, From the Help section:
  4. Connect to MySql server with "SQL Connector"

    In the link I already mentioned in the previous replies ( "SQL Query" function block usage) there is already a working "SQL Connector" configuration, just change the IP, Port, Username & Password. Use the information in this link "Unitronics Technical support" on the SQL section. There is a guide written by Unitronics Support that will help you troubleshot your issue, UPDATE: The issue resolve and ciprian.savoiu is able to query his DB (informed us by mail).
  5. Connect to MySql server with "SQL Connector"

    Hi, Some info about the "SQL Connector" can be found in this answer "SQL Query" function block usage. What is the status in your query struct ("Create_SQL_Table") after using "SQL Query" Ladder function?
  6. Our QA teams were able to reproduce the issue, an official bug was opened and will be handled in the near future. Thank you hotwires, we appreciate your report.
  7. Hi, checking the issue. Will update ASAP.
  8. Hi, - Max number of Data Samplers is 32. - Max number of feeds in a Data Sampler is 16.
  9. Hi, There is an "Take Screenshot" action you can use in the "Actions" module. Example: You can use the "Event Trigger" assigned tag within your Ladder in order to initiate a screenshot.
  10. Happy to help. Just to elaborate on D Green comment. The issue is a wrong internal logic on the username/password mechanism. It exist until OS version 1.22.X but not likely to happen (the combinations of terms to it to exist is rare). This issue will be fixed in version 1.23.X. Workaround - Force upgrade the UniStream OS.
  11. Intro A UniLogic application writer need to keep on some ground rules in order to get the best performance from his UniStream. That’s because a GIF size in is calculated in the next manner: "Size in memory" = Width * Height * Frames * Bit depth Meaning that using a GIF without considering it dimensions can affected badly on the UniStream. ?How do I manage my GIFs Let's move on any of the equation elements and see how we can reduce them. Our start point is the "Damper.GIF" which dimensions are: - By right clicking on the GIF and choosing "Properties" -> "Details" Width – 1000 Height – 1000 Bit depth – 8 :By entering this link (ezgif.com) and choosing the GIF with "Choose file" and then "Upload". In the page that opened you can use - To resize the GIF Width & Height. The values that you want to resize to them are the size of the widget linked to the GIF in UniLogic.Enter the values and press "Resize it!". When it's done in the frame below you can press on "Save" to download it to your PC :(Frames – You can use the same website to remove some unneeded frames (less animated GIFs). In the next tab (1 Pressing on "skip" (2 or 3) can remove the frame (first or fifth). After any change you can use "Animate it!" and see your editing result :If we edit the example GIF to, let's say 100x100 with 5 frames (the application user can hardly tell) we save Old 1000 * 1000 * 7 * 8 = 56,000,000 bits New 100 * 100 * 5 * 8 = 400,000 bits .That's 55,60,000 bits or 6.95M bytes of memory ?To what values do I need to aim A user needs to aim as lower as possible because the memory divides between his other application features and it depends on the number of images/GIFs on the current screen. As a rule always aim to a GIF that is size is no higher than 50k
  12. I recently came a cross with a UniLogic application that use large structs. For example, one struct was composed of 80 members, and most of the members type was INT16, like so: In memory the struct look like this: struct MyStruct //struct size is 80 * 4 = 320 bytes { INT32 ID; //size 4 INT16 Val_1; //size 2 CHAR[2] padding1; //size 2 INT16 Val_2; //size 2 CHAR[2] padding2; //size 2 //…. INT16 Val_79; //size 2 CHAR[2] padding79; //size 2 } notice the padding that added to the struct. That's common in software in order to align the memory so work will perform more effectively. This padding cause every 2 bytes in an INT16 type an extra "weight" of 2 bytes – so every INT16 is 4 bytes. One can think that the struct size is 4 + 2 * 79 = 162 bytes, when in fact it 320 bytes, almost two times bigger (!). Now, let's try the next approach: In memory: struct MyStruct_NEW //struct size is 4 + 2 * 79 = 162 bytes { INT32 ID; //size 4 INT16[79] Val_Arr; //size 158 } And we got a struct size 162 bytes, as intended. Just imagine we use struct "MyStruct" in a 3,000 line Data Table, we will waste almost 0.5M bytes (3,000 * 158), while "MyStruct_NEW" waste nothing. For conclusion, when creating structs in UniLogic consider the padding factor in order to reduce your PLC memory consumption.
  13. "SQL Query" function block usage

    When you are using "SQL Query" function block the first parameter is Query that belongs to an SQL data base. for example: In this example I've created a Query named "My Query" that belongs to data base "Database1". When I will use "SQL Query" function block with "My Query", UniStream will connect to "Database1" according to the specifics I gave it - IP =, Port = 1234, etc... In your case you preforming an "Insert" query, meaning your SQL client (the UniStream) will write data to the SQL Server, so you don't need to assign Outputs tags because no data will return from the server. You do however can see the execution state in your query "SQL Query Struct". In my example I have one "SQL Query Struct" for "My Query": Here I can check if the query executed properly and what is the query status report. Using Outputs - If for example I preformed the next query: Select top 1 PhoneNumbersColumn from MyCustomerTable I'm actually reading data to my SQL client (the UniStream) from my SQL Server, so I should assign Outputs tag for the 1 (due to "top 1") value the server returning. More about SQL in here. Using Parameters - If for example I preformed the next query: Select top 1 PhoneNumbersColumn from MyCustomerTable where CustomerID = @ID I'm requesting my SQL client (the UniStream) to take "@ID" value from my Parameters , and use it in the query. So "@ID" can be changed in each Ladder cycle and I can use the same query to request "PhoneNumbersColumn" according to a dynamic "CustomerID". The "@ID" called a placeholder and you can track your placeholders in this screen: There is more information in the UniLogic help:
  14. Change VNC server port

    Hi Jack, It's not possible to change the VNC server port on UniStream.
  15. "Fill Array Part" Ladder function

    You can always use the Ladder function "ears" tool-tip in order to understand better the function. The tool-tip visible when hovering with the mouse courser over the ear. In "Fill Array Part" case: A - Array (destination), The data is written into this array B - Offset in array C - Operation (insert or overwrite D - Value to use. E - Number of times to repeat operation