Hello, I have a counter that increments an INT value once per minute I want to display this value in Minutes until 60, then Hours/Minutes thereafter on the HMI Codesys V3.5 SP16 I can divide the minutes by 60 to get hours, but then the minutes is still more than 60. Example: a process has run for 350 Minutes. I need to display "5 Hours 50 Minutes" But if it's only been 45 Minutes, I don't want "0 Hours 45 Minutes" , just "45 Minutes"
Hello, I have a counter that increments an INT value once per minute I want to display this value in Minutes until 60, then Hours/Minutes thereafter I can divide the minutes by 60 to get hours, but then the minutes is still more than 60. Example: a process has run for 350 Minutes. I need to display "5 Hours 50 Minutes"
Intetrested... I added the CmpApp library, but cannot find the AppGetApplicationInfo you mention.
Hello! I would like to display the project name on the HMI The project name contains the version number That way, a tech knows which version is loaded on the PLC. Is the a standard way to display this, or do I have to hard-code into the HMI (not ideal)?
00 I have the same issue, and no answers on any forums that I can see.
Hello, I have a PLC in a remote location. I can connect to it, but when I use a different PC, it asks me to re-download to the PLC - which will a) interrupt production and b) cause version issues. Codesys being open-source, if someone else has made changes, I need to be able to connect, upload the current project, compare it with mine and then decide what next. Every time I connect, it says Warning: An application 'Application' is currently in RUN mode on the PLC. As there is no matching compile...
Hello, I have a PLC in a remote location. I can connect to it, but when I use a different PC, it asks me to re-download to the PLC - which will a) interrupt production and b) cause version issues. Codesys being open-source, if someone else has made changes, I need to be able to connect, upload the current project, compare it with mine and then decide what next. Every time I connect, it says there is no project on the target and must download - which I know is not true. What am I doing wrong?
I use these Teltonika routers with ZeroTier rather than OpenVPN - works better for me. I can show you how if you like?
Hello, Depends on the architecture of your PLC. If the PLC is a PC-based item with a normal desktop environment, then you probably can. I find it simpler to install an IIoT Router in the panel, and use an encripted VPN to link to my office PC / Laptop on demand.
Thankyou. worked fine.
OK! PSA for others: Data type INT fails because it has no decimal places, and using it in the math when it is any value below 1 simply returns 0. As it will always calculate to 0.xxx in the first part of the math, only the 0 without any decimal places is passed to the second part of the math - and anything multiplied by 0 is 0! I changed PumpFillSpeed to REAL, and then used REAL_TO_WORD.
Hello, I need to take an INT input, and convert it to a WORD value. VAR DRV2Speed : WORD; //IO card takes a WORD where 16000 = full 10V output (equivalent to 50Hz) PumpFillSpeed : INT; //Users enter a value between 0 and 50 END_VAR IF <conditions> THEN DRV2Speed :=INT_TO_WORD((PumpFillSpeed/50)*16000); END_IF </conditions> According to me this should work - but it stays at 0, no matter what. What am I doing wrong?
Hello, I need to take an INT input, and convert it to a WORD value. VAR DRV2Speed : WORD; //IO card takes a WORD where 16000 = full 10V output (equivalent to 50Hz) PumpFillSpeed : INT; //Users enter a value between 0 and 50 END_VAR IF <conditions> THEN DRV2Speed :=INT_TO_WORD((PumpFillSpeed/50)*16000); END_IF </conditions> According to me this should work - but it stays at 0, no matter what. What am I doing wrong?
Hello, I have a simple TON timer. It is watching prime loss for a pump. The operator can set the delay via the HMI, it is an integer (seconds) As the TON uses milliseconds, we then multiply the entry by 1000 to get seconds. Seems simple, but... VAR PrimeTimer : TON; primetime : INT; END_VAR PrimeTimer(in:=State>0 AND FlowRate<MinimumFlow,pt:=INT_TO_TIME(primetime *1000)); For an entered 15 seconds (VAR primetime:=15;) the timer reads 49d17h2m26s760ms !!!! What am I doing wrong?