Post by esave on OPC UA Server with on Codesys + OPC UA Client on Labview
CODESYS Forge
talk
(Post)
Hello everyone I want a communication between my PLC as an OPC UA Server and Labview on my PC as the OPC UA Client. I have an Festo CPX-E-CEC-C1-PN PLC and I have the OPC UA Toolkit from Labview. I created some Variables for testing (see picture 1) on Codesys. I tried to use this Labview block diagram (see picture 2) but I cant connect the PLC to it. What do I have to type in the Server Endpoint URL and what in the Node ID? Is this a good way for communication with a PLC to a PC? If not is there another way?
Last updated: 2024-04-12
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by reinier-geers on License problem gateway
CODESYS Forge
talk
(Post)
Epis doesnt want Softmotion. I thought it was about the price. If it was possible it would be working already and i dont need an extra licence. Thats the problem of codesys. The software is running but hangs on its license. Epis made it posible to see the stick. I can see the license. Softmotion is there from 3.5.14.Xx Like is said And Motion control is alrady posible 15 year ago. And i only need a Sync of 2 drives. I want a good solution not a refund. Dont point to the manufacturer. The software is made by 3s not by epis .
Last updated: 2024-04-29
Post by stewnguth on New License not working.
CODESYS Forge
talk
(Post)
Hey there, I am pretty new to the codesys space, but I got a codesys control basic M license for my raspberry pi that isntalled with no problem yesterday. Today, I went to install the visualization M locense as well because I went over the variable limit and am getting a "servernotfound" error in codesys when attempting to activate. I also tried to follow the advice in some other threads and install using a license request file on the web interface but am getting a message saying "An internal error occured" when attempting to install the license. Can anyone help me get this up and running? Thanks for your time.
Last updated: 2024-05-23
Post by viksym on Get text from textlist
CODESYS Forge
talk
(Post)
Does anybody know how to get a specific text from a text list within a program. Obviously it works in a visualization, but because I will have an HMI that has it's own system and I will have to send variables to this HMI via an OPC UA connection, I need to be able to get a text into a string. I tried using the VisuElems like this, but it only returns an empty "" and nothing else. IF trig THEN sText := VisuElems.cmpDynamictext.DynamicTextGetDefaultText(ADR(sTextList), ADR(sAlarmID))^; //sText := VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sTextList), ADR(sAlarmID))^; trig := FALSE; END_IF Any help and idea is highly appreciated because I am getting desperate here.
Last updated: 2024-05-31
Post by spice on WebVisu Recipe Save/Load
CODESYS Forge
talk
(Post)
I'm currently reworking the controls on a cnc press brake and wanted to load various recipes as programs to run. I'm using a 2d array of REALs to store the X and Y coordinates as well as some other program parameters in a recipe. I'd like to store all of the recipes on a computer used as the HMI that way the text files can be edited and uploaded offline. I'm using Automation Directs P2CDS-622 Can this be done through webvisu? If not would a license for Codesys HMI SL on the computer allow me to accomplish this? I've attached the Project File Thanks, Spice
Last updated: 2024-05-31
Post by ragarcia on How to change login visualization for other visualization after user logged in
CODESYS Forge
talk
(Post)
Hello everyone, I have a web visualization on Codesys and to be able to use the web visualization first an user and a password is requested. After the user logged in, I want to automatically change the visualization to the 'Home' visualization but I am not sure how to do this. In the login visualization I basically have a button with the input configuration to execute the action 'Login' after a click. Once the user is logged in, the visualization is still stuck in the login page and I want to automatically change to Home visualization if the user was succesfully logged in. How can I know the number of web visualization clients connected to my PLC? Thanks in advance
Last updated: 2024-06-04
Post by kronlundo on Licensing info not available (WAGO PFC200 + Codesys V3)
CODESYS Forge
talk
(Post)
Hi! We're using a WAGO PFC200 for several projects towards the energy sector, and recently upgraded to CODESYS V3. We have the "IEC 60870-5-104 Server" package in a test program, and it works well with the package in DEMO mode. However, when we acquired a license for the "IEC 60870-5-104 Server" package and tried to add the license on the PFC200 through the license manager, we get an error (see attached file). It seems like there is no CmContainer on the device, does anyone have an idea on how to fix this? We've also contacted WAGO on this issue a while back with no feedback yet.
Last updated: 2024-06-10
Post by adaffern on Runtime on Raspberry pi5 stops after 15 seconds
CODESYS Forge
talk
(Post)
Hi Guys, I'm new to CODESYS on the pi and I'm struggling to get it working. My issue is that the runtime keeps stopping after approximately 15 seconds. I have installed the runtime package 4.11.0.0 on the pi, trying on both a 64 bit and 32 bit OS. Looking at old forums it all references the 4B and the fact they used 32 bit Debian bullseye (the last version of raspberry pi os) however the pi 5 doesn't offer this version when I try select it in the imager. Has anyone managed to get running using the pi 5? Any help would be greatly appreciated. Thanks, Adam
Last updated: 2024-06-10
Post by installwhat on C0077 on one machine but not another
CODESYS Forge
talk
(Post)
I have a version of codesys 3.5.16 on my local machine and a vm. The local machine has loads of codesys versions and libraries installed etc. I can open the FPosCR_Example_Project_SP16_patch1 project on my vm without any errors. On the local machine I get the error C0077: unknown type IoDrvEthercatLib.ETC_CO_SdoWrite. I can, on the local machine, declare a var of type IoDrvEthercatLib.ETC_CO_SdoWrite and include it in the code without adding an extra error. The problem only seems to affect the library. This is seems more an issue with my codesys set up rather than something with festo. I would like to know the possible causes. I understand most of the library manager features but it's not clear how to find the cause. Thanks
Last updated: 2024-06-11
Post by aria13 on Has anyone fed ESP32 sensor data into CODESYS (via MQTT/Modbus)?
CODESYS Forge
talk
(Post)
Has anyone tried sending live sensor data from an ESP32 into a CODESYS runtime (for example via MQTT gateway or a Modbus bridge) to trigger PLC logic? I was reading an ESP32 → MQTT tutorial (https://www.theengineeringprojects.com/2021/11/esp32-mqtt.html) that shows how easy it is to publish sensor data from an ESP32, and I’m wondering how practical that is when tying the stream into industrial control software like CODESYS. I’ve also seen Arduino forum threads where people relay sensor streams to MQTT brokers and Raspberry Pi projects that bridge MQTT→Modbus, so I’m mainly curious about real-world issues: reliability, message latency, and simple patterns you’d recommend for safe PLC integration. Any tips, examples, or gotchas from folks who’ve done this?
Last updated: 2025-10-29
Post by davidbo on How to stop dhcpcd and use SysSockSetIpAddressAndNetMask to set address?
CODESYS Forge
talk
(Post)
It is stated: "Dynamic ip address, provided by DHCP, BOOTP, etc. Cannot be changed by SysSockSetIpAddressAndNetMask()" Therefore I try to stop dhcpcd and flush the eth0 like this VAR CONSTANT flushIP:STRING:='sudo ip addr flush dev eth0'; stopDHCP:STRING:='sudo systemctl stop dhcpcd'; END_VAR SysProcessExecuteCommand2(pszCommand:=stopDHCP, pszStdOut:=stdout,udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result)); SysProcessExecuteCommand2(pszCommand:=flushIP, pszStdOut:=stdout,udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result)); Besides losing the connection when flush occurs the CODESYS halts, seen on the display and I cannot see why, because I have lost the connection from my IDE. Why does the flush command halt the execution of the application?
Last updated: 2025-11-04
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 artem1223 on Synaxis of library declarations in the ST
CODESYS Forge
talk
(Post)
Codesys 3.5 17.30, plc - crevis GN-9373. I need to use RTC of pls for write in registers (need to check difference of writen 100 and 200 registers). For this i try to use SysTimeRtc (SysTimeRtc.SysTimeRtcGet) but its not working. After it i tryed to use SysTimeGetMs and something like this but still not working. Library? Mb but check project, SysTime with SysTimeRtc already, all what i know - already is here. Its my first try to learn ST (early used fbd and ladder, yeah), pls help with it. Mb problem with a syntaxis, but im not sure.
Last updated: 2025-11-26
Post by timvh on Version management
CODESYS Forge
talk
(Post)
This depends on what you want to achieve with installing the latest version and how you manage your projects and repositories. Maybe you also want to update your device (right click on it to update) or maybe your device is depending on certain versions of libraries (go to the library manager in your project and download the missing libraries). An option is also to first create a projectarchive of the current project you have before you install a new version of CODESYS. Then you can open this projectarchive in the new CODESYS version. Especially if you install the latest version of CODESYS in a Sandbox.
Last updated: 2025-12-15
Post by pernockham on Trend legend naming and access/config to/of trend/legend-variables
CODESYS Forge
talk
(Post)
There seems to have been included an updated in the last release 4.9.0.0 or am I wrong (I think I tried out these settings previously without giving the result I wanted contrary to what I see today)? Now an empty check box for "display variable name" is effective, and will present the Variable with the "Description" instead. Perfect! Seems to be some minor formatting still that needs adjustment. See attached screenshot. The apostrophe "'" between "description" I suppose should not be there? Also I guess the same apostrophe (although not visibly shown) gives an extra space between the variable-description and the ":"?? Thanks!
Last updated: 2025-12-19
Post by mattkaree on Mapping values with etherCAT mailbox communication
CODESYS Forge
talk
(Post)
I am using a WAGO PFC200 PLC as an etherCAT master and a Keyence IV3-G120 with DL-EC1A attached as an etherCAT slave. I am using CODESYS V3.5 SP21 Patch 3. I was able to set up mailbox communication and can see values changing accordingly, but I want to know how I can map these values and reference them in my program. I am able to map the process data objects in the 'EtherCAT I/O Mapping' tab, but there is no where to map the mailbox values in the 'CoE Online' tab. Is there a way I can reference one of these values in my code?
Last updated: 2026-01-27
Post by gatto on Two licenses have to be installed forgot to enable one license
CODESYS Forge
talk
(Post)
Sorry, I've never used Raspy. Maybe someone else can help. From personal experience, I've had license activation issues, but it was caused by my company firewall, which was blocking traffic from the Codesys license server. So I found that the license was listed as activated on the server (and therefore used and no longer activable), but it wasn't present in the PLC. I solved the problem by using an unblocked internet connection when I needed to activate the purchased license ticket. Since then, the activation process has always worked, and I've never lost any licenses.
Last updated: 2026-02-03
Post by gseidel on Absolute movement controlled by an external encoder.
CODESYS Forge
talk
(Post)
Hi polyautomacao, basically, there are two ways to approach this. My first choice would be to check whether your servo drives supports an external encoder, connect the encoder to the servo and configure the servo accordingly. In this case, you would not need to change anything in the CODESYS application. If that is not an option, you could use SM_DrivePosControl, a drive that closes the position loop in the PLC, and feed it with the external encoder positions. See (0). You can switch your servo drive to velocity control mode (SMC_SetControllerMode) and use SMC_FollowVelocity to apply the fSetVelocity of the SM_DrivePosControl to your servo. The MC_MoveAbsolute can then be performed on the SC_DrivePosControl Hope that helps. (0) https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_example_poscontrol.html Best regards, Georg
Last updated: 2026-03-04
Post by egr99 on Modbus TCP Server connection is ESTABLISHED but all holding registers are value 0?
CODESYS Forge
talk
(Post)
You're absolutely right. Sorry for that. In the meantime I wrote a Function block to handle the reads and writes to the different attached RTU-devices. It processes the parameter like (str_Modbus:=(usiSlave:=1, uiFC:=5, uiLEN:=1, uiOFFSET:=0, uiInterval:=500)) and the corresponding output, waits for the response and processes next request in a 5-state procedure. It's working for 2 gateways (stable without errors, although error recovery is included). But nevertheless it should be possible with the Channel definitions of Codesys. Much easier to maintain :)
Last updated: 2026-04-08
Post by otbeka on CAA File Handling: "Read only" error
CODESYS Forge
talk
(Post)
Hi, On CODESYS V3.5.19.50 I am using the latest 3S File Access library (CAA File & CAA Types) to save and retrieve configuration data from the User Data section of an SD card, via file called config.txt. The application reads the file to memory once upon initialisation, and then the only other operation is overwriting the file with the updated configuration whenever the user changes the settings. An issue is ocurring, seemingly randomly, where the config.txt file, and all surrounding directories, cannot be written to by the unit, returning a READ_ONLY_CAA error upon file open. This sometimes does not clear even after power-cycling the PLC several times, yet checking the file permissions with ls -l shows normal read, write, and execute access. I am wondering if this is caused by the PLC itself or by an issue in my application. I have included my CAA File handler function block (SD_Card_Bin(FB).txt) and any associated types/calls below: TYPE ConfigData : STRUCT Config : ARRAY[0..256] OF STRING(64); NumberOfStrings : UDINT; END_STRUCT END_TYPE TYPE Buffer : STRUCT Data : ARRAY[0..SIZEOF(ConfigData)] OF BYTE; DataLength : UDINT; END_STRUCT END_TYPE A case within my MAIN PRG: mode.WriteConfigDataToFile: VisuElems.CURRENTVISU := 'Screen_Write'; IF xModeHasChanged THEN iErrorCount := 0; iRoute := 0; END_IF CASE iRoute OF 0: inBuffer := ConfigData_To_Buffer(GVL.UnitData); xConfigError := FALSE; xDataConfigured := FALSE; iRoute := 1; 1 : //Read Data from Card SD_Card_Bin.strFileName :=FileName; SD_Card_Bin.iFileOperation := 2; SD_Card_Bin(xExecute :=TRUE, WriteBuffer := inBuffer, xDone =>xDataConfigured, xError=>xConfigError, strErrorCodes=>strError); IF xDataConfigured THEN SD_Card_Bin(xExecute :=FALSE); IF xConfigError THEN iRoute := 32767; ELSE iRoute :=100; END_IF END_IF 100: // The end bCurMode := mode.DisplayProcessVariables; 32767: // Config error iErrorCount := iErrorCount + 1; IF iErrorCount > 2 THEN // Repeats 3 times, if no progress abandons and returns error bCurMode := mode.WriteError; ELSE iRoute := 0; // Try again END_IF END_CASE I'd like to rule out my application as the cause of this bug - help via comments or criticism would be greatly appreciated.
Last updated: 2025-03-19
Post by gunstr on CODESYS control on RPi starts, shortly runs, then exits
CODESYS Forge
talk
(Post)
Thank you very much for the quick answer! The RPi hw were delivered last week so it's probably a resent version. I found an old scrapped board (2 years or so) with a broken GPIO that I tested with the same SD card image and with that board Codeys can run for the full 2h demo period without issues. Then I went back the the new board to test the 4.17.0.0 release but the installation fails... [INFORMATION] Standard output: create and install daemon [INFORMATION] Standard output: codesyscontrol started [WARNING] Unable to detect Raspberry Pi Architecture. Setting armv6l as default, you can change this through the settings panel. [INFORMATION] Standard output: codesyscontrol stopped [ERROR] Expected exit value of command failed: expected 0, received 1 [WARNING] Error setting the Raspberry Pi Architecture [ERROR] Error installing codesyscontrol Do you have any idea what could be the reason? I'm using an OS image including Python drivers for LCD and some I/O:s from last year to keep things stable, but also after upgrading with sudo apt update && sudo apt upgrade I still get the same error Reverting back to 4.15.00 works fine: [INFORMATION] Standard output: create and install daemon [INFORMATION] Standard output: codesysedge started [INFORMATION] Successfully installed codesyscontrol [INFORMATION] Successfully started CODESYS Edge Gateway for Linux [INFORMATION] Successfully started CODESYS Control for Raspberry Pi SL but as before the Codesys services stops after 30 seconds. And I noticed that the Codesys control stops and is not reachable also if I have no application loaded.
Last updated: 2025-09-02
Post by manuknecht on Maximum dynamic limits of MC_MoveLinearAbsolute and MC_MoveLinearRelative
CODESYS Forge
talk
(Post)
Hello all I use an axis group with two linear axes in a kinematic system. Using MC_MoveLinearAbsolute and MC_MoveLinearRelative, I am trying to realise dynamic movements (set velocity: 1 m/s, set acceleration: 30 m/s^2) with the highest possible jerk, as I want to compare this with a movement with a trapezoidal velocity profile. However, my measurements show that the axes accelerate with a maximum jerk of approx. 800 m/s^3, even if the value in the function block was set to 10,000 m/s^3. I have already increased the dynamic limits of the two axes accordingly (Velocity: 5000 u/s, Acc-/Deceleration: 250'000 u/s^2, Jerk: 100'000'000 u/s^3, where 1 u = 1 mm), but this had no effect. I have checked the input parameters of the function blocks and the VelFactor, AccFactor and JerkFactor factors are all set to the maximum (value 1). Reducing the cycle time has resulted in a higher jerk, but as we are already working with a cycle time of 1 ms, there is nothing more that can be done here. The axes themselves are still a long way from drawing the maximum current, which is why I assume that this should not be a problem either. Are there other factors or parameters that influence the dynamic limits and therefore allow faster movements? The PLC I am using is a Raspberry Pi 4 and Codesys V3.5 SP20 with all libraries up to date. Thanks in advance Manuel
Last updated: 2024-05-08
Post by thierry-b on Blocking UDP ports 1740–1743 and 22350 to disable CODESYS network scan (startup + device discovery)
CODESYS Forge
talk
(Post)
Hello, I am currently investigating the network behavior of CODESYS 3.5 (IDE + Gateway) in environments where the engineering workstation is connected to a very large /16 network. In such networks, the automatic device scan performed at IDE startup (and the manual “Scan Network” device discovery) can cause significant delays or freezes, due to the broadcast‑based discovery mechanism. After analyzing the traffic with Wireshark, I identified that the IDE uses the following UDP ports: 1740 – broadcast discovery 1741 – handshake / responses 1742 – fallback discovery 1743 – fallback handshake 22350 – additional runtime / gateway communication (WAGO, debug, extended discovery) To prevent the IDE from scanning the large /16 network, I tested blocking these ports in both directions (IN/OUT) on the network interface connected to the /16 segment (while keeping them open on the OT /24 network interface). Result: When UDP 1740, 1741, 1742 and 1743 are blocked on the IT interface, the IDE no longer sends any discovery traffic on that interface. The IDE still works normally on the OT interface (device discovery, online mode, download, etc.). Blocking port 22350 does not seem required to stop the scan, but I included it for completeness. My question: => Can you confirm that blocking UDP ports 1740, 1741, 1742, 1743 (and optionally 22350) on a specific network interface is a valid and supported way to completely disable the CODESYS IDE network scan on that interface (both at startup and during manual device discovery)? I am not trying to block communication with controllers on the OT network — only to prevent the IDE from scanning the large /16 IT network. Any confirmation or additional technical details about the discovery mechanism would be greatly appreciated. Thank you.
Last updated: 2026-03-31
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.