Post by charly29160 on CmpCharDevice blocks gpiochip access on Raspberry Pi 5 since update from SP18 to SP21
CODESYS Forge
talk
(Post)
Hallo Herr Schwellinger - Danke fΓΌr die Info. Der Fehler besteht weiterhin: Follow-up: Rootless mode is not the cause here β verified with ps aux, the runtime binary runs as root: root 1974 48.9 0.7 854852 62140 ? SLl 13:00 0:04 /opt/codesys/bin/codesyscontrol.bin /etc/codesyscontrol/CODESYSControl.cfg gpioinfo gpiochip0 as root also works flawlessly (all 54 lines listed correctly, no permission errors at the kernel level). So the block is happening purely inside CmpCharDevice's own sandboxing, not at the Linux/kernel permission level and not due to a dedicated unprivileged user. The correct config key to whitelist /dev/gpiochip0 for CmpCharDevice is still what I'm looking for. Im Voraus herzlichen Dank fΓΌr Ihre Hilfe Karl Schuler
Last updated: 2026-07-20
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing Iβve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing Iβve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing Iβve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by baotthitawat on SCADA Systems Are Becoming Easier to Integrate With Modern Applications
CODESYS Forge
talk
(Post)
One thing Iβve been seeing recently is that more industrial systems are starting to expose realtime SCADA data through APIs instead of keeping everything isolated inside the local monitoring software. This makes integration much easier for cloud platforms, mobile dashboards, AI analytics, and enterprise applications that need realtime industrial data. Instead of exporting reports manually or building complicated middleware, APIs allow external systems to access SCADA data directly in realtime. I think this becomes especially useful for applications like wastewater treatment monitoring, where operators need better visibility into alarms, equipment status, and operational conditions across different locations. Feels like modern SCADA is slowly evolving from a standalone monitoring platform into part of a larger connected industrial ecosystem.
Last updated: 2026-05-28
Post by edson-bueno on SysProcess Execute Command unable to run commands with special characters
CODESYS Forge
talk
(Post)
Hi, I found the same issue, and I fixed with this steps: 1st go to codesys .cfg file. sudo nano CODESYSControl.cfg Then insert this: [SysProcess] BasePriority=Realtime Command=AllowAll Now we need to grant codesys root rights on Linux. Step 1: Create or edit the systemd override configuration: sudo systemctl edit codesyscontrol In the editor that opens, insert: [Service] User=root Save and exit: Press Ctrl+O to save Press Ctrl+X to exit Step 2: Reload systemd and reboot To apply the override: sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo reboot Step 3: Confirm CODESYS is running as root After reboot, open the terminal and run: ps aux | grep codesyscontrol You should see something like: root 1234 ... /opt/codesys/bin/codesyscontrol.bin ... If instead it shows admin or another user, the override was not applied correctly. Step 4: (Optional) Confirm from within CODESYS In your CODESYS project, insert this test code to run the Linux command whoami: Make sure the lib SysProcessImplementation, SysTypes, and CmpErrors is on the project. VAR sCommand : STRING := '/usr/bin/whoami'; sOutput : STRING(255); refCommand : REFERENCE TO STRING; refOutput : REFERENCE TO STRING; resultCmd : UDINT; END_VAR refCommand REF= sCommand; refOutput REF= sOutput; SysProcessExecuteCommand2( pszCommand := refCommand, pszStdOut := refOutput, udiStdOutLen := SIZEOF(sOutput), pResult := ADR(resultCmd) ); Notes & Warnings This method gives full system access to the CODESYS runtime β do not expose this system to the public network without protection. Do not use sudo in commands inside CODESYS when the runtime is already running as root. @tomas111, in case you want to read the temperatur, use this command: sCommand:STRING:='/usr/bin/vcgencmd measure_temp';
Last updated: 2025-05-20
Post by timvh on Get Alarm status in Codesys
CODESYS Forge
talk
(Post)
You are right, that you can use the GetState method, but it is not that simple. You first have to get a list of (filtered) alarms from the AlarmManager. You can find an example in Forge how to do this. See https://forge.codesys.com/prj/codesys-example/alarm-manager/home/Home/ Then you can go through this list to get the state of all the (filtered) alarms. See below the code which you could use. This is all based on the example from forge. Create a program: // This example shows how to access alarms via structured text. PROGRAM PLC_PRG VAR xInit : BOOL := TRUE; udiResult : UDINT; fbAlarmFilterCriteriaAll : FB_AlarmFilterCriteriaAll; fbAlarmManagerClient : FB_AlarmManagerClient; itfAlarmManagerClient : IAlarmManagerClient := fbAlarmManagerClient; xAlarm1 : BOOL; xAlarm2 : BOOL; xWarning : BOOL; iNrOfAlarmsInAlarmList : INT; iNrOfActiveAlarmsInAlarmList : INT; paitfAlarm: POINTER TO ARRAY [0..0] OF AlarmManager.IAlarm; iAlarmIndex : INT; eAlarmState: AlarmManager.AlarmState; END_VAR IF xInit THEN xInit := FALSE; fbAlarmManagerClient.itfAlarmFilterCriteria := fbAlarmFilterCriteriaAll; // register alarm client to get updated about alarm status / changes udiResult := AlarmManager.g_AlarmHandler.RegisterClient(itfAlarmManagerClient, 0, 0); END_IF // Polling the number of alarms udiResult := AlarmManager.g_AlarmHandler.GetActiveAlarms(itfAlarmManagerClient, parritfActiveAlarms => paitfAlarm, iCountActiveAlarms => iNrOfAlarmsInAlarmList); iAlarmIndex := 0; iNrOfActiveAlarmsInAlarmList := 0; WHILE iAlarmIndex < iNrOfAlarmsInAlarmList DO eAlarmState := paitfAlarm^[iAlarmIndex].GetState(); IF eAlarmState = AlarmManager.AlarmState.Active OR eAlarmState = AlarmManager.AlarmState.ActiveAcknowledged THEN iNrOfActiveAlarmsInAlarmList := iNrOfActiveAlarmsInAlarmList + 1; END_IF iAlarmIndex := iAlarmIndex + 1; END_WHILE See below some details about the function blocks: One function block should implement the IAlarmFilterCriteria interface. This can be empty except a few methods. FUNCTION_BLOCK FB_AlarmFilterCriteriaAll IMPLEMENTS AlarmManager.IAlarmFilterCriteria Method implementation (others related to interface are empty) METHOD AreAllAlarmClassesSelected : BOOL AreAllAlarmClassesSelected := TRUE; METHOD AreAllAlarmGroupsSelected : BOOL AreAllAlarmGroupsSelected := TRUE; METHOD GetPriorityFrom : USINT GetPriorityFrom := 0; METHOD GetPriorityTo : USINT GetPriorityTo := 255; The other function block should implement IAlarmManagerClient and get a reference to the FB which implements the IAlarmFilterCriteria FUNCTION_BLOCK FB_AlarmManagerClient IMPLEMENTS AlarmManager.IAlarmManagerClient VAR_INPUT itfAlarmFilterCriteria: AlarmManager.IAlarmFilterCriteria; END_VAR Method implementation (others related to the interface are empty) METHOD GetFilterCriteria : AlarmManager.IAlarmFilterCriteria // see VAR_INPUT for filter GetFilterCriteria := itfAlarmFilterCriteria; Off course you have to add the AlarmManager to your application and add some alarms to it.
Last updated: 2025-09-02
Post by hhermsen on Codesys v3.5.22.10 - Internal error:System.AggregateException...Value cannot be null...Parameter name: expLValue
CODESYS Forge
talk
(Post)
Internal compiler error in SP22.x (expLValue null) β SP21 unaffected β need help isolating root cause I'm hitting the same internal compiler crash reported here. Same exact stack trace (AssignmentStatementReplacer β CreateAssignmentExpression β ArgumentNullException: Value cannot be null. Parameter name: expLValue), but in my case triggered by a self-written library, not a Visualization object β so this looks like a general SP22.x codegen regression rather than something tied to one specific language feature. What I've confirmed: Reverting to SP21 β no issue, builds clean SP22.x β internal compiler crash during Build > Application, code generation phase, with zero useful location info (no POU, no line number) check_for_errors/precompile-only passes cleanly; the crash only happens on a real full build, meaning static analysis never sees it coming What I've tried to isolate the cause (without success): Removed a suspected pattern involving a VAR_IN_OUT parameter used directly as a FOR-loop control variable, combined with early RETURN inside the loop β crash persisted identically afterward Confirmed no Visualization Manager or similar object in the project (ruling out the trigger in the linked report) Used an AI coding assistant (Claude Code) to search for other suspicious patterns β no luck pinpointing the exact statement Question @codesys-com Since the compiler gives no location info at all, is there any way to get more diagnostic output from the SP22.x codegen phase (verbose/debug build flags, log level settings, etc.)? Without that, isolating this in a large library means blind bisection β cutting the codebase in half repeatedly until the crash disappears, which is slow and error-prone without official tooling support. Happy to share the affected project or a minimal repro if that helps CODESYS engineering track it down.
Last updated: 2026-07-11
Post by ekristoffe on Beispieldateien finden / Inhalt der Packages
CODESYS Forge
talk
(Post)
Hello @eschwellinger, Why not using one of those 2 folders: C:\ProgramData\CODESYS C:\Users\Public\Documents\CODESYS The main reason is depending on the company and the user right, the end user may not have the access to use those folders. Also having a non version dependent folder may help if the end user uninstall a previous version and forgot all its sample project where in this previous version installation. Thanks.
Last updated: 2023-11-24
Post by installwhat on Ethercat and profinet on together
CODESYS Forge
talk
(Post)
I'm curious about the impact of having profinet and Ethercat (specifically softmotion so frame at start of task?) running together. Since it's advised to access the data from the bus task should have both profinet io and ethercat on the same task? Are there any implications around this one should be aware of especially since the frame at task start is just, so far as I'm aware, an ethercat thing? Thanks
Last updated: 2025-04-08
Post by stuartjr on Disabling forcing of specific variables
CODESYS Forge
talk
(Post)
Is there a way that I can create a variable in a GVL that I can control with logic but a user can not put a force on this variable. I have looked at the access rights but this seems to only limit editing the GVL or POU. This variable will only be assigned a value in one POU but it will be used throughout many other POUs.
Last updated: 2024-03-15
Post by rossanoparis on After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working
CODESYS Forge
talk
(Post)
Hello at all. After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working. I'm not able to read or write files from the PLC application. Before this upgrade all worked fine. I've read this thread [ https://forge.codesys.com/forge/talk/Engineering/thread/3da9ded84e/ ] Despite I followed that indications I couldn't get my code working again. Perhaps I'm missing something or I didn't understand how to use placeholders at all. Is there a different syntax to use for "SysFileOpen" in order to use placeholders? Thanks in advance for your help. Information Compiler: CODESYS V3.5 SP19 Patch 2 Runtime: codesyscontrol 4.9.0 HW: KUNBUS RevPi Connect S Below the paths I want to access (The entire CODESYSControl_User.cfg file is attached) [SysFile] PlaceholderFilePath.1=/home/pi/hpca/bin, $hpcabin$ PlaceholderFilePath.2=/home/pi/hpca/cfg, $hpcacfg$ PlaceholderFilePath.3=/home/pi/hpca/logs, $hpcalogs$ PlaceholderFilePath.4=/home/pi/hpca/resources, $hpcares$
Last updated: 2023-08-22
Post by aliazzz on Unable to deploy Virtual Control SL on ARM64 (Raspberry Pi5)
CODESYS Forge
talk
(Post)
Hi, I have successfully deployed "Virtual Control SL" on a few x86/64 machines now. However, I'd now like to deploy this to a Raspberry Pi (ARM64). To do this I prepared the Raspberry Pi5 with the following prereq's; * Minimal PREEMPT Debian * Latest Bootfirmware * full SSH access via non-root account * Podman * RedHat Cockpit with CODESYS LicensServer plugin up and running However, I can't seem to resolve copying the correct (deploy) Images as they wont show up in the CODESYS IDE I have added CODESYS Virtual Control for Linux SL and the CODESYS LicenseServer for Linux SL via the CODESYS installer on my DevBox. I open CODESYS > Tools > Deploy Control SL Next I enter the SSH targets IP and Credentials and for my RPi5 and it shows "Connected". In the next tab, Deployment, the dropdown box only shows one (1) image, which also is the incorrect CPU architecture. Only Virtual Control AMDx64 shows up (!?) while I expect to see the ARM64 based images for both Edge and Control. Has someone encountered this too? I'd like to hear other people experiences with Virtual Control deployment on ARM based architecture. attachment 1: AMD64 based deployment pulldown menu (correct images) attachment 2: ARM64 based deployment pulldown menu (incorrect images) regards,
Last updated: 2024-07-28
How to configure CODESYSControl_User.cfg in order to use a specific network card for OPCUA Server
CODESYS Forge
talk
(Thread)
How to configure CODESYSControl_User.cfg in order to use a specific network card for OPCUA Server
Last updated: 2023-08-28
how to transfer raspberrypi runtime license from sdcard to dongle without the original raspi?
CODESYS Forge
talk
(Thread)
how to transfer raspberrypi runtime license from sdcard to dongle without the original raspi?
Last updated: 2021-04-13
What is the best way to upgrade a project to a new version of Codesys?
CODESYS Forge
talk
(Thread)
What is the best way to upgrade a project to a new version of Codesys?
Last updated: 2022-03-01
I want to use the function of PVT to realize move
CODESYS Forge
talk
(Thread)
I want to use the function of PVT to realize move
Last updated: 2013-05-14
How to intercept a variation in the RetainPerstist variables (for saving to file)
CODESYS Forge
talk
(Thread)
How to intercept a variation in the RetainPerstist variables (for saving to file)
Last updated: 2018-08-03
How to set "Always updatevariables" to "enable 2" by default in DeviceDescription.
CODESYS Forge
talk
(Thread)
How to set "Always updatevariables" to "enable 2" by default in DeviceDescription.
Last updated: 2020-12-10
Specify Input Configuration "OnDialogClosed" Action to only react to certain Dialogs
CODESYS Forge
talk
(Thread)
Specify Input Configuration "OnDialogClosed" Action to only react to certain Dialogs
Last updated: 2023-10-02
is it possible to connect to a newer runtime from HMI runtime 3.5.16
CODESYS Forge
talk
(Thread)
is it possible to connect to a newer runtime from HMI runtime 3.5.16
Last updated: 2024-07-02
The Ultimate Guide to Taxi Services in the UK: From Airports to City Travels
CODESYS Forge
talk
(Thread)
The Ultimate Guide to Taxi Services in the UK: From Airports to City Travels
Last updated: 2024-08-08
Navigating the UK with Ease: Your Guide to Taxi Services from Major Cities to Key Destinations
CODESYS Forge
talk
(Thread)
Navigating the UK with Ease: Your Guide to Taxi Services from Major Cities to Key Destinations
Last updated: 2024-08-08
how to extract the name of an FB to a variable
CODESYS Forge
talk
(Thread)
how to extract the name of an FB to a variable
Last updated: 2024-10-01
Post by romrot on Trying to connect Codesys OPC server to Ignition
CODESYS Forge
talk
(Post)
Trying to connect Codesys OPC server to Ignition, but I get this fault "java.lang.Exception: no anonymous token policy found"
Last updated: 2025-01-21
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.