Post by eschwellinger on Unable to deploy "Control for Linux SL 4.18.0.0"
CODESYS Forge
talk
(Post)
can you please check this: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_toubleshooting_deploytool2.html#UUID-b83dc01e-8cff-c574-7efe-8615b95a51ed_section-idm234790234401598
Last updated: 2026-02-19
Post by timvh on Unit testing support / libraries for EcoStruxure Machine Expert (CODESYS)
CODESYS Forge
talk
(Post)
If the Professsional Developer Edition (which includes the Test Manager) is not supported by Schneider, then an option is to use the Open Source Unit test framework. See: https://forge.codesys.com/lib/counit/home/Home/
Last updated: 2026-02-20
Post by fpawlak on How to register own component - CMAddComponent() or CMAddComponent2()
CODESYS Forge
talk
(Post)
Hi All, I wonder which way is correct or better? I would like to register my own component in order to use it in CMPLog. I can use CMAddComponent() or CMAddComponent2() to do it. The main difference is whether I provide udiCmpId myself or it will be generated by runtime. But I don't know which way is correct. Please look at those two examples below. I don't know if CMAddComponent2() is newer and then should be used? CMAddComponent() + providing my own udiCmpId //16#FFFF0000 for unknown myVendorId := 16#FFFF0000; myLibId := 1; myComponentId := myVendorId OR CMPID_IecCode OR myLibId; componentHandle := CMAddComponent(pszComponent:= 'myComponent', udiCmpId:= myComponentId, udiVersion:= 1, pResult:= ADR(result)); IF componentHandle <> RTS_INVALID_HANDLE AND result = CmpErrors.Errors.ERR_OK THEN LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= myComponentId, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'myComponent regidtered succsefull.' ); ELSE LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= CMPID_CmpMgr, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'Error while regidtering myComponent.'); END_IF CMAddComponent2() + udiCmpId generated by runtime componentHandle := CMAddComponent2(pszComponent:= 'myComponent2', udiVersion:= 1, udiCmpId:= ADR(myComponentId), pResult:= ADR(result)); IF componentHandle <> RTS_INVALID_HANDLE AND result = CmpErrors.Errors.ERR_OK THEN LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= myComponentId, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'myComponent2 regidtered succsefull.' ); ELSE LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= CMPID_CmpMgr, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'Error while regidtering myComponent2.'); END_IF
Last updated: 2026-02-27
Post by fpawlak on How to register own component - CMAddComponent() or CMAddComponent2()
CODESYS Forge
talk
(Post)
Hi, so really oneone has no idea which way is correct one? Or maybe both are okey if they work for me?
Last updated: 2026-03-13
Post by gordonkeller360 on RS232 Communication in CODESYS Control RTE V3
CODESYS Forge
talk
(Post)
Hi -- Did you have any luck porting this over to RTE? I have a similar situation, where I am using CAA SerialCom and it works fine with Control Win, but I can't open the port when using in RTE. Any advice helps. Thanks!
Last updated: 2026-03-14
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
Finally sorted (unit in China). The problem was related to dns-setting of the gateway/host. Connection (also inside china) tested/works.
Last updated: 2026-03-18
Post by reinier-geers on CODESYS crashes when adding standard OPC UA Information Model to Communication Manager
CODESYS Forge
talk
(Post)
I only experiance a lot of problems with Version 20 and 21. Version 20 crashes at a online change Version 21 - 5 identical programms in one project. The frist runs. The thirt Crashes. NOt even a screen
Last updated: 2026-03-19
Post by malie on Issue with library updates
CODESYS Forge
talk
(Post)
Hello, i got the same problem, but on my site it started with version 3.5.21, with version 3.5.19.7 it worked like a charm. How get the old behavior back? Or how to reload the librarys in an open project/library manually?
Last updated: 2026-04-24
Post by reinier-geers on Network variable stops sending
CODESYS Forge
talk
(Post)
What version. 20.5 ? ive got also problems wiyth that version. Online change, it hangs itself after one hour. Then one project can problems. Ive change display with 21.0 . At home i turned on the 20.5 display. After 1 hour i goes to stop.
Last updated: 2026-05-06
Post by totorovic on Ladder editor bug with 3.5.21.20
CODESYS Forge
talk
(Post)
The update via CODESYS Installer fails (admin mode). Anyway I am switching all my POUs from Ladder to ST because Ladder cannot be used like this.
Last updated: 2026-06-02
Post by eschwellinger on Linux ARM64 Deploy Fail - Index out of range
CODESYS Forge
talk
(Post)
I would check the version of the deloy tool using the CODESYS installer. Sure manually installing works too, but woukd nice to know if there is a problem. Currebt version is 4.21.0.0 of the deploytool.
Last updated: 2026-07-01
Post by hhermsen on Codesys v3.5.22.10 - Internal error:System.AggregateException...Value cannot be null...Parameter name: expLValue
CODESYS Forge
talk
(Post)
I pinpointed down 4 possible causes for this compiler error: Bare/empty statements (;) standing alone inside an IF/CASE branch β just removed two instances. The optimizer that tries to inline/replace expression statements may choke when a statement has no actual assignment to extract. A VAR_IN_OUT parameter used directly as a FOR loop's own control variable (FOR X := X TO Y DO) General deep-nesting complexity β every one of my decode routines has the same shape (IF busy THEN ... FOR loop containing nested CASE/IF chains ... END_IF), and the crash trace consistently shows for loop β sequence β ifst β sequence β ifst β sequence regardless of the code change. This raises the possibility that it's not one specific statement but a structural depth/complexity limit in SP22.x's compiler optimizer β which would mean no small code change fixes the issue. Only restructuring to reduce nesting depth, or downgrading the compiler will. Something entirely outside my library files β which cannot not ruled out since the exact stack trace was triggered by a Visualization object, in a totally different codebase. This means the same crash signature can come from unrelated causes. IMHO cause 3 seems the most probable one..
Last updated: 2026-07-11
Post by eschwellinger on CODESYS Control for Raspberry Pi 5 - "Hardware version or firmware version not supported" on Rev 1.1, persists across multiple runtime versions and OS images
CODESYS Forge
talk
(Post)
you need to wait for the 4.22.0.0 release which will fix this problem
Last updated: 2026-08-10
Post by eschwellinger on CAN TX regression in Control for Raspberry Pi 4.21.0.0 with CAN API library (RX works, TX silently fails)
CODESYS Forge
talk
(Post)
seems to be an accident but there is a workaround in the Configfile: [CmpSocketCanDrv] AsyncSend=1 and will be solved with 4.22.0.0 Release
Last updated: 2026-08-17
Post by reinier-geers on Read own network device name
CODESYS Forge
talk
(Post)
Hi. When i scan for devices on the network i get names of the devices. Is there a command to get device name in my programm ? i found : DED.GetDeviceNameString( DED.GetRoot() ); but then i get his name in the programm. not his name in the network.
Last updated: 2026-09-17
Post by darwin03 on Mismatch between coordinate monitor and actual motion using SMC_GroupJog2, MC_MoveLinearAbsolute (6DOF)
CODESYS Forge
talk
(Post)
Hi Georg, Thank you very much for your help and for taking the time to look into my issue! After reversing the directions of A2 and A3, the robot now moves correctly according to the coordinate system. That solved the main issue with the joint rotation directions. However, I still have two issues: When I command the robot to move along the X, Y, and Z axes, the movement seems slightly off, and the trajectory appears somewhat diagonal instead of following a straight line along the commanded axis. The A6 axis also rotates during the movement, whereas I would expect it to maintain its orientation and remain unchanged. Do you have any suggestions on how I could correct the Cartesian linear movement and keep A6 fixed during the motion? Thank you again for your support! Best regards, Darwin Video link: https://drive.google.com/file/d/1tnokDYoNUEDy--eQtX_JZavMVSn-a9Le/view?usp=sharing
Last updated: 2026-10-15
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
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.