Post by bahrt on Raspberry Pi GPIO mapping
CODESYS Forge
talk
(Post)
Hi I am about to configure ALL GPIOs on a Raspberry Pi 3 model B V1.2. It seems that I have limited understanding of why not all the IO’s become available with the corresponding mapped IO’s – the 'dwInUse' contains mapping of the inputs from GPIO0 to GPIO27. But 'dwInputs' are only showing GPIO0 to GPIO8 and GPIO15 as available inputs. These mentioned inputs work fine You will be able to watch the limited mapped IO activity here: https://drive.google.com/file/d/1zz4PBNBfRZBF2YkiJ2VQxw6L9MBVji7R/view?usp=sharing Can you please bring your best idea on why GPIO09 to GPIO14 and GPIO16 to GPIO27 state are not active (at a fixed zero state) in the dwInputs register? Thanks in advance. Best regards Andreas Bahrt
Last updated: 2023-11-21
Post by rcanfield on Code Coverage and Test Manager
CODESYS Forge
talk
(Post)
I am exploring the possibility of measuring test coverage using the Test Manager and Profiler tools. It appears there are some significant limitations. Has anyone been successful trying to use these tools? Here are my observed limitations. Am I misunderstanding anything? * Profiler only works for one "run cycle". Even warm resets will clear the coverage calculations. Thus, all tests would have to manually reset values when complete to prevent contamination to other tests. * It is not possible to see which statements were/weren't executed. One would have to use the flow control tool which cannot be used in conjunction with the Profiler, and must be viewed in realtime. * The profiler control cannot be automated and therefore must be executed through a manual procedure. Thank you!
Last updated: 2024-07-11
Post by rcanfield on Code Coverage and Test Manager
CODESYS Forge
talk
(Post)
I am exploring the possibility of measuring test coverage using the Test Manager and Profiler tools. It appears there are some significant limitations. Has anyone been successful trying to use these tools? Here are my observed limitations. Am I misunderstanding anything? * Profiler only works for one "run cycle". Even warm resets will clear the coverage calculations. Thus, all tests would have to manually reset values when complete to prevent contamination to other tests. * It is not possible to see which statements were/weren't executed. One would have to use the flow control tool which cannot be used in conjunction with the Profiler, and must be viewed in realtime. * The profiler control cannot be automated and therefore must be executed through a manual procedure. Thank you!
Last updated: 2024-07-11
Post by peterned on Array to String
CODESYS Forge
talk
(Post)
max. string length in Codesys is 255 chars. It's not possible to cram 20,000 things in a string. If you need to send the data to another device, send the whole data[] array (as byte array, without doing anything to it) and extract the information on the other end. As each struct member has a fixed size (81 bytes, as per you declaration), this will be easy. To save some resources, consider declaring string lengths - e.g. if the max possible length for key is 10 chars, declare it key: STRING(10); and it will occupy 11 bytes instead of 81
Last updated: 2024-07-20
Post by paulpotat on Exclude traces when searching with ctrl+F
CODESYS Forge
talk
(Post)
Hello, I was wondering if there is a way in codesys to exclude the traces from the search when using the "ctrl+F" window ? That would be nice to improve the search functionnality when looking for a specific variable. Sometimes when I iterate through all occurences with the "find next" button, it opens the trace configuration window. I would expect to be able to close it and go to the next occurence with the "find next" button, but after closing the trace configuration window the search says it has reached the end of the scope (even if in reality there are other occurences of the variable elsewhere). I tried to enable / disable the "search up" checkbox but it's not changing anything. I hope somebody have insight on this, BR
Last updated: 2024-08-06
Post by trusty-squire on parker servo and position
CODESYS Forge
talk
(Post)
@gepert, When you say "I do not turn off power", are you saying you don't power off the drive, or you don't turn of the MC_POWER function block? I read your statement as you don't kill actual electrical power. MC_POWER should stay enabled. @Gustavo, not related to problem at all, but when you say 1.6 Nm is only enough torque to unscrew a loose bottle cap, I think that's a bit low. A quick mental math I use is 1 Nm is almost the same force as 1kG applied to a 10cm wrench. So 1.6kG applied to a 10cm wrench is still not a huge force, but more than enough to be felt if trying to turn the shaft by hand.
Last updated: 2024-08-06
Post by expertplas on No connection to opc server from codesys opc client
CODESYS Forge
talk
(Post)
Hello, we have aproblen to connect our CODESYS OPC Client to the OPC Server. We installed the client according the CODESYS manual. We can browse the server and variables can be linked to the PLC. I created a self signed certificate for the CmpOPCUAClent as described. The server has a cerificate also. I copied the certificates to the trusted zone of server and client. But when it comes to data exchange we get an error message. "Communication error in data source OPC UA Library. Error ID : 7001 German : "Kommunikatinsfehler inder Datenquelle OPC UA -Bibiothek. Es wurde kein genauer Fehler angegeben. Fehler ID : 7001" It semms that there is no cerificate exchange. We are working with CODESYS 3.5 SP19 Patch 5. Can anyone here say something about this error or has an idea for a solution? Thanks.
Last updated: 2024-08-19
Post by jari-koivuluoma on Newly created texlists wont appear in the selection dropdown
CODESYS Forge
talk
(Post)
When I create a new textlist in Codesys 3.5 SP19 Patch 5, it wont appear in the dropdown menu at Rectangle element > Dynamic texts > Text list. If I just type the name of the textlist to the field (in quotes), I get an error saying that some file is missing. Any good ideas what to do and what is going on. I recently updated to that version and I only now noticed this when I needed to add a new textlist so Im quite screwed with this not being able to add text lists. While im typing this, I tried copying an existing list and modifying it and it seems to show. Any ideas?
Last updated: 2024-09-19
Post by andrebrandt on FB string and naming
CODESYS Forge
talk
(Post)
Thank you so much. This worked. Waht im trying to do here is to automatically tag each sensors, valves and so on. There is a preatty nasty tag system i working on. "_320" is not alloved. I can have a tag "+4f=320.004-RT001V" In codesys I want to build the FB in folders. -4f | --320 | --001 This is the system structure. Inside here is all of the sensors and so on. But with Codesys, I cannot tag this like this. So what I'm trying to do now is to Make a folder for the building "4f" and one for the system "320", and a POU _001. Is there a way in init to get folder names?
Last updated: 2024-10-01
Post by siscu on Raspberry i2c master device
CODESYS Forge
talk
(Post)
I want to implement an extended I2C master for Raspberry Pi Control. I was hoping for it to be as easy as creating a library with a FB that extends i2cMaster and associating it with a device following the forge drivers documentation, but I haven't managed to make it work as the driver behaves only as an i2c slave. I'm thinking this is because the forge forum only talks about extending i2c, and the master portion is omitted since most users won't want to add a custom one. I'd like to know if I'm doing something wrong. Is it really possible to make an I2C master extension device? If so, are there public examples we can check out? Any info on this topic will be appreciated.
Last updated: 2024-10-16
Post by mabac on No file found
CODESYS Forge
talk
(Post)
CODESYS introduced many cyber security related changes over the last few years, one of them is to restrict file access. By default, file access is restricted to the PlcLogic folder and subfolders of the CODESYS control runtime of version 3.5.19.0 and newer. For Control Win this would be the folder C:\ProgramData\CODESYS\CODESYSControlWinV3x64\xxxxxxxx\PlcLogic\ To enable access to other folders, you can configure additional paths by adding them to the file CODESYSControl.cfg. For example: [SysFile] FilePath=C:/temp/test FilePath.1=C:/Users/Public You should now be able to access your file in C:\temp\test\ or in C:\Users\Public
Last updated: 2024-10-30
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 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 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 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 alexgooi on Function Blocks and arrays of function blocks
CODESYS Forge
talk
(Post)
Hi Jack, I think you have to look at a FB in a different way. A Function block (Class) can contain its own data. In other words don't define loose data in your GVL, but define a instance of a FB (Object) in your GVL: Example: Function_Block Basic_Class VAR_INPUT Open_Command: BOOL; END_VAR VAR_OUTPUT Opened: BOOL; END_VAR if Open_Command then Opened := TRUE; ELSE Opened := FALSE; END_IF Global Variables Objects: ARRAY[1..100] OF Basic_Class; //Here you ar defining you objects END_VAR In your code you can directly acces the data and couple it to the IO: GVL.Objects[1].Open_Command := %IX0.0; %QX0.0 := GVL.Objects[1].Opened; //To call the code itself use: GVL.Objects[1](); If you want to take this a step further you are also able to add methods and properties to the FB/Class end thereby creating a OOIP program
Last updated: 2024-02-15
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 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 valenting on Can't use new licensing with Raspberry Pi
CODESYS Forge
talk
(Post)
Hi, I'm using Codesys control for Raspberry Pi in the latest version (4.11.0.0) When I try to install a license with the new application-based licensing, I have an error "returncode 403046401" (using codesys SP18) I updated to codesys SP20, and now I get the following error: "The selected conainer [0]: SN=..., Version=1.18, Chip=0, Rev=0 does not fit to your ticket. Please select a suitable one." The license I'm trying to install is a Codesys Control Basic L license, with a Codesys Visualization L option, according to the needs of my application. What can I do to activate my license ?
Last updated: 2024-04-22
Post by rafael on Wbm/runtime and visualization login
CODESYS Forge
talk
(Post)
Hello everyone, I’m trying to understand if it is this way or I can change it. I’m making a PLC code and visualization screens, the ideia is to operate via webvisu some controls. So i made a code, made some screens and when i try it in my web browser, first it asks me to insert te user and password of the wbm/runtime of the plc (user: admin, password: wago by default), then i can acess my screens but I have to login again with the user and password that i created in the visualization user managment. My question is: is there a way to disable this first login to the visualization screens (webvisu)? Or create another user/password for this first screen? I have a PFC200 and a Edge Controller, both are working the same way. Thanks in advance Thanks
Last updated: 2024-06-25
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 thim on Bibliothek mit C-Library erzeugt unerwarteten Fehler beim Aufsetzen des Projekts.
CODESYS Forge
talk
(Post)
Um eine C-Library als Codesys Bibliotheksfunktion zu erstellen, bin ich den fünf Videoanleitungen von https://de.codesys.com/news-events/gut-zu-wissen.html gefolgt. Das funktioniert auch am Anfang gut, ich kann unter x86-Linux und RasPi-Linux auch die C-Libraries kompilieren. Wenn ich dann die Library aber wie in Video 4 gezeigt in der Codesys-Bibliothek verknüpfen möchte, (siehe Screenshot) bekomme ich schon bei Auswahl der Datei und auch danach bei Klick auf "Geräte auswählen" den Fehler "Der Dateiname sollte mit dem Bibliotheksnamensraum enden." angezeigt. Meine *.so Datei endet aber meinem Verständnis nach mit dem richtigen Namen analog zum Beispiel und wie es auch in meinem Projekt heißt. Mir ist unklar, was mir diese Fehlermeldung anderes sagen will. Hat jemand eine Erklärung? (Codesys V3.5 SP 20 + (64-bit))
Last updated: 2024-08-22
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.