Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by ORSO2001

  1. Hello EduMarg, thanks for replay...yes this clarify a lot. other question is about the "Maximal number of files in SD" that I can set (32_512)...one of the options is for "dat sampler files"...If I have 10 trends, then I will have 10 subfolder in the data sample folder, the maximal number of file is referred at the sum of all 10 folders or is referred at the single folder? thanks
  2. I am totally agree...is what I do and I don't have surprise when the real project is installed and running.
  3. Dear All, I my next project I have to check and record the weight inside some SILO (10); I will use UINT32 tag for the weight and a UINT8 for the filled %; I need to sample these value every minute and create a daily files records, one for each SILO; I will show these information in 10 individual trend graphs (one for each SILO)...at the end I will have 10 folders (one for each data sampler). My question is: doing in this way I will have problem with the PLC memory capacity?...or all will works without problem? sorry but is the first time that I use the data sampler...I checked the example and how this works is clear...I have only a doubt about the memory. regards
  4. Dear Skout, for each second the PLC do a lot of complete cycles; if you let active the BIT for a request, like "store DTI to file" this will return the error "-35" that means too many request. I don't know your complete sketch but you have to arise only one time this command and check for the "answer"...usually you can add a simple reset (R) of the BIT command immediately after the UDFB "store DTI to file" and enable another BIT to check the result with "equal" that will do other stuff. same thing for the instructions INC and DEC etc...if you let active the BIT these will increase/decrease by one every PLC cycle...than wil be very fast. EDIT: as SARAGANI wrote to avoid that two instruction are done very close you can check the BIT "SD BUSY" or you can use your own BIT...depends on how you want manage these situation.
  5. ok...in my projects I created a DTI of 1 row that is referred at a struct called EVENT; in this struct at the end I included 4 strings variables; DATE, TIME, DEVICE, EVENT. DATE and TIME are used to know when the action was done; DEVICE is what was modified; EVENT is a "long" string that contain the informations...for example last value and new value...or other things. every time that something happened you will trig a BIT to populate the DTI and save (append) the DTI in a file in the SD....this file will be your Events LOG file. Usually I do this to know the power ON of the PLC....and save every x minute the ON status of the PLC to understand if it is powered or not...to know who is logged in or logged out...to know what was done...etc to do this I create an UDFB that accept 4 functionIN...(DATE, TIME, DEVICE, EVENT); in this way I can pass or static strings or composed by what I need to know/insert. to know if something was modify I usually create a local copy of the information that the HMI has at the moment and I verify if this is changed or not...obviously depends what you are managing as data. I hope that is clear enough
  6. dear remy, I am not sure that I have understood what you need...want you save an "event" if the users have modified something in your program like a temperature set point or a number value?...also if a user has done the login and logout?
  7. Hi, for example...you have 2 variables Uint16 (A = higher, B = lower) and 1 variable Uint32 (C)... you have to multiply the A for 65536 and store the result in C...after you have to add B in C. I think that also you can use some buffer functions...but with first only 2 actions are needed.
  8. dear Roger, i think that the best way is create a general structure called SERVO that include all the variable types needed...after you have to define 4 global struct SERVO variale (one for each servo) and 1 global struct variable for the HMI...after this in the ladder you will create your flow that will pass/store the servo structure to the HMI servo structure. I hope that I explained clearly the thing.
  9. Dear Saragani, just to give you more info...in this last project I have had other issue that was already reported at your service department...when I was trying to duplicate an HMI page the program won't worked and reboot itself....at the end I found the one element of the HMI (pdf elemet) seemed "locked" , no resizing was possible...not file assignement was accepted...at the end I cancel the HMI and create a new one and it start to work... in this last I created a UDFB ...as I wrote I created 10 Fubction OUT variables (8 BIT and 2 UINT32)...and 10 was count in the local function...but after a compile I have had an error like "max allowed output..."...these variables have a composite name like "BIT_Alarme...."...in many test that i tried to understand I observed, but I am not sure, that with "long variable name" I were able to inser 8 with short name like "a" or "b" I were able to insert 9.... Now after a reinstalling of the unilogic I have the UDFB with 10 and works (see attached)
  10. dear All, I tried to install again the Unilogic...now seem works...accept until 10 variables
  11. Dear All, I created my UDFB where I need to have 10 Function Out variables (8 BIT, 2 UINT32)...I am not able to create, in any way, these 10...the "program" sometimes let me insert 9 sometimes 8...ok...I can create an array of BIT and other of UINT32 and after the UDFB store the value in the real variables...but why I can't create 10 Function out? and why sometimes 8 and sometime 9? EDIT: sorry...I can't create an array for the Function out...then what I can do? EDIT2: I can create a INT8 variable (GLOBAL) use this both as Function in and Function out...set the single BITs and check this after the UDFB...right? thanks
  12. Hi NoamM, thanks for answer...yes this is what I thought...I was searching if an already existing function, that maybe I was missing, could do this. ok ...no problem
  13. Dear All, Is there a simple way to find if a specific value is present more than 1 time in a DT column? thanks
  14. Dear Saragani, yes..is the UFDB where I put the aperiodic element. thanks for explanation
  15. Dear All, I am using the last version 1.23.25 and every time that I open my last project , that is in progress, I have one of my UFDB, always the same, that show the icon as this was modified...I tried "rebuild all" but is the same. If I well remember I have had the same in the past (maybe 1.15.xx)...but I don't remember how I fixed. just for information... until now my project works properly. thanks
  16. ok...I found what I have to do....and also reading again my first post this has no sense...sorry usually I used unitronics as master using the "advanced modbus"...now I am trying to use "periodic/aperiodic" and at this point I have few questions: - using "advanced modbus" if a data exchange don't works I use an instruction to empty the buffer to try again...using "periodic/aperiodic" this works automatically or I have to do something? - when I compile the project I have a warning like: Do NOT place "COM: MODBUS" Ladder elements on the bus bar, or anywhere it will be continuously activated. Use a delay of 10-50 msec between requests. Click on "Find All Elements" to locate all of the instances where it is used in the program ...I placed a "P" contact and a "modbus aperiodic trigger" to do some test...this warning is for safety or I am missing something? thanks
  17. Dear Alls, I have to set up my Unistream to works at same time as Slave by Modbus RTU TCP and Masert by Modbus RTU RS485. I already wrote the program part about slave (Modbus TCP) than I set PLC communications->Protocols->MODBUS->Slave->Panel Ethernet...I have set the registers and "wrote" the code...now I am approcing the Slave side...my question is: I must use/set the same PLC communications->Protocols->MODBUS->Master->RS485 or I can mix/use the first with the PLC communications->Physical->Serial COM ? I hope that my qestion is clear enough. thanks
  18. Dears All, Sorry I don't understand the real difference between Export Function and Add to library...except the location of the saved "files" these seems the same (at my eyes). someone can explain/clarify please. thanks
  19. Dears Saragani and Flex, thanks for the answers. Was just to be sure. regards
  20. Dears All, just a quick question...I create 3 screens: MAIN, secondary A and secondary B. Main can "load" one of the secondary screnns by two buttons that include the "load screen" action (no retained bit to load the screens). If during a test in the PLC I select a secondary screen and I found that some modification is needed in the program and I done these modification and I do "download all" ...what should be the screen that I have to see in the PLC after the reboot?...main or the secondary where I was? I done this question because the screen that I have, after the reboot by "download all" is the secondary; if I turn OFF and ON the PLC I have the MAIN as first. thanks
  21. Dear Saragani, Yes of course. yes of course...and ok you answered at my question...if the function_out is managed by pointers is like passing the variable as reference:"Furthermore, in one call I can call Foo(A, &A), and in other call (A, &B).". regards
  22. Dear Saragani, I am reading this topic and I want to be sure that I understood what you mean (and I have a request); for example I have 2 global variables int A and int B and I create an UDFB that accept 2 function_in variables (inside the function the global variables don't be present) then the UDFB will work as: void UDFB (int X, int Y){ X=X+Y; Y = X+Y; } in this case the passed variables A and B will not change because they were passed by value and not by reference....right!? That I know if I want change the value of a global variable, that still be not present inside an UDFB, I have to use a function_out variable...that will work as: int UDFB (int X, int Y){ return X+Y; } in this case if I use as function_in and function_out the same variable this will be affect by the UDFB operation...right!?...maybe not with the "return" instruction but with many pointers as the function_out are. Otherwise...how I can pass a global variable by reference as: void (int &X, int &Y){ X=X+Y; } Then without function_out but that will have affect for the passed global variables?...I hope that my explanation is clear.
  23. Hello Arthur, i think that you have to work in reverse mode; after digit the "small" string that you want find you have to push the "enter" button in the keyboard...at this button you can couplead an action that will set one BIT...this BIT will enabled a start an UDFB this function will check the lenght of the String that you have insert and load the Strings in the colum of your DT, one by one, and check the firstly positions (the same quantity of your String)...if the result is ok you will stop the search and return the line where the complete string is stored. I hope that I explained clearly what I mean.
  24. Dear Meeg, have you tried to take a look at the modbus advance examples (RS232, 485 and TCP); also, have you tried with the video tutorials? I found these very helpful for me and now all my projects that include modbus work very well...both as slave, master or together. how ever if you will post the part of the code where you are trying to use the parser (write and read), maybe, we will find the issue.
  • Create New...