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 s1mon on Two OneWireMaster on one Raspberry PI 5
CODESYS Forge
talk
(Post)
Hi, I want to use two OneWireMaster on a Raspberry Pi5. I'm running Codesys Control for Raspberry Pi 64SL V 4.15.0.0. Under Linux I've configured two GPIOs for 1w bus usage on GPIO4 and GPIO27. Under Linux both masters seem to work fine and I can readout both sensors connected to both GPIOs. The two masters are 'w1_bus_master1' and 'w1_bus_master2'. In Codesys I've configured to OneWireMasters with the corresponding file paths. But in Codesys the 2nd onewiremaster "w1_bus_master2" doesn't work. Status is showing "OnewireMaster : Not running" What am I doing wrong? Does Codesys on Raspberry support multiple OneWireMasters? Any help is appreciated.
Last updated: 2025-06-10
Post by s1mon on Two OneWireMaster on one Raspberry PI 5
CODESYS Forge
talk
(Post)
Hi, I want to use two OneWireMaster on a Raspberry Pi5. I'm running Codesys Control for Raspberry Pi 64SL V 4.15.0.0. Under Linux I've configured two GPIOs for 1w bus usage on GPIO4 and GPIO27. Under Linux both masters seem to work fine and I can readout both sensors connected to both GPIOs. The two masters are 'w1_bus_master1' and 'w1_bus_master2'. In Codesys I've configured to OneWireMasters with the corresponding file paths. But in Codesys the 2nd onewiremaster "w1_bus_master2" doesn't work. Status is showing "OnewireMaster : Not running" What am I doing wrong? Does Codesys on Raspberry support multiple OneWireMasters? Any help is appreciated.
Last updated: 2025-06-10
Post by nathant on Can't open online view of FB instance from code editor, only from Device/POU windows
CODESYS Forge
talk
(Post)
Hello, The title pretty much says it all. When trying to open a FB from the CFC/Ladder/SFC editors while online, the FB does not open in an online view of that specific instance. Instead, it opens an offline view with '???' shown for the value of any variable. This makes debugging extremely cumbersome, as I have to find each FB in the POU window and select the specific instance I am trying to view. Anyone know the cause/solution for this? Thanks.
Last updated: 2023-11-08
Post by nz-dave on FAILURE TO OPEN PROJECT ON ANOTHER COMPUTER
CODESYS Forge
talk
(Post)
Hi All Not sure what im missing here but i seem to have a lot of issues when i start a project say at home then try to open it at work the next day on another pc, using same version of Codesys. I try the build option when opening the project but still get loads of placeholder,library and some random errors i'm not to sure about. have tied project Archive, which is better, but not perfect. Can someone tell me what im doing wrong!. Cheers
Last updated: 2025-01-20
Post by pernockham on Inheritence of struct,
CODESYS Forge
talk
(Post)
Interesting, thanks! Didnt know about ANY before, and will sure find a use-case for it. Im not sure it will help me here though, it seems to me that an ANY will not accept a string assignment? I actually think that the "ALIAS" should work, that was a hard found error. I had a fair bit of scratching my head looking for misdirected pointers before I understood what was (not) happening. I will use the work-around of individual structs instead.
Last updated: 2025-03-08
Post by atone on Set DeviceID of an IO-Link Sensor at Runtime
CODESYS Forge
talk
(Post)
I need to be able to change (set) the DeviceID of an IO-Link sensor (see DeviceID.png) at runtime. I tried with both ProfinetCommon.PN_PortConfiguration and ProfinetCommon.IOL_PortConfiguration, but I get an error for both when I try to read the port configuration (see PN_PortConfiguration.png). Does one of those FBs is the right one for my purpose? Do I possibly make a mistake when assigning the parameter IOLD_ID/IOLM_ID?
Last updated: 2025-03-19
Post by wbj0t on Update project from SP20 to SP21
CODESYS Forge
talk
(Post)
Hello everyone. I have a problem: I installed new version of codesys IDE. When I try open project in this new version, I have many errors about Visu: rectalnge/button/frame/etc does not exist. How update properly project? 20+ pages of visu pages from 100+ frames and all visu elems looks like "Error image". It is not problem of SP20->SP21. Any update has problems from visu side.
Last updated: 2025-06-09
Post by i-campbell on Publish a JSON payload via MQTT Publish (using IIot Libraries)
CODESYS Forge
talk
(Post)
your are sending as a WSTRING which is UTF16, but your receiver is interpriting as UTF8. Change the receiver to use UTF16, or better change your sender to convert to UTF8. You publish the entire storage space (SIZEOF) Instead of the number of bytes of actual text (StrLenA) try using utf8JsonData : STRING(2000); JSON.Stu.ConvertUTF16toUTF8( ADR(wsJsonData), ADR(utf8JsonData), SIZEOF(utf8JsonData) ); and change your publish to mqttPublish( mqttClient:=mqttClient, pbPayload:=ADR(utf8JsonData), udiPayloadSize:=To_UDINT(JSON.Stu.StrLenA(ADR(utr8JsonData))), wsTopicName:=topic, mQTTPublishProperties:=mqttPublishProperties );
Last updated: 2024-04-10
Post by corriibme on Setting array values with JSON Utilities SL
CODESYS Forge
talk
(Post)
I have been trying to set an array value to a JSON structure of this form: {"key": [1,2,3,4]} While I have been able to create the key and set its value to an empty array, I've not had any luck in putting any value in that array. objindex:= fb_JBuilder.SetKeyWithArray("Key6", diParentIndex := diRootIndex); objindex2:= fb_JBuilder.SetValue(value:= iValue2, diParentIndex:= objindex); iValue2: ARRAY[0..3] OF INT:= [1,2,3,4]; The two lines of code above produce {"key6": []} . The second line essentially has no effect.
Last updated: 2024-05-12
Post by akrawczyk on Dynamically enabling/disabling Modbus slave devices in runtime (performance issue with timeouts)
CODESYS Forge
talk
(Post)
Hi everyone, I'm working on a CODESYS-based project running on a Weintek cMT2078X HMI with a built-in CODESYS runtime. The system communicates with multiple Modbus RTU slave devices, arranged in a cascade. The number of connected units can vary between 2 and 8, depending on the installation. Each slave has 17 Modbus channels, which are polled cyclically every 5 seconds. The issue is that when fewer devices are physically connected (e.g. only 3 out of 8), the Modbus master still attempts to communicate with all configured slaves. This leads to massive delays due to timeouts (currently 200ms per channel). For one disconnected device, that’s: 17 × 200ms = 3.4 seconds of delay per polling cycle, and this quickly multiplies with each additional missing slave. This behavior significantly degrades the system's performance and responsiveness. We attempted a workaround where we tried to trigger polling based on a variable in the PLC program, but this caused instability and even led to hardware hangs/freezes on the cMT2078X – likely due to clashes in how the Modbus polling engine and program logic interact at runtime. My main questions are: Is there a way in CODESYS to dynamically enable/disable Modbus slave devices at runtime, using a BOOL or INT variable (e.g. indicating number of active slaves)? Can devices or channels be conditionally polled or temporarily disabled without removing them from the device tree? Are there any best practices or examples for handling variable numbers of Modbus slaves in scalable systems like this? Would splitting communication across tasks or interfaces help reduce the impact of timeouts? Any advice, documentation references, or architectural suggestions would be extremely helpful. I'm looking for a robust way to dynamically scale slave polling without degrading system stability or performance. Thanks in advance!
Last updated: 2025-08-11
Post by otbeka on CAA File Handling: "Read only" error
CODESYS Forge
talk
(Post)
Hi, On CODESYS V3.5.19.50 I am using the latest 3S File Access library (CAA File & CAA Types) to save and retrieve configuration data from the User Data section of an SD card, via file called config.txt. The application reads the file to memory once upon initialisation, and then the only other operation is overwriting the file with the updated configuration whenever the user changes the settings. An issue is ocurring, seemingly randomly, where the config.txt file, and all surrounding directories, cannot be written to by the unit, returning a READ_ONLY_CAA error upon file open. This sometimes does not clear even after power-cycling the PLC several times, yet checking the file permissions with ls -l shows normal read, write, and execute access. I am wondering if this is caused by the PLC itself or by an issue in my application. I have included my CAA File handler function block (SD_Card_Bin(FB).txt) and any associated types/calls below: TYPE ConfigData : STRUCT Config : ARRAY[0..256] OF STRING(64); NumberOfStrings : UDINT; END_STRUCT END_TYPE TYPE Buffer : STRUCT Data : ARRAY[0..SIZEOF(ConfigData)] OF BYTE; DataLength : UDINT; END_STRUCT END_TYPE A case within my MAIN PRG: mode.WriteConfigDataToFile: VisuElems.CURRENTVISU := 'Screen_Write'; IF xModeHasChanged THEN iErrorCount := 0; iRoute := 0; END_IF CASE iRoute OF 0: inBuffer := ConfigData_To_Buffer(GVL.UnitData); xConfigError := FALSE; xDataConfigured := FALSE; iRoute := 1; 1 : //Read Data from Card SD_Card_Bin.strFileName :=FileName; SD_Card_Bin.iFileOperation := 2; SD_Card_Bin(xExecute :=TRUE, WriteBuffer := inBuffer, xDone =>xDataConfigured, xError=>xConfigError, strErrorCodes=>strError); IF xDataConfigured THEN SD_Card_Bin(xExecute :=FALSE); IF xConfigError THEN iRoute := 32767; ELSE iRoute :=100; END_IF END_IF 100: // The end bCurMode := mode.DisplayProcessVariables; 32767: // Config error iErrorCount := iErrorCount + 1; IF iErrorCount > 2 THEN // Repeats 3 times, if no progress abandons and returns error bCurMode := mode.WriteError; ELSE iRoute := 0; // Try again END_IF END_CASE I'd like to rule out my application as the cause of this bug - help via comments or criticism would be greatly appreciated.
Last updated: 2025-03-19
Post by manuknecht on Maximum dynamic limits of MC_MoveLinearAbsolute and MC_MoveLinearRelative
CODESYS Forge
talk
(Post)
Hello all I use an axis group with two linear axes in a kinematic system. Using MC_MoveLinearAbsolute and MC_MoveLinearRelative, I am trying to realise dynamic movements (set velocity: 1 m/s, set acceleration: 30 m/s^2) with the highest possible jerk, as I want to compare this with a movement with a trapezoidal velocity profile. However, my measurements show that the axes accelerate with a maximum jerk of approx. 800 m/s^3, even if the value in the function block was set to 10,000 m/s^3. I have already increased the dynamic limits of the two axes accordingly (Velocity: 5000 u/s, Acc-/Deceleration: 250'000 u/s^2, Jerk: 100'000'000 u/s^3, where 1 u = 1 mm), but this had no effect. I have checked the input parameters of the function blocks and the VelFactor, AccFactor and JerkFactor factors are all set to the maximum (value 1). Reducing the cycle time has resulted in a higher jerk, but as we are already working with a cycle time of 1 ms, there is nothing more that can be done here. The axes themselves are still a long way from drawing the maximum current, which is why I assume that this should not be a problem either. Are there other factors or parameters that influence the dynamic limits and therefore allow faster movements? The PLC I am using is a Raspberry Pi 4 and Codesys V3.5 SP20 with all libraries up to date. Thanks in advance Manuel
Last updated: 2024-05-08
Post by ivanh on kepware minimun privilege
CODESYS Forge
talk
(Post)
Hello everyone, I’m integrating Codesys with Kepserver using the Kepware driver for Codesys, and I need to configure a user account with the minimum necessary privileges to read and write to the tags on the PLC, without using the internal OPC UA server of Codesys. However, despite not assigning the Modify permission, Kepware still allows writing to the tags. What are the minimum required permissions to ensure that writing is only allowed when necessary, and how can I prevent other permissions from being overridden? Any guidance would be greatly appreciated.
Last updated: 2024-08-12
Post by varshag on Trying to pull Logged In user details and certain other variable values and in turn log to a database
CODESYS Forge
talk
(Post)
Hello All, I am new to Codesys and am trying to create a simple project which would let me log to a 6 column database table. I can use a push button on Visualization to initiate the logging. Column 1:Timestamp Column 2:Full name or Initials of Logged in operator Column 3,4,5,6: Certain variables Any help is highly appreciated. Thank you.
Last updated: 2024-11-07
Post by dogulas on Removing a symbol from the IEC Symbols Editor grid
CODESYS Forge
talk
(Post)
In the CODESYS IDE I have several symbols defined and I have IEC Symbol Publishing installed. On the IEC Symbol Publishing window and under the IEC Symbols Editor tab, I have dragged symbols from the tree on the left to the grid on the right. All this works fine. Now I want to remove one of the symbols from the grid on the right and I cannot see any way to do this. How can I remove a symbol from the grid on the right once I've added it?
Last updated: 2025-02-07
Post by altus22 on RemoteTargetVisu creates Unresolved Reference
CODESYS Forge
talk
(Post)
In order to set the placeholder to empty, open the Library Manager and click on Placeholders in the Library Manager ribbon. If you left click in the library column for CmpEventMgr Implementation, it will show you the available library versions for CmpEventMgr Implementation. To update the runtime, open the Project menu and select Project Environment. That window will show you the current version of CmpUserMgr Implementation and if there is a newer version available in the Recommended column.
Last updated: 2025-04-17
Post by griinde on display values with frames
CODESYS Forge
talk
(Post)
i want to make a frame for use multiple places for showing pressure and temperature. ive tried to decleare a variable in the frame config, if i put a fixed value in the value text field it show correct until i simulate. and if i point to a variable i gvl it show the name of the variable, and when i simulate it shows rValue. is there a way to do what i want?
Last updated: 2025-08-16
Post by arvindkumar on Wago plc not going back to RUN Mode after Power failure
CODESYS Forge
talk
(Post)
Hi im using wago pfc750-8207 plc and my programming software was codesys v2.3, im facing some issue in my plc after power failure my plc not going back to run mode sometimes, i did sourecode download, boot application created and still facing this issue, out of 10 power failure 8 times its going to run mode some time its missing to go run mode and only sys indication is in on condition Kindly please help me.
Last updated: 2023-12-15
Post by felipemsgarcia on Edge Gateway online, but PLC is not online
CODESYS Forge
talk
(Post)
Hello, I couldn't figure what/where the issue was, so I deleted everything from automation server and reinstalled the edge gateway and did the process again. It worked for about a month and then it stopped working again. It presents the same symptom, edge gateway is online but I can't connect to the PLC. Any idea of what could be the issue? Thank you!
Last updated: 2024-01-09
Post by wind-11 on Problem with simulation Modbus
CODESYS Forge
talk
(Post)
Hello everyone, I encountered a problem in the simulation while working. In a test project we set up a Modbus connection. We wanted to simulate this with test values. The connection also worked, but unfortunately the values are frozen and do not report any “current data”. (Picture attached) Since these are my first points of contact with Codesys and my colleague continues to work elsewhere, I was hoping that someone here might have an idea. Kind regards and thanks in advance.
Last updated: 2024-03-22
Post by yannickasselin on How to sort JSON object in codesys
CODESYS Forge
talk
(Post)
Just adding: sSubscriberdata := ''; Right before your memcopy should fix the extra characters. It is because your are copying 36 characters into a string which can contain more than 36 characters and there is garbage left in the extra characters. Regarding the parsing of json, I usually build a structure that mirrors the json data and use the available methods in the IIoT library to parse the data and fill the structure.
Last updated: 2024-05-08
Post by ph0010421 on Windows 11 and SP17
CODESYS Forge
talk
(Post)
Hello New W11 machine. I've tried installing and the 'Codesys installer' appeared, which basically failed. This was the exe from the Store. I've now tried installing with an old copy of SP17, which didn't try and use the Codesys installer, but has hung at the 'Install all packages added to the setup' stage. Has the exe been updated to use the Codesys installer? What is the installer? Do we think it'll work on w11? thanks, Paul
Last updated: 2024-06-12
Post by ranadheer on Request to share documents about SoftPLC Extension SL
CODESYS Forge
talk
(Post)
Hello Everyone Our team is planning to begin an industrial automation project and we are currently evaluating the use of SoftPLC Extension SL as a potential solution. As we are in the early stages and have yet to start the implementation, we kindly request access to official reference documents, technical manuals, and datasheets relating to SoftPLC Extension SL. Thank you very much for your assistance. We look forward to your response.
Last updated: 2025-10-18
Post by nehaltrivedi96 on Modbus connection via Qronox PCD3 M6893
CODESYS Forge
talk
(Post)
Hello, I am currently scaling 4-20mA signals and the scaled output (temperature) has to be sent via modbus protocol to a tool like doctor modbus or modbus poll. I have defined my inputs as real as and the output is also real, but to send this output via modbus it has to be of word. So how will i convert real into word and then send the generated output via modbus?
Last updated: 2026-02-18
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.