Post by milan-svarny on ModbusFB.ClientSerial Problem with Reply Timeout
CODESYS Forge
talk
(Post)
Hi All, I have problem with ModbusFB.ClientSerial. I'm using 4 different port for Modbus communication. After some time of running program ClientSerial stops to receive data to reply buffer and all request finish with Reply Timeout. The Device sent reply correctly,that it is visible on oscilloscope and it is possible to see that data( reply )are in the device. If the usbtty device is read over external app. then it is possible to see all data which were not taken by ModbusFB.ClientSerial. The stack does not overflow or something , program runs correctly forward and no exceptions or something. The main problem it is that when the error occur than it is not possible to reset port or something or maybe i'm doing it wrong way. please help me with this issue. Thank you for any help in advice Milan
Last updated: 2025-05-23
Post by em1681 on Modbus RTU over 750-652
CODESYS Forge
talk
(Post)
Hi, It's my first time operating in Codesys 2.3, but I have done a good amount of Codesys programming, so I'm a little familiar. I haven't done a lot of RTU, but a lot of Modbus TCP. I don't have the PLC in my reach at the moment, but I'm trying to be a little ahead. We're adding the 750-652 module to read energy from a flowmeter over RTU. There will only be 1 slave. I attached pictures of my current hardware, PLC code, the register datasheet from the slave and the only modbus serial library I seem to have available. I'm uncertain if this will work. Any help or clarification on how things work will be greatly appreciated. Thanks in advance.
Last updated: 2025-09-01
Post by dkugler on Project loses 'Download time' information
CODESYS Forge
talk
(Post)
and if you copy or transfer a project to another place, copy not only the .project, copy .compileinfo .bootinfo and .bootinfo_guids then we figured out it is more often possible to go online without full download. If you build an archiv and extract it, some of this files are missing and login isn't possible without download. I work with V3.5 SP16 Patch 4. I don't know if this problem of the archiv is solved in newer Versions/SP's and I don't know what the problem of Codesys is to help out a lot of programers of this very annoying problem or at least help with a workaround
Last updated: 2025-09-18
Post by pernockham on *Exception* Async service: ServiceGroup=17, IP=0x5fa45617, Component=CmpSrv
CODESYS Forge
talk
(Post)
*** The system may be in an inconsistent state, please reboot *** *Exception* Async service: ServiceGroup=17, IP=0x5fa45617, Component=CmpSrv Every time at the instant that I Login to the system a message that the "system may be in an inconsistent state, please reboot" is written in the log. If I logout and repeat login a new entry is set. My system is a "Control for linux SL" running on a debian linux host. Im running it on my desk without any IO attached so message might be caused from that, but I doubt i have seen it before. Rebooting makes no difference. Anyone that have a clue of how I should interpret this error message?
Last updated: 2025-09-26
Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Thank you very much for your time and replay! Sounds like a good idea. Unfortunately, I have no other option to run the code from the running plc. So, I can’t stop any services. If anyone has the same problem, I've gotten a little closer to understanding it: Sometimes the copied files are empty after the restart. The update code checks if there are any empty files. Before I turn off the device, everything is okay. But after starting, some files are suddenly empty and that cause the problems. I don't know why this happens.
Last updated: 2024-02-16
Post by timvh on Profinet fault with codesys control V3 - Receive packet error
CODESYS Forge
talk
(Post)
Are you using the Control Win SL (installed together with the development environment of CODESYS)? If yes, you might want to consider using the CODESYS RTE instead. This has real-time capabilities (running on separate core(s)). But to be able to use this, you have to install the CODESYS Ethernet driver for your network interface to be able to let the RTE access the network port also in realtime. See: https://store.codesys.com/en/codesys-control-rte-sl-bundle.html https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_windows_rts_v3.html PS, I haven't tested this myself yet, but you could try to use the SetCommunicationState method of the Profinet controller to see if you can reset and start the bus communication: result := PN_Controller.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.START); PS, if you are located in the Netherlands or Belgium, we could also provide the license(s) for you.
Last updated: 2024-02-28
Post by timvh on Profinet fault with codesys control V3 - Receive packet error
CODESYS Forge
talk
(Post)
Are you using the Control Win SL (installed together with the development environment of CODESYS)? If yes, you might want to consider using the CODESYS RTE instead. This has real-time capabilities (running on separate core(s)). But to be able to use this, you have to install the CODESYS Ethernet driver for your network interface to be able to let the RTE access the network port also in realtime. See: https://store.codesys.com/en/codesys-control-rte-sl-bundle.html https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_windows_rts_v3.html PS, I haven't tested this myself yet, but you could try to use the SetCommunicationState method of the Profinet controller to see if you can reset and start the bus communication: result := PN_Controller.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.START); PS, if you are located in the Netherlands or Belgium, we could also provide the license(s) for you.
Last updated: 2024-02-28
Post by tomast on WAGO 750-8212 nad Sinamics v20 modbus RTU speed control
CODESYS Forge
talk
(Post)
Hi Guys, I am new to this forum and i would like to ask od anyone got communication with Siemens v20 vfd working via Modbus RTU? I followed many websites and finally got the communication working but have problema with read/write registers. For example if i try to read holding register 40011 which is accel time i get noth but when i set the offset 0x0000 en length 113 i get ale the registers. I cannot get speed control working. I read someth about stw (control Word) and hsw but have some problems to understand it en get it working. It would be really nice if someone could help me with it. Thx
Last updated: 2024-03-05
Post by comingback4u on Memory Address Overlap
CODESYS Forge
talk
(Post)
Hello, We use a controller that comes with a bunch of predefined faults. These faults are considered active and historic. They are a 32 byte array but only take up 26 bytes of data. Because of this the historic faults start at address 26 instead of 31. Active faults variable take up address location 0 to 31. Historic faults variable take up address location 26 to 57. Because of this overlap I get an error that these overlap and it wont allow me to download to my controller. This isn't an issue in 3.5.5.4 but becomes an issue in newer version. Is there a way to turn this off? If I change the address location, the historic faults then become broken without doing some manipulation in the code. The software will build just fine. Thank you for your time.
Last updated: 2024-03-07
Post by fenicklar on Login problem with FileTransfer on Raspberry Pi 5
CODESYS Forge
talk
(Post)
Hello everyone, I'm currently trying to set up a FileTransfer function from a Webvisu to my Raspberry Pi 5 on Codesys 3.5 SP 19 Patch 6. I went in the files CODESYSControl.cfg and CODESYSControl_User.cfg and added : [CmpWebServerHandlerV3] AllowFileTransferServices=1 And it seems to be working. However, I cannot access my several Webvisu without putting my login. That's a problem because one of my webvisu is in kiosk mode on the raspberry itself and there is nokeyboard attached, it's just an information screen, but I can't view it. Is there a wey to enable the File Transfer without requiring to login ? Thank you for your time
Last updated: 2024-03-18
Post by mp9876 on Device User Logon
CODESYS Forge
talk
(Post)
Following up on the invalid user authentication on the target Not 100% sure what the problem was but following my post I managed to create an administrator level user. Then my next issue was that I could not connect to the device. I might have flipped the device from a 64 bit version to a 32 bit version so I did UPDATE DEVICE back to the 64 bit version; still could not connect somehow. Then I did two things at the same time that fixed my problem: Wiped the Codesys Control Win 64 bit version and installed the 32 bit version Installed latest Codesys Control Win V3.5 SP20 (released today) I wish I knew which one of these actions fixed the problem but at least the problem is solved. Hoping this post may help someone one day
Last updated: 2024-03-19
Post by ragarcia on Error while using Codesys SP19 Patch 4 on Windows 11
CODESYS Forge
talk
(Post)
Hello everyone, I just installed Codesys SP19 Patch 4 on Windows 11 and every time I open Codesys I get an error that says (Attached image): 'One or more issues ocurred with the current versio profile. Please contact the vendor to resolve these problems. The plug-in {....} (Exactly 4.15.0.0) is required by the current version profile., but has not been installed. It is highly recommended that the tools is terminated. Do you wanto to terminate now?' I cannot install any package since I get this error everytime I open or try to install any package. Can someone help me please, thanks in advanced
Last updated: 2024-03-26
Post by sachem on Problem retain values Weidmuller UC20-WL2000
CODESYS Forge
talk
(Post)
Good afternoon. I am working with a weidmuller uc20-wl2000 controller, using a codesys license. We made a ladder code to control a process, and it works well, but we want some variables to remain stored even when the controller is turned off. We tried to use retain variables, but at the time of loading the program, when we went offline from the controller, the program was deleted, it did not remain in the controller, and in the same way if we turned off the controller. In addition to this, when we tried to program it again, the program would not stay loaded and began to present errors with the opc-ua communication. What could be causing this problem? How can we maintain the values of the variables without damaging the program or affecting the controller? thank you
Last updated: 2024-04-10
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 k2saki on CNC / G-Code streaming processing ( to start quickly in long G-Code File )
CODESYS Forge
talk
(Post)
Is it possible like G-Code streaming processing (like FANUC or SIEMENS DNC Function )? Or Does anyone know the tips for CODESYS Motion to start moving long Long G-Code File quickly? I have to wait long time after "Start" button to start moving, I have to wait finishing interpreting whole G-Code file, ( and I have to prepare huge buffer to store. ) Now, I'm working on my CNC Project using SMC_ReadNCFile2, and SMC_NcInterpreter to preprocess G-Code. I tried to set SMC_Interpolator.xExecute to true to Start while after SMC_NcInterpreter processed more 50-line of G-Code, but that not worked, I had to wait SMC_NcInterpreter processed all lines to start SMC_Interpolator. G-Code have about 2000 lines of XY of G01 (or more over.. ) of short segment that a CAM software has exploded from NURBS Curve.
Last updated: 2024-05-03
Post by jonasz on Discontinuity of A/B/C axis movement.
CODESYS Forge
talk
(Post)
Hi, My problem was related to the behavior of the modulo axis, but maybe you will find something useful from what I write. The solution lies in path processing. Codesys offers a G-code analysis tool. Insert a CNC object into the project. The CNC settings object will be added automatically. By inserting appropriate processing modules into the CNC settings object and parameterizing them, you can test the behavior of the axis. When the effect is satisfactory, remember to add the module from CNC settings in the correct order in the processing path. Each CNC machine case is different. You need to spend some time to get your design tailored like an Armani suit. Good luck.
Last updated: 2024-05-09
Post by jens on Modbus tcp - channel
CODESYS Forge
talk
(Post)
Help wanted This is the first time i'm doing a Modbus Tcp project. I have some VLT with a extension module MCA-122. i'm currently unable to write to the VLT slave, but i can read from status word parameter=1603 and address := 16029 where the address is calculated from parameter is ((id x 10)-1). in the manual the functions that are supported are 3 hex, 6 hex, 10 hex, b hex and 11 hex. read holdin registers, write single register, write multiple registers, get comm. event counter, report slave id. i'm only using the Modbus Slave Channel is this wrong when trying to write to the vlt ?
Last updated: 2024-06-13
Post by gatto on Modbus tcp - channel
CODESYS Forge
talk
(Post)
Hi can you give more details? Are you talking about a danfoss? wich model? Can post the configuration of channel' I used, on the past, serial modbus with danfoss fc280 I remember ((id x 10)-1) I remember that you couldn't use continuous reading/writing of the directors but you had to use them one at a time. it seemed that reading empty registers (caused by x10) was not accepted by danfoss. So I had created a scan that used just one register, then the next etc etc with a timed interval. But this was for the serial, I don't know if it's the same thing with ethernet. I currently use Ethernet TCP/IP interface with FC280.
Last updated: 2024-06-13
Post by matt-purcell on Which Lib to use, connect to a socket with URL instead of IP address
CODESYS Forge
talk
(Post)
Hello, I have a new project and I need to connect to a TCP socket using the URL instead of an explicit IP address, myendpoint@mydomain.com Which library is best suited for this? This is for a new enterprise project, the endpoint is a server in a datacenter running some real time application. We have big IP, it will automatically reassign the IP address to the backup server if a crash occurs so an explicit IP won't work for me. I've done this in RS logix, working now to migrate that code over to codesys. Thanks in advance!
Last updated: 2024-06-17
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: 5 hours ago
Post by mondinmr on COL.IMap2 and HashTableFactory cause frequent Access Violation
CODESYS Forge
talk
(Post)
Good morning, I’ve been using the Collection library for a long time, mostly with Stack, LinkedList, and List. From your examples I was able to manage the different factories, even for custom elements. Now I need a hashtable, but with this object I’m running into a lot of random access violations. If I append something inside FB_Init after constructing the hashtable, it crashes, even though the list was already created. If I only create the hashtable in FB_Init and append afterwards, it usually works. I don’t understand the meaning of the dispose call in this code: pSlave := ADR(slave); uSlave := TO_ULINT(pSlave); iKey := fKey.Create(uSlave); IF hash.CountKeys() = 0 THEN Service.logger.appendLog('Filling hashtable', 'HashManager', AdvLogType.AdvDebugMsg); ok := FALSE; ELSE eError := hash.ContainsKey(iKey, xResult => ok); END_IF IF NOT ok THEN pI := __NEW(UINT); iVal := fKey.Create(TO_ULINT(pI)); Service.logger.appendLog(CONCAT('New slave', TO_STRING(uSlave)), 'HashManager', AdvLogType.AdvDebugMsg); hash.AddKeyValuePair(iKey, iVal); appendNewSlave := pI; ELSE eError := hash.GetElementByKey(iKey, itfValue => iElem); xResult := __QUERYINTERFACE(iKey, itfIInstance); IF xResult THEN itfIInstance.Dispose(); END_IF IF eError <> COL.COLLECTION_ERROR.NO_ERROR THEN Service.logger.appendLog(CONCAT('ERROR ', TO_STRING(eError)), 'HashManager', AdvLogType.AdvCriticalMsg); appendNewSlave := nullptr; RETURN; END_IF __QUERYINTERFACE(iElem, iVal); {warning disable C0033} pI := TO___UXINT(iVal.UlintValue); {warning restore C0033} appendNewSlave := pI; END_IF Without the dispose call, every second cold reset crashes immediately when I try to access iVal, even if eError doesn’t report any error. With the dispose call, the cold reset issue disappears, but I get other problems: a) If I start the runtime using systemctl start codesyscontrol, it crashes at IF hash.CountKeys() = 0 THEN b) If I delete the files in PlcLogic and download again, it works and survives multiple cold resets. But as soon as I run systemctl restart codesyscontrol, everything gets corrupted again and it starts crashing at that point. FUNCTION_BLOCK SlaveMapCounter VAR hash : COL.IMap2; eError : COL.COLLECTION_ERROR; END_VAR In its FB_Init I create it: METHOD FB_Init: BOOL VAR_INPUT bInitRetains: BOOL; // TRUE: retain variables are initialized (reset warm / reset cold) bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change) END_VAR VAR hF : COL.HashTableFactory; END_VAR hash := hF.Create(256); In another FB I instantiate it statically: FUNCTION_BLOCK ABSTRACT AbstractServoEthercatController EXTENDS AbstractServoController VAR_STAT hashSlaves : SlaveMapCounter; END_VAR VAR field : REFERENCE TO ADVAbstractFieldUnitEthercatCia402; initCnt : REFERENCE TO UINT; END_VAR The append method is the one shown above, and I call it after the runtime has started. The accesses are performed by a single task, and in any case I’m working on an isolated single core. I’ve tried everything, moving the create, the instances, and all the rest several times, but nothing seems to work. I’d like to point out that these FBs are part of our own library, which is used in many applications.
Last updated: 2025-09-11
Post by fefefede on Get the numer of day
CODESYS Forge
talk
(Post)
Hello i tro to create a program to turn on or off the air condition in relationship temperature and numer of day. I can't get the number of day. I try this after installing SysTime library but this not work and have this error on debug ------ Build started: Application: Device.Sim.Device.Application ------- Typify code... Generate code... [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'SysTimeCore(TRUE)'' to type 'TIME' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'SysTimeCore' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'DayOfWeek(CurrentTime)'' to type 'INT' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'DayOfWeek' [INFORMATION] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0181: Related position Build complete -- 4 errors, 0 warnings : No download possible PROGRAM PLC_PRG VAR Temperatura: UDINT; AriaCondizionata: BOOL := FALSE; CurrentDayOfWeek: INT; //Variabile Giorno CurrentTime: TIME; GiornoDellaSettimana: INT; DayOfWeek: INT; END_VAR CurrentTime := SysTimeCore(TRUE); // Ottieni l'ora corrente CurrentDayOfWeek := DayOfWeek(CurrentTime); CASE GiornoDellaSettimana OF 1: // Azioni per Lunedì 2: // Martedì se più 10° accend altrimenti spegni IF Temperatura >= 10 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 3: // Mercoledì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 4: // Giovedì se più di 40° accendi altrimenti spegni IF Temperatura >=40 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 5: // Venerdì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 6: // Sabato se più di 25° accendi altrimenti spegni IF Temperatura >=25 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 7: // Domenica sempre spenta AriaCondizionata := FALSE; END_CASE
Last updated: 2023-09-14
Post by serwis on Dynamic target position tracking
CODESYS Forge
talk
(Post)
Hello, I am trying to control a servo drive and dynamically set its position. I control the drive via EtherCAT with a cycle time of 500us. I use the MC_MoveAbsolute block for this. The problem is that when using a PID controller, I generate the positions I want the drive to move to on an ongoing basis, and I would like the position to be set immediately. The MC_MoveAbsolute block must receive a rising edge to execute, and I would like the movement to be performed without waiting for this edge. I have created a function that generates a rising edge every 1 ms, but I am unable to change this time to 500 µs because the TON function does not support times shorter than 1 ms. Below is the code to call the rising edge: IF Exe = TRUE THEN delay1(IN:=TRUE, PT:=T#1MS); IF delay1.Q = TRUE THEN Exe := FALSE; delay1(IN:=FALSE); END_IF END_IF IF Exe = FALSE THEN delay(IN:=TRUE, PT:=T#1MS); IF delay.Q = TRUE THEN Exe := TRUE; delay(IN:=FALSE); END_IF END_IF END_IF Here is the code for calling the MC_MoveAbsolute function: MoveDegree( Axis:= Tilt, Execute:= Exe, Position:= position_target - (base_angle_real * feedforward_turn), Velocity:= vel, Acceleration:= acc, Deceleration:= dec, Jerk:= jerk, Direction:= MC_DIRECTION.shortest, BufferMode:= MC_BUFFER_MODE.Aborting, Done=> , Busy=> , Active=> , CommandAborted=> , Error=> , ErrorID=> ); I realize that there are probably better methods for performing this type of task. How can I implement motion with a dynamically changing setpoint? THANKS
Last updated: 2025-09-05
Post by alimans on Hex string
CODESYS Forge
talk
(Post)
Hi kdkwhite, for Word you still can use suggested code by using a union structure and crack down your Word to two byte as bellow: TYPE CrackWordToByte : UNION InWord : WORD; OutBytes : ARRAY [0..1] OF BYTE; END_UNION END_TYPE then define your variable as this type: udInput : CrackWordToByte; now assign your Word variable input to InWord and send OutBytes[x] to the mentioned method: udInput.InWord := WordVariableInput; Input := udInput.OutBytes[x]; Regarding your question about the code: actually 48 is ascii code of "0" and while 65 is the ascii code of "A" so in above code 55 + 10 would be 65.
Last updated: 2023-09-20
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.