The text list provided outside the library is not available for visualization controls within the library.
CODESYS Forge
talk
(Thread)
The text list provided outside the library is not available for visualization controls within the library.
Last updated: 2023-10-16
Codesys Runtime on RevPi don't recognise the username and the password by the second installation
CODESYS Forge
talk
(Thread)
Codesys Runtime on RevPi don't recognise the username and the password by the second installation
Last updated: 2022-12-16
Post by squiggleypuff on Can't Add New Version of Modbus TCP Master
CODESYS Forge
talk
(Post)
I'm having a tough time trying to get Modbus working on a Festo CPX-E PLC; it throws these pre-compiler errors as soon as I add in my Modbus TCP Master 3.5.12.30 to my project: I'm confused about the C0046 error, as I have IODrvModbusTCP 4.3.0.0 Library installed. So I thought maybe I needed to use the newest Modbus TCP Master 4.3.0.0, which is in my device repository: However, whenever I go to add this underneath the Ethernet adapter (which is version 4.2.0.0), the only TCP Master version available is the old 3.5.12.30 one, even if I have Display all versions checked.: I even went so far as to delete the old version, but then there were no options to add a Modbus TCP Master under my Ethernet adapter. What needs to be done to use the newest Modbus TCP Master? Or are these pre-compiler errors unrelated and I'm missing something? Any help greatly appreciated.
Last updated: 2024-04-04
Post by fedex03 on Read Global Variable from an IoT Device
CODESYS Forge
talk
(Post)
Hello everyone, I am new to the forum, and to programming with CodeSys. I am dealing with IoT device for industry and I should check if a device is able to read/write global variables in an EtherNet/IP Master. Since I do not have an EtherNet/IP PLC, I thought of using CodeSys as a softPLC. I created a program with a set of global variables (GVL) and a task that increments them. I would like to know if I need to enable any options so that the global variables can be read by IoT devices. My device supports Class 2 Class (Explicit Messaging Connection) communication. Thank you in advance for your help.
Last updated: 2025-07-22
Post by baotthitawat on Why Structured SCADA Documentation Matters in Modern Industrial Systems
CODESYS Forge
talk
(Post)
Modern SCADA development is no longer limited to monitoring dashboards and PLC communication. Today’s industrial systems often require: Cloud architecture Web & mobile SCADA API integration IIoT communication Alarm management Scalable deployment workflows One challenge in many projects is that deployment knowledge is usually scattered across multiple documents, configuration guides, and troubleshooting references. As systems become more connected, engineers need a more structured learning approach to reduce deployment time and improve maintainability. The ATSCADA Training Book is an interesting example because it organizes the ecosystem into a clearer roadmap covering: SCADA architecture Driver & OPC communication Web visualization Mobile applications Cloud & IIoT systems Troubleshooting & maintenance I think structured technical documentation will become increasingly important as industrial automation systems continue evolving toward larger and more connected environments.
Last updated: 2026-05-27
Post by wistaro on Hardware compatibility with Linux RealTime PLC
CODESYS Forge
talk
(Post)
Hello, I am currently using Codesys Control RTE Softmotion V3 to control my servo-drives in CAN, EtherCAT and PROFINET IRT. I am using a PC with Windows 10 with the following boards: - PEAK-CAN PCIe board (for CAN and Softmotion); - Hilscher CifX with firmware 3.X and SysDrv3s driver (for PROFINET IRT); - Realteak standard NIC (for EtherCAT). I would like to switch to Linux (Debian), because this computer is old, slow, and outdated (Windows 11 is far from being compatible with this computer). Before doing this, I would like to be sure of the compatility between my 3 boards and Codesys Control Linux SL. Otherwize, I will stay on Windows 10 and use it in an isolated environnement. Thanks for your advices. Regards,
Last updated: 2026-06-15
Post by niallel on CamBuilder and first boundary position not zero
CODESYS Forge
talk
(Post)
Hi, I've read the CamBuilder documentation and it shows to use the left boundary of the first segment as SMCB.BoundImplicit(), so that the transition is as smooth as possible. With this it sets X and Y to 0. My first slave position is not 0 (say for example it's 100), so I would set it with SMCB.Bound(0,100). My question is that when the cam goes back to the start (Periodic := TRUE) , will it blend with the last position (360, 100) if I do this? I imagine it will, but the documentation isn't clear as the information in the Periodic Cams only says to set Smooth Transition in the cam properties - but when I'm defining it with code there isn't an option for Smooth Transition to be set. Hope this makes sense? Many thanks,
Last updated: 2024-10-23
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Cut & Paste not working at its best.
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by caliberbishop on Having trouble using the Web Client SL library
CODESYS Forge
talk
(Post)
Hello, I'm trying to use the Web Client SL library, I installed it in the IDE (did not purchase a license yet, as this is still a proof of concept so demo mode is good enough) and added it to the library manager. However, when trying to define a FB of the type WebClient I get a "Identifier 'WebClient' not defined" error message, setting the type to Web_Client_SL.WebClient did not work as well. Opening the example project the FBs defined there give the same error message. From the problem in the example project I deduce this is not a syntax problem, so maybe a license problem, but there should be a working demo mode, so what am I missing? IDE v 3.5.21.30 Library v 1.12.0.0 Thanks
Last updated: 2025-10-04
Post by timvh on Profinet fault with codesys control V3 - Receive packet error
CODESYS Forge
talk
(Post)
Are you using the Control Win SL (installed together with the development environment of CODESYS)? If yes, you might want to consider using the CODESYS RTE instead. This has real-time capabilities (running on separate core(s)). But to be able to use this, you have to install the CODESYS Ethernet driver for your network interface to be able to let the RTE access the network port also in realtime. See: https://store.codesys.com/en/codesys-control-rte-sl-bundle.html https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_windows_rts_v3.html PS, I haven't tested this myself yet, but you could try to use the SetCommunicationState method of the Profinet controller to see if you can reset and start the bus communication: result := PN_Controller.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.START); PS, if you are located in the Netherlands or Belgium, we could also provide the license(s) for you.
Last updated: 2024-02-28
Post by timvh on Profinet fault with codesys control V3 - Receive packet error
CODESYS Forge
talk
(Post)
Are you using the Control Win SL (installed together with the development environment of CODESYS)? If yes, you might want to consider using the CODESYS RTE instead. This has real-time capabilities (running on separate core(s)). But to be able to use this, you have to install the CODESYS Ethernet driver for your network interface to be able to let the RTE access the network port also in realtime. See: https://store.codesys.com/en/codesys-control-rte-sl-bundle.html https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_windows_rts_v3.html PS, I haven't tested this myself yet, but you could try to use the SetCommunicationState method of the Profinet controller to see if you can reset and start the bus communication: result := PN_Controller.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.START); PS, if you are located in the Netherlands or Belgium, we could also provide the license(s) for you.
Last updated: 2024-02-28
Post by phuvutran on CODESYS Date/Time Picker in Dialog does not update value on close (focus issue) – any workaround?
CODESYS Forge
talk
(Post)
Hi everyone, I am working with CODESYS 3.5.21 and using the Date/Time Picker inside a dialog (popup visualization). I noticed a behavior that seems problematic: The Date/Time Picker does NOT update the bound variable immediately. It only updates when the control loses focus/select. This causes an issue in my dialog: User selects a new date/time Immediately presses OK (which closes the dialog) The new value is NOT saved The variable still contains the old value So it seems the Date/Time Picker still holds the value internally and does not commit it before the dialog is closed.
Last updated: 2026-05-20
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 duvanmoreno24 on Modbus writing on value change
CODESYS Forge
talk
(Post)
Yes, I tried to do what you put in the first code. However, I have a problem with that and that is that the inputs must be declared with the type. I have many data types running in my code (real, int, uint, bool) and I can't put them in the same function, another thing is that I need to instantiate that function for everything I want to write to the slave. You put a for to 200 but it means that it has to be the same data type and inside the array, but I want to get them individually. I'm struggling to do it in a good and efficient way like wago's E-cockpit does. in the first screenshot you can see, you simply type in value, change the package of things you want to write in value change and it does everything by itself automatically, without comparing any old and new values and even less having the need to activate a bool. , it is perfect.
Last updated: 2024-04-03
Post by nizrahel on OpC UA server on Raspberry Pi 64 SL runtime
CODESYS Forge
talk
(Post)
Hi all! I'm working on an home project using a Raspberry Pi 3 device with Codesys for Raspberry Pi 64 SL runtime. I would like to create the HMI interface with Siemens WinCC Unified (or Advanced) configuring the Raspberry as OPC UA server. I tryed everything, but I didn't find the way to let the OPC UA connection works using UaExpert. I tryed to use anonymous connection, authenticated connection and the ip address instead of the server name in the path connection. There is no way to connect to the OPC UA server and I was asking myself if this feature is really supported for the runtime version used. Another strange thing I noted, is that is not possible to quickly create an OPC UA certificate in the Security Screen, as show in any tutorials. I have correctly created the Symbol Configuration enabling the OPC UA feature. I attach to this topic some printscreen of the actual configuration (sorry for the italian language interface, but I didn't find the way to switch to english). Thank you very much in advance for your support and advices!
Last updated: 2023-12-03
Post by abauza on Image Pool using in other libraries
CODESYS Forge
talk
(Post)
Hi im Albert, im developing libraries for my PLCs and i have some issues on visualization part. First of all I have done a library that have a image pool with a list of 4 gifs "ImagePoolErrors" (i've tested in other projects and it works) but the problem comes when i create another library that in the visualization part contains images from my image pool library, when i simulate a program that includes a instance of my second library object the visualization images dont show, any of them, i've checked all the references and tried some options of the image properties but without any difference. Here is the screenshots of the first library (that contains Image Pool) and the second library (that includes images of the image pool first library) and the visualization simulation (with the missing image gif issue). Any idea of what i forgotten in the process? If you need any detail of the library or of the project or you need the library file, ask me, thank on advance
Last updated: 2024-08-19
Post by rd76065 on Opto 22 Groov PR2 Modbus TCP Master communication
CODESYS Forge
talk
(Post)
Previously, I have used ModbusEthernet_04 library for Wago for ModbusTCP Master communicational in Codesys V2.3. How to use same communication of similar UDT for Opto22 Groov PR2 PLC in Codesys V3.5 SP20. Can I use OSCAT library - Network -MB_Client or IODrvModbusTCP - ModbusRequest for this requirement? If any other please guide.
Last updated: 2024-05-31
Post by smartcoco on The text list provided outside the library is not available for visualization controls within the library.
CODESYS Forge
talk
(Post)
I have a project called 'DemoProject' and a library called 'DemoLib'. Create a visual control named "DemoVisu" in the library, with a selection box of type "ComboBoxInteger" in the space. Now 'ComboBoxInteger' requires a 'Text list'. This "Text list" is provided when I call the "DemoVisu" control of the "DemoLib" library in "DemoProject". And this text list is in 'DemoProject'. I found that 'ComboBoxInteger' no longer works at this time. Other visual controls that use text lists also have this issue. I hope there is a good solution to this problem.
Last updated: 2023-10-16
Post by alexgooi on Is it possible in the log to see previous shutdown
CODESYS Forge
talk
(Post)
Hi DavidBo, In general Codesys is used to control equipment and an exception is the worst thing that can happen in your installation. If you cannot prevent the exception from triggering, you could implement a Try catch statement, with this solution your controller keeps on running and you are able to handle the exception. __TRY //This statement will trigger an exception Result := 4/0; __CATCH(exc) //Handle the exception HandleException(exc, strExceptionText => strExceptionText); // From the Codesys help file //Create a log file //-------------------------------------------------------- __ENDTRY What you also could do is implement implicit checks, these functions cover most of the exceptions (like dividing by zero) See picture But in general avoid a complete controller shutdown!
Last updated: 2024-02-09
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 alexgooi on Modbus TCP interface get stuck
CODESYS Forge
talk
(Post)
Dear Forum, I'm currently experimenting with Modbus interfaces in combination with a virtual controller. I have the following setup (Modbus_Setup.png): I have an IPC with Debian installed on it (Debian 13). On this Debian machine I have installed a docker server and on this docker server a Codesys runtime container is deployed (Codesys_image.png). The Modbus scanner makes connection with and IO coupler and this works well. But when I physically disconnect the ethernet connection between the IPC and the IO coupler the Modbus interface gets stuck in a state where it gets stuck in the busy state (Modbus_Stuck.png). When I plug the cable back in, the IO coupler isn't communicating until the xBusy variable is manually set to False, after this action is performed the communication goes back to normal. I have tried to set the container network to host and bridge (Network.png), but both version gives the same result (stuck scanner). I would expect that the Modbus interface is generating a timeout after 1 sec, because this is how it is setup (Modbus_settings.png), but this is not what happens. I have thought to write a piece of code that writes xBusy to false when it is stuck but because it is an output I'm not able to write to it. I have tried this with another PC (different CPU/motherboard) but this gives the same outcome. I tried updating to the latest version of Virtual control (4.20) but this gives the same result. I also tried to do the same thing with an ethernet IP scanner, and this gives an error after the timeout is expired (so this works well). I have tried to connect to the IO coupler using the Modbus_FB lib (Modbus_FB.png) the FB's are giving the correct errors and behaving as expected. At last I have tried to use a Scanner on a Codesys controller (no IPC) and here the scanner behaves as expected (an alarm is triggered after the timeout has been expired). The version of the Codesys components are listed in the picture Versions.png Is there anyone that can give me a push in the right direction? Kind regards Alex
Last updated: 2026-04-14
Post by brouwyka on JSONByteArrayWriter string result incorrect order
CODESYS Forge
talk
(Post)
Hello everybody! We are currently working on implementing a call to an API that tracks data sent to it through a JSON body. Versions: CODESYS V3.5 SP19 Patch 7 using IIOT Libraries SL license, specifically JSON Utilities SL version 1.13.0.0. For simplicity, let's say we want to construct the following JSON body for our request (simplified to just 1 key-value pair in each of the array objects to keep things shorter, but we'd have multiple fields in each in reality): { "id": "machine_1", "readings": [ { "temp_mid": 153.8 }, { "temp_mid": 98.3 } ], "status": "RUNNING" } However, our "readings" data is added over time, not in creation, so calls to the builder would be somewhat out of order. In a simplified manner, our calls would look like this: jsonBuilder(pJsonData := JsonData, diRootObj => rootJsonIndex); // rootJsonIndex = 0. // Set "id" at root JSON object. wsValue := "machine_1"; jsonBuilder.SetKeyWithValue("id", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 1, VALUE: diParentIndex = 1 & diIndex = 2. // ... Time passes, we get our first reading to add ... // The "readings" array does not exist yet, so we make it first at root JSON object before adding our first reading. readingsJsonArrayIndex := jsonBuilder.SetKeyWithArray("readings", diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 3, VALUE: diParentIndex = 3 & diIndex = 4. // Then add the first reading, for which we first have to make an object. readingsJsonArrayObjectIndex := jsonBuilder.SetObject(diParentIndex := readingsJsonArrayIndex); // JSONData OBJECT: diParentIndex = 4 & diIndex = 5. // And then we add the field(s) in the object for the first reading. // NOTE the use of `readingsJsonArrayObjectIndex` so we set the field(s) in the first object in the array. rValue := 153.8; jsonBuilder.SetKeyWithValue("temp_mid", wsValue, diParentIndex := readingsJsonArrayObjectIndex); // JSONData KEY: diParentIndex = 5 & diIndex = 6, VALUE: diParentIndex = 6 & diIndex = 7. // ... Time passes, we want to add another root-JSON-level field ... // Set "status" at root JSON object. wsValue := "RUNNING"; jsonBuilder.SetKeyWithValue("status", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 8, VALUE: diParentIndex = 8 & diIndex = 9. // ... Time passes, we want to add a second reading ... // "readings" array exists, so add the second reading, but first we have to make another object. // NOTE the re-use of the earlier stored `readingsJsonArrayIndex`, so we add the new object to that previously created array. readingsJsonArrayObjectIndex := jsonBuilder.SetObject(diParentIndex := readingsJsonArrayIndex); // JSONData OBJECT: diParentIndex = 4 & diIndex = 10. // And then we add the field(s) in the object for the first reading. // NOTE the use of `readingsJsonArrayObjectIndex` so we set the field(s) in the SECOND(, new) object in the array. rValue := 98.3; jsonBuilder.SetKeyWithValue("temp_mid", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 10 & diIndex = 11, VALUE: diParentIndex = 11 & diIndex = 12. // ... Finally, we want to send to the API, so we must convert the builder to data the client accepts as a body ... xTestWriteToJsonArray := TRUE; jsonArrayWriter( xExecute := xTestWriteToJsonArray, pwData := ADR(jsonDataString), udiSize := SIZEOF(jsonDataString), jsonData := JsonData^ ); IF jsonArrayWriter.xDone THEN // The writer was successful, the `jsonDataString` VAR should now contain a WString copy of the JSON object from the builder. xTestWriteToJsonArray := FALSE; END_IF We see that the JsonData STRUCT is correctly organised (in terms of the diParentIndex & diIndex set by it for each JsonElement) as we expect, as outlined in my comments in the simplified code above. However, as soon as we pass it to the jsonArrayWriter (which is a JSON.JSONByteArrayWriter), the resulting jsonDataString does not match our expectations, instead coming out like this: { "id": "machine_1", "readings": [ { "temp_mid": 153.8 } ] } { "temp_mid": 98.3 } "status": "RUNNING" The behaviour of the JSONByteArrayWriter thus seems to be the problem here. It does not seem to correctly process the children of JsonElements that are ARRAYs when additions to them are done broken up by additions to the lower level JSON OBJECT they are a part of. We have confirmed this by changing the order of the calls in our example to add both readings before adding the "status", in which case we get our expected outcome. However, in reality this is not possible for us - additions to any of the JSON's objects, arrays or array objects may happen at any time after other fields elsewhere in the JSON have been added. Does anyone know a way around this, a fix, or knows a solution we simply have not found? This same phenomenon was also noted on this forum by user @ryusoup at the end of 2023 (https://forge.codesys.com/forge/talk/Engineering/thread/c45929e2f1/#e27f) and user @mtho in early 2024 (https://forge.codesys.com/forge/talk/Engineering/thread/cd1bb450db/#1292) but both topics received no activity beyond both users' opening posts. Looking through the release notes of all the versions of the JSON Utilities SL library, I also did not see any remarks on resolutions of bugs in this vain. Thanks in advance for the assistance!
Last updated: 2026-06-10
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.