Post by edson-bueno on IFM Controller Connection Issue
CODESYS Forge
talk
(Post)
Hi, Could you please send an print of your ethernet adapter info? Ip addr Subnet Mask Default Gateway Also, check if the gateway service is active in your windows. Win+R > services.msc > Look in the list CODESYS Control Win V3 x64 Gateway OR CODESYS Gateway V3 Hook up the M12 code D into the ETH port, supply the controller, it should apperars to you. Make sure when you try to connect with the controller, the target of your project has to match with the controller. Otherwise, click on the device in the devices tree > Communications Settings tab > Device > Options > And disable "Filter Network Scans by Target ID". Good luck.
Last updated: 2025-05-29
Post by macros8 on Translation - How to get text as reference in Frames translated?
CODESYS Forge
talk
(Post)
Hi, thanks for the link. Maybe I create elements in incorrect way. I always use Interface Editor to create variables which are used inside element (see pics). After that I place element in my visu and use Reference property to link variable or set the value. In that case the value of string is not transferred to general text list for translation as I mentioned before. Do I have to all properties which influence behavior of my element create in Frame configuration instead? What´s the difference to the Interface editor? Thanks a lot. M.
Last updated: 2024-01-02
Post by daanyouknow on Using a raspberry pi and NVLs to log variables outside of Codesys
CODESYS Forge
talk
(Post)
Hi, My PLC/controller doesn't support OPC UA, so my current plan to create a ringbuffer/circular logger is to connect a raspberry pi to it, use the Network Variable List receiver and sender and raspberry pi codesys runtime to get the variables to the raspberry pi, after which I will use the pi which DOES support OPC UA to get the variables to a python program which logs the desired variables for a certain amount of time for me, would this work? I don't want to spend 50+ euros + licencing fees for a solution that might not work.
Last updated: 2025-11-14
Post by eschwellinger on Persistence Manager Backup
CODESYS Forge
talk
(Post)
you need at them moment a download once (for the configuration files generated including addresses) then stop the plc - exchange the persistence file ( without the config file) This will be improved to 3.5.18.6 and 3.5.20.0. (possible then to generate offline bootproject including full persistenmanager files) - this is if you have not 100% the same bootapplication on the devices. In case you copy the whole Application (PLCLogic) directory it should work out of the box - but only with 100% same bootprojects as mentioned above. By the CODESYS Automation Server would help solve this too.
Last updated: 2023-10-19
Post by tcarlbom on codesys sp20 opcua not working
CODESYS Forge
talk
(Post)
hi, anyone else having trouble with opc ua in codesys sp20? i get Error 'BadIdentityTokenInvalid' was returned during ActivateSession i have tried both windows x64 runtime and linux runtime. i have created a completely new codesys project for this. in each of them i have only added the symbol configuration and selected one tag. i have tried several opc ua client, like ua expert, nodejs and python. all return Error 'BadIdentityTokenInvalid' was returned during ActivateSession so the problem must be the opc ua server.
Last updated: 2024-07-03
Post by ivanh on kepware minimun privilege
CODESYS Forge
talk
(Post)
Hello everyone, I’m integrating Codesys with Kepserver using the Kepware driver for Codesys, and I need to configure a user account with the minimum necessary privileges to read and write to the tags on the PLC, without using the internal OPC UA server of Codesys. However, despite not assigning the Modify permission, Kepware still allows writing to the tags. What are the minimum required permissions to ensure that writing is only allowed when necessary, and how can I prevent other permissions from being overridden? Any guidance would be greatly appreciated.
Last updated: 2024-08-12
Post by mostafa-beshr on implementing continuous movement in Codesys
CODESYS Forge
talk
(Post)
Hi everyone, I’m working on implementing continuous movement in Codesys, but I've run into some trouble. I've tried using ALL SM3 Basic and SML without success. I’m specifically looking for a library that supports continuous updates and can fetch values from a server in real time. Does anyone know of a library or approach that fits these requirements? Any advice or suggestions would be greatly appreciated! i read plcopen documentaion as well as codesys Thank you!
Last updated: 2024-09-11
Post by mostafa-beshr on implementing continuous movement in Codesys
CODESYS Forge
talk
(Post)
Hi everyone, I’m working on implementing continuous movement in Codesys, but I've run into some trouble. I've tried using ALL SM3 Basic and SML without success. I’m specifically looking for a library that supports continuous updates and can fetch values from a server in real time. Does anyone know of a library or approach that fits these requirements? Any advice or suggestions would be greatly appreciated! i read plcopen documentaion as well as codesys Thank you!
Last updated: 2024-09-11
Post by mostafa-beshr on implementing continuous movement in Codesys
CODESYS Forge
talk
(Post)
Hi everyone, I’m working on implementing continuous movement in Codesys, but I've run into some trouble. I've tried using ALL SM3 Basic and SML without success. I’m specifically looking for a library that supports continuous updates and can fetch values from a server in real time. Does anyone know of a library or approach that fits these requirements? Any advice or suggestions would be greatly appreciated! i read plcopen documentaion as well as codesys Thank you!
Last updated: 2024-09-11
Post by trusty-squire on implementing continuous movement in Codesys
CODESYS Forge
talk
(Post)
What do you mean by continuous movement? You want to continuously follow a dynamic target position? SMC_ControlAxisByPos, which is typically used with CNC Interpolators, could work for that. Instead of feeding the target position in from the Interpolator, feed in the target position from your server instead. Once you enable the FB, it will continuously move the axis to track the fSetPosition input. https://content.helpme-codesys.com/en/libs/SM3_CNC/Current/SM_CNC_POUs/SoftMotion-CNC/Direct-Axis-Control/SMC_ControlAxisByPos.html
Last updated: 2024-09-12
Post by dogulas on OPC UA C# client connecting to OPC UA CODESYS server
CODESYS Forge
talk
(Post)
Ok, for the sake of completeness in case anyone else has this problem. I can tell you that what finally worked for me was to change the line: // create an ExtensionObject to wrap the value to be written ExtensionObject extensionObject = new ExtensionObject( new ExpandedNodeId("GVL_StructA", 5), structAData ); to: // create an ExtensionObject to wrap the value to be written ExtensionObject extensionObject = new ExtensionObject( new ExpandedNodeId("GVL_StructA|defaultbinary", 5), structAData ); I'm sure there are many other problems that could cause this very generic error, but this was my problem.
Last updated: 2024-12-30
Post by felipemsgarcia on Edge Gateway online, but PLC is not online
CODESYS Forge
talk
(Post)
Hello, I couldn't figure what/where the issue was, so I deleted everything from automation server and reinstalled the edge gateway and did the process again. It worked for about a month and then it stopped working again. It presents the same symptom, edge gateway is online but I can't connect to the PLC. Any idea of what could be the issue? Thank you!
Last updated: 2024-01-09
Post by ofey on two different OPC clients with different privileges
CODESYS Forge
talk
(Post)
Hi! I have usually only connected one OPC client (our system) to an OPC server created in the codesys environment on a PLC. This OPC client has a lot of write privileges. A customer also want OPC access, but I want to restrict his access to only read certain values. Do you know if this is possible inside the single codesys runtime running on a controller?
Last updated: 2024-02-01
Post by jshirazi on Restore license on Raspberry Pi
CODESYS Forge
talk
(Post)
Hi, I recently got a license for Raspberry Pi, after license activation I made a backup copy of "CMLicenseNew.WibuCmRaU" file to a safe place. Things got complicated and I tried to downgrade OS for some reason after that I tried several times/ways to restore my license with no luck. the specifications are as follows: Raspberry Pi 4 Model B Rev 1.1 codesyscontrol 4.10.0.0 SDK 3.5.19.30 Logs: **** ERROR: CodeMWriteLicenseFile: 'CMLicenseNew.WibuCmRaU' failed: Container not found or Server dose not support .... So if someone know a solution for this please kindly help me. Regards
Last updated: 2024-02-03
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 krisj on ScriptEngine POU property Get and Set accessor.
CODESYS Forge
talk
(Post)
Hey! I am trying to generate a function block with properties from a list with script engine. Codesys/ScriptEngine creates both the Get and the Set accessor. I cannot find a way to delete the Set method/accessor. Anyone encountered the same problem or have a solution for this? for prop_name, prop_type in list: property = pou.create_property(prop_name, prop_type) get = pou.find("Get", recursive=True)[i] get.textual_declaration.replace("") get.textual_implementation.replace(prop_name + " := " + struct_name + "." + prop_name + ";") set = pou.find("Set", recursive=True)[i] set.textual_declaration.replace("") set.textual_implementation.replace("") i += 1
Last updated: 2025-03-17
Post by ofey on Codesys Soft PLC OPC UA server
CODESYS Forge
talk
(Post)
Hi! I'm sorry if this has been asked before. I have tried looking up previous topics regaring this, but even though I'm following tutorials and other posts I cant seem to get this to work consistently. I actually got the connection established on a test project after some trial and error. I only got it to work with the "Anonymous login". But after i deleted the test project and tried to get the same thing to work on another project I cant get it to work anymore. What I'm trying to do: Set up and OPC UA Server using CODESYS with the free soft PLC. I then try to connect to the OPC UA Server with the program "UaExpert". What happens: I get the error Error "'BadUserAccessDenied' was returned during ActivateSession". What I have done in CODESYS: - Added the object "Symbol configuration" and checked some test variables - Checked "Support OPC UA features - In "Communication settings -> device -> Change runtime security policy" I have checked "Allow anonymous login" What I have done in UAExpert: - Found the OPC UA server under "local". (It is showing two servers though, I do not know why. It showed the same when it worked yesterday). Se attachment - Checked "Anonymous" under "Authentication settings in the OPC UA server. I'm new to CODESYS, so it could be something elementary wrong in my settings. Maybe something in the user settings in CODESYS regarding user rights or something?
Last updated: 2023-09-14
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
Some new test. Now I cannot connect from Automation server to my gateway in any way also from my office setup with my unit directly connected to my router by dhcp. I can use the IDE and the tool "Connect Edge Gateway" and successfully connect to my server/link to my Automation server account. However no PLC will respond from Automation server "Network scan". I guess the traffic should be initiated by the gateway towards automation server? Any tips on how I can diagnose my problem? Ports to be opened etc? Thing is that this has been working previously but not now (base system has been updated from debian 12 to debian 13, but I dont know at which point it has stopped working). Setup as before. A "Codesys Control for Linux SL" running on a debian 13 installation. Any help/tips appreciated! Per Update. Found the error. Had a wrong gateway-setting. Which meant the PLC could not reach internet. Checked by "ping google.com" from the PLC.
Last updated: 2026-02-12
Post by cihangur on OpC UA server on Raspberry Pi 64 SL runtime
CODESYS Forge
talk
(Post)
After my tests, I noticed two issues. 1- WinCC disconnects the connection after receiving the GetEndPointResponse message from CoDeSys. (I found it with UAExpert and Wireshark.) 2- It establishes a connection despite waiting for a while on the network with DNS. As a result of this information: I solved the problem by adding the line "193.193.193.150 t9pac" to the C:\Windows\System32\Drivers\etc\hosts file and making Windows accept messages coming from the IP number 193.193.193.150 as coming from t9pac. (t9pac is the name of my PLC running CoDeSys.) If there is a setting that will allow CoDeSys OPC UA to respond to GetEndPointRequest with its IP address, this problem will not occur.
Last updated: 2024-12-12
Post by rockallsue on Frustration-Fueled Feedback on Project File Management and Git Integration
CODESYS Forge
talk
(Post)
Some developers export ST code manually and edit it in VSCode, then copy it back. However, a more practical approach might be using automation scripts (PowerShell, Python) to extract and inject code into the CODESYS project. You could also check if CODESYS Automation Server or CODESYS API allows better ST access for external tools. https://www.codesys.com/the-system/releases-updates-lifecycle/release-plan-roadmap.html Network drive issues are particularly painful. As a mitigation, you could try using local project storage with periodic cloud sync instead of directly saving to a network drive. Using Rsync or Syncthing for automatic but safe synchronization might reduce risks of file corruption.
Last updated: 2025-06-03
Post by alexgooi on Modbus writing on value change
CODESYS Forge
talk
(Post)
The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[1].0 := Bool1; Value[1].1 := Bool2; Value[1].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function (for example with the IEEE-754 standard) . In this way the syncing to the server is very simple and in the Codesys Program you decide what part of the word you want to use.
Last updated: 2024-04-03
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
I think I understand my problem. They are most probably related to configuration of the network. When I use DHCP for the unit to my router it all works. However when using static IP I have not managed to reach functioning state. Trying to replicate the situation on my desk. Having a static IP on the "debian host" and a connection to my computer which then routes traffic on to internet. I have entered settings for gateway and netmask. I can ping from my "debian plc host" to internet and also do "curl google.com" so traffic seems to find its way through and back, still "Automation server" will not find the gateway. Any hints how a manual configuration should be done? Is it possibly a "firewall" issue of my "normal router"? Thanks for any help! Per
Last updated: 2026-01-27
Post by gilbert-mh on CAA net base TCP client cause PLC to crash - Kernel message : N0HZ_local_softirq_pending 80
CODESYS Forge
talk
(Post)
Hello all, I have been trying to implement a TCP client on a Festo PLC (CPX-E-CEC-M1) and it looks like it works well except that after some time (greatly varies between a few hours to more than 100h) my PLC crash. When I look into the log file the only thing I see is that before the crash happens a few kernel warnings : N0HZ_local_softirq_pending 80 and then the crash. I've looked into this warning and from what I could find on the net it seems that this is warning is triggered when the ethernet link is down. I've tried to correct this bug for quite some time and what I know is that : - The crash is caused by my TCP client, when I remove it from my code I see no crash - The crash happens more quickly the more the TCP client is used. - The time before the crash is not directly proportional to the number of communications or their size. But it looks like it is just more likely to happen if the client connect to the server at a higher frequency. - The precedent observation makes it seem unlikely that the crash is caused by some memory overflow because then the crash speed would be more proportional to the amount of data exchanged. SO from these observations, I believe that the crash could be caused by the PLC trying to connect to a server while there is some kind of issue with the ethernet link resulting in the PLC getting stuck in some indefinite state and making it crash. This still seems a bit unlikely to me because if the ethernet is down it simply shouldn't be able to contact the server and the communication would just fail which doesn't cause my PLC to crash. Has anyone encountered the same kind of problem (with the same kernel message) ? I am pretty sure the warning is not the direct cause of the crash but just an indicator that something is wrong with my PLC. Thanks in advance
Last updated: 2024-01-12
Reading from a file, a line of CSV values with CrLf at the end of the line.
CODESYS Forge
talk
(Thread)
Reading from a file, a line of CSV values with CrLf at the end of the line.
Last updated: 2018-09-18
Post by tk096 on Confused by dwIpoTime input for SMC_Interpolator
CODESYS Forge
talk
(Post)
Hi, dwIpoTime should be set to the cycle time of your motion task. It defines the interpolation interval of the interpolator. E.g. in the attached screenshot, the task has a task interval of 4ms. The dwIpoTime input of the interpolator should be set to 4000.
Last updated: 2024-07-22
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.