Post by pernockham on AC Persistence - values are not read from file during start?
CODESYS Forge
talk
(Post)
Im struggling with the AC Persistence. AC persistence seems to work for any variable that is changed online and values are kept during reboot. However, if I try to edit the persistence files offline or replace the persistence files with a previously downloaded older persistence file (with modified values), the online value will not follow, as if the system did not at all read the file at boot? My testing sequence. - Edit a the value of a persistenced variable (with xSaveOnChange = True) - Save/download the associated persistence file, (and confirm the value has changed). - Edit the value online for a second time . - Stop runtime - Replace (upload) the persistence file with my previously downloaded file . - Coldstart/Warmstart/Start runtime - Whatever Im trying the value of my persistence variable will always be equal to that of my second edit as if the file is not read/considered during boot. What am I doing wrong?
Last updated: 2025-09-02
Post by toffeebonbon on EL7041-0052 - does it run with EL7041 SoftMotion?
CODESYS Forge
talk
(Post)
I let this project rest for a while and picked it up last week. I have been in contact with the support from beckhoff and got the information that the terminals were identical (communication wise). As the Log of the Axis (not the drive's log) shows the error when trying to write into the register 0x8012 and set the value for an encoder to a value that is the default - at least according to the manual - I was wondering if it is possible to "not write that value" to skip that part? Or am I misunderstanding the way the library communicates with the drive?
Last updated: 2024-07-24
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
Is there a way to see what value is set as the "Work travel distance per motor rotation" that is set in the Scaling menu of the axis ? I am working on my own homing function block for sensorless (hardstop) homing and I want to make it be universal between different axes with different motor's scaling for distance per rev so I need to know this value from the axis itself. I know I could do it by just creating an input variable for the function block but I'm leaving that option as a last resort.
Last updated: 2025-06-12
Post by bjarne-pagaard on Codesys v3.5 Sint to byte
CODESYS Forge
talk
(Post)
Hi A SINT is a short (signed) integer. It is already only 1 byte - so you should have no problem casting it to a byte like so: bMyByte := TO_BYTE(sintMyShortInt); If you have a regular INT you want to put in 2 bytes - there are a lot of ways you can do this. A Union is certainly one of them. You could have a union with 2 memebers: An array of 2 bytes as one member, and an integer value as another member. Another way would be to look at MEMCPY to put the value into your CAN-message. .. or create a function to take your input value as input, and giving you 2 individual bytes as output. This could be handy if you need to change the byte-order. Integer data types: https://help.codesys.com/webapp/_cds_datatype_integer;product=codesys;version=3.5.17.0 -Bjarne
Last updated: 2024-04-24
Post by dhumphries on Rounding error in simple addition
CODESYS Forge
talk
(Post)
Thanks for the response, as I've thought about this problem over the last month I began to suspect this was a problem with not being able to exactly represent .1 as a 32 bit binary number. I think I've found a work around by making the number an integer, then dividing it by 10 and storing that value as a floating point number. There is still an issue with the value not being exact somewhere in the 8th or 9th decimal place, but because I'm incrementing an integer value then dividing it, the error doesn't compound.
Last updated: 2024-05-25
Post by tk096 on High Cycle Times for SoftMotion_PlanningTask when using AxisGroup
CODESYS Forge
talk
(Post)
Hi, under this circumstances the performance of a Raspberry Pi 4 should be sufficient to run a Softmotion robotics application. A closer look at the project would be required. Maybe you could contact the codesys support? Usually it is recommended to run the planning task cyclically every 2ms with task priority of 0 on a dedicated core. In the task configuration you can have a look at the average and maximum execution time of the planning task. You could use the function block SMC_TuneCPKernel (https://content.helpme-codesys.com/en/libs/SM3_Robotics/Current/SM3_Robotics/POUs/AdministrativeConfiguration/Computation/SMC_TuneCPKernel.html) to define suitable values for the parameters 'fSyncBufferDuration' and 'fPlanningInterval'. However, as previously mentioned, the performance of a Raspberry Pi 4 with realtime patch should be sufficient. The 'fPlanningInterval' parameter specifies the maximum planning step width in seconds. The cycle time of the planning task should not permanently exceed this value. A higher value reduces the computational effort, but can lead to a violation or no full utilization of the set limit values for velocity, acceleration and jerk. From a starting value of 0.016 seconds, the value should be increased gradually until the performance is acceptable. The parameter 'fSyncBufferDuration' specifies the size (in seconds) of the buffer between the planning and fieldbus task. The cycle time of the planning task must not exceed this value at peak times (this will lead to the error SMC_CP_QUEUE_UNDERRUN). A higher value can compensate for peaks in the cycle time of the planning task. At the same time, however, this also increases the latency for executing interrupts and aborting movements.
Last updated: 2024-03-22
Post by macros8 on Alarm Management - latched variable represented as Text list
CODESYS Forge
talk
(Post)
Hi all, in Alarm management you can latch some variable to show value within the alarm msg. It´s very useful sometime. But I´m wondering whether there is any possibility to represent that value as Text list. It´s quite common in other HMI tools and this is very useful in case of using some ErrorID for detail specification of error. Unfortunately I could not find any way how to do it but I believe that exists :) Thanks a lot. M.
Last updated: 2023-09-06
Post by shawn-plc on Return value from a tag given a string literal
CODESYS Forge
talk
(Post)
Good afternoon everyone, I am looking for a way to return a value given a string tag path. I put together a pseudo-example to illustrate my use-case and was wondering if anyone in this forum can help. The function fnValueFromTagPath is the function I am looking to either create or use from existing library. I would greatly appreciate it. Please see the attachment for additional detail. -Shawn
Last updated: 2024-08-13
Post by taqamert on IFM-Sensor ADC READ
CODESYS Forge
talk
(Post)
I have a pressure sensor that measures 0-600 bar and outputs a 0-5V signal, but my PLC reads analog inputs in the 0-10V range and displays a value of 1024 when 10V is applied. In this case, when the sensor outputs 5V at 600 bar, the PLC shows a value of 512. My working range is 0-350 bar, which means the PLC only uses 298 bits in this range, significantly reducing the resolution. What can I do to achieve better resolution within the 0-350 bar range?
Last updated: 2024-08-23
Post by taqamert on IFM-Sensor ADC READ
CODESYS Forge
talk
(Post)
I have a pressure sensor that measures 0-600 bar and outputs a 0-5V signal, but my PLC reads analog inputs in the 0-10V range and displays a value of 1024 when 10V is applied. In this case, when the sensor outputs 5V at 600 bar, the PLC shows a value of 512. My working range is 0-350 bar, which means the PLC only uses 298 bits in this range, significantly reducing the resolution. What can I do to achieve better resolution within the 0-350 bar range?
Last updated: 2024-08-23
Post by taqamert on IFM-Sensor ADC READ
CODESYS Forge
talk
(Post)
I have a pressure sensor that measures 0-600 bar and outputs a 0-5V signal, but my PLC reads analog inputs in the 0-10V range and displays a value of 1024 when 10V is applied. In this case, when the sensor outputs 5V at 600 bar, the PLC shows a value of 512. My working range is 0-350 bar, which means the PLC only uses 298 bits in this range, significantly reducing the resolution. What can I do to achieve better resolution within the 0-350 bar range?
Last updated: 2024-08-23
Post by balazska2 on Position values with integer variables
CODESYS Forge
talk
(Post)
Hello guys! https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_elem_label.html My question: Could I give an integer variable to the Position records (in the Element list => Position => width / height)? If yes, how? I defined a TEST integer variable with 300 value. I tried to add this variable to the width record (.TEST or only TEST), but if I saved, the value jumps back to 0. Thanks for your help! :)
Last updated: 2024-10-03
Post by dogulas on OPC UA C# client connecting to OPC UA CODESYS server
CODESYS Forge
talk
(Post)
Ok, for the sake of completeness in case anyone else has this problem. I can tell you that what finally worked for me was to change the line: // create an ExtensionObject to wrap the value to be written ExtensionObject extensionObject = new ExtensionObject( new ExpandedNodeId("GVL_StructA", 5), structAData ); to: // create an ExtensionObject to wrap the value to be written ExtensionObject extensionObject = new ExtensionObject( new ExpandedNodeId("GVL_StructA|defaultbinary", 5), structAData ); I'm sure there are many other problems that could cause this very generic error, but this was my problem.
Last updated: 2024-12-30
Post by mondinmr on Something of strange in the trace
CODESYS Forge
talk
(Post)
I noticed something strange in the trace: one of the variables (specifically parts.servoFeeder.m_pathGen.m_acPos) is showing an absurd or unrealistic value—something around 4E+18. However, when I check the same variable in the watch window, it shows a normal and expected value (around 506). Do you know why there is this discrepancy between the trace and the watch? Could it be a bug in the trace tool? Thanks in advance!
Last updated: 2025-05-16
Post by phryniszak on RPI CANFD
CODESYS Forge
talk
(Post)
Hi, I have rpi with CANFD MCP2518FD. Classic can communication is working OK but when I try open in CANFD hDriver := CL2.FdDriverOpenH(usiNetId := 0, uiNominalBaudrate := 500, uiDataBaudrate := 0, xSupport29Bits := FALSE, ctMessages := 100, peError := ADR(eError) error is returned with value 10226 which is not documented (https://content.helpme-codesys.com/en/libs/CAA%20Can%20Low%20Level%20Extern/Current/CAN-Low-Level/Enums/ERROR.html#error) CAA CanL2 is 3.5.21 version. Question is: 1. Is anyone get CANFD working? 2. What is meaning of this value (10226)? Regards, Pawel
Last updated: 2025-08-09
Post by phryniszak on RPI CANFD
CODESYS Forge
talk
(Post)
Hi, I have rpi with CANFD MCP2518FD. Classic can communication is working OK but when I try open in CANFD hDriver := CL2.FdDriverOpenH(usiNetId := 0, uiNominalBaudrate := 500, uiDataBaudrate := 0, xSupport29Bits := FALSE, ctMessages := 100, peError := ADR(eError) error is returned with value 10226 which is not documented (https://content.helpme-codesys.com/en/libs/CAA%20Can%20Low%20Level%20Extern/Current/CAN-Low-Level/Enums/ERROR.html#error) CAA CanL2 is 3.5.21 version. Question is: 1. Is anyone get CANFD working? 2. What is meaning of this value (10226)? Regards, Pawel
Last updated: 2025-08-09
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 wiresplus on INT_TO_WORD function not working
CODESYS Forge
talk
(Post)
Hello, I need to take an INT input, and convert it to a WORD value. VAR DRV2Speed : WORD; //IO card takes a WORD where 16000 = full 10V output (equivalent to 50Hz) PumpFillSpeed : INT; //Users enter a value between 0 and 50 END_VAR IF <conditions> THEN DRV2Speed :=INT_TO_WORD((PumpFillSpeed/50)*16000); END_IF </conditions> According to me this should work - but it stays at 0, no matter what. What am I doing wrong?
Last updated: 2024-01-26
Post by umair on Code for reading 4 address to get 1 value of sensor (Ethernet IP)
CODESYS Forge
talk
(Post)
Hi all, I want to ask, how do I write code to read multiple address for Ethernet IP communication protocol? Because this multiple address will produce one reading of a sensor that I am currently using. I want to read the value of the sensor. https://global.discourse-cdn.com/business6/uploads/wago/original/1X/7a79f4ad7ce474b9383b8550356d984defd9f3a0.png The addresses are in Byte. The 4 addresses are 89,90,91,92. Thanks in advance. Best regards, Umair
Last updated: 2024-05-06
Post by fless on FB having single input but initialized with Array
CODESYS Forge
talk
(Post)
Why will it retain the sum value from the last call? This is how PLC work. Usually variables only get initialized after a download or a reset (i.e. power loss). RETAIN variables are saved in a special kind of RAM and keep their value after a power loss. To initialize variables on every call of your FB use the VAR TEMP block. VAR_TEMP sum : INT; END_VAR
Last updated: 2024-05-07
Post by wiresplus on Display minutes as hours & minutes
CODESYS Forge
talk
(Post)
Hello, I have a counter that increments an INT value once per minute I want to display this value in Minutes until 60, then Hours/Minutes thereafter on the HMI Codesys V3.5 SP16 I can divide the minutes by 60 to get hours, but then the minutes is still more than 60. Example: a process has run for 350 Minutes. I need to display "5 Hours 50 Minutes" But if it's only been 45 Minutes, I don't want "0 Hours 45 Minutes" , just "45 Minutes"
Last updated: 2024-05-25
Post by sajid on NMEA Serial data read in Control win v3 x64
CODESYS Forge
talk
(Post)
I am using the SerialCom example program from the CODESYS website to read NMEA strings in CODESYS Control Win V3 x64 through a serial-to-USB converter. However, I occasionally receive only partial data or encounter errors in the received string. A screenshot of expected NMEA string attached for reference. Could you please advise on how to ensure the full NMEA string is received consistently? Error in strRead variable is <value of="" the="" expression="" cannot="" be="" retrieved=""></value>
Last updated: 2025-10-16
Post by sajid on NMEA Serial data read in Control win v3 x64
CODESYS Forge
talk
(Post)
I am using the SerialCom example program from the CODESYS website to read NMEA strings in CODESYS Control Win V3 x64 through a serial-to-USB converter. However, I occasionally receive only partial data or encounter errors in the received string. A screenshot of expected NMEA string attached for reference. Could you please advise on how to ensure the full NMEA string is received consistently? Error in strRead variable is <value of="" the="" expression="" cannot="" be="" retrieved=""></value>
Last updated: 2025-10-16
Post by maralani on Retain memory change to ZERO
CODESYS Forge
talk
(Post)
Hi, thanks for help, I add some retain variable , then some other variable change to zero , andI was not able to change the value
Last updated: 2023-09-19
Post by i-campbell on Official MQTT-Client: MAX_RECEIVE_BUFFER_SIZE_EXCEEDED
CODESYS Forge
talk
(Post)
256MB for the protocol yes, but the default value for this library parameter limits the library to 6kB per task scan.
Last updated: 2023-09-27
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.