Post by pernockham on Slider instance value when accessed through "execute ST-code"
CODESYS Forge
talk
(Post)
I have a time which I want to modify with a slider. I have confirmed it is possible to set the value of the slider by to_real(time) (I can see that the slider changes according to 'my_time_value's value). Slider variable: to_real(my_time_value); However I fail to access the current slider instance value when I want to write back the value as time (write to a variable will not work as I need a type-conversion before assignment). my_time_value := to_time(slider-instance-value); I tried with this^.? but could not see anything interesting and also THIS^.GEN_Instance.? but nothing resemble what could be the sliders value. Anyone that knows? Thanks!
Last updated: 2025-02-06
Post by pernockham on How to manage soft container licenses for (remote) multi units?
CODESYS Forge
talk
(Post)
Using Codesys runtime for Linux and thinking of the process of preparing multiple such systems for my customer. I don't necessarily have physical access to these units, they can be (very) remote. The idea so far is to use an image to install the Linux OS and codesys runtime. Application updates can be done by distribution of the PlcLogic/Application/application.app and application.crc files. But whats the most practical way of managing the license for these units? Do each controller need to be physically connected to a License Manager instance or can licenses be distributed by means of a license file for each unit? I believe that the license should be stored in soft containers for each unit. Help and insights appreciated! Per
Last updated: 2025-04-04
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
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
If anybody finds this in the future, I managed to do it like this: scalingValue := EncoderPulseCountPerRev / ABS(AxisName.fScaleFactor); No need to use MC_ReadParameter as I am able to read this value directly from the axis object. Using an absolute value of the fScaleFactor is there in case the axis is set as inverted, in which case it would be a negative value. I was not able to figure out how to get EncoderPulseCountPerRev programatically, but since all my servos use an encoder with pulse count per revolution of 16#800000, the final equation looks like this: scalingValue := 16#800000 / ABS(AxisName.fScaleFactor);
Last updated: 2025-08-19
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
Trying to communicate (from Europe) with/to a unit located in china, the communication seems blocked/stopped. The edge gateway is installed in a linux environment and was possible to link to my Automation server account using the "Automation service tool". However it seems the unit cannot communicate with the Automation server (a Network scan will give the message "Gateway not connected"). (I have tested the eq. setup with units locally which works.) Anyone having experience situation similar to this and if its possible to make this work? Will a VPN be needed possibly? Other tips?
Last updated: 2025-09-04
Post by pernockham on Control for linux SL, 4.14.0.0 -> 4.15.0.0 breaks web page access. URL requires authentication
CODESYS Forge
talk
(Post)
I have a problem which I have identified with a device-update from 4.14.0.0 to (4.15.0.0-4.17.0.0) where the newer versions will stop any local access to the internal web page with the browser responding "The requested URL requires authentication". Setting the device back to 4.14.0.0. the web page will respond. Access to web page through Automation server is possible also for the newer version, but not "local" access. Runtime (Codesys control for linux SL) is on 4.17.0.0. I have tried to manipulate settings for 'Access-Control-Allow-Origin' '*' always; through nginx (normally a proxy_pass to localhost:8080). Also tested bypassing nginx by accessing 8080 directly with the same result.
Last updated: 2025-09-08
Post by durallymax on Persistent Vars
CODESYS Forge
talk
(Post)
Looking for a better way to manage Persistent Variables. We tend to have local vars in our FBs that need persistence through downloads as the systems are updated/altered on a regular basis. Retain would suffice if we had an easy mechanism to backup and restore like we can with Persistent variables and recipes. Although not having to remember that step with Persistent variables is preferred. We're running into issues with persistent storage capacity (WAGO PFC200) using the Persistent variable list (and adding all instances). It appears there are many ways to handle this, some with recipes, some with files, others with application manager. Is there a solution that exists that is as simple as declaring as Persistent and managing elsewhere? Or do we need to move onto periodically writing CSVs?
Last updated: 2025-09-22
Post by arjunk on How to correctly create a device descriptor (.devdesc.xml) for a custom Linux ARM64 PLC in CODESYS 3.5.21.20?
CODESYS Forge
talk
(Post)
I’m trying to integrate a custom PLC into CODESYS so that it appears under the Device section. From what I understand, this requires a .devdesc.xml device descriptor file. I attempted to create the XML manually, but whenever I try to install it in order to generate a .package file, CODESYS crashes. CODESYS version: 3.5.21.20 Target PLC: Linux ARM64–based My questions are: Is there an official or easier way to generate a valid .devdesc.xml file for a custom PLC? Are there tools, templates, or examples that can help ensure the XML is structured correctly and won’t cause crashes? For Linux ARM64 targets specifically, is there a recommended starting point (e.g., modifying an existing device descriptor)? Any guidance or best practices for creating and packaging custom device descriptors would be greatly appreciated.
Last updated: 2025-10-06
Post by snhatton on OpC UA server on Raspberry Pi 64 SL runtime
CODESYS Forge
talk
(Post)
Good afternoon, After changing the security settings to: CommunicationPolicy: POLICY_BASICSHA256SHA256 CommunicationMode: ALL Activation: Activated UserAuthentication: ENABLED Then generate a new certificate on the device for the OPC-UA server from Security Agent->Device->OPC UA Server. Restart the runtime using tools->Update Raspberry Pi->Stop->Start for the changes to take effect. It may take a minute for the runtime to start. Initiate the connection from the UA server side. You should see a pop-up asking you to trust the certificate. Click on the button 'Trust Server Certificate'. Next, you should see a certificate in the quarantined folder of the security agent in CODESYS. Click and drag this from quarantined to trusted and then try connecting from UA expert to the device. These steps worked for me and my setup and I hope they can help you!
Last updated: 2023-12-11
Post by macros8 on Translation - How to get text as reference in Frames translated?
CODESYS Forge
talk
(Post)
Hi, thanks for the link. Maybe I create elements in incorrect way. I always use Interface Editor to create variables which are used inside element (see pics). After that I place element in my visu and use Reference property to link variable or set the value. In that case the value of string is not transferred to general text list for translation as I mentioned before. Do I have to all properties which influence behavior of my element create in Frame configuration instead? What´s the difference to the Interface editor? Thanks a lot. M.
Last updated: 2024-01-02
Post by anderson on function block output
CODESYS Forge
talk
(Post)
I'm trying to make a CNC machine, but I'm having problems because the drive I'm using only has the option of communicating through digital inputs. In this case, I should use the CLP's digital outputs to communicate with it, correct? However, in the function blocks it seems that they are already pre-programmed and I didn't find the pulse output options, for example, so that I could associate a digital output from the PLC to connect this to the drive's pulse input. My question is: is it possible to associate the pulse output of the function block with a digital output of the PLC? and how to do this?
Last updated: 2024-01-05
Post by cedriclee on RaspberryPI reconnection error
CODESYS Forge
talk
(Post)
"Hello, I'm Cedric Lee, a PLC engineer based in Korea. I'm reaching out about an ongoing issue with the connection when attempting to control Beckhoff modules using Raspberry Pi with CODESYS for the first time. I use CODESYS to target the Raspberry Pi's IP, install version 4.10.0.0 of the CODESYS Runtime Package, and upon pressing Start in the Runtime, the target connects to the Raspberry Pi. However, within about a minute, an error window appears, stating 'no connection to the device. please rescan your network,' leading to the disconnection of the target. This cycle repeats. I've attached some pictures for your reference. I'm using CODESYS Development System V3, Raspberry Pi 4 Model B (installed as 64-bit), and Beckhoff EK1100 modules. If anyone has a solution to this issue, please help. Your assistance is greatly appreciated."
Last updated: 2024-01-11
Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Hi, I am looking for a good way to update a decice remotely. The devices are distributed worldwide and have normally no connection to the internet. The CODESYS Automation Server can't help here. So I want to update the decices via USB stick. I have written my own code* to update the files that are created with ‘Create boot application’. But sometimes strange things happen: visu elements are present, but are not found the application is no longer registered and therefore no longer starts I have not yet found out why these errors occur. Has anyone had similar problems or found a better way? Is there perhaps a CODESYS library or something else? Many thanks! *the code deletes the directories on the device and copies the new directories from the USB stick while the system is running (goes without saying)
Last updated: 2024-02-05
Post by struccc on Release SP20 - Changes in behaviour?
CODESYS Forge
talk
(Post)
This... is not very practical for me - as I have a bunch of different classes - it's just doesn't seems to be very practical to define a NULL for each of them... Something like this I use in parameter definitions. For example: VAR_INPUT refVFD_Drive : REFERENCE TO FB_VFD_Drive := GVL_DUMMY.Dummy_VFD; END_VAR I use this to prepare objects for code I don't control: Typycally visualizations - had many troubles with references set on the fly, right before opening a corresponding visualization... And yes, the instance in GVL_Dummy reports itself as "Fake", so it does not influence the actual application at all. Actually this way I could invalidate a reference, just to set it to a "Dummy" instance.
Last updated: 2024-03-25
Post by valec on Connect local Asem HMI runtime to local Codesys Control Win V3 x64
CODESYS Forge
talk
(Post)
I have a project made on a PL700 PLC with Codesys and an Asem Premium HMI panel. I don't have access to the physical PLC right now, so I'm trying to use Codesys Control Win V3 x64. I created the application and loaded "Codesys Control Win V3 x64" without errors, then I activate "Start PLC" from the tray. Asem cannot connect. I tried to use "localhost" or the local IP address and it doesn't work (it's the "CoDeSys Soft PLC Communication Driver"). I need to connect my local Asem runtime to a virtual Codesys application on my PC. How can I do it?
Last updated: 2024-03-26
Post by alexgooi on Modbus writing on value change
CODESYS Forge
talk
(Post)
The way I usally tackle this is by syncing only words (then you are able to use the FB above). If you then want to write a Boolean simply type it like this. Value[1].0 := Bool1; Value[1].1 := Bool2; Value[1].2 := Bool3; Uints have the same number of bits than a INT/WORD so these ones will work as well (they are only represented diffrently). A Real will work but you will loose some infomration in the conversion. If you want to keep the information you can convert 2 words to a float with a function (for example with the IEEE-754 standard) . In this way the syncing to the server is very simple and in the Codesys Program you decide what part of the word you want to use.
Last updated: 2024-04-03
Post by tecnocons on Trouble Writing Files to External Paths in CODESYS
CODESYS Forge
talk
(Post)
Hello everyone, I'm encountering an issue in CODESYS regarding writing files to external paths. Despite correctly configuring the placeholder in the CODESYSControl_User.cfg file to allow access to an external folder, CODESYS doesn't seem to write any files, and no errors are reported. The issue on the older versions was absent with no placeholders. I've checked the operating system permissions, and they seem to be in order, but the issue remains. Has anyone faced a similar situation or has any suggestions on how I might resolve this problem? Any help would be greatly appreciated. Thank you in advance for your support. I'm using raspberry PI as a logger. RPI3 Buster Codesys 32bit SL V4.11 Codesys Win64 3.5.20 [SysFile] PlaceholderFilePath.1=/home/pi/scan, $SCAN$
Last updated: 2024-04-09
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 gseidel on CNC / G01 Speed is very slow (or go-stop motion) in Continuous short segment .
CODESYS Forge
talk
(Post)
Hi k2saki, I would recommend to have a look at SMC_SmoothMerge, followed by SMC_SmoothPath. SmoothMerge will combine the small G1 elements to longer splines, SmoothPath will avoid stops between the splines. https://content.helpme-codesys.com/en/libs/SM3_CNC/Current/SM_CNC_POUs/SoftMotion-CNC/SoftMotion-Function-Blocks/SMC_SmoothMerge.html For SmoothMerge to work, you have to configure a tolerance, i.e. by how much it may deviate from the lines. To graph the output of the interpolator, you can use the trace. (Add a trace object below the application, and add the variables you are interested in to the trace.) Best regards, Georg
Last updated: 2024-04-30
Post by garrian on How to sort JSON object in codesys
CODESYS Forge
talk
(Post)
Hi there, I'm testing out MQTT from my Wago PLC using JSON object. I have managed to publish this {"Temperature":15.6,"Setpoint":38.0} to my broker. Now I', trying to subscribe to the same message. The result is this: '{"Temperature":15.6,"Setpoint":38.0}95}ê$10šå$04$Nå$08²Ÿå$0B` á$08@šå' First, why do I see 95}ê$10šå$04$Nå$08²Ÿå$0B` á$08@šå' at the end of the message? Second, how Can i sort out this data to use it in my program? I followed a youtube tutorial which gave me the attached result, which works. But I need some other smart way of doing this when the object gets even more data in it. Any help is very appreciated :)
Last updated: 2024-05-04
Post by alimans on Unrecoverable SoftMotion state after switch to PreOp
CODESYS Forge
talk
(Post)
For anyone still experiencing this issue, here’s how I managed to solve it: Symptoms: 1. Sometimes, on the first start of CODESYS Runtime, the modules fail to run. 2. After disconnecting and reconnecting the communication cable, the drive does not start again. 3. MC_Reset cannot clear the fault. Solution (what worked for me): 1. Check the axis communication using the SMC_CheckAxisCommunication function block (FB). 2. If CheckAxisCommunication.eComState of the axis is equal to or higher than SMC_CommunicationState.SMC_COMSTATE_BASE_COM_INITIALIZATION, then 3. Use the SMC3_ReinitDrive function block to reset the drive — and it works. For more information, refer to the official CODESYS documentation: 👉 https://content.helpme-codesys.com/en/libs/SM3_Basic/Current/SM3_Basic/DriveInterface/AXIS_REF/SMC3_ReinitDrive.html
Last updated: 2025-10-23
Post by msegon on OPC UA Client failed to connect
CODESYS Forge
talk
(Post)
Hi everyone, I would appreciate your help with a problem I've been working on for a few days but haven't been able to resolve. I'm trying to read data from Tridium Niagara 4.15 OPC UA Server, but I get the error BadCertificateInvalid. As far as I understand, you need to add a CA certificate somewhere to establish a secure connection, but I don't know where. 2025-10-27T09:06:43.247Z, 0x0000008d, 4, 0, 0, * ERROR: OpcUa_Channel_BeginConnect: Cannot create secure channel without certificates! 2025-10-27T09:06:43.247Z, 0x00001090, 4, 0, 0, * ERROR: Datasource: Error Failed (268468242) in state Connecting I tried communicating without encryption, but it doesn't find the point. Has anyone managed to establish encrypted OPC UA communication?
Last updated: 2025-10-28
Post by pernockham on Trend legend naming and access/config to/of trend/legend-variables
CODESYS Forge
talk
(Post)
Trying the web-version of trend-data. This seems to be a impressive tool, but I lack/cant find a number of what I would think are important parts. There does not seem to be a way to get away from the dot.notated variable naming in the legend.. A developer might want the dot-notation but an end-customer will surely not. For instance I want to display 12 temperatures, instead of t1, t2 etc.. they will be named. gvl_io.unit[1].trend.temps.t1_a gvl_io.unit[1].trend.temps.t1_b gvl_io.unit[1].trend.temps.t1_c gvl_io.unit[1].trend.temps.t2_a .. gvl_io.unit[1].trend.temps.t4_b.. gvl_io.unit[1].trend.temps.t4_c.. Quite a lot of unnecessary text/data taking space from the actual trend => Is there a way to access/interface the legend-data programmatically so I can change the presentation/naming?
Last updated: 2025-12-16
Post by swol on HTML 5 - Controls -> Change Content-Security-Policy settings
CODESYS Forge
talk
(Post)
Sorry for being late to the party... so it is not possible to use the webbrowser tool to display external websites in a visu anymore? As it is not possible to simply "adjust the ContentSecurityPolicyIncludeTrustedOrigins setting in the automatically generated webvisu.cfg.json file" as stated in the docs? We need to display data read from a Raspberry Pi (part of our computer network) in our webvisu. We used to do it by entering the Pi's IP address as the URL variable in the webbrowser element but now (I don't know since when, I'm new on the job) "The page’s settings blocked the loading of a resource (frame-src) at 'IP address' because it violates the following directive: “default-src 'self' 'unsafe-inline'”. What are the options for displaying the data?
Last updated: 2025-11-11
Post by kporter on Codesys EtherCAT Driver (CmpEt1000MPD) can't set MAC address
CODESYS Forge
talk
(Post)
EtherCAT is a point-to-point protocol so it doesn't need a unique MAC address. It would be very useful to set the MAC address to 020000000000, the standard address for this kind of application. (The important bit is the 02 at the start of the address, which means locally-administered MAC.) The stock Windows driver can do this for my i210 card. But the CODESYS CmpEt1000MPD driver cannot. The image shows the setting with the Windows driver. If I set all my customers' cards to this address, then I don't need to deal with this when deploying my application. A simple PowerShell script can be used to set the MAC address once when the NIC is installed and the driver is changed.
Last updated: 2026-02-09
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.