Post by msegon on OPC UA Client failed to connect
CODESYS Forge
talk
(Post)
Hi everyone, I would appreciate your help with a problem I've been working on for a few days but haven't been able to resolve. I'm trying to read data from Tridium Niagara 4.15 OPC UA Server, but I get the error BadCertificateInvalid. As far as I understand, you need to add a CA certificate somewhere to establish a secure connection, but I don't know where. 2025-10-27T09:06:43.247Z, 0x0000008d, 4, 0, 0, * ERROR: OpcUa_Channel_BeginConnect: Cannot create secure channel without certificates! 2025-10-27T09:06:43.247Z, 0x00001090, 4, 0, 0, * ERROR: Datasource: Error Failed (268468242) in state Connecting I tried communicating without encryption, but it doesn't find the point. Has anyone managed to establish encrypted OPC UA communication?
Last updated: 2025-10-28
Post by malte on OPC UA multiple Endpoints
CODESYS Forge
talk
(Post)
My CODESYS OPC UA server provides endpoints using both the hostname and the IP address. Connecting via the IP address works fine, but connecting via the hostname does not. The endpoint list shows both opc.tcp://<hostname>:4840 and opc.tcp://<ip>:4840. When using the hostname, the OPC UA client (UA Expert) fails to connect. Using the IP address connects without issues. Main goal is to conect via Python but opcua-asyncio seems to prefer the hostname. How can I configure CODESYS or my system so that the OPC UA connection via hostname also works properly or disable it completly? Running Codesys for PFC200 sl 4.18.0.0
Last updated: 2025-10-28
Post by pernockham on Trend legend naming and access/config to/of trend/legend-variables
CODESYS Forge
talk
(Post)
Trying the web-version of trend-data. This seems to be a impressive tool, but I lack/cant find a number of what I would think are important parts. There does not seem to be a way to get away from the dot.notated variable naming in the legend.. A developer might want the dot-notation but an end-customer will surely not. For instance I want to display 12 temperatures, instead of t1, t2 etc.. they will be named. gvl_io.unit[1].trend.temps.t1_a gvl_io.unit[1].trend.temps.t1_b gvl_io.unit[1].trend.temps.t1_c gvl_io.unit[1].trend.temps.t2_a .. gvl_io.unit[1].trend.temps.t4_b.. gvl_io.unit[1].trend.temps.t4_c.. Quite a lot of unnecessary text/data taking space from the actual trend => Is there a way to access/interface the legend-data programmatically so I can change the presentation/naming?
Last updated: 2025-12-16
Post by gseidel on Can't get SMC_SmoothPath to work
CODESYS Forge
talk
(Post)
Hi bertus, I cannot see any problem in the code you posted. Just some ideas: What is the value of D_ANGLE_TOL? - Do you need the assignment bAbort := NOT bDecoder? Does it help to leave it out? Any errors (e.g. SMC_SmoothPath.Error/ErrorID) or PLC log messages? What if you comment out SMC_SmoothMerge and SMC_LimtiDynamics, is corner smoothing still not working? Is bDecode written from a different task (e.g. visu)? Then I would recommend to assign to a local variable (bDecodeLocal := bDecode) and use that for all FBs. Otherwise, FBs might see different values of bDecode in a single cycle, which will cause problems. Regards, Georg
Last updated: 2025-12-17
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 dhumphries on Deploy Codesys Control SL to a 'secure' device
CODESYS Forge
talk
(Post)
I have the same problem on a setup where I'm trying to load control SL onto a fresh installation of ubuntu server 22.04 (with sudo privileges,) I've done this in the past several times but only with codesys 3.5.19.x since updating to the new versions I'm having inconsistencies, either I can load the runtime but not login or I can't load the runtime at all. I appreciate there are new releases frequently, but it would be nice if there was a LTS version with some kind of documentation. I'm currently building a VM so I can install version 3.5.19.4 since this was the last version that worked for me. Adding additional versions through codesys installer has been unsuccessful, hopefully a fresh install on a virgin OS will be more successful.
Last updated: 2026-08-10
Post by sigbjorn-kleppe on How to display only legend description and not variable name
CODESYS Forge
talk
(Post)
Hello, I have a question regarding the Trend and LegendDisplayer visualization elements. As the provided image suggests, I am trending two variables which show the torque of two motors in terms of % of max load. Below the trend element, is the LegendDisplayer element which correctly displays the name of both trends. But also, it displays the actual variable name in parenthesis, which I do not want. Currently, the name is set by entering a description for each variable in the trend recording settings. But I can't seem to find any option to display only this description. Is it possible to only remove the variable name used in the software? I'm using CODESYS 3.5.21.50. Thanks in advance!
Last updated: 3 days ago
Post by sigbjorn-kleppe on How to display only legend description and not variable name
CODESYS Forge
talk
(Post)
Hello, I have a question regarding the Trend and LegendDisplayer visualization elements. As the provided image suggests, I am trending two variables which show the torque of two motors in terms of % of max load. Below the trend element, is the LegendDisplayer element which correctly displays the name of both trends. But also, it displays the actual variable name in parenthesis, which I do not want. Currently, the name is set by entering a description for each variable in the trend recording settings. But I can't seem to find any option to display only this description. Is it possible to only remove the variable name used in the software? I'm using CODESYS 3.5.21.50. Thanks in advance!
Last updated: 3 days ago
Post by sheberle on No Bootproject possible
CODESYS Forge
talk
(Post)
Hello Alex, the message is generated by the CODESYS code generator based on the DevDesc settings of the memory areas available for the target. The problem arises when after too many online changes the area is full. Therefore no more boot project can be generated. Short-term remedy as described in the dialog: Clean and fresh download. This way the initial memory size will be "used" again After how many online changes did this error occur? There is no set limit on the number of online changes, but making too many changes could be a risk. br Simon
Last updated: 2026-03-31
Post by pernockham on Images not shown in webvisu
CODESYS Forge
talk
(Post)
Two issues. Ive been struggling to get the user management the way I want it. I want to protect the device from unauthorized upload/download, but I do not want login requirement on webvisu. The combination that seems to work is to use "runtime device user management" while keeping the visu user management in "legacy mode"? Initially this seemed to work, but now images are not loaded when using direct access, while they are still shown if I access the webpage via Automation server. Im guessing its connected to the authorization changes? Anyone able to help out? Thanks Also, I read that legacy mode should be avoided, is it possible to use "runtime based visu user management" while keeping direct access to the webpage without login. System is a "Control for linux SL, version 4.20.0.0" Per
Last updated: 2026-04-10
Post by reinier-geers on internal error
CODESYS Forge
talk
(Post)
Hi ive got an internal error. BUt no solution for this. How do i solve this ? ------ Build started: Application: Slave_3.Application ------- [ERROR] Internal error:System.NullReferenceException: De objectverwijzing is niet op een exemplaar van een object ingesteld. bij _3S.CoDeSys.ObjectManager.ExistingPSNode.get_ParentObjectGuid() bij _3S.CoDeSys.ObjectManager.AbstractPSNode.get_ParentNode() bij _3S.CoDeSys.ObjectManager.ProjectStructure.ConsolidateAndClearPendingChanges(LList`1 pendingChanges) bij _3S.CoDeSys.ObjectManager.ProjectStructure.RaisePendingChanges(Boolean bTriggerPendingChanges2) bij _3S.CoDeSys.ObjectManager.Project.HandleUndoMgrAfterEndCompoundAction2(EventArgs e) bij _3S.CoDeSys.ObjectManager.UndoManager.OnAfterEndCompoundAction2(EventArgs e) bij _3S.CoDeSys.ObjectManager.UndoManager.EndCompoundAction() bij _3S.CoDeSys.DeviceEditorSoftMotion.StaticSoftMotionEditor._ehBeforeCompile(Object sender, CompileEventArgs e) bij _3S.CoDeSys.Core.LanguageModel.CompileEventHandler.Invoke(Object sender, CompileEventArgs e) bij _3S.CoDeSys.Core.LanguageModel.CompileEventHandler.Invoke(Object sender, CompileEventArgs e) bij _3S.CoDeSys.LanguageModelManager.LanguageModelManagerConsolidated.OnBeforeCompile(CompileEventArgs e) bij _3S.CoDeSys.LanguageModelManager.LanguageModelManagerConsolidated.RaiseAndCheckBeforeCompile(Guid guidApplication, IMessageCategory cmc) bij ..(Boolean , Boolean , Boolean ) bij _3S.CoDeSys.Compiler35210.CompilerPhases.CompilerPhaseControllerGenerateCode.(Boolean ) bij _3S.CoDeSys.Compiler35210.CompilerPhases.CompilerPhaseControllerGenerateCode.() Build complete -- 1 errors, 0 warnings : No download possible
Last updated: 2026-04-14
Post by egau on Importing a library overrides parameters of a referenced library
CODESYS Forge
talk
(Post)
Hi, In my CODESYS project (ABC.project), I’m using the MQTT library. I’ve also created a separate library (DEF.library) which itself references the MQTT library. In ABC.project, I’ve customized some MQTT parameters—for example, setting g_udiMaxPublishersAndSubscribers to 100 instead of the default value of 20. However, when I import DEF.library into ABC.project, the MQTT parameters get reset to their default values. I assume this happens because DEF.library still uses the default MQTT configuration, which then overrides my project settings. A straightforward workaround would be to manually align the parameter values in DEF.library, but that doesn’t feel like the right approach. Is there a better or recommended way to handle this situation? I'm using SP18 Patch3. Any insights would be greatly appreciated. Thanks in advance!
Last updated: 2026-05-04
Post by jroddball79 on PM556-TP-ETH — How to change IP address without overwriting the PLC program?
CODESYS Forge
talk
(Post)
Still looking for a solution. I have gathered more information that might help: Device: ABB AC500 PM556-TP-ETH Firmware version: 2.4.2.14993 (dated 2014) Open ports confirmed: 502 (Modbus TCP), 1200 and 1201 (CODESYS runtime). SSH (22) and HTTP (80) are not reachable. No SD card in the PLC. I can connect via Automation Builder using the current IP and Online Login works, but I have no original source project available. Automation Builder requires a full PLC download to apply IP changes, which we want to avoid as it would overwrite the running program. Any guidance on how to change the IP without a full download would be greatly appreciated. I am also open to solutions using third party tools, DCP protocol, or scripts. Thank you
Last updated: 2026-05-22
Post by jari-koivuluoma on Comparing between SP19 patch 5 and patch 7
CODESYS Forge
talk
(Post)
Hello. Has anyone here used project compare tool across different versions of Codesys? I tried the compare of the title but it does not seem to do much. It lets me choose the project files and then seems to be comparing but no results are ever shown. If the compare tool cannot be used how else would I keep 2 nearly identical projects in sync when the versions differ? On the other hand it might be possible to just have one project but then I would need to use the older codesys with older target device description to develop for devices that have newer device description. Codesys will let me do that but its not recommending it. Any advice?
Last updated: 2026-08-20
Post by timvh on CPU + EtherCAT redundancy
CODESYS Forge
talk
(Post)
It works well with two Wago 750-8210's. I helped a few customers setting this up. But it should work with any device which can control EtherCAT I/O, is real-time and has sufficient network interfaces. Two network adapters can be used to create a redundant EtherCAT network (you need 2 additional switches for this). The other network adapters can be used to interconnect the 2 PLC's (synchronization). We noticed that if you exchange variable lists that there could be some issues if you have long lists. So what we did is use a SoftPLC on a server that contains all the settings which continuously sends network packages (GVL sender) and which is received by both PLC's (network receiver). Switching over is done in milliseconds. The bus doesn't notice the change-over. EtherCAT communication works flawlessly.
Last updated: 2026-01-30
Post by winki on Error in licence activation
CODESYS Forge
talk
(Post)
Hello, I think I understand: On my debian gateway I have done: sudo cmu --list cmu - CodeMeter Universal Support Tool. Version 8.30a of 2025-May-06 (Build 6885) for Linux/ARMHF 64-Bit Copyright (C) 2007-2025 by WIBU-SYSTEMS AG. All rights reserved. List all locally connected CmContainers: - CmContainer with Serial Number 130-XXXXXXXX and version 3.00 (empty) - CmContainer with Serial Number 130-XXXXXXXX and version 3.00 (locked) Result: 2 CmContainer(s) listed. The licence has been activated with a computer Name, but the guy who did it make a mistake in the name, so he changed it after to have activate the licence. I think this has created a second container. The licence is actived on the other container.
Last updated: 2026-02-06
Post by timvh on EXCEPTION [watchdog] how to find position cause
CODESYS Forge
talk
(Post)
Monitor what your current cycle time is (in the Task Configuration when you are online). If this is sometimes close to 200ms, then change your code (e.g. limit the loops, or prevent copying a lot of data between objects). Or just set the Watchdog time (or sensitivity) higher if you don't care that it sometimes takes longer than 200ms. If you want to find out which objects in your application consume the most time, then buy a PDE (Professional Developer Edition) license. With this you get a license for the Profiler. This can help you a lot to find the root cause, because it will create a nice overview of all objects, their calls and the time (percentage) it takes to execute it.
Last updated: 2026-02-09
Post by konstantin on Lenze i950 Servo and WAGO PFC200
CODESYS Forge
talk
(Post)
Hello, basically the i950 drive support CiA402 Basic and CiA402 Advanced modes. I attached pictures of both mode supported functions. It also support CSP, VL, CSV and CST modes. It seems the homing mode is in CiA402 Advanced mode but how can you not have the homing mode in both modes? It is a vital part of any servo system. If I use the SoftMotion standard demo mode, I can move the servo absolute and relative but cannot home it. But in SoftMotion Light mode, I cannot execute any motion function. Here is the official manual for i950 servo drive - i950 Documentation Best Regards Konstantin Kolev
Last updated: 2026-02-13
Post by gseidel on CAM Motion Recover after STO
CODESYS Forge
talk
(Post)
Dear Mr. Kolev, I'm not sure I understood correctly. But this is my take on your question: When the STO of the slave is triggered, store the current master position (e.g. 225 units) After the reset of the slave error, call MC_SetPosition on the virtual master and reset it to the stored position (225 units) Optionally, before MC_CamIn is restartet, move the slave back to the slave position corresponding to the stored master position. (If you do this, no ramping in will be necessary) Restart MC_CamIn, with absolute master position and absolute slave position. Choose the StartMode that is appropriate for your machine. Best regards, Georg Seidel
Last updated: 2026-02-16
Post by poliautomacao on Absolute movement controlled by an external encoder.
CODESYS Forge
talk
(Post)
Hello, I made this configuration, I'm moving the encoder value to SM_Driver_PosControl.in.wActPosition. When I make the absolute movement of my PosControl axis, my physical drive axis rotates perfectly, but I noticed that the movement is not followed by the encoder. That is, if I hold the encoder and keep it in position 0, the PosControl axis makes the absolute movement of 314 mm and stops, which is strange because the encoder is at 0. Theoretically, the PosControl axis should accelerate to try to compensate for the movement error. I haven't yet achieved perfect functionality.
Last updated: 2026-03-24
Post by husarz17 on How change Unity-ID in TCP Modbus Slave
CODESYS Forge
talk
(Post)
My codesys is 3.5.21.30. I am using function ModbusServer from library ModbusTCP_Slave. The reason is that I need share 9000 Holding registers. By standard configuration it is only 4096. fbMbTcpDevice: ModbusTCP_Slave.ModbusServer; fbMbTcpDevice( wPort := 502, pInputData := ADR(awInputReg), pOutputData := ADR(awHoldingReg), uiInputDataSize := 10, uiOutputDataSize := 9000, xEnable := TRUE, tTimeout := 10000, InterfaceName := "eth0", xBusy => xBusy, xError => xError, byClientConnections => byConnections ); Ethernet port is cofigured: Network interface: eth0 IP address: 10.10.22.55 Subnet maskL 255.255.255.0 Default gateway: 0.0.0.0 And it only works when I am reading registers with ID 255 by Modbus Poll. Any other IDs don't work. The actual TCP client device try to read registers with ID 1 and I can't change it... Thanks in advance for your help!
Last updated: 2026-04-01
Post by msegon on Send HTML body with Mail Service SL
CODESYS Forge
talk
(Post)
I'm trying to send a mail using Mail service SL. I would like the body to be in HTML format for a nicer look. Which I managed to do, but only if I don't send an attachment. Can someone help me with the settings on how to send an HTML body and attachment? I used the Mail Service SL Example project, the only thing I added in the "Main_PRG" code in line 51 under "SendMailFB" is "mimeType := 1". I'm using Library: Mail Service SL Library Documentation Company: CODESYS Title: Mail Service SL Version: 1.13.0.0 Categories: Application|Utils Namespace: MAIL Author: CODESYS Development GmbH Placeholder: Mail_Service_SL
Last updated: 2026-04-14
Post by jroddball79 on PM556-TP-ETH — How to change IP address without overwriting the PLC program?
CODESYS Forge
talk
(Post)
We have checked open ports. SSH (22) and HTTP (80) are not reachable. The only open ports are: 502 (Modbus TCP — used for lighting control) 1200 (CODESYS runtime) 1201 (CODESYS runtime) We can connect via Automation Builder using the current IP, but we don't have the original project source — only an empty project. This is why we are afraid of doing a full download, as it would overwrite the running application. Is there any way to change the IP through the CODESYS runtime protocol on ports 1200/1201 without affecting the running program?"
Last updated: 2026-05-20
Post by steven-schalm on Frustration-Fueled Feedback on Project File Management and Git Integration
CODESYS Forge
talk
(Post)
Yes, it's very tedious, especially since Codesys 4 is a custom web development... At Rex Automatisierungstechnik GmbH, we've invested a lot of time in the Python interface to enable something like CI/CD, but also to export the code and re-import it after making clean modifications. Also, the fact that a class/function block is just a single file containing all the methods, props, etc. Yes, and right now I’m building my own VS Code extension with a clean LSP (Language Server Protocol) for ST, as well as an st-validator, st-formatter, st-linter, codesysPackage.json, and codesys_modules folder... Best regards, Steven Schalm / Sharok6130
Last updated: 2026-06-11
Post by thejesh on WebVisu: switch-frame destroys and rebuilds referenced visualization - is retention configurable?
CODESYS Forge
talk
(Post)
Hi, HTML5 Conrtrol elements on CODESYS V3.5 SP22 Patch 2, WebVisu only (no TargetVisu). The client is Chromium 147 in kiosk mode on a Raspberry Pi CM5 panel; the runtime is CODESYS Control Win V3 x64/CODESYS Control RTE V3 x64 on a separate IPC. I have measured that changing a Frame element's switch-frame variable destroys the currently referenced visualization and fully rebuilds it on return, including all embedded HTML5 controls. We would like to know whether this lifecycle is configurable. Measurement 1: Curently, our production page contains a good number of custom HTML5 controls and will only increase , each of which the WebVisu client instantiates as a separate about:srcdoc iframe. I counted live targets via the Chromium remote debugging endpoint (curl http://localhost:9222/json/list) before and after switching. Production displayed (index 0) 108 iframes Switched to a light page (index 1) 46 iframes Switched back to Production 108 iframes 62 controls are destroyed on leaving the page and re-instantiated on return. Observed latency was approximately 2.5 -5s away from the heavy page and approximately 4.0 -5 s back to it. This was measured with the panel otherwise idle: 2.8% system CPU, 97.1% idle, 2 h 56 min uptime, no remote-desktop session running, hardware acceleration confirmed active in chrome://gpu. I had previously measured the same behaviour under a much higher CPU load and have since resolved that load separately (VISU_TASK cycle period), so I am confident the rebuild is the frame lifecycle itself and not CPU starvation. Measurement 2 — frame offset instead of switch index I then displayed the same overlay page by a different mechanism. Instead of using a switch-frame index, I placed the page in a fixed Frame parked off-screen below the visible canvas, and drive its Y offset from an INT in Structured Text to move it into view. With this approach the overlay appears immediately, the production page underneath is never torn down and keeps updating, and no visualization is destroyed or rebuilt in either direction. The iframe count does not change at any point. This is the same visualization, containing the same HTML5 controls, as in Measurement 1 — the only difference is how it is brought on screen. So the rebuild appears to be a property of the switch-frame mechanism specifically, not of the page or its control count. Questions: Is the destroy-and-rebuild behavior on switch-frame the intended and documented lifecycle for WebVisu? Is there any setting, property or client option that causes a referenced visualization to remain instantiated when it is not the active index — the equivalent of keeping it mounted but not displayed? Does the runtime or client offer any form of caching or pre-instantiation for referenced visualizations, so that a return switch does not pay the full construction cost? Is the cost specific to HTML5 controls, or would the same rebuild occur with an equivalent number of native visualization elements? We ask because it would inform whether reducing our HTML5 control count is a viable solution. Is there a recommended pattern for showing a full-screen page over a live production screen without tearing the production screen down? My current workaround is to keep every page permanently instantiated and move it on and off screen by driving a frame offset variable, which avoids the rebuild entirely but means every page stays live and consumes client resources for the life of the session. This works, but I would prefer to use the supported mechanism if one exists. Any help on this is greatly appreciated. Thank you!
Last updated: 2026-08-07
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.