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 schnepper on Minor UI bug: cannot create SFC POU after creating a Function POU
CODESYS Forge
talk
(Post)
After creating a Function POU, it is not possible to then create an SFC POU. Steps to recreate: * Create a new Function POU. SFC is not allowed for Functions, so SFC does not show in the Implementation language dropdown. * Click Add Object -> POU... Function is selected for Type. * Select Program * SFC is not present in the Implementation language dropdown
Last updated: 2024-05-23
Post by yofi on Raspberry Pi 4 POU not running
CODESYS Forge
talk
(Post)
I have this error where the pou doesn't run even for simple programs like contact and a coil if i remove the pou from the task and put another one it works for one run then it stops working again in the photo we can see a contact is on but the coil connected to it is still not on and the device is in run mode I had this issue again and again any help
Last updated: 2024-06-02
Post by yofi on Raspberry Pi 4 POU not running
CODESYS Forge
talk
(Post)
I have this error where the pou doesn't run even for simple programs like contact and a coil if i remove the pou from the task and put another one it works for one run then it stops working again in the photo we can see a contact is on but the coil connected to it is still not on and the device is in run mode I had this issue again and again any help
Last updated: 2024-06-02
Post by nano on How to access to variable value through symbolic string name
CODESYS Forge
talk
(Post)
i know, this is the reason for us either. PLC-Handler is to big, and only available with additional Contracts/Costs. OPC-UA is to slow for us. As described, there is a solution available, but im not allowed to post them here. i would prefer you send a message at codesys store by "have a question" or similar called. Not sure. Or, if an Codesys-Official Member allows to share that informations, i can give you the right hints.
Last updated: 2024-06-15
Post by shaun on GAMP 5 and 21 CFR Part 11
CODESYS Forge
talk
(Post)
Good day I have been asked to do a project. It is for a pharmaceutical application and data needs to be logged. The spec calls for the control system to comply with GAMP 5 and 21 CFR Part 11. From what I can find online it's got to do with electronic records and validation. Has anyone developed any software using this or are there codesys librarys that can make my life easier in writing this code
Last updated: 2025-10-22
Post by ducng on SMC_FB_WASNT_CALLED_DURING_MOTION when enable MC_MoveRelative
CODESYS Forge
talk
(Post)
Hello, I am using an Inovance PLC to control a servo via EtherCAT. When I enable MC_POWER, the drive switches to Run mode successfully. After that I call MC_MoveRelative, but I get the error SMC_FB_WASNT_CALLED_DURING_MOTION. The servo vibrates but the motor shaft does not move. I am new to EtherCAT/servo motion control, so I would appreciate any guidance or suggestions for troubleshooting this issue. Thank you in advance for your help.
Last updated: 2025-11-02
Post by adam on Get/Set I/O Address Mapping of DeviceObjects in python Script
CODESYS Forge
talk
(Post)
I want to cancel the automatic address allocation for all IO mappings. If I directly set the automatic_iec_address in class ScriptIoMapping to False, the address becomes None. So I reset manual_iec_address with itselfs value. It only work with the Input IOMapping . For output, it reports an error: "Invalid address: The channel type 'Output' requires address type '%Q'." I checked the description file ,both accessRight are total same. Does anyone know what causes this?
Last updated: 2025-11-14
Post by imdatatas on SMC_ERROR.SMC_AXIS_NOT_READY_FOR_MOTION when using Drive Virtual
CODESYS Forge
talk
(Post)
@ducng, Another possible situation could be that normally there are 3 inputs for MC_Power. In your above images, I can't see the "bDriveStart" input activated. As Mr. @gseidel mentioned, you need to make sure MC_Power.Status output should be TRUE. Issuing any movement command without activating the axis would naturally result in an error. For MC_Power; You can set the Enable and bDriveStart inputs to TRUE and try turning the axis activation on and off using only the bRegulatorOn input. Regards, Imdat
Last updated: 2025-11-28
Post by harryc on Soft Container License issue with ARM64 Linux
CODESYS Forge
talk
(Post)
hi @eschwellinger Thanks for the hint. This is what I get with "cmu -x" There is no Dongle. I think that I'm trying to install the soft container from CODESYS development system, where I have the licensed installed in the License Repository. The development system gives me the error when I try to install the Soft Container license. # cmu -x - CodeMeter Universal Support Tool. Version 8.20 of 2024-Sep-10 (Build 6539) for Linux/ARMHF 64-Bit Copyright (C) 2007-2024 by WIBU-SYSTEMS AG. All rights reserved. #
Last updated: 2025-12-10
Post by durallymax on VAR_INFO from inside of a FB to get info on the instance.
CODESYS Forge
talk
(Post)
The help link appears to be broken. When I implemented something similar I had to add {attribute 'reflection} above the declaration of the FB with {attribute 'instance-path'} above the string VAR that would contain the path. Then wrote a function to trim off however much I wanted removed by searching for periods, then formatting it with spaces at the periods and removing brackets on arrays while also breaking up the PascalCase to present it a bit nicer for the end-users.
Last updated: 2025-12-12
Post by gseidel on Scara3 kinematic robot error
CODESYS Forge
talk
(Post)
Hi aniket-b, this error has nothing to do with the scara3 kinematics, or robotics, or SoftMotion. It means that the EtherCAT bus is not synchronized. The usual cause is that the realtime of the PLC is not sufficient. See https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_basic_common_errors.html for details and ways to solve the problem. You can also check the PLC log for additional information about the error. Best regards, Georg
Last updated: 2025-12-23
Post by kevinrn on Github Actions CI/CD tasks - development topic
CODESYS Forge
talk
(Post)
Hello community, I just want to inform you about our plans and the current status of automating the build process for CODESYS libraries. So it might be helpful for some people who are in the same situation. Background story: I am a software engineer at powerIO GmbH, normally I use high level languages for the products we develop and offer. Sometimes I work with my team on CODESYS libraries, which can also be found in the CODESYS store. Most of the time I spend with them on architecture tasks and tasks that are not directly related to our products. Every time I see the manual processes for releasing a library etc., I am very surprised about this time intensive process. Current situation: I know there has been a scripting interface for years. CODESYS Git was released a few years ago, but the scripting interface was only released a few months (weeks?) ago. We developed a pseudo-automated solution a few months ago, but it was all very hacky. So now there is a better Git implementation and also more modularization and installation options. For example, the CODESYS installer has a full CLI, which makes it very convenient to install CODESYS installations headless. Plans: I think it's the right time to develop a better automation solution. Most of our software projects are hosted on Github and we use Github actions very intensively for other software projects. Therefore, we have decided to use Github for our CODESYS library projects as well. Following tasks should be implemented in automation for CI/CD tasks: - Automated setup of CODESYS installation (Already released: https://github.com/marketplace/actions/setup-codesys-installation) - Checkout CODESYS libraries - Execute tests scripts - Sign CODESYS libraries - Extract Library documentation - Create CODESYS package - Sign CODESYS package Side Note: - This is mainly a side project, and we do not provide support for the CI/CD part. - This topic is here to help and also to get help from other software engineers. - This project and idea is not prioritized as I am currently the only one working on it and I hope it will help us and also others and increase productivity. - We are putting this out there as an organization, but priorities can change quickly and the CI/CD tasks I am developing are mostly done in my spare time. So please don't expect this to happen in a short time or even be fully completed. I would be very happy if some ppl will join the development process and might be open to discuss some technical details for this. I hope this topic is not to off-topic, but I think the CI/CD part is very important today and it can increase a lot of quality and push productivity. Thanks :)
Last updated: 2024-03-28
Post by alessandro on SysMemCmp SysMemCpy
CODESYS Forge
talk
(Post)
VAR Data1:ARRAY[1..10] OF SINT ; Data2:ARRAY[1..10] OF SINT ; Data3:ARRAY[1..10] OF SINT ; Data4:ARRAY[1..10] OF SINT ; ex_1 : BOOL ; ex_2 : BOOL ; enable : BOOL :=0 ; END_VAR // PROGRAM // The scope of this example is compare and copy the values of two ARRAY only if some value is different using SysMemCmp and SysMemCpy. // In this 2 example we don't use a FOR cicle for do this, and pBuffer1 and pBuffer2 is just a pointer to ARRAY. See details in Library util.SysMem of Codesys // The compare funcion util.SysMem.SysMemCmp is bidirectional if Data1 chanege respect Data2 ex_1 go to 1 and if Data2 change respect Data1 also // but the copy function util.SysMem.SysMemCpy work only from source ARRAY pSrc:=ADR(Data1) to destination ARRAY pDest:=ADR(Data2) // Example 1 Full ARRAY compare and copy // This compare 2 different equal ARRAY and if there is some difference ex_1 go to 1 and if you give enable he copy Data1 in Data2 ex_1 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data1), pBuffer2:=ADR(Data2), udiCount:=SIZEOF(Data1))); IF ex_1 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data2), pSrc:=ADR(Data1), udiCount:=SIZEOF(Data1)); END_IF // Example 2 Only selected area of the ARRAY compare and copy // This compare 2 different equal ARRAY starting from position number [3] for 4 byte in this case start at position [3] and finish at position number [6] // and if there is some difference only in area [3..6] of the ARRAY ex_2 go to 1 if you give enalbe he copy Data3[3..6] in Data4[3..6] // if something change in other array position[0..2] or [7..10] are ingnored ex_2 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data3[3]), pBuffer2:=ADR(Data4[3]), udiCount:=4)); IF ex_2 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data4[3]), pSrc:=ADR(Data3[3]), udiCount:=4); END_IF // Attention udiCount input is intended in <byte> in the example 1 I pass to udiCount:=SIZEOF(Data1) for compare and copy the intere ARRAY and // SIZEOF pass the size of intere ARRAY in byte to the function input, in this 2 examples I used variable type SINT each one occupie 1 byte and one position in the ARRAY // and in the example 2 I pass udiCount:=4 for compare and copy only 4 position of Data3/4[3..6] if you want to extend this example and use it for an ARRAY OF WORD // remember that each WORD will occupe 2 byte (16 bit) and you will have to pass udiCount:=SIZEOF(Data1) if you need to compare intere ARRAY example 1 // but need udiCount:=(42) for the example 2 because need to compare and copy 4 word each occupie 2 byte (16 bit). // For REAL (32 bit) need udiCount:=SIZEOF(44) for LREAL or (64 bit) need udiCount:=SIZEOF(416) // a good rule is calculate the dimension of the ARRAY in byte without empty space at the end, multiple of data type number for variable bigger then 8 bit // Example : If you want to create an ARRAY for 5 REAL (32 bit) each occupie 4 byte the correct size is ARRAY[0..19] OF REAL 54=20 position. // NOTE : In the example the position of compare function util.SysMem.SysMemCmp is first and the copy function util.SysMem.SysMemCpy inside the IF is after // in one cycle of the program the two array is compared and if there is some difference and enable are copied. // If you move util.SysMem.SysMemCmp after the IF cycle he will copare the ARRAY in the current cycle but the copy of the value will do in the next cycle.</byte>
Last updated: 2025-10-24
Post by ofey on Codesys Soft PLC OPC UA server
CODESYS Forge
talk
(Post)
Hi! I'm sorry if this has been asked before. I have tried looking up previous topics regaring this, but even though I'm following tutorials and other posts I cant seem to get this to work consistently. I actually got the connection established on a test project after some trial and error. I only got it to work with the "Anonymous login". But after i deleted the test project and tried to get the same thing to work on another project I cant get it to work anymore. What I'm trying to do: Set up and OPC UA Server using CODESYS with the free soft PLC. I then try to connect to the OPC UA Server with the program "UaExpert". What happens: I get the error Error "'BadUserAccessDenied' was returned during ActivateSession". What I have done in CODESYS: - Added the object "Symbol configuration" and checked some test variables - Checked "Support OPC UA features - In "Communication settings -> device -> Change runtime security policy" I have checked "Allow anonymous login" What I have done in UAExpert: - Found the OPC UA server under "local". (It is showing two servers though, I do not know why. It showed the same when it worked yesterday). Se attachment - Checked "Anonymous" under "Authentication settings in the OPC UA server. I'm new to CODESYS, so it could be something elementary wrong in my settings. Maybe something in the user settings in CODESYS regarding user rights or something?
Last updated: 2023-09-14
Post by fless on Von SNMP auf IIoT wechseln
CODESYS Forge
talk
(Post)
Wie gesagt ich hatte noch keinen Kontakt mit SNMP. Um die Beispiele zu verstehen hier ein paar Tips: SetEngineId und CreateSNMPV3User sind Funktionsbausteine. Klicke rechts auf den Namen, Symbol suchen - Gehe zu Definition Dann sieht du entweder den Quelltext oder landest in der Bibliothek und kannst dir die Dokumentation ansehen. In deinen Fall siehst du den Quelltext. Die Funktionsbausteine sind in den Projekt POUs gespeichert weil das Projekt aus mehreren Applikationen besteht die alle diese FBs nutzen. sOID (drei Balken)oid → was wird da gemacht? In die Stringvariable sOID (String old ID?) wird der Inhalt von oid geschrieben. oid ist Member der Strukturvariable snmpVarBindings. Dem SNMP_SET Aufruf wird snmpVarBindings übergeben und geändert. Und da müsste doch irgendwo eine Verschlüsselung eingetragen werden oder? Beim Anlegen der SMNP-User wird ein Passwort vergeben, siehe CreateSNMPV3User. Dem SNMP_SET Aufruf wird nur der User übergeben, hier "readwrite". Die Bibliothek sucht sich die Einstellung des Users selbst.
Last updated: 2024-09-01
Post by umdee on Error when monitoring LAD programs
CODESYS Forge
talk
(Post)
System Information from the computer being used: OS Name Microsoft Windows 11 Pro Version 10.0.22631 Build 22631 Other OS Description Not Available OS Manufacturer Microsoft Corporation System Manufacturer Dell Inc. System Model Latitude 5500 System Type x64-based PC System SKU 08B9 Processor Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz, 2112 Mhz, 4 Core(s), 8 Logical Processor(s) BIOS Version/Date Dell Inc. 1.3.11, 6/11/2019 SMBIOS Version 3.2 Embedded Controller Version 255.255 BIOS Mode UEFI BaseBoard Manufacturer Dell Inc. BaseBoard Product 0M14W7 BaseBoard Version A00 Platform Role Mobile Secure Boot State On PCR7 Configuration Elevation Required to View Windows Directory C:\WINDOWS System Directory C:\WINDOWS\system32 Boot Device \Device\HarddiskVolume1 Locale United States Hardware Abstraction Layer Version = "10.0.22621.2506" User Name CARDASSIA-IX\Engineer Time Zone Eastern Daylight Time Installed Physical Memory (RAM) 16.0 GB Total Physical Memory 15.8 GB Available Physical Memory 4.67 GB Total Virtual Memory 18.5 GB Available Virtual Memory 2.52 GB Page File Space 2.63 GB Page File C:\pagefile.sys Kernel DMA Protection Off Virtualization-based security Not enabled Windows Defender Application Control policy Enforced Windows Defender Application Control user mode policy Off Device Encryption Support Elevation Required to View Hyper-V - VM Monitor Mode Extensions Yes Hyper-V - Second Level Address Translation Extensions Yes Hyper-V - Virtualization Enabled in Firmware Yes Hyper-V - Data Execution Protection Yes
Last updated: 2024-03-19
Post by eschwellinger on communication
CODESYS Forge
talk
(Post)
depends on if you use PFC200 SL from CODESYS store or the Wago target for the PFC. If you use the SL product you need to setup the interface by a plcshell command...
Last updated: 2023-08-19
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 eschwellinger on Connection to device closed
CODESYS Forge
talk
(Post)
is there a way to check the plclog on Opus A3 by using cmd line under Linux? This log is what you need to check for the disconnection problem
Last updated: 2023-08-24
Post by rohitk on CoDeSys libraries for BECKHOFF EL7332/EL7342
CODESYS Forge
talk
(Post)
Hi, step 1 : go to beckhoff website, go to required IO card, go to download option in that, go to XML donlowad and download the file Step2 : Go to codesys software, go to tools - deviceRepository - install that downloaded file.
Last updated: 2023-08-24
Post by eschwellinger on How to configure CODESYSControl_User.cfg in order to use a specific network card for OPCUA Server
CODESYS Forge
talk
(Post)
check this faq section here: https://faq.codesys.com/plugins/servlet/mobile?contentId=102137886#content/view/102137886
Last updated: 2023-08-25
Post by felipemsgarcia on EtherCAT - Force Control Word
CODESYS Forge
talk
(Post)
What worked for me: Use SMC_SetControllerMode and set the nControllerMode to SMC_nocontrol. With that, you can control the drive via Modes of Operation(16#6060) and Controlword(16#6040) directly. Hope that helps, Cheers!
Last updated: 2023-08-31
Post by tvm on Ranges, Lambdas, on Fixed arrays of structs
CODESYS Forge
talk
(Post)
Have you looked at this? https://forge.codesys.com/prj/codesys-example/element-collect/home/Home/ It's not exactly what you're looking for, but I've been able to make some things work more efficiently using this library.
Last updated: 2023-08-31
Post by eschwellinger on Ethercat scan for devices not picking up EL7041 as a softmotion axis
CODESYS Forge
talk
(Post)
Add existing version (with SM drive) - without scan - disable under expert settings in the slave the revision check.
Last updated: 2023-09-03
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.