Post by kambel on information security of CDS IDE 3.5.15.30
CODESYS Forge
talk
(Post)
Hello Please tell me if it is possible to hide information about devices in the Scan device window on pic.
Last updated: 2026-01-29
Post by t-probst on Strong Private Key Protection for Encryption Certificates
CODESYS Forge
talk
(Post)
Hello, We are trying to implement an automated method of adding of a certificate and private key to the Windows certificate store for encrypting CODESYS projects. We want to do this so that users do not have to deal with details of certificates at all and to prevent user error. We are keen on enforcing strong private key protection since it ensures that a password is required for the certificate to be used to decrypt a CODESYS project. When we add a certificate to the certificate store and enable strong key protection using the Microsoft Management Console Certificates snap-in, it works as expected. However, through this method the user may mistakenly not enable strong private key protection. For the certificates we create programmatically (using Microsoft’s Cryptography Next Generation API in .Net 7) bag attributes are added to the certificate and key by the API. These bag attributes are as follows: Bag Attributes localKeyID: 01 00 00 00 subject=C = xx, ST = xxx, O = xxx, OU = xxx, CN = xxx issuer=C = xx, ST = xxx, L = xxx, O = xxx, OU = xxx, CN = xxx -----BEGIN CERTIFICATE----- [encoded certificate] -----END CERTIFICATE----- After using this certificate with bag attributes to encrypt a CODESYS project, it can’t be decrypted, showing this error: "The specified project could not be loaded. Possible reasons might be: - The project file is corrupted or invalid - The project has been saved with a newer version of the programming system. If this is the case, you can open the project in the corresponding version. Choose "Save as..." with the appropriate storage version, and retry again. - You may not have the necessary permissions to lad the project" We know that the bag attributes are causing the issue because if we manually edit the certificate file to remove them before using the certificate to encrypt a project, the project can be decrypted as expected. However, we are unable to automatically enforce strong key protection using this method. Here is a link to a StackOverFlow question that we have posted recently for this issue: https://stackoverflow.com/questions/76922355/enforcing-strong-private-key-protection-for-x509certificate2-objects-in-net-mod Any help is greatly appreciated.
Last updated: 2023-08-22
Post by fefefede on Get the numer of day
CODESYS Forge
talk
(Post)
Hello i tro to create a program to turn on or off the air condition in relationship temperature and numer of day. I can't get the number of day. I try this after installing SysTime library but this not work and have this error on debug ------ Build started: Application: Device.Sim.Device.Application ------- Typify code... Generate code... [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'SysTimeCore(TRUE)'' to type 'TIME' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'SysTimeCore' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0032: Cannot convert type 'Unknown type: 'DayOfWeek(CurrentTime)'' to type 'INT' [ERROR] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0035: Program name, function or function block instance expected instead of 'DayOfWeek' [INFORMATION] giorno_accensione_aria: PLC_PRG Device: PLC Logic: Application: C0181: Related position Build complete -- 4 errors, 0 warnings : No download possible PROGRAM PLC_PRG VAR Temperatura: UDINT; AriaCondizionata: BOOL := FALSE; CurrentDayOfWeek: INT; //Variabile Giorno CurrentTime: TIME; GiornoDellaSettimana: INT; DayOfWeek: INT; END_VAR CurrentTime := SysTimeCore(TRUE); // Ottieni l'ora corrente CurrentDayOfWeek := DayOfWeek(CurrentTime); CASE GiornoDellaSettimana OF 1: // Azioni per Lunedì 2: // Martedì se più 10° accend altrimenti spegni IF Temperatura >= 10 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 3: // Mercoledì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 4: // Giovedì se più di 40° accendi altrimenti spegni IF Temperatura >=40 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 5: // Venerdì se più di 50° accendi altrimenti spegni IF Temperatura >=50 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 6: // Sabato se più di 25° accendi altrimenti spegni IF Temperatura >=25 THEN AriaCondizionata := TRUE; ELSE AriaCondizionata := FALSE; END_IF 7: // Domenica sempre spenta AriaCondizionata := FALSE; END_CASE
Last updated: 2023-09-14
Post by laruso on Runtime device Enable/Disable procedure
CODESYS Forge
talk
(Post)
I implemented the parts from the CAA Device Diagnosis Example.project and could use it for switching on and off, the CAN devices that were located under the CANbus and CANopen_Manager. But i can't do the same with I2C_master_test_version or devices below this one. In the example project there is only the EtherCAT Master, CANbus and CANopen_Manager, and Ethernet with devices below.
Last updated: 2023-10-27
Post by awatson on User Management - REFERENCE TO VisuUserMgmtProvider
CODESYS Forge
talk
(Post)
Hello Guys I have IFM CR1140 screens that I want to use the basic user management Elements on - But I am trying to figure out where I am going wrong with the References "REFERENCE TO VisuUserMgmtProvider" The Device will look after the security itself - I have enabled the User Management in Visualization Manager and added an admin user to the device and sync'd.
Last updated: 2023-11-17
Post by boris on EtherCAT error: the device is deactivated
CODESYS Forge
talk
(Post)
Hi, I am currently working in BCS-tools (basiscally codesys) and I am trying to run the GN-9386 network adapter in the EtherCAT_master , but when I run the program the Ethercat status shows the error: ''The device is deactivated''. I don't know what to do right now. Can someone explain me how to fix this error? regards, Boris
Last updated: 2024-10-02
Post by lsislsis on SIGABRT Error
CODESYS Forge
talk
(Post)
After many tests i see that problem comes when serial communication established for modbus rtu. If the slave device not connected we don't see the exception. If the slave device connected at serial port then we have exception about 1 hour after startup and every 10 or 15 minutes. Any suggestion?
Last updated: 2024-11-08
Post by wbj0t on one variable signed to modbus tcp server device and modbus serial device
CODESYS Forge
talk
(Post)
Hi. Raspberry pi 4 runtime. Runtime version 4.16, IDE version 3.5.21. Is it possible write new value for variable via modbus tcp or serial devices when both enabled? As I see - not. What can I do? It is terrible restriction.
Last updated: 2025-07-17
Post by onstage on Unable to add EL6751 to Control RTE V3 on W11 IoT LTSC using Eng. V3.5 SP21
CODESYS Forge
talk
(Post)
I have working EtherCAT since it can be scanned for slaves, but then I'm stuck getting the information that the device isn't found in the repo. As far as I can see both revisions does however exist in the device repo. Component added in the Configfile. Anyone with some similar experiences?
Last updated: 2025-09-04
Post by rickwot809 on Codesys Soft PLC OPC UA server
CODESYS Forge
talk
(Post)
Enabling Anonymous Login 1. Navigate to 'Device' > 'Communication Settings' > 'Device'. 2. Next, click on 'Change Runtime Security Policy'. 3. In the new window, find and check the box for 'Allow anonymous login'. After completing these steps, you should be able to communicate with the OPC UA server.
Last updated: 2025-09-11
Post by masmith1553 on SDO generation
CODESYS Forge
talk
(Post)
If you add any device to the CANOpen Manager it will send messages to verify the device is on the network. Do you have the Enable expert settings check box checked in the General tab? have you added any SDOs in the SDOs tab? I avoid using the CANOpen Manager and just use the CAN_Tx and CAN_Rx blocks from the library.
Last updated: 2024-01-25
Post by mehmetembedded on Linux ARM64 SL, GPIO Access
CODESYS Forge
talk
(Post)
Hello. I am using TI AM64x evaluation board TMDS64EVM. It has 8 leds connected via I2C to SoC.I wanna control them via codesys GPIO device. Is that possible? If so how I can do it. I had no problem installing codesys runtime, and running program on device. But when it comes to GPIO access, It couldn’t make it.
Last updated: 2024-05-08
Post by mehmetembedded on Linux ARM64 SL, GPIO Access
CODESYS Forge
talk
(Post)
Hello. I am using TI AM64x evaluation board TMDS64EVM. It has 8 leds connected via I2C to SoC.I wanna control them via codesys GPIO device. Is that possible? If so how I can do it. I had no problem installing codesys runtime, and running program on device. But when it comes to GPIO access, It couldn’t make it.
Last updated: 2024-05-08
Post by xiaoyan on Generic EtherCAT slave
CODESYS Forge
talk
(Post)
Hello Well i need some basic advice. My protegoD drive is shown deactivated in the device tree. i can see its variables and other i/o in online mode but the device itself is deactivated. how can i address this issue. is there any configuration error.using ethercat link to connect to protegoD by Primo MC plc
Last updated: 2024-05-16
Post by tama00 on GPIOs not running with Raspberry Pi 4 (and SPI connection)
CODESYS Forge
talk
(Post)
Hello everyone, I have a working SPI connection (with transferExt) between a Raspberry master with Codesys and an ESP32 slave. I would also like to use a few GPIO pins. Is there a problem with using SPI AND GPIOs? Environment: Raspberry Pi 4+ with Raspian from Oct 23 Codesys V3.4 SP19 Patch 5 with Runtime Version 4.10.0.0 Device: GPIOs B+/Pi2 My problem: The status is displayed as “GPIOs : not running”. And also during mapping the message “The bus is not running. The values shown are perhaps not actual”. However, the variable changes that I make in my program are displayed under “Current Value”. In the Logic Analyzer, the pin toggles during transmission with small intervals of +-4us (seems to be a cyclical disorder, but I don't know where exactly it could be coming from). This applies to pins that I actually use (output) but also to the other GPIOs (not used). With GPIO 4, the line remains permanently high. Attached is a screenshot from the Logic Analyzer. Channel 1,3,5 were GPIO pin 26, 22, 17 Would be very grateful for help. Best regards
Last updated: 2024-05-06
Post by abuckie on i2c master not running
CODESYS Forge
talk
(Post)
Hello, I am trying to create an Ethernet/IP device that can read analog signals, do some basic logic on it and then hand communicate the results to an Ethernet/IP master. I am using the Raspberry Pi to experiment with this as I would ultimately like to drive a display as well. I have loaded up the runtime on the Pi and got the digital I/O working. I have an ADS1115 ADC to I2C board and I can't get it to work, I get a message telling me the i2c master is not running and I am not sure where to start with this. Is there a manual for running CODESYS on the Pi or something like that I am missing? I found this post and opening the project in CODESYS V3.5 SP21 it seems like tons of this wouldn't convert properly https://forge.codesys.com/forge/talk/Runtime/thread/f1400b71b6/ I have added in the library and device manually and copied the structured text program but lost at what to do if the core functionality of the master is not running. I appreciate any help, thanks.
Last updated: 2025-05-19
Post by toby on Ethernet/IP communication with Omron NX1P2
CODESYS Forge
talk
(Post)
Hey guys, I'm very much a noob with networking, it's my achillies heel, and this is my first networking project using Ethernet/IP. Any help offered is GREATLY appreciated. I'm trying to network a Codesys Project with an Omron NX1P2 PLC. I'm using EIP due to hardware restrains. I've added the fieldbus, EIP scanner (as the master), and made a Network Variable List. On the Sysmac Studio end, I've made the variables and set them to network inputs/outputs, registered them in EIP settings, but when I try to set the target device (the Codesys project), I suspect I need to import an EDS file for the EIP mapping. Back in the Codesys project, I'm not sure how to: - Make an EDS file to share with Sysmac Studio - How to link the target device (Omron PLC) to the EIP fieldbus - How to map the inputs from the Omron PLC. Im sorry for my very open request for help, i'm kind of lost looking through the various forums/video/tutorials as many of them dont match what im trying to do. Any help, or sample programs would be so so greatly appreciated. If you need any further clarifications, please feel free to ask. Thanks in advance, Toby
Last updated: 2024-01-24
Post by nikgind on Codesys Communication Manger - Required information model version exists in the model repository but is not found
CODESYS Forge
talk
(Post)
Hi I am trying to import a custom information model that I created using UA Modeler. I have only added two new methods and two new object types. It is possible to add the information model to the Communication Manager and the two new object types are shown in the Information Model tab. After compiling i get the following error: Communication Manager [Device: PLC Logic: Application]: The information model http://opcfoundation.org/UA/ is required by http://yourorganisation.org/Bsp_3.1/ with a minimal publication date from 15.12.2023 but the device has only a model from 15.09.2021 installed. Probably the information model from 15.09.2021 is missing in the information model repository. The error message does not make sense to me. Should it not be “Probably the information model from 15/12/2023 is missing in the information model repository”? Anyway I have installed the information model from 15/12/2023 but not from 15/09/2021. Which makes the error message even stranger.
Last updated: 2024-06-09
Post by shamcke on Array with generic constant as persistent variable
CODESYS Forge
talk
(Post)
Hello, I have written a function block that uses a generic constant for the upper bound of an array. I wanted to have this array in the persistent memory area, thus I constructed my FB as follows: FUNCTION_BLOCK FbWithGenericArrayLength VAR_GENERIC CONSTANT uiArrayLength : UINT := 10; END_VAR VAR PERSISTENT arr : ARRAY[1..uiArrayLength] OF INT; END_VAR In my PLC_PRG I declare an instance of said FB PROGRAM PLC_PRG VAR myFb : FbWithGenericArrayLength<10>; END_VAR This compiles just fine. When I let CODESYS fill my persistent list, it adds duplicate entries {attribute 'qualified_only'} VAR_GLOBAL PERSISTENT RETAIN // Generated instance path of persistent variable PLC_PRG.myFb.arr: ARRAY [1..uiArrayLength] OF INT; // Generated instance path of persistent variable PLC_PRG.myFb.arr: ARRAY [1..uiArrayLength] OF INT; END_VAR so I manually delete the duplicate. When i now compile, I get errors ------ Build started: Application: Device.Sim.Device.Application ------- Typify code... [ERROR] Sandbox_FW31: PersistentVars [Device: PLC Logic: Application](Line 4): C0161: Border 'uiArrayLength' of array is no constant value [ERROR] Sandbox_FW31: PersistentVars [Device: PLC Logic: Application](Line 4): Type of mapped variable is not equal to original type Compile complete -- 2 errors, 0 warnings Build complete -- 2 errors, 0 warnings : No download possible Is is simply not possible to use a generic constant for the persistent array? Thanks in advance. Edit: It seems I can manually replace the uiArrayLength in the persisten list by the value 10 I used as the generic constant for this particular instance.
Last updated: 2026-05-29
Post by jasonhogan on Login problem with FileTransfer on Raspberry Pi 5
CODESYS Forge
talk
(Post)
That’s a classic CODESYS quirk. As soon as you enable AllowFileTransferServices=1, the web server locks down and demands authentication for everything, including WebVisu sessions. Since you're on a Raspberry Pi / Linux, trying to make the built-in CODESYS web server do both secure file handling and unauthenticated kiosk visu is usually a losing battle. A couple of ways to get around this: The cleaner route (separate the jobs): Turn AllowFileTransferServices back off in the config so your kiosk WebVisu opens freely without any login prompts. Then, handle the file download outside of CODESYS — just run a dead-simple Nginx/lighttpd file server or a tiny Python script on the Pi pointed at your export folder (/var/opt/codesys/...). That way your PLC security stays intact, and the kiosk screen just works. If you really want it through CODESYS: Check your Device -> Users and Groups in the IDE. Make sure the Everyone / Anonymous user group actually has explicit view permissions checked for the Visualization. Sometimes when file services are toggled, anonymous users lose the default visu-read rights and get booted straight to the login dialog. URL / Browser trick for kiosk: If the Pi is just opening a local browser on startup, you can sometimes pass the basic credentials in the browser launch script or use a small reverse proxy on localhost to inject the headers automatically so you don't see the popup. Honestly, running a lightweight HTTP/FTP endpoint on Linux (option 1) is by far the least headache.
Last updated: 2026-08-15
Post by dmb-fan on Hilscher cards CoDeSys Control RTE
CODESYS Forge
talk
(Post)
You have to know this (and the crap help site don't tell you): - Changes in CODESYSControl_User.cfg, not in CODESYSControl.cfg (crash of PLC/Win possible) - Redundancy is important for Profibus, also if you don't use it because the libarys depending on it - The no. after the device is the slot numer for PLC device config [ComponentManager] Component.1=CmpDrvSchedulerAMP Component.2=CmpCodeMeter Component.3=CmpHilscherCIFX Component.4=CmpNetXCanDlDrv ; this is not in help, but thats makes the internal driver load Component.5=CmpRedundancy Component.6=CmpRedundancyConnectionIP [CmpHilscherCIFX] TraceLevel=0xFFFFFFFF InterruptMode=0 DMAMode=1 ;DynamicFirmware=1 BootloaderFile=$Firmware$/HilscherCIFX/Firmware/NETX100-BSL.bin FirmwareFilePath=$Firmware$/HilscherCIFX/Firmware ;non-dynamic declaration of FW-files: ; 100 !!! CIFIX50 cards but files called 100 !!! Device.0.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin Device.0.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxcom.nxf Device.1.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin Device.1.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxdpm.nxf ;;;; And good luck, you will need it ! ;;;;
Last updated: 2026-10-23
Post by ofey on EtherCAT fieldbus
CODESYS Forge
talk
(Post)
Hi, everyone! I'm trying to set up a PLC controller and a connection to an EtherCAT slave device in Codesys. I want to create a flexible program that I can upload to multiple controllers with different remote IO connected (same program). On one plant i may have 5 AI-cards and 3 DO-cards, and on another I may have 4 AI-cards and 2 DO-cards. For not needing to maintain several different programs wih different devices defined in the program (one for each set up) I thought that using a remote IO would make it easier having a single program. That way I could refer to different memory addresses instead of predefined slots/channels and IO's, that would give me errors if there was a different IO on the plant than what the program expected. When I tried setting up the etherCAT master, I saw that I had to define the etherCAT slave devices with the different IO'cards for me to be able to refer to the memory addresses in a PRG. Exactly what I was trying to avoid. My setup is something like a program that can handle 16 separate pump controls. In a year maybe 6 plans get deployed, and depending on how large the project is, the number of pumps can vary between 4 and 16. And the managers dont want to have IO's for all 16 pumps on every cabinet, and I dont want to maintain 16 separate projects files in case of updates etc. I thought the best way to tackle this was having a single project that read/write data to the different pump IO's by remote IO (fieldbus ethercat) addresses. And the number of pump controls are activated by an external GUI. If pump 1-6 is activated by the GUI, then the PLC-program tries to read/write input/outputs from predefined addresses for the expected IO's. My test setup is a PFC200 WAGO controller and a EtherCAT fieldbus coupler (750-354) with some IO. I hope I didn't explain this too horrible, and if there is a more easy and elegant solution for this challenge I appreciate a feedback on this.
Last updated: 2024-04-08
Post by gunstr on CODESYS control on RPi starts, shortly runs, then exits
CODESYS Forge
talk
(Post)
I now tried to install 4.17.0.0 on a fully clean installations: A brand new RPi 4B Install latest Raspberry Pi OS Lite, Release date 13 May 2025, 64bit run sudo apt update && sudo apt full-upgrade When asked - Select to install the updated version of '/etc/initramfs-tools/initramfs.conf' Install CODESYS Control for Raspberry Pi SL. version 4.17.0.0 Log output: [INFORMATION] Connected successfully! [INFORMATION] Successfully connected to target (192.168.0.197) [WARNING] No supported container engine found on device. You have to install a supported container engine to use Virtual Control. Please contact the Administrator of the device. [WARNING] Error detecting container architecture [INFORMATION] Finished reading device information [ERROR] Error output: /var/lib/dpkg/info/codesyscontrol.postinst: 88: check_legacy_extensionapi_folder: not found [INFORMATION] Standard output: Selecting previously unselected package codesyscontrol. [INFORMATION] Standard output: (Reading database ... 76772 files and directories currently installed.) [INFORMATION] Standard output: Preparing to unpack .../codesyscontrol_raspberry_4.17.0.0_all.deb ... [INFORMATION] Standard output: Unpacking codesyscontrol (4.17.0.0) ... [INFORMATION] Standard output: Setting up codesyscontrol (4.17.0.0) ... [INFORMATION] Standard output: make config rw [INFORMATION] Standard output: set folder permissions [INFORMATION] Standard output: prepare permissions [INFORMATION] Standard output: check legacy extension api folder [INFORMATION] Standard output: create and install daemon [INFORMATION] Standard output: codesyscontrol started [WARNING] Unable to detect Raspberry Pi Architecture. Setting armv6l as default, you can change this through the settings panel. [INFORMATION] Standard output: codesyscontrol stopped [ERROR] Expected exit value of command failed: expected 0, received 1 [WARNING] Error setting the Raspberry Pi Architecture [ERROR] Error installing codesyscontrol If I read the log correctly the control is actually installed but cannot start. I'm running out of ideas how to proceeed now, any suggestions are welcome.
Last updated: 2025-09-03
Post by timvh on Troubles with using CAN API
CODESYS Forge
talk
(Post)
In the example project, you can see that a CAN.CANAreaReceiver is used which has an VAR_IN_OUT reference to a RECEIVER_AREA structure. This structure has a dwIdStart and dwIdEnd to filter a range of ID's and process them through the referenced msgProcessor.
Last updated: 2023-09-19
When using the Element Collections library, is there a proper way to remove a dynamically created collection from memory?
CODESYS Forge
talk
(Thread)
When using the Element Collections library, is there a proper way to remove a dynamically created collection from memory?
Last updated: 2022-09-08
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.