Post by beavel on Customizing FileOpenSave Dialog and Keypad Integration in Visualization
CODESYS Forge
talk
(Post)
Hi all, I'm looking to adjust the visualization of the FileOpenSave dialog. Is there a library or visualization file associated with this dialog that can be extracted, customized, and re-imported into the project β similar to how the user management dialogs can be handled? Alternatively, is there a supported way to replace or override the default dialog with a custom one? Also, is it possible to configure the FileOpenSave dialog to use a custom keypad for text input? The rest of the project uses a custom keypad due to readability concerns (the default one is too small), and this inconsistency is now quite noticeable. Any guidance or workarounds would be greatly appreciated. Thanks in advance! @thk @eschwellinger @sheberle
Last updated: 2025-09-08
Post by pernockham on Unable to deploy "Control for Linux SL 4.18.0.0"
CODESYS Forge
talk
(Post)
And the strange thing for me is that if i connect with an older IDE version (where I only have 4.17.0.0 installed) I can see both "CODESYS Control for Linux SL" and "CODESYS Edge Gateway for linux". And that I loose (both presence and possibility to update) the first option (Control SL) if i let the updater install "Control for linux SL" vers. 4.18.0.0 or later. (Note that runtime 4.17.0.0 is installed and it is running and I can login to that system, but no apparent option available to update it to 4.19.0.0). Attached print screen where I connected the "deploy sl tool" to the same system, where the upper (IDE) one has 4.19.0.0 installed, while the lower one has 4.17.0.0 installed..
Last updated: 2026-02-17
Post by k2saki on CNC Open Source Project / Can I convert my project to text-files ?
CODESYS Forge
talk
(Post)
Hi. I published My CODESYS-CNC Project to GitHub and I set it Open Source Software. Here https://github.com/k-s-saki/RPi_CODESYS_CNC My CNC Project is binary file , using FBD for IPO , so I found it is a little bit hard to work with people on GitHub. (diff / merge ) My question is 1) Is it possible to convert my project ( only POUs is also fine ) into text file ? How? 2) Would it be better to rewrite all FBD/LD into ST and copy them manually to text files? Thanks.
Last updated: 2024-05-16
Post by climblinne on OPC UA Method - How to wait for result?
CODESYS Forge
talk
(Post)
Hello, I am already able to run an OPC UA method in Codesys. Now my question, how can I interact with other tasks (e.g. read an SDO from EtherCAT and return it by the function)? The OPC UA method seems to be called only once (I tried to return BOOL or UINT values). Up to now I only found to do a while loop to wait for the result of the other task. Is there a better way to do it? Is this the way OPC UA functions should be used (for "not too long" function calls) or should I use another mechanism (method: Start, event: Finish, method: getResult)? Regards
Last updated: 2025-01-13
Post by dhumphries on No source code available
CODESYS Forge
talk
(Post)
Try using an Ethernet/IP scanner instead of an adapter, I'm guessing the 2 devices you're trying to communicate with are adapters, you have to have a scanner somewhere and Codesys should be a scanner. I don't know why you're getting the error, you should be able to use your Ethernet port as an EthernetIP adapter (although I've never had a reason to try,) but it's probably not what you wanted to do, unless you're connecting to another PLC that is a scanner. Good luck configuring the devices you're trying to connect to, it will be a lot easier if you have an .EDS file instead of starting with a generic module, even with an .EDS it can be tricky getting the communication working.
Last updated: 2024-02-03
Post by fajean on Raspberry Pi 5
CODESYS Forge
talk
(Post)
We are having issues right now, and I just stumbled on that post. It seems to me you are saying your Linux ARM control is RPi 5-compatible, but the one you sell specifically for RPi is not. The fix you are proposing requires customers to re-purchase a CODESYS licence. Is there a time frame for that to be fixed?
Last updated: 2024-08-07
Post by davidb on Initialisation TimerSwitch of Util Codesys 3.5 Library
CODESYS Forge
talk
(Post)
jf89 Hello!Good morning You got it to use the function block Timer Switch for your application? I'm needing to do one system that turn on at 8:00am o' clock and turn off at 17:00pm o' clock, from Monday to Friday. Please, can you help me?
Last updated: 2024-10-14
Post by manuknecht on FileDialog - OnDialogClosed not called anymore
CODESYS Forge
talk
(Post)
I had similar issues with the OnDialogClosed not being called. I realized that this behaviour is resolved, when the according visualization object on which the input configuration is set is moved to the foreground. Somehow, the object has to be one of the lowest elements in the Element List (i.e. in the foreground) for it to work.
Last updated: 2025-04-25
Post by eschwellinger on TargetVisu option missing in IDE
CODESYS Forge
talk
(Post)
It is not needed to add Targetvisu connector - for using the TargetVisu for Linux. The reason is - TargetVisu for Linux is basically a remote TargetVisu which could connect to any CODESYS plc not only the loacal one - therefore only a Webvisu connector is needed to have it work. & it seems a bug with this anoying update proposal.
Last updated: 2025-08-23
Post by dhumphries on Using Codesys example problems
CODESYS Forge
talk
(Post)
You have to install any libraries needed by the sample program. Click the button with ... next to one of the errors (see attached image,) then choose download missing libraries. Codesys should automatically locate and install the missing libraries, it's not flawless though, I've had some issues getting libraries to install. The best advice I can give if it doesn't work is re-install Codesys.
Last updated: 2024-02-03
Post by kimnegw on Codesys offline license batch
CODESYS Forge
talk
(Post)
Hey guys, I'm currently developing a Codesys application for an offline Linux device. I can easily set up the license for ONE device using my Windows PC, but what happens if I need to produce a thousand devices? Is there any method to automate license insertion? I have already generated a dpkg installer for deploying the Linux control application to multiple targets. Thanks,
Last updated: 2024-04-04
Post by yannickasselin on codesys VLAN tagging
CODESYS Forge
talk
(Post)
I ordered a cheap managed switch and tested it as soon as I received the switch. It works great! I even went a bit further. As you can see in the screenshot, I created 2 Codesys containers. Each one having 2 fieldbuses. The first one has EtherCAT and EtherNet/IP and the second one has EtherCAT and Modbus/TCP. All going through the same ethernet port from the PC to the switch. The switch splits it up into 4 different networks. The hardest part was to figure out how to configure the switch. @eschwellinger, thank you very much.
Last updated: 2024-09-17
Post by timvh on Sorting array of any-sized structure
CODESYS Forge
talk
(Post)
Look all the way at the end of the link below. This provides a way to use arrays with various lengths: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_datatype_array.html
Last updated: 2023-08-18
Post by jegerjon on Find index based on values
CODESYS Forge
talk
(Post)
Hi, I need to figure out witch indexes of an Array containing the highest and lowest values. Typically search for the 5 lowest values and result the indexnumbers containing the 5 lovest values. is there a library for this, or codeexample?
Last updated: 2023-08-20
Post by jegerjon on Find index based on values
CODESYS Forge
talk
(Post)
Hi, I need to figure out witch indexes of an Array containing the highest and lowest values. Typically search for the 5 lowest values and result the indexnumbers containing the 5 lovest values. is there a library for this, or codeexample?
Last updated: 2023-08-20
Post by timvh on Readable IO names
CODESYS Forge
talk
(Post)
IF you create an ENUM {attribute 'qualified_only'} {attribute 'strict'} TYPE E_IO : ( FIRST := 0, SECOND := 1 ); END_TYPE You should be able to access the array items like: IOCard_OUTPUT[E_IO.FIRST]
Last updated: 2024-09-28
Post by naidureginald on creating a visualization table
CODESYS Forge
talk
(Post)
hi all im trying to create a visualisation table for a axis alarms list. upon entering the data array, i recieve a message as attached. any help would be much appreciated.
Last updated: 2024-01-03
Post by dominggus on Recipe Manager - RecipeManCommands, load & write wrong values, Bug?
CODESYS Forge
talk
(Post)
I've workaround it by not using an array but 30 instances of the struct and putting these in the recipe, and then using converter functions to save and load
Last updated: 2024-03-02
Post by damian177 on Visualization - table element
CODESYS Forge
talk
(Post)
Hi, In my application I use table elemnt with filled by STRING ARRAY. I would like to implement the following functionality : When I click on second row, that this row will be cleared. Anyone can help me?
Last updated: 2024-04-25
Post by mxj262 on FB having single input but initialized with Array
CODESYS Forge
talk
(Post)
Ok yes now the loop has stopped when I set sum to zero before the for loop. Why will it retain the sum value from the last call?
Last updated: 2024-05-06
Post by gcodejedi on The element of type 'VisuFbElemImage' could not be updated. Reason: Index was outside the bounds of the array.
CODESYS Forge
talk
(Post)
Hello, I am experiencing this exact same issue. Were you able to get yours resolved? If so, would you mind sharing the solution you discovered? Thanks!
Last updated: 2025-11-03
Post by paulg on RasPi CAA Serial example - unexpected behavior during debug
CODESYS Forge
talk
(Post)
I've trimmed down the CAA Serial Codesys example to only listen on one port but, when stepping through the Case structure in debug mode, it jumps out of the structure during a specific point in every scan (I'll point it out below after describing the setup and listing the code). I'm using a Pi 4 Model B, and I have an Arduino Nano Every plugged in via USB which is streaming the following serial message at 1 Hz: Time since opening connection: 1 s Time since opening connection: 2 s ...and so on. The Pi shows the Nano at /dev/ttyACM0 so I edited CODESYSControl_User.cfg to read: Linux.Devicefile=/dev/ttyACM The code in my PLC_PRG is (ignore some of the comments, I hadn't deleted them out from the original example): PROGRAM PLC_PRG VAR xStartTest : BOOL:= TRUE; iState : INT; xTestDone : BOOL;(* True, when the test was done succesfully *) (* Settings to communicate with the COM Port *) aCom1Params : ARRAY [1..7] OF COM.PARAMETER; como1 : COM.Open; comc1 : COM.Close; comw1 : COM.Write; comr1 : COM.Read; //sWrite : STRING := 'Test String!'; sRead : STRING(25); szRead : CAA.SIZE; xCom1OpenError : BOOL; xCom1CloseError : BOOL; xCom1WriteError : BOOL; xCom1ReadError : BOOL; END_VAR //This example shows the communication of two COM Ports with each other. //The first one writes a string of characters, which is read by the second one. //After successful execution, the two COM Ports are closed and the test is done. IF xStartTest THEN CASE iState OF 0: //The parameters are set for the COM Port aCom1Params[1].udiParameterId := COM.CAA_Parameter_Constants.udiPort; aCom1Params[1].udiValue := 1; // the correct Port should be adapted aCom1Params[2].udiParameterId := COM.CAA_Parameter_Constants.udiBaudrate; aCom1Params[2].udiValue := 115200; aCom1Params[3].udiParameterId := COM.CAA_Parameter_Constants.udiParity; aCom1Params[3].udiValue := INT_TO_UDINT(COM.PARITY.NONE); aCom1Params[4].udiParameterId := COM.CAA_Parameter_Constants.udiStopBits; aCom1Params[4].udiValue := INT_TO_UDINT(COM.STOPBIT.ONESTOPBIT); aCom1Params[5].udiParameterId := COM.CAA_Parameter_Constants.udiTimeout; aCom1Params[5].udiValue := 0; aCom1Params[6].udiParameterId := COM.CAA_Parameter_Constants.udiByteSize; aCom1Params[6].udiValue := 8; aCom1Params[7].udiParameterId := COM.CAA_Parameter_Constants.udiBinary; aCom1Params[7].udiValue := 0; //The first Port is opened with the given parameters como1(xExecute := TRUE, usiListLength:=SIZEOF(aCom1Params)/SIZEOF(COM.PARAMETER),pParameterList:= ADR(aCom1Params)); IF como1.xError THEN xCom1OpenError := TRUE; iState := 1000; END_IF //After a successful opening, the next state is reached IF como1.xDone THEN iState := 15; END_IF 15: // the reading process is started comr1(xExecute := TRUE,hCom:= como1.hCom, pBuffer:= ADR(sRead), szBuffer:= SIZEOF(sRead)); IF comr1.xError THEN xCom1ReadError := TRUE; END_IF //After completion the size of the written bytes are saved IF comr1.xDone OR comr1.xError THEN szRead := comr1.szSize; iState := 20; END_IF 20: // If everything was successful the ports are closed and the handles are released comc1(xExecute := TRUE,hCom:= como1.hCom); IF comc1.xError THEN xCom1CloseError := TRUE; END_IF IF comc1.xDone OR comc1.xError THEN iState := 25; END_IF 25: // The first port is closed and the used handle released xTestDone := TRUE; xStartTest := FALSE; iState := 0; como1(xExecute := FALSE); comw1(xExecute := FALSE); comc1(xExecute := FALSE); ELSE iState := 0; END_CASE END_IF I realize as I write this that the .udiPort should be 0 and not 1, but that shouldn't be causing the issue I'm seeing. I'm forcing xStartTest:=TRUE every scan so that I can step into each line and observe what's happening. What I see is that the port parameters are set and the port is opened with no errors, but the code jumps out of the case structure to the last line every time it reaches (and I step into) the iState:=15 line (at the end of the iState:=0 block). So every scan cycle it goes through the block for iState=0 and jumps out at the same spot. I'm a little new to PLC programming so I may be misunderstanding the flow, but shouldn't this case structure keep moving down in the same scan? If it only handles one case per scan, why doesn't the value of iState persist? Thanks! Update: I restarted the Codesys control today and I was then able to see an error for como1.eError of "WRONG_PARAMETER". I tried doing some digging and another post made me think I should add another line to CODESYSControl_User.cfg, so I now have: [SysCom] Linux.Devicefile=/dev/ttyACM portnum := COM.SysCom.SYS_COMPORT1 So now when I set .udiPort to 1, I get "NO_ERROR" but I also don't read anything from the port (i.e. szRead = 0 always). If I try setting the port to 0 (which I'm confused about, because I added a COMPORT1 line but the device shows on the Pi as ACM0), I get the "WRONG_PARAMETER" error again. Is there an easier way to troubleshoot the Pi and view what ports the Codesys runtime is actually able to see while the Pi is running?
Last updated: 2024-06-06
Post by dkugler on Webvisu client connection monitoring
CODESYS Forge
talk
(Post)
you can give this code snippet a try. It's extracted and simplyfied from my code: Install VisuElemBase lib if not installed yet. Execute in visu task: VAR pClientData : ARRAY [-1..100] OF POINTER TO VisuElemBase.VisuStructClientData; END_VAR VisuElemBase.g_ClientManager.BeginIteration(); pClientData := VisuElemBase.g_ClientManager.GetNextClient(); WHILE pClientData <> 0 DO pClientData[pClientData^.GlobalData.GlobalClientID] := pClientData; END_WHILE You have to make shure every no longer updated pointers in the array have to be deleted and no longer used by your code! Usage of this pointer access at your own risk :-) Works with SP16. From SP17 and newer there will be warnigs etc. using this solution as I remember. It will be great, if Codesys publishes a example or give a hint how to accesse this client values with the VisuUtil lib or other future-proof way!
Last updated: 2024-09-09
Post by joanm on Programmatically change the IP addresses of the Modbus TCP slave devices
CODESYS Forge
talk
(Post)
Hello all, I am working in a project in which there are multiple Modbus TCP slaves. I need to be able to change the IP addresses of those devices from the HMI and I was planning to use the process depicted here: https://faq.codesys.com/display/CDSFAQ/Modbus+TCP+Slave%3A+Dynamic+Setting+of+the+IP+Address I can see the port number is what is used to specify which slave device we want to modify the IP address of. This said, can I freely set arbitrary port numbers to each device? I mean, can I set the first device to be at port 502, the second one at port 503... Any drawback or restriction? Is there any other way to reference to the device without having to change the port numbers? Thank you all in advance.
Last updated: 2024-01-04
Post by niallel on Continuous MC_PositionProfile
CODESYS Forge
talk
(Post)
Hi, Is it possible to have a MC_PositionProfile that runs continuously again and again without stopping the motor and starting again. I have a profile that contains about 50 steps that I want to repeat. At the end of each run the motor comes to a stop before the next one starts. My code checks for Done, then resets the Execute to False before setting Execute to True to run again, and I think this is causing the motor to go to standstill before starting again. There doesn't seem to be a BufferMode option like with MC_MoveAbsolute. Is it possible to do this? Many thanks,
Last updated: 2024-04-11
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.