Post by yoeri on Python Scripted Save_Archive with noUI
CODESYS Forge
talk
(Post)
Is there any update on this? Running codesys 3.5.19.70 proj = projects.open(project_path, primary=True, update_flags=flags) This gives an error only when using --noUI exception System.NullReferenceException: Traceback (most recent call last): File "C:\Project\ci\build.py", line 14, in <module> SystemError: Object reference not set to an instance of an object. Exit code: 1</module>
Last updated: 2026-01-30
Post by mrkm-dic on CODESYS: Combining Master Redundancy with EtherCAT Ring Topology – Is it Supported?
CODESYS Forge
talk
(Post)
Hi! thanks for reply. We tested the configuration you proposed as well; however, when the cable between the controller and the switch was disconnected, the Active and Standby roles were swapped. Did you observe the same behavior in your configuration using WAGO and Beckhoff?
Last updated: 2026-02-06
Post by gatto on EXCEPTION [watchdog] how to find position cause
CODESYS Forge
talk
(Post)
hi. My plc is weidmuller UC20-WL200-AC, IDE CODESYS 3.5.20.40, see picture for task settings. sometime i've got the plc stop. Reading the log, I find: EXCEPTIONPOSITION : IP=0x(nil) (no IECcontext could be retrieved) component CmpIecTask EXCEPTION [Watchdog] occurred: App=[Application], Task=[TASK_O_MAIN] component CmpIecTask How to find the position of problem?
Last updated: 2026-02-06
Post by yr00 on OPC UA datasource low read frequency
CODESYS Forge
talk
(Post)
Hello everyone, I am trying to test the OPC UA client feature in Codesys. My setup is the following; I have a Codesys simulation/ visualization running on Control Win V3. My OPC UA server is hosted on a Siemens 1518 PLC using PLCSim Advanced. The setup is completely virtual so there are no really PLCs. Everything is on my laptop. Writing data from the Codesys simualtion to the server is very quick. I have a PLC program running on another 1500 PLC which reads data from simulation via the server, and changes in the simulation (e.g. button pressed) appear within hundreds of miliseconds if not tens of miliseconds in my PLC program. However, when it comes to reading data from the OPC UA Server by Codesys, it taks around 1-2s. I connected a UAExpert client and it gets update very quickly so I am fairly sure the problem is with Codesys. I have tried changing the update rate in datasource -> General and Diagnosis, but it doesn't seem to have an effect. Do you guys have any suggestion on what I can do?
Last updated: 2023-08-29
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 cihangur on OpC UA server on Raspberry Pi 64 SL runtime
CODESYS Forge
talk
(Post)
Hello everyone, I wanted to write here because it is a similar and the most up-to-date topic. I want to connect to CoDeSys Win V3 x64 - 3.5.19.50 with OPC UA using WinCC Advanced V17. (Or to a PLC with CoDeSys Version 4.10.0.0) My settings are exactly the same as the previous comment. I even tried many different settings. I can access all CoDeSys OPC UA variables via TIA Portal IDE and add them to my HMI tags. When WinCC RT Advanced is started, it gives a warning that the connection could not be established and does not update the variables. I can connect to Inovance AM600 using CoDeSys Target version 3.5.11.50. (The same version Win x64 is also connected.) However, a security setting in the current versions prevents me. I would be very happy if those who have up-to-date experience on this issue and find a solution share it. The CoDeSys Security Settings which I can access variables with TIA Portal: CommunicationPolicy: POLICY_BASICSHA256SHA256 CommunicationMode: ALL Activation: Activated UserAuthentication: ENABLED Server Certificate: Valid until 2034 Greetings.
Last updated: 2024-12-06
Post by jakubmphoenix on EtherCAT Master on RaspberryPi with EtherCAT Slave on Beckhoff
CODESYS Forge
talk
(Post)
Hello everyone, I’m currently working on setting up an EtherCAT Master using CODESYS on a Raspberry Pi, and I’ve run into some issues I could use help with. Project Setup: EtherCAT Master: Raspberry Pi with CODESYS Control for Raspberry Pi 64 SL installed EtherCAT Slave: Beckhoff CX5130 with EK1200 coupler I/O Module: EL2008 License Module: EL6070-0033 I’ve installed the required CODESYS packages and the Linux gateway on the Raspberry Pi. In my project, I added the EtherCAT Master with the appropriate port settings and scanned for devices. The CX5130 shows up as a slave, but communication fails—I'm getting error messages and can't access the outputs. Specifically: The EL2008 output module isn’t recognized properly in CODESYS. There’s no option to communicate with it through the CX5130. I’ve tried connecting via both the Raspberry Pi’s built-in Ethernet port and an external network card. I've attached screenshots showing the errors I get in CODESYS and the devices detected via TwinCAT for reference. Any help or suggestions would be greatly appreciated! Thanks in advance! EMERGENCY FROM DEVICE 1001 ERROR CODE 16#A000 Error register 16#02 Error field: 16#02 Error field : 16#0E 16#04 16#00 16#04 16#00
Last updated: 2025-07-16
Post by gunstr on CODESYS control on RPi starts, shortly runs, then exits
CODESYS Forge
talk
(Post)
We have been using the Codesys Control for Rasberry Pi for several years in many installations without any major issues. But during summer the problem mentioned above has blocked further deliveries. We have made some minor upgrades to the application but I do not really see why that should have any impact. HW is Raspberry Pi 4B, 2GB OS is Booworm Lite Codesys control is version 4.15 (have just installed a few systems lately with this version) The system boots OK but after exactly 30 seconds Codesys is shut down and becomes unreachable. We have tested several different combinations: Upgrade of the Codeys Control to 4.16 Loading different Codesys applications Changing to 4GB version of the Raspberry Pi One of the test applications together with the 4GB HW seems to be stable, but all other combinations fails. Any suggestion what we can do to resolve is appreciated - this is a real business blocker now. Rgds
Last updated: 2025-09-02
Post by willbechel on Errors about PLC configuration in CoDeSYs software
CODESYS Forge
talk
(Post)
I saved it as the same project but in a different location. I opened this "new project". I clicked on the "Direct Login from Automation Builder" button. It automatically directed me to CODESYS, where I was able to create the "Create Boot Project" but first I also clicked login again but inside CODESYS keeping the automation builder login online. Additional Information: The "Create Boot Project" function in CODESYS is used to create a project that will automatically start when the controller is booted up. To create a boot project, you must first create a new project in CODESYS. Once you have created a new project, you can then use the "Create Boot Project" function to create a boot application. The "Create Boot Project" function will create a new application that is based on the current project. The new application will be saved in the same location as the current project. You can then download the new application to the controller.
Last updated: 2024-02-01
Post by willbechel on Project Login Problem
CODESYS Forge
talk
(Post)
I saved it as the same project but in a different location. I opened this "new project". I clicked on the "Direct Login from Automation Builder" button. It automatically directed me to CODESYS, where I was able to create the "Create Boot Project" but first I also clicked login again but inside CODESYS keeping the automation builder login online. Additional Information: The "Create Boot Project" function in CODESYS is used to create a project that will automatically start when the controller is booted up. To create a boot project, you must first create a new project in CODESYS. Once you have created a new project, you can then use the "Create Boot Project" function to create a boot application. The "Create Boot Project" function will create a new application that is based on the current project. The new application will be saved in the same location as the current project. You can then download the new application to the controller.
Last updated: 2024-02-01
Post by timvh on Toradex and CODESYS and licensing
CODESYS Forge
talk
(Post)
For the Virtual Control you need to use a "Network license". The Virtual Control has parameters of which one is the reference to the license server. This can be the device itself, but you need to activate the license on the host system (not in the container). For this, CODESYS has a Network License server with WBM (web based management). See for the Network License configuration: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_license_controller_linux.html If it is only for evaluation, I would advise to use a CODESYS (USB) key and activate the license on the key. Then you still have to install the CODESYS Network License server on the host, but you don't have to activate the license as soft license on the device. The benefit is that you can easily move your license to another device when needed. Off course your device must have a free USB port available to be able to do this.
Last updated: 2025-10-20
Post by mohammedben on Fail communication between CODESYS and Fuxa SCADA via OPC UA
CODESYS Forge
talk
(Post)
hi, When I try to establish communication between CODESYS and Fuxa SCADA via OPC UA, the connection fails, and I receive the following error: 2026-02-15T08:38:13.618Z [ERR] 'codesys' connect failure! Error: The connection may have been rejected by server, Err = (ClientTCP_transport6: socket has been disconnected by third party) 2026-02-15T08:38:13.619Z [ERR] 'codesys' try to connect error! Error: The connection may have been rejected by server, Err = (ClientTCP_transport6: socket has been disconnected by third party) 2026-02-15T08:38:13.622Z [ERR] 'codesys' connect error! undefined (1) Note that there are no problems when I establish communication with the UaExpert and OPC UA Client Simulator software. I also previously tried communicating with RapidSCADA and received the following error: Endpoint with the specified security options not found. And when I try to connect with "none" in the security policy, I get this error: BadSecureChannelClosed I have tried almost all the solutions available online and have not found a solution. I hope you can provide me with a solution that solves this problem. Thanks in advance
Last updated: 2026-02-16
Post by darko7417 on When running as a service, CodesysControl doesn't write log files to the disk (and other CmpLog related issuess)
CODESYS Forge
talk
(Post)
I run CODESYS runtime as a service and use CmpLog (the LogAdd2 function) to log different events to a file. I have done this many times before on various projects and hardware, and it works fine. On this particular system, I have CODESYS 3.5.20.40 running on a Windows 11 PC. The CODESYSControlService autostarts (with Local System credentials, the default), and the application runs fine. However, the configuration file is not read (or at least not the one that should be, or not the CmpLog section), and log files are not written to the disk. I would be thankful if anyone knew why this is happening and how to fix it. A note to CODESYS people: you must provide more information on the codesys configuration file, CODESYSControlService.exe and other major components and system behaviour. You created the service and various features (i.e. logging), but haven't explained how they work, which, in my opinion, is below standard for industrial automation software. These are my observations: - When running as a service, the config file is not read (none of them), or at least the CmpLog section is not read. I checked the log using Codesys IDE, and the CmpLog parameters are not the ones I have set in any of the config files. Which CmpLog config values does the service use, and where does it read them from? I have no idea, but it's not the config files. Here are the codesys config files I located on the PC's disk: o C:\Program Files (x86)\CODESYS 3.5.20.40\GatewayPLC\CODESYSControl.cfg (only 2 lines in this config) o C:\Program Files (x86)\CODESYS 3.5.20.40\GatewayPLC\AppDataFiles\CODESYSControlWinV3\CODESYSControl.cfg o C:\Users\SRV\AppData\Roaming\CODESYS\CODESYSControlWinV3\C4DBB537\CODESYSControl.cfg o C:\Program Files (x86)\CODESYS 3.5.20.40\GatewayPLC\tempCFG\CODESYSControl.cfg - When I run codesys as an app (e.g. by clicking the icon), this config file is read C:\Users\SRV\AppData\Roaming\CODESYS\CODESYSControlWinV3\C4DBB537\CODESYSControl.cfg and log files are written ok. The icon target is "C:\Program Files (x86)\CODESYS 3.5.20.40\GatewayPLC\CODESYSControlService.exe" -d o the -d option, I think, starts a cmd-like window showing service debug output (the output shown in log in the IDE) o the -i option, again I think, means install the service - I tried adding -d to service start parameters in the registry, but it started only once and after that it refused to start. Knowing what -d does and which other options are available would be great (e.g. can I make the service read a different config file). - Syslog UDP logging works fine in any case. - These are my CmpLog parameters ~~~ [CmpLog] Logger.0.Name=PlcLog3 Logger.0.Filter=0xFFFFFFFF Logger.0.Enable=1 Logger.0.MaxEntries=10003 Logger.0.MaxFileSize=50003 Logger.0.MaxFiles=33 Logger.0.Backend.0.ClassId=0x0000010B ;sends logger messages to SysOut Logger.0.Backend.1.ClassId=0x00000104 ;writes logger messages in a file Logger.0.Backend.2.ClassId=0x00000135 ;sends logger messages as UDP syslog Logger.0.Type=0x314 ;Set the timestamp to RTC ~~~
Last updated: 2025-02-27
Post by kevinrn on Github Actions CI/CD tasks - development topic
CODESYS Forge
talk
(Post)
Hello community, I just want to inform you about our plans and the current status of automating the build process for CODESYS libraries. So it might be helpful for some people who are in the same situation. Background story: I am a software engineer at powerIO GmbH, normally I use high level languages for the products we develop and offer. Sometimes I work with my team on CODESYS libraries, which can also be found in the CODESYS store. Most of the time I spend with them on architecture tasks and tasks that are not directly related to our products. Every time I see the manual processes for releasing a library etc., I am very surprised about this time intensive process. Current situation: I know there has been a scripting interface for years. CODESYS Git was released a few years ago, but the scripting interface was only released a few months (weeks?) ago. We developed a pseudo-automated solution a few months ago, but it was all very hacky. So now there is a better Git implementation and also more modularization and installation options. For example, the CODESYS installer has a full CLI, which makes it very convenient to install CODESYS installations headless. Plans: I think it's the right time to develop a better automation solution. Most of our software projects are hosted on Github and we use Github actions very intensively for other software projects. Therefore, we have decided to use Github for our CODESYS library projects as well. Following tasks should be implemented in automation for CI/CD tasks: - Automated setup of CODESYS installation (Already released: https://github.com/marketplace/actions/setup-codesys-installation) - Checkout CODESYS libraries - Execute tests scripts - Sign CODESYS libraries - Extract Library documentation - Create CODESYS package - Sign CODESYS package Side Note: - This is mainly a side project, and we do not provide support for the CI/CD part. - This topic is here to help and also to get help from other software engineers. - This project and idea is not prioritized as I am currently the only one working on it and I hope it will help us and also others and increase productivity. - We are putting this out there as an organization, but priorities can change quickly and the CI/CD tasks I am developing are mostly done in my spare time. So please don't expect this to happen in a short time or even be fully completed. I would be very happy if some ppl will join the development process and might be open to discuss some technical details for this. I hope this topic is not to off-topic, but I think the CI/CD part is very important today and it can increase a lot of quality and push productivity. Thanks :)
Last updated: 2024-03-28
Post by smeitink on Timeout Error in Modbus Communication with WAGO PFC200 and iEM2050 Meter using 750-652 Module
CODESYS Forge
talk
(Post)
Hi all, I'm looking for help with an issue I've come across while trying to facilitate Modbus communication between a WAGO PFC200 PLC using a 750-652 communication module and an iEM2050 Series Single Phase Energy Meter. I believe to have everything wired and setup correcty, but I keep running into a "Error time out" message, and by now I don't really know what else to try. My setup is as follows: A PFC200 Wago PLC, which has 2 750-652 Serial Interfaces extension modules connected to its field bus. I'm using one of these to talk to a Schneider iEM2050 - kWh-meter over modbus. I have connected terminal 23 (A) of the iEM2050 to connector 6 (A) on the 750-652. I have connected terminal 24 (B) of the iEM2050 to connector 2 (B) of the 750-652. I'm using 200mm of twisted together wires to connected them both, and I have placed a 120 ohm resistor between A and B at both ends. I've attached relevant pinout images to this post. I then wrote a simple program that configures the Mobus port, as per the datasheet of the iEM2050. You can find an image of the relavent page attached to this post too. This is my program: PROGRAM PLC_PRG VAR Master: FbMbMasterSerial; xIsConnected: BOOL; xError: BOOL; iIndex: INT := 1; xTrigger: BOOL; utQuery : typMbQuery := ( bUnitId := 1, // The Modbus unit or slave address bFunctionCode := 4, // Function code for reading input registers uiReadAddress := 1829, // adress for the Power on off counter uiReadQuantity := 1 // Quantity of registers to read ); iStep: INT; oStatusModbus: WagoSysErrorBase.FbResult; utResponseModbus: typMbResponse; xConnect: BOOL := FALSE; delayTimer: TON; END_VAR Master( xConnect:= xConnect, I_Port:= _750_652_24_1, udiBaudrate:= 9600, usiDataBits:= 8, eParity:= WagoTypesCom.eTTYParity.Even, eStopBits:= WagoTypesCom.eTTYStopBits.One, eHandshake:= WagoTypesCom.eTTYHandshake.None, ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex, xIsConnected=> xIsConnected, xError=> xError, oStatus=> oStatusModbus, eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU, tTimeOut:= T#5S, utQuery:= utQuery, xTrigger:= xTrigger, utResponse:= utResponseModbus); delayTimer(IN := TRUE, PT := T#3S); // Use the Q output of the timer to set xConnect after the delay IF delayTimer.Q THEN xConnect := TRUE; END_IF CASE iStep OF 0: //Wacht totdat de master de poort geopend heeft IF xIsConnected THEN iStep := 1; END_IF 1: //Stuur request naar de slave xTrigger := TRUE; iStep := 2; 2: //Wacht totdat de master klaar is met het afhandelen van de request IF NOT xTrigger THEN iStep := 3; END_IF END_CASE The TON delay before opening the port is due to a an error I encountered when opening it straight away. This seems to be a bug, as described here. However, the TON solved that particular issue. I tried reading multiple registers, but like I said, I still always end up with the "Error time out". What else can I test or try at this point?
Last updated: 2024-02-24
Post by scoob on ModbusFB - Slow Response Time
CODESYS Forge
talk
(Post)
Hello, I have been trying to use the ModbusFB functions so I can put some code into libraries, but it seems to be very slow for me. I have a Modbus device with 100ms registers. I previously setup 10 channels in the 'traditional' Modbus Slave with channels and mappings - and set a cyclic trigger at 100ms - this worked fine. I then tried the ModbusFB example, and setup reading the same 10 blocks of modbus addresses, copying the example and putting all of the requests into an array and triggering the requests sequentially. I timed how long the requests are taking to get round to each one, and it is around 1s 450ms. How do I speed this up to match the cyclic time? IF NOT(init) THEN init := TRUE; // Set the required IP address: ipAddress[0] := 192; ipAddress[1] := 168; ipAddress[2] := 1; ipAddress[3] := 10; // Pass the required IP address to the clinet FB: client_NetworkSwitch.aIPaddr := ipAddress; client_NetworkSwitch.udiLogOptions := (ModbusFB.LoggingOptions.ClientConnectDisconnect OR ModbusFB.LoggingOptions.ClientReceivedValidReplies); // Try to connect the client client_NetworkSwitch(xConnect:=TRUE); // Configure all the channels to read connecting them to the client: portStatus_Request(rClient := client_NetworkSwitch, uiStartItem := 4096, uiQuantity := 32, pData := ADR(portStatus), udiReplyTimeout := udiReplyTimeout); portSpeed_Request(rClient := client_NetworkSwitch, uiStartItem := 4352, uiQuantity := 32, pData := ADR(portSpeed)); flowControl_Request(rClient := client_NetworkSwitch, uiStartItem := 4608, uiQuantity := 32, pData := ADR(flowControl)); linkUpCounter_Request(rClient := client_NetworkSwitch, uiStartItem := 5888, uiQuantity := 32, pData := ADR(linkUpCounter)); txPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8192, uiQuantity := 100, pData := ADR(txPacketCounter1)); txPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8292, uiQuantity := 28, pData := ADR(txPacketCounter2)); rxPacketCounter1_Request(rClient := client_NetworkSwitch, uiStartItem := 8448, uiQuantity := 100, pData := ADR(rxPacketCounter1)); rxPacketCounter2_Request(rClient := client_NetworkSwitch, uiStartItem := 8548, uiQuantity := 28, pData := ADR(rxPacketCounter2)); txErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8704, uiQuantity := 64, pData := ADR(txErrors)); rxErrors_Request(rClient := client_NetworkSwitch, uiStartItem := 8960, uiQuantity := 64, pData := ADR(rxErrors)); // Trigger all client requests initially FOR clientRequestsCnt := 0 TO (SIZEOF(clientRequests)/SIZEOF(clientRequests[0]))-1 DO pClientRequest := clientRequests[clientRequestsCnt]; pClientRequest^.xExecute := TRUE; END_FOR // Prepare sequential trigger / control of client requests. clientRequestsCnt := 0; pClientRequest := clientRequests[clientRequestsCnt]; END_IF // Call the client to do request processing: client_NetworkSwitch(); // Now we trigger client request sequentially ... IF NOT pClientRequest^.xExecute AND NOT pClientRequest^.xDone AND run AND client_NetworkSwitch.xConnected THEN pClientRequest^.xExecute := TRUE; END_IF // .. and check result/error IF pClientRequest^.xExecute AND run AND client_NetworkSwitch.xConnected THEN IF pClientRequest^.xDone THEN // Prepare next trigger of client request (a rising edge of xExecute) pClientRequest^.xExecute := FALSE; IF clientRequestsCnt < SIZEOF(clientRequests)/SIZEOF(clientRequests[0])-1 THEN // next client request clientRequestsCnt := clientRequestsCnt + 1; ELSE clientRequestsIterationCounter := clientRequestsIterationCounter + 1; clientRequestsCnt := 0; END_IF pClientRequest := clientRequests[clientRequestsCnt]; END_IF END_IF I did try a semi-coded way using the IoDrvModbusTCP library, and setting the slave com settings, then 10 commands and 10 requests, then using a TP on xDone as a pause, before triggering another request - this is time the delay is around 120ms - so the device is fine with the speed, just something I am doing wrong in the ModbusFB method I am sure.
Last updated: 2024-04-26
Post by trusty-squire on SysProcessCreate2 on Linux runtime
CODESYS Forge
talk
(Post)
Hi, I'm trying to launch a continuously running python script from Codesys and monitor the script status inside the Codesys runtime (running on a Linux enviroment). For now I'm testing with the below to emulate a continuously running Python script: #test.py i = 0 while True: i += 1 I'm able to successfully run the script using SysProcessExecuteCommand2 (I can see the Python process running in the task manager). However, this "freezes" the Codesys execution of the task - it sits on that command and will not continue until the Python script ends. I've proven this works by using the task monitor to kill the process, then Codesys continues on happily through the task. What I want to do is use SysProcessCreate2 to set up the Python script as a background task and monitor the process using SysProcessGetState. This always results in the error "ERR_OPERATION_DENIED". I know that I'm able to execute commands (as above), so my config should be correct. Is SysProcessCreate2 functional on a Linux environment? Is there something in the config file I'm missing? Here's my "working" code that uses SysProcessExecuteCommand2: VAR bTest : BOOL; sCommand : STRING := '/usr/bin/python3 /var/opt/codesys/PlcLogic/Application/test.py'; refCommand : REFERENCE TO STRING REF= sCommand; sOutput : STRING; refOutput : REFERENCE TO STRING REF= sOutput; result : RTS_IEC_RESULT; END_VAR IF bTest THEN SysProcessExecuteCommand2( pszCommand:= refCommand, pszStdOut:= refOutput, udiStdOutLen:= SIZEOF(sOutput), pResult:= ADR(result) ); bTest:= FALSE; END_IF And here's the code that always results in the ERR_OPERATION_DENIED error: VAR bTest : BOOL; sApp : STRING := '/usr/bin/python3'; sCommand : STRING := '/var/opt/codesys/PlcLogic/Application/test.py'; refApp : REFERENCE TO STRING REF= sApp; refCommand : REFERENCE TO STRING REF= sCommand; hResult : SysProcess.RTS_IEC_RESULT; hHandle : SysProcess.RTS_IEC_HANDLE; END_VAR IF bTest THEN hHandle := SysProcessCreate2( pszApplication:= refApp, pszCommandLine:= refCommand, ulFlags:=SYSPROCESS_CREATEFLAG_HIDDEN, pResult:= ADR(hResult) ); bTest:= FALSE; END_IF Here's the relevant section from the config file at /etc/codesyscontrol/CODESYSControl.cfg: [SysProcess] Command=AllowAll Appreciate any support or ideas. Thanks!
Last updated: 2025-03-16
Post by janber0206 on Gateway doesn't come online, regarding a working internet connection
CODESYS Forge
talk
(Post)
Solved EN: The Problem is that the Codesys Edge-Gateways have a License with a runtime of an half year, as long the Gateways are online they will self renew themselfs. In my Case the RevPi was more than a year offline and so the Edge-Gateway was not working anymore. The solution: I accessed a laptop that was directly connected to the RevPi. I installed the Codesys service tool and renewed the certificate manual. DE: Das Propblem ist das die Codesys Edge-Gatways eine Lizenz haben die nur ein halbes Jahr gültig ist. Solange das Gateway eine Internet verbindung hat aktualisiert sich das Zertifikat von alleine. In meinem Fall war das Gateway aber über ein Jahr offline und hat somit nicht mehr funktioniert. Die Lösung: Ich hab auf einen Laptop von Kunden mit TeamViewer zugegriffen, der Laptop wurde mit Kabel direkt mit RevPi verbunden. Codesys Service Tool installiert und dann das Gatewayzertifikat aktualisiert.
Last updated: 2023-10-26
Post by oi18ct on ARM SL Development Board Recommendation
CODESYS Forge
talk
(Post)
Hello codesys forum, My company is looking at developing a solution with Codesys ARM SL. The requirements will not tax the capabilities of Codesys. I would like to buy an AMR 7 or 8 Dev Board for experimenting. I am looking for a recommendation as I have minimal experience with Linux. Any input from the forum would be most appreciated as the hardware requirements as provided by Codesys for ARM SL seem pretty minimal (basically a arm7 or 8 with Debian is all). Our needs are small in scale- something like 8 digital inputs, 6 digital outputs, 2 analog inputs and 1 analog output. A small gui will be published via web visualization for external display (no local display). Communications with ModbusTCP and uart/RS485. It may be necessary to access i2c and make c or python calls to some existing code that is pretty small. Something like the EMCraft STM32MP1 SOM Starter Kit or Octavo Systems OSD32MP1-RED development board? Ideally something that has a path to a SoM for production. Kontron appears to have some interesting options too. Just having a hard time deciding where to start. Thanks in advance... LC
Last updated: 2023-11-11
Post by annd on Migration von "CODESYS Control for PFC200 SL" zu WAGO FW26 "CODESYS V3.5.19.2"
CODESYS Forge
talk
(Post)
Hallo, da Wago nun von eCockpit zum offenen "CODESYS Development System V3" wechselt, möchte ich meinen bestehenden 750-8212 von der PFC200 SL auf die Wago Firmware umstellen. Welche Schritte sind dabei notwendig? Den Controller würde ich auf die aktuelle FW 26 updaten und die 3.5.19.2 von Wago mit den Descriptions verwenden. Reicht es im Codesys Projektbaum mit "Gerät aktualisieren" auf den Wago Controller zu wechseln? Es wird dann statt dem "Pfc200Bus"ein leerer K-Bus und ein leerer Com-Port angezeigt. Müssen die einzelnen Module dann darunter neu angelegt und alle E/A Variablen manuell neu eingetragen werden? Das exportieren und danach wieder importieren funktioniert nicht, weil die Namen bzw. Adressen unterschiedlich sind. Ist das so richtig? Kann der Block "Modbus_COM_Port - Modbus_Master_COM_Port - Modbus_Slave" so bleiben wie bisher oder muss das auch unter dem neuen COM-Port neu angelegt werden? Für ein paar Hinweise wäre ich dankbar. Schöne Grüße, annD
Last updated: 2023-11-17
Post by user3000 on Can't find an Extended Pulse Timer (TP and LTP)
CODESYS Forge
talk
(Post)
Hello, For my program I need an extended pulse timer, which can be referred to as a retriggerable pulse timer. Where every rising edge of the input resets the elapsed time zero, extending the lenght of the output pulse. The Codesys pulse timer (TP) is a one-shot timer and only resets the elapsed time with the falling edge of the input. There is also a pulse timer (LTP) in codesys, but in my simulation it was also functioning as a one-shot even though the description sounds like LTP should be retriggerable. I have uploaded some timing plots from another PLC program for reference. I am looking for a timer equivalent to the "TEP" diagram. Is there an Extended Pulse Timer in Codesys? Maybe there is a way to manipulate the input so it resets the elapsed time outside the function block?
Last updated: 2023-12-06
Post by dekelec on Codesys 2.3 & Peak PCAN
CODESYS Forge
talk
(Post)
I use Peak USB adapter daily to download from CoDeSys 2.3 and 3.5 to IFM, EPEC and other controllers. The process: - First you need to install the appropriate driver. Link: https://www.peak-system.com/Drivers.523.0.html?&L=1 - Restart the computer - Start the CoDeSys application - Change the name of the adapter in Communication parameters, as mentioned in previous comment. Write the name exactly as written "Peak_USB", as it could also be case sensitive (defines which .dll file to use). If this doesn't work I would contact the vendor of the controller to find out the procedure. In the attachment I've added a FAQ document from IFM regarding using PCAN USB. P.S. I've noticed in your picture of communication parameters a channel via TCP/IP is mentioned. In this case a USB to CAN connection is not being used. First you should change the channel/gateway to connect via CANbus or connect using an Ethernet cable.
Last updated: 2024-07-09
Post by dogulas on OPC UA C# client connecting to OPC UA CODESYS server
CODESYS Forge
talk
(Post)
Noob alert! I’m just getting my feet wet with CODESYS. I have a “Hello World” project in the CODESYS IDE. I’m using the Win SoftPLC on the same computer. I’ve added a Communication Manager under the Application node. Under that is “OPC UA Server -> IEC Symbol Publishing 01”. I also added “OPC_UA_Symbols -> Information Model”. I’m not sure I need the second thing. I was grasping at straws. I also set up several dummy symbols in the IEC Symbol Publishing 01 node. In my C# application, I am trying to get an instance of EndpointDescription from CoreClientUtils.SelectEndpoint(“opc.tcp://localhost:1217/Gateway-1”, useSecurity: false, 15000). I wasn’t sure about the “Gateway-1”. I found that in the CODESYS IDE under the project -> Communication Settings. When I execute the previous method call in C#, I get: “BadSecureChannelClosed”. I have no idea what that means. Any pointers to documentation are welcome.
Last updated: 2024-08-16
Post by karel-bas on Loosing connection to emulation running on Linux
CODESYS Forge
talk
(Post)
Hello, I am trying to emulate my code but for some reason my Codesys IDE keeps loosing connection to the emulator. I am constantly pinging virtual machine on which its running and its running fine, but codesys refuses to reconect to it, and is not able to rediscover it. Codesys 3.5 SP20 Patch 1 I have linux installed like image in attachment.(using version 4.12) Linux VM is set up to use up to 4 cores and 8gb of ram, with nothing else runing on it. I dont have a license so I am aware that the emulation shouldnt run for more then 120 minutes I am able to, login, get sysinfo, reboot etc from codesys IDE for certain period of time (5minutes) then my connection gets lost, sometimes I can login again, but sometimes i have to reboot the VM. Any suggestions what might be the issue ?
Last updated: 2024-09-19
Post by kurtk on Modbus TCP Server
CODESYS Forge
talk
(Post)
ditto I'm just getting my codesys wheels on and the modbus stuff is confusing. I am re-platforming an existing PLC application On that platform one could simply tag variables to register numbers and the whole shooting match could be accessed via modbus and typically holding registers and input registers were treated the same way... On codesys I see there is a modbus TCP server Device I/O mapping tab and a Modbus TCP server IEC objects tab I get the sense that one can configure the serving of variables both/either way but am unclear about the optimum/necessary path. Apparently in the IEC Objects tab one can "ADD" something or other - presumeably channels. I have created a preliminary function block but the Select Function Block window shows nothing to select WTH ? I exported the Device mapping and was surprised to see the entire Device IO map - complete with all the bit-mapped holding/input registers!! WTH!!?? Bit-mapped words are strictly a nichey special purpose application. I am targetting making a couple hundred variables available which would turn into hundreds of pages of IO/mapping Is the FUnction Block IEC objects thingy an alternative to that ? I notice that CODESYS shows the tags which the PLC used to specify the register address... are tags used in CODESYS for any specific hard-core purpose ?
Last updated: 2025-08-19
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.