Post by riku on Download CODESYS Scripting package
CODESYS Forge
talk
(Post)
Hey there! Is it possible to download the "CODESYS Scripting" package outside of the "CODESYS Installer"? Or is there a alternative way to download the python files for the scripting engine? I want to setup a test environment to write test scripts and therefore want to have those python scripts for e.g. autocompletion. Thanks in advance!
Last updated: 2024-03-16
Post by thewizard8 on Raspberry PI4 Serial Port
CODESYS Forge
talk
(Post)
Hi All, I finally figured out how to solve it. The only away that I got it to work was to define parity to None on modbus configuration, and now works like a charm. Just for the record I'm using the GPIO port pins (8,10) and a RS485 to ttl shield that you can find online. Thanks all for the support! Regards Ricardo
Last updated: 2024-03-19
Post by jinlee on V3.5 SP19 patch 2. Out of retain memory
CODESYS Forge
talk
(Post)
Hi guys, I am quite new Codesys. Be patient to me. I am having a problem now. Please refer to the attached photo. Is there a way to increase the memory ? If no, what is the way to solve this problem ? My retain variable list is in one place. Please refer to the attached photo. Thank you very much.
Last updated: 2024-03-20
Post by saugat10 on I have errors while building the project
CODESYS Forge
talk
(Post)
I have some errors as you can see in the picture when i build the project. I have not been able to trace back to the error and i have no idea where to look at to fix this issue. What is GVL_Io? Is it related to some library?
Last updated: 2024-04-10
Post by tomas111 on Black background when loading webvisu
CODESYS Forge
talk
(Post)
Tell me, are there ways to remove the white background from the page loading? I want to change it to a black background. I think there are options with changing /home/codesys_root/PlcLogic/visu/webvisu.htm Perhaps you have already encountered a similar situation. I hope to find the answer to my question.
Last updated: 2024-04-17
Post by fjgonzalez on Timer On Vijeo
CODESYS Forge
talk
(Post)
Hi. I'm trying to show in Vijeo Designer a timer countdown. But I want to display the data in hour, minutes and seconds. I tried to change the data by converting in the Machine Expert but not able to succeed. Can you help me to find a solution? Regards, FG
Last updated: 2024-05-07
Post by andreag0 on How to access to variable value through symbolic string name
CODESYS Forge
talk
(Post)
Hello, anyone know how to get valiable value using a symbolic string name? For example: - send string to runtime using TCP/IP contains "GVL.TestINT" and get back the value. I need function that will translate the string to symbolic variable. Thank you. Andrea
Last updated: 2024-06-13
Post by mascara on CloseTargetVisu
CODESYS Forge
talk
(Post)
I need to add a button to the Visualization to close it. And create a shortcut on the Windows desktop to reopen the Visualization. This is necessary to configure, for example, a local IP address. Is this possible? What command closes the Visualization? Which program opens Visualization? System: Win10 Codesys: Control RTE V3 x64 Program: Codesys V3.5 SP20 Using only a touchscreen monitor, without keyboard and mouse.
Last updated: 2026-03-11
Post by reinier-geers on Virtual Api to vieuw what im sending
CODESYS Forge
talk
(Post)
Hi. Is there a website to test my webclient ? When i do a web api test on internet it works. But with codesys ill get an error. So is there a website to tests what im sending ? or a way to look in to the Codeys FB Webclient ?
Last updated: 2026-04-05
Post by reinier-geers on Virtual Api to vieuw what im sending
CODESYS Forge
talk
(Post)
Hi. Is there a website to test my webclient ? When i do a web api test on internet it works. But with codesys ill get an error. So is there a website to tests what im sending ? or a way to look in to the Codeys FB Webclient ?
Last updated: 2026-04-05
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
Post by lorenzo-pisoni on SysProcessExecuteCommand
CODESYS Forge
talk
(Post)
Hello, I'm encountering an issue with the Sysprocess library while attempting to execute commands to transfer a file from a NAS to my PLC. Currently, I'm trying to test a simple "reboot" command, but it doesn't work as demonstrated in this video: https://youtu.be/77c7Af5xRhE?si=uFZdB6fTNQitzWMQ. I'm using CODESYS V3.5 SP18 Patch 4 (3.5.18.40). From other sources, I've learned that to enable the PLC to execute commands, I need to add the following line to the file CODESYSControl_User.txt: [SysProcess] Command=AllowAll However, the issue I'm facing is that this file doesn't exist on my CPU. I have full SSH access and can see all files, but only CODESYSControl.txt is present. Adding the command to CODESYSControl.txt hasn't resolved the problem.
Last updated: 2024-07-11
Post by timvh on FB string and naming
CODESYS Forge
talk
(Post)
I see, you want to initialize the FB. To be able to initialise it like you described, you need to add the FB_Init method to your FB. (right click on the FB, select add object --> method). Then press the arrow down, to select the FB_Init (overwrite default implementation). In the VAR_INPUT section of this method, add the variable --> Tag : STRING; Then in the code section of this method add: THIS^.Tag := Tag; // copy initial value to local variable in FB Search Google if you want to know more about FB_Init. PS, reflection + instance path, is also an option if you want to get the full name of the instance (path) of the Function Block. See: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_instance_path.html
Last updated: 2024-09-30
Post by bjarne-pagaard on Global Variables
CODESYS Forge
talk
(Post)
Old thread, I know - but it still has good answers. I would like to add a bit of info to it, as I was having a problem that lead me to this thread, but didn't give an exact answer. I am porting a project to a different PLC architecture. (Wago PFC300) A GVL named 'GVL' in the POUs section of my project was shadowed by a PLC-specific library in the Application->Library Manager. So all the existing references in the device specific code to 'GVL.something' would not resolve. Right-clicking the GVL in the code and 'Go to definition' would point me to the library in the Application Library Manager. All I had to do from there, was right-click the library, and set the property 'Only allow qualified access to all identifiers' in the library.
Last updated: 2025-04-11
Post by ranadheer on Implementation of IEC-104
CODESYS Forge
talk
(Post)
Hi Everyone, As we didn't have client for IEC - 104 - only server server is available , so because of that we are trying to make establish the communication between the external simulator as a Client and codesys itself as a server. We are looking for the variable behavior from CODESYS has to change according to the message triggered by the CLIENT (we are using simulator Application like Redisant). We are able to see the log data as the status of triggering the SCS from Client received to the Log data of the codesys device(attached screen shot of it) and in simulator panel we had set the details to trigger the data from Redisant to Codesys. Current Status: The project builds and runs successfully, but I need guidance on how to connect this to an external IEC-104 simulator for testing and visualization by using demo mode.
Last updated: 2025-10-14
Post by ranadheer on Implementation IEC-104
CODESYS Forge
talk
(Post)
Hi Everyone, As we didn't have client for IEC - 104 - only server server is available , so because of that we are trying to make establish the communication between the external simulator as a Client and codesys itself as a server. We are looking for the variable behavior from CODESYS has to change according to the message triggered by the CLIENT (we are using simulator Application like Redisant). We are able to see the log data as the status of triggering the SCS from Client received to the Log data of the codesys device(attached screen shot of it) and in simulator panel we had set the details to trigger the data from Redisant to Codesys. Current Status: The project builds and runs successfully, but I need guidance on how to connect this to an external IEC-104 simulator for testing and visualization by using demo mode.
Last updated: 2025-10-14
Post by khaledkhalil on Import OPC UA model to Codesys
CODESYS Forge
talk
(Post)
I have added a models in SiOME which a software to design nodes and add instances. and created a resultant xml file. I tried to import the xml file to Codesys through OPC UA information model Repository the problem i don't know how to view my objects which i have designed. and map it to my PLC to make viewable on my server UaExpert. I watched the tutorial video https://youtu.be/aJhzN3Uk-Do?feature=shared. But it only give you how to add the Information model, and my resultant model doesn't have information type. So how in Codesys i can view a model which i have designed in SiOME and mapped my instances (Objects, Variable or methods) with my Variables in PLC I saw people do it in Tia Portal or other Software, but i have no clue how to do it on CODESYS
Last updated: 2024-03-12
Post by ph0010421 on Stepper Drive with Ethercat
CODESYS Forge
talk
(Post)
Hello That's certainly CiA402. I'll attach a part of the manual for my servos, but the state diagram should be the same at yours. To be sure, get one from your manufacturer. Look at the bits in the StatusWord to see where you are in the diagram, then twiddle the bits in the ControlWord to get you to the next step. Then there are other bits in the StatusWord to tell you 'InPosition' and things like that. From the screenshot, as it mentions only 'PositionProfile' the driver will create the motion profile. So you need to put a target position in here - there should be profile velocity somewhere? Possibly, you need to write these with SDO's? At the minimum, you need to write a value to 0x6081, 0x6083 and 0x6084 (velocity, accel, decel)
Last updated: 2024-03-22
Post by jrsantab on Remote connection to ifm PLC & HMI
CODESYS Forge
talk
(Post)
Hello, We are trying to access remotely a PLC (ifm 711S) and a HMI (ifm CR1077). Both are connected to a Teltonika RUT200 router. We establish the connection with OpenVPN Connect and can ping both controllers. We have a laptop that, most of the time, will allow Codesys connection to the controllers, but we have several other computers that are unable to connect, although all of them can ping successfully. We cannot find any difference in the configuration or software installed from one PC to another. If we connect to the router by WIFI, instead of VPN, all the computers work fine. We know that scanning the network will not work over a remote connection, so we input the controller IP directly. Has anyone had a simlar problem and can offer any hint on what to check to meke the connection run?
Last updated: 2024-04-11
Post by jrsantab on Remote connection to ifm PLC & HMI
CODESYS Forge
talk
(Post)
Hello, We are trying to access remotely a PLC (ifm 711S) and a HMI (ifm CR1077). Both are connected to a Teltonika RUT200 router. We establish the connection with OpenVPN Connect and can ping both controllers. We have a laptop that, most of the time, will allow Codesys connection to the controllers, but we have several other computers that are unable to connect, although all of them can ping successfully. We cannot find any difference in the configuration or software installed from one PC to another. If we connect to the router by WIFI, instead of VPN, all the computers work fine. We know that scanning the network will not work over a remote connection, so we input the controller IP directly. Has anyone had a similar problem and can offer any hint on what to check to make the connection run?
Last updated: 2024-04-11
Post by wiresplus on How to Connect / Go Online without re-downloading the project
CODESYS Forge
talk
(Post)
Hello, I have a PLC in a remote location. I can connect to it, but when I use a different PC, it asks me to re-download to the PLC - which will a) interrupt production and b) cause version issues. Codesys being open-source, if someone else has made changes, I need to be able to connect, upload the current project, compare it with mine and then decide what next. Every time I connect, it says Warning: An application 'Application' is currently in RUN mode on the PLC. As there is no matching compile information, this existing application needs to be replaced. Click 'Yes' to download the latest code or 'No' to abort. What am I doing wrong?
Last updated: 2024-04-13
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 pernockham on Unable to deploy "Control for Linux SL 4.18.0.0"
CODESYS Forge
talk
(Post)
The option to update "Control for Linux SL" is not shown in the "deploy control SL tool", I can see and update the gateway but not the control (3.5.21 SP4). Has the way to update control SL changed? In the process of fault finding I removed the control SL entirely from my target, then I had to revert to version 3.5.21.0 SP 1 to re-install "Control SL 4.17.0.0". So I thought it was just a matter of using SP1 to update also to 4.18.0.0, but after installing the files for 4.18.0.0 in the SP1-version, the behavior was identical to SP4, ie no Control for Linux SL shown in the deploy tool.. See screenshots.
Last updated: 2025-12-19
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 bschraud on Speicherbegrenzung für lokale Variablen
CODESYS Forge
talk
(Post)
Aufgrund einer Schnittstellenänderung muss ich meine Messagebuffer erheblich vergrößern. U.g. Konstante bestimmt die Größe einer Byte-Array-Definition, die in einer Struktur für 9 Botschaften verwendet wird. Ich benötige also 177372byte zusätzlichen Speicher in dem Modul in dem die Struktur als lokale Variable angelegt wird. Dynamisches Allokieren zur Laufzeit möchte ich vermeiden, damit ich nicht während des Betriebes Fehler aus dem Allokieren behandeln muss. Für ein Reservieren des Speicherbereiches habe ich in Codesys keine Einstellmöglichkeiten gefunden. Die Applikation läßt sich ohne weitere Modifikation kopilieren, scheitert aber bei der Ausführung. Welche Lösungs- oder Einstellmöglichkeiten gibt es? Bei c_w_process_result_content_len_max: WORD := 292; [INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes [INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet: [INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 2807632 Bytes , höchste verwendete Adresse: 2159712, größte zusammenhängende Speicherlücke: 647920 Bytes (23 %) [INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267784 Bytes , höchste verwendete Adresse: 5590600, größte zusammenhängende Speicherlücke: 1677184 Bytes (23 %) Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download Speicherprüfung: [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x00128904 (0x71D3A95C) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018EC00 (0x71DA0C58) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018F090 (0x71DA10E8) [INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen. [INFORMATION] PAC: Check took 00:00:13.9743220. Applikation lässt sich downloaden und funktioniert auf dem Gerät. Nach der Vergrößerung: c_w_process_result_content_len_max: WORD := 20000; [INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes [INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet: [INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 4114264 Bytes , höchste verwendete Adresse: 3164816, größte zusammenhängende Speicherlücke: 949448 Bytes (23 %) [INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267832 Bytes , höchste verwendete Adresse: 5590640, größte zusammenhängende Speicherlücke: 1677192 Bytes (23 %) Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download Speicherprüfung: (gleiches Ergebnis wie vorher) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x0021DF38 (0x71E2FF90) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x00284238 (0x71E96290) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x002846C8 (0x71E96720) [INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen. [INFORMATION] PAC: Check took 00:00:14.0491831. Applikation lässt sich downloaden. Ausführen mündet in Ausnahmefehler Die Applikation läuft auf der Runtime CODESYS Control for Raspberry Pi MC SL. Die Codesys Version ist 3.5 SP20 mit allen Updates. Kennt jemand eine Speichergrenze für lokale Variablen bzw. eventuelle Einstellmöglichkeiten? Vielen Dank
Last updated: 2024-05-06
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.