Post by alexgooi on Codesys licensing explanation
CODESYS Forge
talk
(Post)
Dear Forum, We are currently switching to a native Codesys controller, and I'm currently trying to determine the correct license. I have a question regarding the Modbus instances. With the Standard S license this is set to 4 (See picture). In our projects we are using a lot of communications to Modbus servers using a Codesys Controller, for this communication I'm using the ModbusFB library (supplied by 3S) (see picture). In my project I would like to use more than 4 instances of the ClientTCP FB. My question is, is this now capped at 4 possible connections with the standard S license. Or do these function blocks have a different relation with the license? Some clarity on this topic would be very welcome. Thank you in advance
Last updated: 2024-02-15
Post by rossanoparis on CAN TX regression in Control for Raspberry Pi 4.21.0.0 with CAN API library (RX works, TX silently fails)
CODESYS Forge
talk
(Post)
Environment: Target: Revolution Pi (Kunbus RevPi), armv7l 32-bit OS: Raspbian GNU/Linux 9 (Stretch), kernel 4.19.95-rt38-v7 (SMP PREEMPT RT, built 2022-03-22) CAN: via SocketCAN (can0) Runtime: CODESYS Control for Raspberry Pi SL IDE: CODESYS V3.5 SP22 + patch 3 (previously V3.5 SP22 + patch 2, where everything worked with runtime 4.18.0.0) Library: CANBusAPI from the "CAN API" package, version 1.0.0.3 Summary: The setup worked correctly with V3.5 SP22 + patch 2 and runtime 4.18.0.0. After updating the IDE to SP22 + patch 3 and the runtime to 4.21.0.0, CAN transmission via the CANBusAPI library stopped working. Reception is unaffected. There are no error indications anywhere: the application runs normally and the CAN diagnosis reports a healthy bus. Systematic testing (below) shows the problem follows the runtime version, not the IDE update. Regression isolation: The same application (compiled under SP22 + patch 3, unchanged between tests) was downloaded to the same target with different runtime versions, changing only the runtime each time: 4.18.0.0: TX and RX both work 4.19.0.0: TX and RX both work 4.20.0.0: TX and RX both work 4.21.0.0: RX works, TX does not The behavior is fully reproducible in both directions (downgrading to 4.20 restores TX, upgrading to 4.21 breaks it again). Hardware, wiring, OS, project, and application code are identical across all tests. Diagnostic data (CANBusDiagnosis FB, while the application is transmitting on 4.21): ctSendCounter: incrementing normally ctTxErrorCounter: 0 ctRxErrorCounter: 0 eState: ERROR_FREE xBusAlarm: FALSE So the library accepts and counts the outgoing messages, no TX errors are reported, and the CAN controller state stays error-free, but the messages never reach the other nodes on the bus. Expected behavior: Messages sent via CANBusAPI (CANDriver / SendMessage) are transmitted on the bus, as with runtime versions up to and including 4.20.0.0. Notes: I am aware that the CAN API package (1.0.0.3, from 2016) is old; however, the regression is tied to the runtime version, since the identical binary works on 4.18-4.20. Questions: Is there a known change in CmpSocketCanDrv / CmpCAACanL2 between 4.20.0.0 and 4.21.0.0 that could affect TX via the CAN API library? Is runtime 4.21.0.0 still supported on Debian 9 Stretch (kernel 4.19, RT-patched), or is a newer OS required? If a minimum OS/kernel requirement was introduced with 4.21, is it documented?
Last updated: 2026-08-17
Post by kreisfilho on Stop raspberry from executing a plc program
CODESYS Forge
talk
(Post)
Hi guys, Can someone inform where in a raspberry pi are stored the codesys programs? I´ve been training the use of a RPI as PLC, which works pretty well, however while both the RPI and PC (running codesys) remain connected to the same network. The question is: how to run the codesys program downloaded to the RPI as a stand alone device (disconnected from the PC)? Thanks! Kreis
Last updated: 2023-08-23
Post by macros8 on Alarm Management - latched variable represented as Text list
CODESYS Forge
talk
(Post)
Hi all, in Alarm management you can latch some variable to show value within the alarm msg. It´s very useful sometime. But I´m wondering whether there is any possibility to represent that value as Text list. It´s quite common in other HMI tools and this is very useful in case of using some ErrorID for detail specification of error. Unfortunately I could not find any way how to do it but I believe that exists :) Thanks a lot. M.
Last updated: 2023-09-06
Post by vamsi on How to configure gateway for programming RPi 2B using Codesys
CODESYS Forge
talk
(Post)
I found out what I was doing wrong. I was entering the wrong IP in the gateway. I found that I have to enter the RPi's IP in the gateway field from this post https://forge.codesys.com/forge/talk/Runtime/thread/01703ca970/#d9f6 But I do not understand why it has to be the RPi's IP. Could anyone help me in clarifying this?
Last updated: 2024-07-10
Post by rmaas on Webvisu cliënt responsiveness
CODESYS Forge
talk
(Post)
hi, Does anyone know how to optimise the responisiveness of the web visualisation? When i open the webvisu on my laptop it is very responsive, no noticable lag. But when i open it on the HMI (web client) at the customer site there is a lag of +-500 when opening popups etc. The hmi used is: Phoenix Contact WP 6156-WHPS full hd Arm® Cortex®-A53, 1.6 GHz qt web browser The clients performance seems to be the problem, what can i do in my project to decrease the load for the client?
Last updated: 2024-09-28
Post by andrebrandt on BACnet dynamic create bacnet object
CODESYS Forge
talk
(Post)
Hi. I want to create a FB with bacnet objects. FUNCTION_BLOCK PT1000 VAR_INPUT System: STRING; In: REAL; Name:STRING; END_VAR VAR_OUTPUT Out: REAL; Out_St: Struct_PT1000; END_VAR VAR {attribute 'instance-path'} {attribute 'noinit'} Tag: STRING; Instance:DINT; //AnalogInn : WagoSysBACnet.FbAnalogInput_large(1); This works. Objectname is AnalogInn. identifier is 1 END_VAR I want to name object based on FB PT1000. In FB P1000, I want to write eUnits, Name and so on. How can i do this???
Last updated: 2025-01-15
Post by dogulas on Removing a symbol from the IEC Symbols Editor grid
CODESYS Forge
talk
(Post)
In the CODESYS IDE I have several symbols defined and I have IEC Symbol Publishing installed. On the IEC Symbol Publishing window and under the IEC Symbols Editor tab, I have dragged symbols from the tree on the left to the grid on the right. All this works fine. Now I want to remove one of the symbols from the grid on the right and I cannot see any way to do this. How can I remove a symbol from the grid on the right once I've added it?
Last updated: 2025-02-07
Post by kevinl on Login to Visu optional
CODESYS Forge
talk
(Post)
hello guys i am struggling with the "new" user management i have a visu that should be visible to everyone and without the need of a login but if a user wants he can push on the login button, opening the user login visu and after he has specific elements visible. how can i achieve that? no matter what i try, as soon as a user management exists, it redirects me to the login window instead of the visu
Last updated: 2025-06-22
Post by gepert on GearInPos
CODESYS Forge
talk
(Post)
Hello, Please give any tips regarding stopping Mc_GearInPos block. Please look at attached drawings. When fb MC_GearInPos is started, output "busy" is true - it is ok. But when i want to stop this funkction blok i deactive execute input and i use Mc_stop. Unfortunelly Mc_gearInPos is still busy. It lasts till to synchronize phase. Then i can stop it by Mc_stop. So I cannot stop fb before synchrnization. Can you give any tips how solve this problem. Sometimes I must to switch off before synchro. Best regards Lukasz
Last updated: 2025-08-07
Post by kurtk on Screenshot with "Sys Process Execute Command"
CODESYS Forge
talk
(Post)
I am working on this same thing... I wonder if when you execute it in a "terminal" it is a graphical terminal window running under X whereas when it is run from a SysProcess, it is "headless" and hence X-less Does DISPLAY=:0 magically attach to the X session Wouldn't it make sense that scrot or imagemagick would automatically by default reference DISPLAY=:0 I'm just trying to figure out how this works or is supposed to work
Last updated: 2025-09-12
Post by reinier-geers on CAnopen stack
CODESYS Forge
talk
(Post)
Ive got a project with 6 devices . Version 3.5.9.2 Now i change one to a other device 3.5.20.40 So i update the project to V3.5.20.4 Now i have a lot off faults in the canopendevices . Somehowe the first has no problem and seems that the canopenstackts stays in V3.5.9.2 the others in V4.2.0.0 But i cant put it back to 3.5.9.2 WHY ? And how can now witch one i can update and witch one not ?
Last updated: 2025-09-22
Post by reinier-geers on CAnopen stack
CODESYS Forge
talk
(Post)
Ive got a project with 6 devices . Version 3.5.9.2 Now i change one to a other device 3.5.20.40 So i update the project to V3.5.20.4 Now i have a lot off faults in the canopendevices . Somehowe the first has no problem and seems that the canopenstackts stays in V3.5.9.2 the others in V4.2.0.0 But i cant put it back to 3.5.9.2 WHY ? And how can now witch one i can update and witch one not ?
Last updated: 2025-09-22
Post by timvh on How to correctly create a device descriptor (.devdesc.xml) for a custom Linux ARM64 PLC in CODESYS 3.5.21.20?
CODESYS Forge
talk
(Post)
If you are a vendor of controllers and want to have your own CODESYS Runtime on your device, then you need to contact the CODESYS Sales team and ask for the runtime Toolkit. For resellers of CODESYS devices, this can be interesting. If it is only for a few devices, then why not just take the standard runtime?
Last updated: 2025-10-07
Post by martinlithlith on Mux I2C
CODESYS Forge
talk
(Post)
hi! this is also a delayed answer, sorry for this. when coding in python i get the TCA9548a working. Is there someone who knows how big of a effort it would be to update Stefan's original code to make it work with a more up to date version of codesys or should i downgrade my system? andrax - are you using a downgraded version of codesys or have you downgraded all the libraries? What Oscat lib are you using? what version? thanks for your reply! Martin
Last updated: 2023-12-31
Post by richard-wang on Codesys recipe manager - what does it do?
CODESYS Forge
talk
(Post)
Hi All Thanks for sharing this information. For whom may not know why always get error code 16#4000 or 16#4002 while performing Recipe commands, the root cause is There is a line need to be inserted in CODESYSControl.cfg file, which is PlaceholderFilePath.1=/var/opt/codesys/PlcLogic/ I am using Pi, therefore the above path is set to my pi unit, after adding above line to my cfg file, all the Recipe commands work fine. But I still do not know how and when this file got modified though.
Last updated: 2024-04-29
Post by gseidel on CNC - system goes to X=0 Y=0 before CNC file execution starts, how to avoid that?
CODESYS Forge
talk
(Post)
Hi peterned, the start position given in the CNC properties is only used if you use the compile mode OutQueue. With compile mode SMC_CNC_REF, you need to provide the start position in the IEC application. The function block SMC_NCInterpreter has an input piStartPosition. You can initialize it with the output of the forward kinematic transormation FB for your machine. In your case probably SMC_TRAFOF_Gantry2. Best regards, Georg
Last updated: 2024-04-30
Post by ndzied2 on Rounding error in simple addition
CODESYS Forge
talk
(Post)
This is a consequence of how computers store floating point numbers. 0.1 cannot be exactly represented in a computer. This is not a CoDeSys thing. Here is a link to a converter to show you the exact value that is represented when you use a REAL data type (which is a 32 bit float). https://baseconvert.com/ieee-754-floating-point If you really need to keep track of 0.1 increments. use INT OR DINT and then add 1 each time and assume that there is one decimal place.
Last updated: 2024-05-24
Post by sajid on NMEA Serial data read in Control win v3 x64
CODESYS Forge
talk
(Post)
I am using the SerialCom example program from the CODESYS website to read NMEA strings in CODESYS Control Win V3 x64 through a serial-to-USB converter. However, I occasionally receive only partial data or encounter errors in the received string. A screenshot of expected NMEA string attached for reference. Could you please advise on how to ensure the full NMEA string is received consistently? Error in strRead variable is <value of="" the="" expression="" cannot="" be="" retrieved=""></value>
Last updated: 2025-10-16
Post by sajid on NMEA Serial data read in Control win v3 x64
CODESYS Forge
talk
(Post)
I am using the SerialCom example program from the CODESYS website to read NMEA strings in CODESYS Control Win V3 x64 through a serial-to-USB converter. However, I occasionally receive only partial data or encounter errors in the received string. A screenshot of expected NMEA string attached for reference. Could you please advise on how to ensure the full NMEA string is received consistently? Error in strRead variable is <value of="" the="" expression="" cannot="" be="" retrieved=""></value>
Last updated: 2025-10-16
Post by msirotkin on EtherCAT status errors
CODESYS Forge
talk
(Post)
Didn't help. I'm just trying to understand why the errors occur. Are they from the poor driver or from the Linux network stack. That's why I wanted to know how the rxerros and lostframes are counted. Because in other places (like ethtool info) there are no any issues. And the Ethercat device works fine. And it also strange that on the second ethernet port with a different HW and driver Ethercat works better, but still time to time gets such errors.
Last updated: 2025-11-26
Post by farren on Codesys complains about matching versions
CODESYS Forge
talk
(Post)
I'm building up a 2nd PC to match an existing developer PC. Installed the same SP and Patch levels but when I open a project that was created on the existing PC, Codesys complains that it's not the same version. Attaching a screenshot..... What else is there to match? Also, can all of the libraries that are on the existing machine be copied from it to the new machine and if so, how? (So I get the same versions) Which files/folders do I copy? Thanks! -Farren
Last updated: 2025-12-14
Post by timvh on Get Alarm status in Codesys
CODESYS Forge
talk
(Post)
You are right, that you can use the GetState method, but it is not that simple. You first have to get a list of (filtered) alarms from the AlarmManager. You can find an example in Forge how to do this. See https://forge.codesys.com/prj/codesys-example/alarm-manager/home/Home/ Then you can go through this list to get the state of all the (filtered) alarms. See below the code which you could use. This is all based on the example from forge. Create a program: // This example shows how to access alarms via structured text. PROGRAM PLC_PRG VAR xInit : BOOL := TRUE; udiResult : UDINT; fbAlarmFilterCriteriaAll : FB_AlarmFilterCriteriaAll; fbAlarmManagerClient : FB_AlarmManagerClient; itfAlarmManagerClient : IAlarmManagerClient := fbAlarmManagerClient; xAlarm1 : BOOL; xAlarm2 : BOOL; xWarning : BOOL; iNrOfAlarmsInAlarmList : INT; iNrOfActiveAlarmsInAlarmList : INT; paitfAlarm: POINTER TO ARRAY [0..0] OF AlarmManager.IAlarm; iAlarmIndex : INT; eAlarmState: AlarmManager.AlarmState; END_VAR IF xInit THEN xInit := FALSE; fbAlarmManagerClient.itfAlarmFilterCriteria := fbAlarmFilterCriteriaAll; // register alarm client to get updated about alarm status / changes udiResult := AlarmManager.g_AlarmHandler.RegisterClient(itfAlarmManagerClient, 0, 0); END_IF // Polling the number of alarms udiResult := AlarmManager.g_AlarmHandler.GetActiveAlarms(itfAlarmManagerClient, parritfActiveAlarms => paitfAlarm, iCountActiveAlarms => iNrOfAlarmsInAlarmList); iAlarmIndex := 0; iNrOfActiveAlarmsInAlarmList := 0; WHILE iAlarmIndex < iNrOfAlarmsInAlarmList DO eAlarmState := paitfAlarm^[iAlarmIndex].GetState(); IF eAlarmState = AlarmManager.AlarmState.Active OR eAlarmState = AlarmManager.AlarmState.ActiveAcknowledged THEN iNrOfActiveAlarmsInAlarmList := iNrOfActiveAlarmsInAlarmList + 1; END_IF iAlarmIndex := iAlarmIndex + 1; END_WHILE See below some details about the function blocks: One function block should implement the IAlarmFilterCriteria interface. This can be empty except a few methods. FUNCTION_BLOCK FB_AlarmFilterCriteriaAll IMPLEMENTS AlarmManager.IAlarmFilterCriteria Method implementation (others related to interface are empty) METHOD AreAllAlarmClassesSelected : BOOL AreAllAlarmClassesSelected := TRUE; METHOD AreAllAlarmGroupsSelected : BOOL AreAllAlarmGroupsSelected := TRUE; METHOD GetPriorityFrom : USINT GetPriorityFrom := 0; METHOD GetPriorityTo : USINT GetPriorityTo := 255; The other function block should implement IAlarmManagerClient and get a reference to the FB which implements the IAlarmFilterCriteria FUNCTION_BLOCK FB_AlarmManagerClient IMPLEMENTS AlarmManager.IAlarmManagerClient VAR_INPUT itfAlarmFilterCriteria: AlarmManager.IAlarmFilterCriteria; END_VAR Method implementation (others related to the interface are empty) METHOD GetFilterCriteria : AlarmManager.IAlarmFilterCriteria // see VAR_INPUT for filter GetFilterCriteria := itfAlarmFilterCriteria; Off course you have to add the AlarmManager to your application and add some alarms to it.
Last updated: 2025-09-02
Post by user3000 on Can't find an Extended Pulse Timer (TP and LTP)
CODESYS Forge
talk
(Post)
I came up with an FBD that seems to be working, although it may not be a true Retriggerable Pulse timer. There may be some delay associated with the two MOVE functions and ADD function I incorporated. I'd be interested if anyone is able to come up with something cleaner. I am surprised that this is not a built-in function block of the CodeSYS library. This is a common feature of multi-function timer relays. I also attached a page from the cut sheet of a Schneider relay that shows 10 timing functions. Looks like the CodeSYS library has built-in function blocks for only 3 of the 10.
Last updated: 2023-12-21
Post by pablotorres on printing current visualization
CODESYS Forge
talk
(Post)
Hi! How did you solve it?
Last updated: 2025-01-16
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND or OR.