Post by artplc on 3.5 P20 hangs - no response
CODESYS Forge
talk
(Post)
Subject: Solution: CODESYS Freezes Linked to Large Symbol Configuration (OPC UA) Hello everyone, I was experiencing the same problem as many here: CODESYS (v3.5 SP20+) freezing during compilation and download, especially on projects that use OPC UA for SCADA. The only workaround was to run Build > Clean all before every download. I believe I have found the root cause and a permanent solution. The Problem: The issue is directly related to a large Symbol Configuration. In my project, I only need about 700 tags for OPC UA, but the Symbol Configuration list was showing over 250,000 tags. This is because it automatically includes all variables from Global Variable Lists (GVLs) and other memory areas. When any static variable is changed, the IDE tries to rebuild this enormous list, causing it to freeze for several minutes. The Solution: Instead of letting CODESYS export every variable by default, you can use a pragma to tell it which variables or GVLs to exclude from the symbol export process. Place the following pragma at the top of any GVL or data structure that you do not want to be part of the symbol configuration: 1 {attribute 'symbol' := 'none'} 2 VAR_GLOBAL 3 // All variables in this GVL will now be excluded from the 4 // Symbol Configuration by default. 5 InternalVariable1 : INT; 6 InternalVariable2 : BOOL; 7 END_VAR After adding this pragma to all the GVLs that were not needed for OPC UA, the number of tags in my Symbol Configuration dropped to the correct amount. The compilation and download process is now fast again, with no freezing. This method is much more efficient than manually managing the symbol list in the editor. I hope this helps others who are facing this frustrating issue. Best regards.
Last updated: 2025-08-10
Post by akrawczyk on Dynamically enabling/disabling Modbus slave devices in runtime (performance issue with timeouts)
CODESYS Forge
talk
(Post)
Hi everyone, I'm working on a CODESYS-based project running on a Weintek cMT2078X HMI with a built-in CODESYS runtime. The system communicates with multiple Modbus RTU slave devices, arranged in a cascade. The number of connected units can vary between 2 and 8, depending on the installation. Each slave has 17 Modbus channels, which are polled cyclically every 5 seconds. The issue is that when fewer devices are physically connected (e.g. only 3 out of 8), the Modbus master still attempts to communicate with all configured slaves. This leads to massive delays due to timeouts (currently 200ms per channel). For one disconnected device, that’s: 17 × 200ms = 3.4 seconds of delay per polling cycle, and this quickly multiplies with each additional missing slave. This behavior significantly degrades the system's performance and responsiveness. We attempted a workaround where we tried to trigger polling based on a variable in the PLC program, but this caused instability and even led to hardware hangs/freezes on the cMT2078X – likely due to clashes in how the Modbus polling engine and program logic interact at runtime. My main questions are: Is there a way in CODESYS to dynamically enable/disable Modbus slave devices at runtime, using a BOOL or INT variable (e.g. indicating number of active slaves)? Can devices or channels be conditionally polled or temporarily disabled without removing them from the device tree? Are there any best practices or examples for handling variable numbers of Modbus slaves in scalable systems like this? Would splitting communication across tasks or interfaces help reduce the impact of timeouts? Any advice, documentation references, or architectural suggestions would be extremely helpful. I'm looking for a robust way to dynamically scale slave polling without degrading system stability or performance. Thanks in advance!
Last updated: 2025-08-11
Post by timvh on Current Visu name without Current Visu Variable
CODESYS Forge
talk
(Post)
To change the current visualization for (all) webclients: Add the library “Visu Utils” and use the following example code: VAR xChangeVisu: BOOL; fbChangeVisu : VU.FbChangeVisu; END_VAR // Change to Visu2 when setting xChangeVisu to TRUE fbChangeVisu( xExecute:= xChangeVisu, xDone=> , xBusy=> , xError=> , itfClientFilter:= VU.Globals.OnlyWebVisu, //itfFilter, eError=> , sVisuName:= 'Visu2'); IF fbChangeVisu.xDone OR fbChangeVisu.xError THEN xChangeVisu := FALSE; END_IF
Last updated: 2025-08-13
Post by mqi2r on Newly created texlists wont appear in the selection dropdown
CODESYS Forge
talk
(Post)
For anyone with this issue, you may need to: Open the text list properties (right-click the text list once you create it). Select the Text List tab. Change the Download by option to Visualization. I was fighting this for so long. Once you do that, you should find your text list appears in the drop down when editing a visualisation.
Last updated: 2025-08-19
Post by dkugler on Mail_Service_SL Lib
CODESYS Forge
talk
(Post)
ich meine mich zu erinnern, dass ich schon FB's hatte, die Fehlermeldungen mit löschen des Enable/Execute Bits abgelöscht haben. Dann würde bei dir sobald das Error Bit gesetzt wird, nichts mehr drin stehen. Vielleicht wäre es ein Versuch wert, den String vor dem zurücksetzen des Execute in eine Variable zu speichern, ob dann was drin steht und danach erst ablöschen?
Last updated: 2025-08-20
Post by davemansell on explicit cast ENUM to UINT and vice versa
CODESYS Forge
talk
(Post)
This is from sometime ago but below might help someone else; this could be done via POINTERS. Make sure you protect for NULL pointers etc if you take this approach. // DECLARATION myEnumValue : enumMyEnum; u8 : USINT; pmyEnumValue : POINTER TO enumMyEnum; pu8 : POINTER TO USINT; // CODE pu8 := ADR(u8); pmyEnumValue := pu8; myEnumValue := pmyEnumValue^; // dereference the pointer
Last updated: 2025-08-21
Post by davemansell on explicit cast ENUM to UINT and vice versa
CODESYS Forge
talk
(Post)
This is from sometime ago but below might help you could do this via POINTERS. Make sure you protect for NULL pointers etc if you take this approach. // DECLARATION myEnumValue : enumMyEnum; u8 : USINT; pmyEnumValue : POINTER TO enumMyEnum; pu8 : POINTER TO USINT; // CODE pmyEnumValue := pu8; myEnumValue := pmyEnumValue^; // dereference the pointer
Last updated: 2025-08-21
Post by nilanjan on I want to show the current recipe name in the visualization screen
CODESYS Forge
talk
(Post)
I am having some trouble showing the current recipe name in visualization i am not using the RecipeManCommands i am using the inbuild visualization feature of Saving and Loading recipes. I need it so the user would have a track on which recipe is being used currently.
Last updated: 2025-08-24
Post by stevens on No option to create "Parameter List" in library
CODESYS Forge
talk
(Post)
I am struggling with this issue right now (again). I have nested structures with configurable array sizes. In the past I ever used parameter list. Very easy way! As of now I cannot find any solution. Ridiculous that they deprecated it without an alternative solution.
Last updated: 2025-08-26
Post by sandro66 on Application-based license Modbus Channels
CODESYS Forge
talk
(Post)
Hi, I imported an old project created with version 3.51.20.50 into the new version 3.51.21.20. I'm using ModbusFB.ClientTCP v4.5.0.0. Strangely, I can no longer download the project due to a licensing issue I didn't have before. The number of Modbus channels has gone from 1 to 54!, and there's no license that would work. Can anyone tell me where I'm going wrong? Thanks Sandro
Last updated: 2025-08-27
Post by eksheep on Unit Tests and C007: Unknown Type
CODESYS Forge
talk
(Post)
Hello, I am attempting to implement unit tests for my POUs. When building and running the unit tests I receive error C007: Unknown Type for all types defined in the library, Standard, 3.5.18.0. Which is included in the POU Library Manager. Any input would be appreciated. TIA.
Last updated: 2025-08-27
Post by jcarter on Webvisu Combined Authentication
CODESYS Forge
talk
(Post)
Is there a way to have both a Public No Login Screens with Screens that do require login and File Transfer? My Idea is to have the default page be View Only with a Login Button in the Corner and then Once Logged In you can change settings and download files depending on your user group.
Last updated: 2025-08-28
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 kporter on Removing <Empty> node in Device Tree
CODESYS Forge
talk
(Post)
I initially created a SoftMotion axis for my EtherCAT CoE drive. I wanted to change it to use SoftMotionLight so I deleted the SM node, which left an <empty> node. I created the SML device, but the <empty> node remains. How can I remove that from the tree? </empty></empty>
Last updated: 2025-09-06
Post by beavel on Opening and saving files with fileOpenSave dialog
CODESYS Forge
talk
(Post)
1 + Replying in hopes of getting an answer here. I would also like to modify the look of the FileOpenSave Dialog. I have successfully adjusted the looks of the User management Dialogs but can not find a library file to adjust this particular one. Any help would be helpful. @thk @eschwellinger @sheberle .
Last updated: 2025-09-08
Post by gseidel on The default ramp type selection in SoftMotion V4.18.0.0 is Quadratic
CODESYS Forge
talk
(Post)
Hi imdatatas, thanks for your feedback. This change was intentional, as the quadratic ramp type has many advantages over the trapez ramptype. Sorry to hear it causes problems in your situation. Can you please shortly explain the nature of the problems? Best regards, Georg
Last updated: 2025-09-08
Post by gseidel on Dynamic target position tracking
CODESYS Forge
talk
(Post)
Hi kporter, a more direct way would be to use SMC_FollowPosition to write the set positions directly to the servo drive. This FB has reacts on changes of the fSetPosition on each call, without a need for a rising edge on Execute. See https://content.helpme-codesys.com/en/libs/SM3_Basic/Current/SM3_Basic/POUs/Movement/Direct/SMC_FollowPosition.html. Best regards, Georg
Last updated: 2025-09-08
Post by kio123 on SysFileOpen not working
CODESYS Forge
talk
(Post)
I have exactly the same problem and tried entering “ForceIecFilePath=0” in the file “CODESYSControl.cfg” ([SysFile]). Unfortunately, this was unsuccessful. Can anyone help in the meantime, e.g., with some sample code or with the FAQ that TimvH refers to above (link no longer works)? Many thanks and best regards
Last updated: 2025-09-15
Post by blitz on Latch alarm variables from the PLC runtime
CODESYS Forge
talk
(Post)
Hi, I have a question. Does anyone know a way to change latch alarm variables from the PLC runtime? In the help there is a method described: https://content.helpme-codesys.com/en/libs/AlarmManager/Current/Interfaces/pou-IAlarm3/SetLatchVarValue.html but I don’t know how to use it correctly.
Last updated: 2025-09-23
Post by cer-wa on Not able to connect multiple profinet encoder in codesys Linux ARM64
CODESYS Forge
talk
(Post)
Hello, currently im working with a RevPi connect 5 on a codesys project. Up until now I was having a blast because things were going really smooth but for like almost a day im kind of stuck on the integration of multiple profinet sensors into my project. This is kind of a bummer because that should be an easy thing to do. What I tried so far was to create and additional ethernet adapter where I then tried to connect my devices. in the beginning I tried to connect the devices directly which was not working because I could assign the IP-adress only to the ethernet adapter and not to the devices but the device was found in the device repository (this gets important in the second part) So what I tried next was to setup a PN-Controller and connect my devices subsequently to the Controller. Sadly now the devices wont show up in the device repository anymore. To me its not clear why this is happening. And the worst thing is: I went ahead and setup a device completely like I would want to have it in the project and when I then click on scan devices I can even find the device. But it can not be added to project for whatever reason eventhough im 100% certain that the gsdml file is the correct one. Can anyone help me with this. Like I said this seems like an easy thing to do and its taking me way longer than expected already. The only thing that came to my mind why this might not work is because I have codesys license which only allows one profinet instance. Could that be the case? The error message seems then pretty unfit but ok. I will be grateful for every advice. Thanks in advance! Best regards!
Last updated: 2025-09-25
Post by jy77812 on Visualization XY Charter Question
CODESYS Forge
talk
(Post)
Hello. I'm using Visualization XY Chart, and when I mark a circle through XY position data, a blue line is displayed in the circle with a red circle. At this time, can't I set the blue line not to be seen in the circle? Currently, whenever XY position is drawn, the line follows.
Last updated: 2025-10-02
Post by dogulas on numeric text box control
CODESYS Forge
talk
(Post)
Ok, this is how I made a numeric text field: use a Text Field properties -> Texts -> Text := %f (or %d or whatever you need) properties -> Text variables -> Text variable := (your numeric variable) properties -> Input configuration -> OnMouseDown -> Configure: Write Variable Input type := VisuDialogs.Numpad Use another variable (your numeric variable) Min val Max val etc. Please tell me there is an easier way to do this.
Last updated: 2025-10-02
Post by jzhvymetal77 on Special Chars in Visualizationfor QR code string
CODESYS Forge
talk
(Post)
Ok, I got UTF-8 encoding working by encoding the full block character using [16#E2, 16#96, 16#88], which corresponds to U+2588 "█". Moving forward, I’ll use this for creating a QR code with Version 10-M (byte mode). This version allows up to 213 characters to be encoded.
Last updated: 2025-10-04
Post by e13740e on Сalling the context menu from the keyboard
CODESYS Forge
talk
(Post)
Hello. I have a question for you, perhaps you have an answer to it. Regarding calling the Context menu from the keyboard in Devices, specifically calling the context menu window from the keyboard via an assigned combination. Goal: to have the ability to navigationally add internal Objects (Methods, Properties) to Function Blocks from the keyboard without using the mouse. The Codesys environment interface does not allow Windows access to this via Shift+F10. Externally (outside the Codesys environment), the hotkey call for the context menu (Shift+F10) from the keyboard works in various environments, but at the same time, in Codesys it does not (it doesn't work). I have already tried various options on my own to achieve this (but unsuccessfully): Tools\Customize\Keyboard\Objects (the set combination does not give the desired result) Tools\Customize\Keyboard\Objects... (the set combination is extremely useful as it provides access to adding objects directly to Devices but does not provide the ability to add an internal object (Method/Property) to a Function Block). Thank you in advance for your help!!! P.S. I have already started trying to implement a script-based solution to call the context menu via AutoHotkey - by relocating the mouse cursor to the area of the navigational selection with a subsequent call of the context menu on it and relocating the mouse cursor back to its initial position. And in order not to "reinvent the wheel," I am writing this request to you!!!
Last updated: 2025-10-05
Post by e13740e on Сalling the context menu from the keyboard
CODESYS Forge
talk
(Post)
Hello. I have a question for you, perhaps you have an answer to it. Regarding calling the Context menu from the keyboard in Devices, specifically calling the context menu window from the keyboard via an assigned combination. Goal: to have the ability to navigationally add internal Objects (Methods, Properties) to Function Blocks from the keyboard without using the mouse. The Codesys environment interface does not allow Windows access to this via Shift+F10. Externally (outside the Codesys environment), the hotkey call for the context menu (Shift+F10) from the keyboard works in various environments, but at the same time, in Codesys it does not (it doesn't work). I have already tried various options on my own to achieve this (but unsuccessfully): Tools\Customize\Keyboard\Objects (the set combination does not give the desired result) Tools\Customize\Keyboard\Objects... (the set combination is extremely useful as it provides access to adding objects directly to Devices but does not provide the ability to add an internal object (Method/Property) to a Function Block). Thank you in advance for your help!!! P.S. I have already started trying to implement a script-based solution to call the context menu via AutoHotkey - by relocating the mouse cursor to the area of the navigational selection with a subsequent call of the context menu on it and relocating the mouse cursor back to its initial position. And in order not to "reinvent the wheel," I am writing this request to you!!!
Last updated: 2025-10-05
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.