Post by mizi on SM_Drive_Virtual
CODESYS Forge
talk
(Post)
Hi I recently started learning Codesys SoftMotion. At first, I mainly used YouTube videos. I stopped at two videos where the same problem keeps recurring. fbReadPos( Axis := X_Axis, Enable := TRUE, Position => gAxes.lrActualPos); <- axis cannot move I checked the entire code line by line. Zero errors. GPT spits out nonsense, throwing up increasingly worse errors. And when I copy its code, it says the code is wrong and gets stuck in a loop of its own stupidity. Can anyone explain why it doesn't work? Link to the video below: https://www.youtube.com/watch?v=CYa2HvYZgbM&list=PLsEhEcYjG7na0OveU7cqFXBx7ATyGGn0A&index=3
Last updated: 2025-10-21
Post by sturmghost on Codesys Visu Update Frame Parameters No Dialog Appears to update
CODESYS Forge
talk
(Post)
This is still a huge problem. Does someone know how to update the frame references (not manually for every frame-element...)?
Last updated: 2024-08-12
Post by felipemsgarcia on Axis EtherCAT address
CODESYS Forge
talk
(Post)
Hello, I'd like to write some parameters to axes from inside a function block where I passed axis by reference, using ETC_CO_SdoWrite. Is it possible to get the device address from inside the function block? Please see example below. Thank you!
Last updated: 2025-03-06
Post by joanm on Function block method default arguments
CODESYS Forge
talk
(Post)
The new TwinCAT 4026 will add those default parameters, as TwinCAT drinks from Codesys I guess that will be implemented soon (or maybe, it already is given what tvm says in the previous post).
Last updated: 2024-01-04
Post by smartcoco on Bit / Bool data types in function parameters
CODESYS Forge
talk
(Post)
Memory addressing is measured in bytes, with BOOL occupying one byte. BIT is quite unique as it occupies one bit. So, try not to use BIT in the program. You can use the Unpack function to solve your problem.
Last updated: 2024-01-18
Post by eschwellinger on EtherCAT drive not moving
CODESYS Forge
talk
(Post)
you need to switch to a realtime capable plc. Do not map variables, this will be done by the SoftMotion. And check the Ds402 parameters in the generic parameterview on the Softmotion Connector.
Last updated: 2024-03-05
Post by mibkid17 on Ethernet Adapter message: Adapter configured. Open all connections
CODESYS Forge
talk
(Post)
Trying to control 525 with codsys the info from C-4 section. i should input the value in user defined parameters? in the generic device
Last updated: 2024-04-09
Post by pasillalej on No gateway with the given settings could be found
CODESYS Forge
talk
(Post)
Go to Online>Communication Parameters...>Gateway>TCP/IP> Click on "New..." and reestablish your connections with whatever IP address and set up information you have. Bypass whatever is necessary as you may have to redownload to the PLC.
Last updated: 2024-05-09
Post by eschwellinger on Accessing parameters from a structure or function block with the web interface
CODESYS Forge
talk
(Post)
yes, but you could use a demo project in the analyzer to check other types: https://analyzer-eu.automation-server.com/help/en/tags this should work.
Last updated: 2025-12-02
Post by patrik on Application failing to boot after system reboot
CODESYS Forge
talk
(Post)
Hi! I'm having issues with my applications failing to boot up after the hardware getting restarted by the customer. I've attached a picture of the related log lines in the PLC log. I'm running this on a windows server. The version I'm currently running is CoDeSys win V3 x64 3.5.19.50 Is there any way to get more information why it's failing to boot? I've had this issue on several versions of the runtime. I don't think it's version related but I don't know. All I know is that sometimes when the client gets a power outage or something that kills the machine some of my applications fail to boot. Any help is deeply appreciated. Thanks in advance!
Last updated: 2024-11-20
Post by arundara on OPC UA Server Stops after 5 consecutive disconnections of ethernet port
CODESYS Forge
talk
(Post)
Hello Every one, During testing of OPC UA communication between UA Expert software and the CODESYS SoftPLC on a Linux environment, an observation was made. When the Ethernet cable was disconnected and reconnected with 2-minute intervals, on the 5th attempt, the OPC UA connection failed to establish in UA Expert software. At this juncture, restarting the CODESYS SoftPLC enabled the reestablishment of OPC UA communication. The same result was obtained when testing on a Raspberry Pi SoftPLC. What is the reason behind this phenomenon? and whether there are settings to stop this behavior? Please help. Thanks & Regards.
Last updated: 2024-02-13
Post by mbmik on IoDrvModbusTCP_Diag not defined when using MODBUS
CODESYS Forge
talk
(Post)
Hi Im trying to setup a Weidmüller WL2000 to run with MODBUS, to get some data from a server. Codesys V3.5 SP20. The issue is, that whenever i attach an ethernet port and add MODBUS Master und also a Slave, codesys will compile the project, but there always seem to be some remaining errors, which or only visible, when setting the messages window to "Pre-Compiled". I tried a lot of stuff to get rid of these errors, but cant find to seem the reason. New installation of codesys, cleaned project, setup completely empty new project, manually adding libs. Nothing helps. Any help is apreciated. Maybe we are doing something wrong.. Example Project is available, if somebodey wants to take a look. Greetings and thanks alot
Last updated: 2024-04-15
Post by kazuhiro on Problems using MySql Library and SysProcessExecuteCommand2 together
CODESYS Forge
talk
(Post)
I use fbMsSQL_compact(FUN) of the MySQL Library to write data to the database. There is no problem when writing data using only fbMsSQL_compact(FUN). However, when I try to write data obtained using SysProcessExecuteCommand2 to the database using fbMsSQL_compact(FUN), an error message "Dest server on ip address:xxx.xxx.xxx.xxx and port:1433 is unreachable" appears and writing is not possible. From what I have researched, it seems that writing is not completed in one cycle of fbMsSQL_compact(FUN), and when SysProcessExecuteCommand2 is executed first in the second cycle, the work done in one cycle of fbMsSQL_compact(FUN) is reset. Could you please give me some advice?
Last updated: 2024-06-18
Post by kazuhiro on Problems using MySql Library and SysProcessExecuteCommand2 together
CODESYS Forge
talk
(Post)
I use fbMsSQL_compact(FUN) of the MySQL Library to write data to the database. There is no problem when writing data using only fbMsSQL_compact(FUN). However, when I try to write data obtained using SysProcessExecuteCommand2 to the database using fbMsSQL_compact(FUN), an error message "Dest server on ip address:xxx.xxx.xxx.xxx and port:1433 is unreachable" appears and writing is not possible. From what I have researched, it seems that writing is not completed in one cycle of fbMsSQL_compact(FUN), and when SysProcessExecuteCommand2 is executed first in the second cycle, the work done in one cycle of fbMsSQL_compact(FUN) is reset. Could you please give me some advice?
Last updated: 2024-06-18
Post by patrik on Wish: CODESYSControl.cfg - again
CODESYS Forge
talk
(Post)
Really good post. I hope that it gets seen by CoDeSys staff. I often find the documentation lacking when it comes to using CoDeSys in more complex ways. If using standard "basic PLC functionality", then it's fine and functions are documented in a sufficient way. Once you go outside of that bubble then I find the documentation not enough. CODESYSControl.cfg is a good example of this. And why isn't more of this integrated in the IDE. like changing port of the webserver. Why is it hidden in this file and not accessible through the IDE. It feels like a layer of complexity purposely left in so you don't change it if you don't know what you are doing. Like the argument is if you have the know-how to find the file you have the know-how to edit it. I find the documentation lacking when it comes to more complex libraries too. Like the element collections library. there is parameters I still don't quite know what they do. I can't find any documentation about them. There is an example project to download from CoDeSys so you can see how you are supposed to set your factories up. I leave some parameters like it is in the example. Should I? I don't know. Does it work. Yes. But I could perhaps create memory leaks if I get something wrong and I don't see that until way later. In the create method of your element factory you have a function called __vfinit and you just have to accept that it works. Why can't I get insight in what it does through documentation? Don't CoDeSys want us to know how these work so we can't use them to accidentally break something? I find the error logging lacking too. I've had the CoDeSys service crash but it doesn't say why. I've seen windows noticing the crash but no error code was sent or error message. Also in my current issue where the application fails to start after power outage. I can see in the log that it fails to load retain in the application as one log entry and application failing to start as another. But why? Why does loading the retain fail? give me more information! Is it just a skill issue with me? I don't know. If it is then I'd still want CoDeSys to step up their game when it comes to documentation. I'm sorry if a lot of frustration comes though in this post. I really like the product and what I can do with it compared to other PLC brands.
Last updated: 2024-11-21
Post by gmau on Station 'xyz': AR aborted by device (alarm.ind): AR consumer DHT expired
CODESYS Forge
talk
(Post)
Hello, I am writing to You with the problem of Profinet communication in my Codesys V2.5 SP21 project working on Codesys Control RTE V3 x64 device. I have implemented multiple Profinet devices in the network, the Profinet itself is configured properly, based on the hardware and software parameters of the industrial PC (Windows 10 IoT). My Profinet network contains such Profinet devices as a robot, IO-Link master with some devices on it, IO modules, safety, vision sensor (the configuration is attached to this topic). Once every few hours, sometimes more often, sometimes not even once a day, the error show up at one, two or a few random modules at the same time, every one is the same: "Station 'xyz': AR aborted by device (alarm.ind): AR consumer DHT expired". The communication is then lost with that module, but it is up instantly. It is not such a problem when it comes to regular IOs, but with safety or rotation table, it causes errors and machine stops. I have tried multiple solution based on any forum suggestions, manuals, etc., but it is still happening. Mabye when I turned on the Watchdog for this communication, it is happening less times, but still, I could not turning up the Watchdog parameters at the expense of cycle time of the process. The same is with Send Clock, Reduction and DHT. I have one of the ethernet port on the PC configured with CmpEt1000Drv driver. The card itself is Intel Ethernet Connection I219-LM. These devices are connected to one EKI-2728-NI-A Profinet switch (it was changed from the standard non Profinet one, but still nothing has changed). As I said ealier, I am attaching all the configurations for each device and the communication itself - if any of You had the same problems or have any ideas what could be the cause, I would be much gratefull for any help. For now I am out of ideas, if You have any additional question, please ask. Sincerely, PF
Last updated: 2025-09-04
Post by jari-koivuluoma on Problem trying Net Base Services 3.5.15.0 TCP connection
CODESYS Forge
talk
(Post)
I have a need to send messages between 2 PLCs and I cant use network variables (because of size limit) so I tried writing this simple test program. This seems to work fine. I can send messages back and forth when a first "Start server" and then "Connect client". See the attached image. However, if I disconnect the client by setting ClientConnect to false and try to re-connect then the TCP_Client just gives me TIMEOUT error. When I stop and start the server again, then Im able to reconnect. How is this supposed to work? Why reconnecting wont work. There is not other way of disconnecting the client than setting xEnable of the TCP_Client to false. This is just a testing program and I will try it on 2 seperate devices once this works. PROGRAM PLC_PRG VAR CONSTANT mySize : UDINT := 255; END_VAR VAR Server: NBS.TCP_Server; ServerIpStr: STRING := '127.0.0.1'; ServerIP: NBS.IP_ADDR; ServerPort: UINT := 50000; ServerConnection: NBS.TCP_Connection; Client: NBS.TCP_Client; ServerRead: NBS.TCP_Read; ServerWrite: NBS.TCP_Write; ServerSend: STRING(mySize); ServerReceive: STRING(mySize); ServerConnect: BOOL; bServerSend: BOOL; IP: NBS.INADDR; ConnectedClientIP: STRING; ClientPort: UINT := 50000; ClientIpStr: STRING := '192.168.1.49'; ClientIP: NBS.IP_ADDR; ClientRead: NBS.TCP_Read; ClientWrite: NBS.TCP_Write; ClientSend: STRING(mySize); ClientReceive: STRING(mySize); ClientConnect: BOOL; bClientSend: BOOL; Error: BOOL; Message: BOOL; END_VAR // Server ServerIP.sAddr := ServerIpStr; Server( ipAddr := ServerIP, uiPort := ServerPort ); ServerConnection( xEnable := Server.xEnable, hServer := Server.hServer, ); IP := ServerConnection.IPAddress; ConnectedClientIP := F_Concat7( BYTE_TO_STRING(IP.S_un_b.s_b1),'.', BYTE_TO_STRING(IP.S_un_b.s_b2),'.', BYTE_TO_STRING(IP.S_un_b.s_b3),'.', BYTE_TO_STRING(IP.S_un_b.s_b4)); ServerRead( xEnable := ServerConnection.xActive, hConnection := ServerConnection.hConnection, szSize := SIZEOF(ServerReceive), pData := ADR(ServerReceive) ); IF ServerRead.xReady AND ServerRead.szCount > 0 THEN Message := TRUE; END_IF IF ServerRead.eError > 0 THEN Error := TRUE; END_IF ServerWrite( xExecute := ServerConnection.xActive AND bServerSend, hConnection := ServerConnection.hConnection, szSize := LEN(ServerSend)+1, pData := ADR(ServerSend) ); IF ServerWrite.xDone THEN bServerSend := FALSE; END_IF IF ServerWrite.eError > 0 THEN Error := TRUE; END_IF // Client ClientIP.sAddr := ClientIpStr; Client( xEnable := ClientConnect, ipAddr := ClientIP, uiPort := ServerPort, udiTimeOut := 10000000 ); ClientRead( xEnable := Client.xActive, hConnection := Client.hConnection, szSize := SIZEOF(ClientReceive), pData := ADR(ClientReceive) ); IF ClientRead.xReady AND ClientRead.szCount > 0 THEN Message := TRUE; END_IF IF ClientRead.eError > 0 THEN Error := TRUE; END_IF ClientWrite( xExecute := Client.xActive AND bClientSend, hConnection := Client.hConnection, szSize := LEN(ClientSend)+1, pData := ADR(ClientSend) ); IF ClientWrite.xDone THEN bClientSend := FALSE; END_IF IF ClientWrite.eError > 0 THEN Error := TRUE; END_IF
Last updated: 2024-10-03
Post by jonasz on Deploy LicenseServer for Linux SL
CODESYS Forge
talk
(Post)
So here's how: I manually installed the following packages: codemeter-lite_8.30.6885.501_amd64.deb codesyslicenseserver_licenseserver_4.18.0.0_all.deb codesyswbmbase_wbmbase_4.18.0.0_all.deb codesyswbmlicensing_wbmlicensing_4.18.0.0_all.deb Of course, the license server appeared immediately. Trying to install it again using Install in the Deploy tab, the same error appears. Of course, the information that such a server is already installed is also there. Configuring PLC, S_PLC, EDGE, and SAFE_TIMER_PROVIDER went smoothly, and basically everything works. I wrote a simple program for S_PLC. I'm loading the programs into PLC and S_PLC. When loading the program into S_PLC, a message appears stating that there is no connection to the S_PLC controller. Timeout error. Restart the controller, attempt to load, and see the above. After changing the cycle time for S_PLC to 50ms, the problem no longer occurs. My question, besides the difficulty of installation for a new user, is what causes the cycle time for S_PLC to be so long, and how can I fix it?
Last updated: 2025-11-14
Post by eaglealex on Length of string and Array of bytes
CODESYS Forge
talk
(Post)
Thank you for your answer! I know that 0 will be the end of the string. I checked it. There is no 0 in array of bytes. I made screenshots. There is array of bytes, aborted string and the result of my test via online converter.
Last updated: 2025-04-02
Post by george32 on TCP Server
CODESYS Forge
talk
(Post)
Thank you for your advice Rinie, I have tried to follow this example but found one problem.When I disconnect with Hercules the system does not acknowledge the lost of its connection this could result in critical errors. Because of this error I am trying to implement the Syssocket library. With this library I am having a problem which I could not solve. I have the following code: ip_adres : STRING :='0.0.0.0'; port : WORD := 5000; iStep : INT := 1; // Socket information Socket_handler : SysSocket_Interfaces.RTS_IEC_HANDLE; Socket_handler_result : SysSocket_Interfaces.RTS_IEC_RESULT; Socket_adress : SysSocket_Interfaces.SOCKADDRESS; Addres_Convert : SysSocket_Implementation.RTS_IEC_RESULT; // Bind information Bind_handler : SysSocket_Interfaces.RTS_IEC_RESULT; // Listener Information Listener_handler : SysSocket_Interfaces.RTS_IEC_RESULT; Addres_Convert := SysSocket_Implementation.SysSockInetAddr(szIPAddress:= ip_adres,pInAddr:= ADR(Socket_adress.sin_addr)); Socket_adress.sin_family:= SysSocket_Interfaces.SOCKET_AF_INET; Socket_adress.sin_port := SysSocket_Implementation.SysSockHtons(usHost:= port); CASE iStep OF 1: // Create Socket Socket_handler :=SysSockCreate( iAddressFamily :=SysSocket_Interfaces.SOCKET_AF_INET, diType:=SysSocket_Interfaces.SOCKET_STREAM, diProtocol:=SysSocket_Interfaces.SOCKET_IPPROTO_TCP, pResult:=ADR(Socket_handler_result)); IF Socket_handler = SysSocket_Interfaces.RTS_INVALID_HANDLE THEN iStep := 1; ELSE iStep := 2; END_IF 2: Bind_handler := SysSocket_Implementation.SysSockBind( hSocket:=Socket_handler, pSockAddr :=ADR(Socket_adress), diSockAddrSize:=SIZEOF(Socket_adress) ); 3: Listener_handler := SysSocket_Implementation.SysSockListen( hSocket :=Socket_handler, diMaxConnections :=1); END_CASE When I am trying to get this working, the SysSockBind function gives a value of 16#207 which means adress already in use. I find this weird because of the IP-adress of 0.0.0.0. I think I am converting the Ip-adress in the wrong way, but the code does not give a error arround this. So therefore I cannot find the solution to this problem. I hope someone could help me with this problem. Thanks in advance George
Last updated: 2025-02-20
Post by alsiddhartha on TextList name error (fake)
CODESYS Forge
talk
(Post)
Hello, I’m developing a program and for some reason I got this error: C0193: Name '2,Recipe #2GVL' is no valid identifier I was creating a combo box and creating a TextList for my recipe. I couldn't find where the error was, until in the combo box properties in the 'Text List' property in the options it gives me to select, I found '2,Recipe #2' to be able to select (I never created a list with this name) and I can't find a way to delete that option or I can't find where that list is. I tried to delete the TextLists, delete the combo box, to clean the project, but the error still there. How can I delete this option (2,Recipe #2)? Or how can I fix this error?** Thank you.
Last updated: 2025-06-19
Ranges, Lambdas, on Fixed arrays of structs
CODESYS Forge
talk
(Thread)
Ranges, Lambdas, on Fixed arrays of structs
Last updated: 2023-08-31
Save jitter measure of main task in file
CODESYS Forge
talk
(Thread)
Save jitter measure of main task in file
Last updated: 2020-08-07
Ged rid of lines on Chart XY
CODESYS Forge
talk
(Thread)
Ged rid of lines on Chart XY
Last updated: 2022-04-05
Resolution of visualization (for RPi's LCD 800x480)
CODESYS Forge
talk
(Thread)
Resolution of visualization (for RPi's LCD 800x480)
Last updated: 2015-11-22
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.