Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by Saragani

  1. Saragani

    Trend To SD

    Maybe you are not appending to the file, but overwriting it? It's been a while since I last used the SD elements on VisiLogic.
  2. Saragani

    Error in region with no rungs

    Please send to project to our support, so me or someone else from the R&D will look at the project and will fix the problem.
  3. Saragani

    Alias name array in input cards

    The way alias name work is different than some other softwares. I've seen some softwares that supports both features: Give a name (Alias) to a sub member of a strcut for easier reading (instead of seeing UID-TO8RO8_1.Inputs[5] you can just call it "Air Conditioner" Link in IO to inputs or outputs to existing tags. I think that this is what you thought that will happen. Since UniLogic works with the first option, then giving an alias name to a tag with a name of an existing tag will cause a conflict, then it is forbidden. What you can do, is give your Alias name a different name (For example Hello2) Then use the Find and Replace in order to replace Hello with Hello2 Then delete Hello (since it is no longer in use, assuming it is an array you have created). Rename the Alias name from Hello2 to Hello.
  4. How about "Find in Array", and look for 1?
  5. Saragani

    UniLogic for macOS

  6. No, as much as I remember it's just the filename. You cannot store it in sub folders.
  7. Saragani

    Hiding Remote locations on your PC from crooks!

    Nice one. 👍
  8. I'm not sure why the status doesn't change to 0. Does it stay as 1 (in progress) or change to negative number (error)? For converting the current date into a string, I would use a UDFB someone wrote (You can find it in the examples). Download the example projects from our website. You should find a project called: UniStream_070_RTC_To_ASCII.ulpr Open that project, and export the function called RTC to ASCII. The re-open your project and import that function. Use that imported function (UDFB) in your ladder. The function accepts a format as input, and outputs the result as string. If you pass a format = 13, then you will get the date as MM-DD-YY, for example, 05-30-18. and if you pass format = 11, then the date will be as DD-MM-YY, for example 30-05-18 After you have that string, you can use "Inset String" element for adding the enreg suffix to the result string. If you need 4 year digits, no separator, and year appearing first, then you can edit the UDFB code, and add another format (like 14), that will do what's needed.
  9. It appears that you have collapsed your region (and expanded your Region comment). Click on the "Region Name" (nazev oblasti) in order to expand the region. Click on the Comment (Komentar) in order to collapse the comment. You have triangles near the region name and comment that suggests if its expanded or collapsed.
  10. "I will be comparing the status of the Store DTi to 0 just before starting the storage, if it's ok we can continue storing if it's not 0 it will wait ?" No. This will only work if the last request succeeded. If it ended with an error, then you will not be able to do any requests. You should check that the status is not 1 (in progress), and / or also the SD Busy bit.
  11. Under System.SD Files you have a bit called "Date DT Busy". If I understand correctly, then you need to use it. If you have 2 writes happening at the same time, then you will cause problems. In every file system, a file can have multiple readers, but only one writer. You can also use the status of the Store DTI. 0 means success (or no errors), 1 means in progress, and any negative number means error. As soon as you call the Store DTI to file, the status changes from 0 to 1, so you can check the value before trying to execute another write. When loading a DTI from file, you should also check the status (so no read is in progress, because either the file might be in use, or the table is currently being loaded from file.
  12. Saragani

    Exporting and Importing Modules issue...

    Hi, This is not a bug. Each tag and UDT have a unique ID (in this case, a GUID). Upon import, we look for tags with the same ID and see if both match in definition (and if so, we don't create a new tag, but use the existing one). I think (I don't remember, and I must look the code for confirming) that if a matching tag with the same ID is not found, then we look for a tag with the same name and then check if it matches. The same logic is being used when you copy paste something (like HMI element or a rung etc). Lets say you've copied a Binary Image element, deleted the original element, and then changed the linked bit to an Int16. You would want to preserve the working state of the copied element on paste, but on the other hand, not create a new Bit tag on every paste. The copied element can be either pasted on the same program, or on a different one. This is why we do it on both copy and paste.
  13. The idea was to protect the user from accessing an invalid cell index. You can use Load From Array and Store In Array elements in order to get or set values in array dynamically.
  14. You can define how many digits will show in a numeric box. You should have a property called "Decimal Precision which defines how many numbers will appear after the dot. The default is 3, so the number will look like: -9999999999.999 The bold part is what you control (just like with Int, but with Int, the entire number is divided by 10, 100, 1000 etc, so 65535 becomes 655.35 or 65.535). In Int16 the max number of digits is 5, and in Int32 it's 10 if I recall correctly. However, with Real numbers, you can get up to numbers like 10^38, and you can also get to numbers like 10^-38 (0.00000000000......00001) The next version of UniLogic will support Exponential Notation on Web and HMI, so numbers like 12345678901 will become 1.234E10 (when the decimal precision is 3. You can get more digits after the dot if you change the precision). If that exponential notation good enough for you? Besides that, you can reduce the number of your Numeric box. You will see the exclamation mark, but it has no hard. It just notifies you that your numeric box might not be large enough. BR, Saragani
  15. Saragani

    Cannot delete data sampler

    Can you send the project to the support and I'll look into it? Thanks.
  16. Saragani

    "HMI Overload" in version 22.13

    OK. We have an open bug on this issue, however the QA was not able to reproduce it. Do you have a project that you can share, or a history file that I can open? Do you know if old history files, created before version 1.23 (with old firmware) show the date correctly? (Meaning old history files shows the date and new history files don't), because if that;s the case, then I have a clue why it happens, and then I can instruct the QA how to reproduce it.
  17. Saragani

    "HMI Overload" in version 22.13

    Is the invalid date in hmi or web server?
  18. I'm not sure WinZip can extract rar files, but WinRar and 7Zip can.
  19. You are talking about doing a SIN-1 in VisiLogic, right? Doesn't VisiLogic have ASin under the Ladder Float -> Trig functions?
  20. OK. But the index suggestion makes it that only one layer is visible (and this most likely not the case when people use layers). Some people use the layer in order to make a Message Box (or a popup window). It pops over the screen content, while the content below stays visible. Defining a set to Booleans (in this case 8), also requires a lot of Boolean tags to be defined, and it is hard to handle. Here is my suggestion (I'm still not saying that it will be implemented, it is just a suggestion). Each screen will have an optional tag, which is a "bitmap" of the visible layers. Assuming there are only 8 layers, then an 8 bit number is enough. If that tag is not set, or it's value is -1 (on a signed Int 8), or 255 (on an unsigned int 8), then all layers are visible. Value = 0 means no layer is visible (since all bits are 0). 1 -> Layer 0 is visible 2 -> Layer 1 is visible 3 -> Layer 0 and 1 are visible (Each layer visibility is depended on the value of the related bit in that tag value). This makes it easy enough to handle and understand without defining a start state and several other states that you defines the layers visibility. What do you think?
  21. I confirmed that it happens, and I understand why: When you change the IP address then it conflicts with the default gateway and vice versa. (By conflict, I mean that the first 3 octets of the IP Address and the default gateway do not match), so it reverts them back. We'll check this issue, and look for a possible solution. For now, an official bug record was opened.
  22. Please try to be specific with information / definition like: * How you define the initial state of the layers visibility for a screen when it loads (where you define it and how? Note: this is not possible with Custom Controls, since they have layers too, so if placed in a screen, then there would be layers inside layers (so controlling visibility would affect only the screen). * How would you change the visibility for one or more layers when after a screen already loaded. I can't promise that it will be added to the features list (but it is worth trying)
  23. Saragani

    Cominbing two 16 bits to get a 32 bit

    Anyway with buffers it's 3 actions: Copy tag to buffer: From low, offset 0 to buffer Copy tag to buffer: From high, offset 2 to buffer Copy buffer to tag: From buffer, offset 0, length 4, to Int32 or UInt32
  24. Saragani

    Cominbing two 16 bits to get a 32 bit

    You can also just put a 32 bit tag in your modbus operation, and the PLC will read 2 registers instead, (if you give it address 0, then it will read both 0 and 1). Then, assuming that order of the high and low on the encoder (the endianess of the numbers) is the same as in the PLC, then it would work fine (if not, them the high and low 16 bits numbers will be flipped, and then you could better have to read them separately, and do what ORSO suggested)
  25. No, The Layer is just a feature for creating layered UI (for example, you an element above another element). This feature allows you to hide a specific layer, so then you can see and edit the elements behind it. Feature like this exists in Siemens Step 7, Photoshop, and other UI designing softwares. You cannot control the layer visibility in code. If you want to do that, then you can submit a feature request and maybe it will be implemented in the future. For now, you can place the elements you want, inside a Custom Control, and use that custom control inside your screen. Then you can hide the entire custom control by linking it to a visibility bit.