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 malie on Issue with library updates
CODESYS Forge
talk
(Post)
I just tried with version 3.5.22.1 and librarys updates often aren't recognized, usually not. Same behavior like 3.5.21. To describe my workflow: one IDE is used to test librarys as project and two or more IDEs to edit librarys. With only two open IDEs there is no problem, the problem began with more than two open IDEs.
Last updated: 2026-05-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
Post by levih on DocScripting
CODESYS Forge
talk
(Post)
Hello I'm trying to use the DocScripting collection in Codesys. I've made it work on one PC(1) for the 3.5.16.4 version of the script collection. But when I try the same setup on another PC(2), I get an error message: Error loading Python DLL: D:\SCRIPTING\3.5.16.40\python27.dll (error code 14001) My setup on both PC's is thus: 1. Downloaded and installed Python 2. Copied the folder with the scripting collection to C: (because of admin rights) 3. Placed my .library file in the same folder as the scripting collection Only difference is that Python is v3.12.0 on PC1 and v3.12.1 on PC2. I thought maybe it was something with Python, but then I have tried using the scripting collection from 3.5.16.1, and that seems to work. Just not for scripting collection 3.5.16.4. I also can't seem to find any scripting collections on newer versions of Codesys? (e.g. 3.5.19.10) Thanks in advance!
Last updated: 2024-01-22
Post by talhaali on Create an alarm list without use of Alarm config
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
Post by talhaali on Create an alarm list without use of Alarm config
CODESYS Forge
talk
(Post)
Hi, I am trying to access active alarms in code(As alarm count variable updates only when we go to to alarm table frame in visualization). I wrote following code but it is not working: VAR iCountActiveAlarms : INT; parritfActiveAlarms : POINTER TO ARRAY[0..0] OF IAlarm; itfAlarmManagerClientAll : IAlarmManagerClient; END_VAR AlarmManager.g_AlarmHandler.GetActiveAlarms( itfAlarmManagerClient :=itfAlarmManagerClientAll, iCountActiveAlarms => iCountActiveAlarms, parritfActiveAlarms => parritfActiveAlarms); The Value is always 0. Please help.
Last updated: 2024-06-06
Post by dogulas on Removing a symbol from the IEC Symbols Editor grid
CODESYS Forge
talk
(Post)
Right now when I make a change to one of the tags in my code, I have to completely remove the IEC Symbol Publishing object from the tree view and re-add it. Then I have to completely re-add every symbol to the grid view by dragging them over. This can be a lot. Surely, this is not the intended behavior. Can anyone tell me how this is supposed to work?
Last updated: 2025-02-11
Post by eschwellinger on Licensing info not available.
CODESYS Forge
talk
(Post)
yes and no ... if you run the license server on the host (to serve licenses to the docker instances / vplcs then there is no runtime which could check the licenses on the host. Therefore you need the CODESYS WBM to activate or check the licenes or you could use in CODESYS IDE the licensemanager ( not the one for the device licenses) but you have the the IP of the license server that he know where to search for the licenses ..tool options i guess to add it, will add a screenshot later.
Last updated: 2025-10-01
Post by dkugler on Codesys SVN
CODESYS Forge
talk
(Post)
Don't set on SVN. The service phase has started in March 2024 and will be discontinued in 2027. We actually use SVN and have to switch to GIT in the future. As I informed, there is no way of getting a single SVN or GIT licence. I' dont understand, why Codesys forces us customers to pay for an expensive Professional Edition paket from year to year using only one part of it! If you find a way to buy a single licence, let me know.
Last updated: 2024-04-29
Post by joep on Custom robotics kinematics model debugging
CODESYS Forge
talk
(Post)
When trying to move my axis using any group move instruction I get the following error: SMC_CP_INVALID_PATH_ELEM and axisgroup goes into errorstop state. I tested my methods thoroughly which makes it hard for me to debug. Are there some hidden rules I need to abide to? How would one go about debugging a custom robotics model, since the information inside isn't accesible. Is it possible to find the source of where the function breaks? Any hint in the right direction would be appreciated. Best regards
Last updated: 2024-06-08
Post by rene-h on VU.FbOpenDialog - TargetVisu - 2 x WebVisu
CODESYS Forge
talk
(Post)
Hello, i am trying to find a way how to open Dialogs on a Single Visu. The options from VU.Globals are Target and WebVisu, but Webvisu opens the Dialog on both WebVisus and it should be separated. CurrentVisu can only be used when the Dialog is called from the Visu, but its all done in the Code. One Webvisu is for the User and one is for diagnostic reasons, and they should not be interfered from each other. Maybe someone can help me with this. Thanks
Last updated: 2024-06-13
Post by jampid on Reset an Array[] in one line, possible?
CODESYS Forge
talk
(Post)
Bonjour, La librairy est SYSMEM en Codesys v3.5. Pour accéder à la fonction : SysMem.SysMemSet. Il y a plein d'autres fonctions intéressantes : SysMemSwap, SysMemMove, SysmemCpy, ... Cela évite de créer des Boucles et permet de bien utiliser ADR() et SIZEOF() Il existe aussi une librairie CAA Memory qui mérite intérêt; Par exemple MEM.MemFill pour remplir un tableau d'octets. Bons développments! Il suffit d'ajouter ces bibliothèques dans le gestionnaire de bibliothèque pour les utiliser. JM
Last updated: 2025-04-03
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.