Search talk: if statement

 
<< < 1 .. 44 45 46 47 48 .. 54 > >> (Page 46 of 54)

Post by ilya-vah on Table element issues CODESYS Forge talk (Post)
Hello, First post here. I would like to clarify whether the following behavior is known or if it is a bugs. Issue 1 — First row not displayed when using Maximum array index with 1-based arrays Description: When displaying data from an array that is indexed starting from 1 (e.g., ARRAY[1..N]), and the number of displayed rows is limited using the Maximum array index property, the first row of the array is not shown in the visualization. Steps to reproduce: Create an array indexed from 1 (e.g., ARRAY[1..N]). Bind the array to a Table element. Limit the number of displayed rows using the Maximum array index property. Run the visualization. Actual result: The first array element (index 1) is not displayed in the table. Issue 2 — Tooltip string placeholder cannot be bound to string variable from array Description: It is not possible to use a string placeholder in the tooltip that is bound to a string variable from the array. Steps to reproduce: Use a table bound to an array containing string variables. Configure a tooltip using a string placeholder referencing a string field from the array. Run the visualization. Actual result: Tooltip doesn't show any text. A test project demonstrating both issues is attached. Thank you for your time and support.
Last updated: 2026-02-16

Post by risele on Modbus connection via Qronox PCD3 M6893 CODESYS Forge talk (Post)
You are welcome. Also note, that it's valid only if you modbus-device use same real/float value representation (IEEE 754). That's true for most of systems. But some devices may have other representation, such as integer + position of the decimal point, for example 123.456 is integer = 123456 and position = 3 Also note, that, ones again, depending on endianess of each system, you may also need to swap not just words, but bytes. TYPE u_Real : UNION rVal:REAL; wVal:ARRAY[0..1] OF WORD; bVal:ARRAY[0..3] OF BYTE; dwVAL:DWORD; //same as previous, may be easier to specify the MB register END_UNION END_TYPE than swapping may be something as VAR A,B,C,D:BYTE; //Bytes of the real value uIn, uOut:u_Real; rVal:REAL; ModbusReg1,ModbusReg2:WORD; END_VAR uIn.rVal:=rVal; uOut.A:=uIn.D; uOut.B:=uIn.C; uOut.C:=uIn.B; uOut.D:=uIn.A; ModbusReg1:=uOut.wVal[0]; ModbusReg1:=uOut.wVal[2]; Or you even need to reorder bits... Ones again, sending float/real values is not defined by Modbus protocol itself, so it is hardware- and software-dependent. The Modbus Poll (and most of modbus tools) have configuration parameters that will properly swap bytes on their side. Ones again, that's very helpful: https://www.scadacore.com/tools/programming-calculators/online-hex-converter/
Last updated: 2026-02-19

Post by risele on Modbus connection via Qronox PCD3 M6893 CODESYS Forge talk (Post)
First, if you don't need to change conversion rules in runtime, take a look at "Unit conversion" module (Application -> add object -> UnitConversion). You can specify there biderectional conversion with different units, limits and so on. Second, since MODBUS don't have "real" types but only general 16-bit registers and Real is 32-bit, generally you need a byte-was conversion Real <> two Words. Note, that depending on the devices on both sides, there are two options: Real-> Word1, Word2 or Real-> Word2, Word1, where Word1 is minor register in Modbus register pair and Word2 is major. You can use simple union: TYPE u_Real : UNION rVal:REAL; wVal:ARRAY[0..1] OF WORD; dwVAL:DWORD; //same as previous, may be easier to specify the MB register END_UNION END_TYPE and convert it as following: VAR myUnion:u_Real; rValue_TO_SEND:REAL; rValue_TO_GET:REAL; END_VAR myUnion.rVal:=rValue_TO_SEND; rValue_TO_GET:=myUnion.rVal; Note, that WORD-order should be properly set in MODBUS registers, otherwise you will get strange values. This tool is helpful: https://www.scadacore.com/tools/programming-calculators/online-hex-converter/ Alternative, you can use functions as REAL_TO_DW and DW_TO_REAL from OSCAT_BASIC, for example.
Last updated: 2026-02-19

Post by eschwellinger on Editor FIND highlight color CODESYS Forge talk (Post)
To change the color of search result markings (the "find color") in the CODESYS Text Editor using Themes, follow these steps: Go to the menu: Tools → Options. In the Options dialog, select the Text editor category. Switch to the Theme tab. Here, you can select your desired color theme for the text editor. The available color schemes (themes) are stored in the installation directory in the Themes folder. To specifically adjust the color for search result markings, go to the Text Area tab within the Text editor options. Here, you can customize the Selection color – Inactive parameter, which determines the color used to highlight search results. Changing the theme will apply a new set of color settings, including those for selections and search highlights. If you want further customization, you can manually edit or create your own theme files in the Themes folder of your installation directory Example "c:\Program Files\CODESYS 3.5.21.50\CODESYS\Themes\myDefault.editortheme" https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_dlg_options_text_editor.html
Last updated: 2026-03-12

Post by imdatatas on CFC editor: enable inline value entry on unconnected input pins (as in Ladder Logic editor) CODESYS Forge talk (Post)
In the CODESYS Ladder Logic editor, there's a really practical feature available while logged in (online) to the PLC: for an existing function block (e.g. TON or MC_MoveAbsolute), double-clicking on an unconnected input pin directly opens a value entry window right in the editor — with no need to assign any variable — and you can type a value directly. Likewise, if the input pin is of an ENUM or STRUCT type, it lets you pick a value of that type straight from a dropdown list. It also doesn't require assigning a variable or adding it to a watch list, etc. Unfortunately, in the CFC editor you can't write values directly to those unconnected input pins the way you can in Ladder — CFC only supports monitoring/display there. I wish this existing Ladder editor feature were also available in CFC — it would make the CFC editor far more usable. I think this would be a relatively small addition to the CFC editor, but it would make a real difference in daily commissioning and debugging work. It would be great to hear the development team's thoughts on whether this could be considered for a future release. Thanks in advance for reading!
Last updated: 2026-09-10

Post by cdutz on Problems connecting to Codesys 4.9.0.0 runtime on my Wago PFC200 CODESYS Forge talk (Post)
Hi all. I am currently struggling to get my Wago PFC200 running the Codesys Runtime in version 4.9.0.0 working. I am using Codesys V3.5SP19. I updated the PFC200 to the firmware version 04.01.10(23) after having tried the latest version (04.03.03(25) from Wago and not being able to start the runtime. After reading version 23 was needed, I changed to that and at least was able to have it start the codesys runtime. I also installed the "Codesys Control for PFC200 SL 4.9.0.0" plugin for Codesys to install the Codesys runtime in version 4.9.0.0 as well as update the Gateway on the device. While I seem to be able to connect to the gateway on the PLC (the dot is green) and when doing a scan, I do now find my PFC200, which is a huge improvement to before, where with firmware version 25 it just failed to start the runtime and I never found any device when doing a scan. Unfortunately I don't seem to be able to connect to the PLC in codesys. I logged in via SSH and changed the password and I can see that this password is correct as the stuff in the Codesys PFC200 tools tab only works if I use my changed password. And I used those credentials to update the installed Runtime version, which the log claimed to have worked fine. Now whenever I try to connect to the device found in the scan, I get a authentication pop-up with empy device name, device address: 000A. As User I use "root" and as password the password that I changed it to. As a response I just get "Ungültige Benutzerauthentifizierung auf dem Gerät" (Eng. probably something like "Invalid user authentication on the device". What could I be doing wrong? Admittedly I'm a bit lost here :-/ Chris
Last updated: 2023-08-26

Post by ryandmg on Web Client (HMI) Disconnects from Webvisu (Weidmuller u-OS) CODESYS Forge talk (Post)
Hey Everyone, I'm having a bit of a struggle finding settings that will reliably maintain a connection between the webvisu and a touchscreen client. Every so often the HMI disconnects and will perpetually display the red spinning arrow with the "Error Happened, Will resume automatically" text. Power cycling the HMI to force a reconnect will re-establish comms. It seems to happen during periods of inactivity if that's a clue. From what I've gathered so far this seems to have something to do with the webvisu update rate, buffer size as well as the visu task scan rate. We first tried the default settings as follows: Webvisu Update Rate: 200 ms Webvisu Buffer Size: 50,000 Visu Task Scan Rate: 100 ms Priority 31 Other Tasks for Reference: Main Task Scan Rate: 100 ms Priority 1 Alarm Manager Scan Rate: 50 ms Priority 31 Ethercat Task: 4 ms Priority 1 This would disconnect some what regularly. We then made the following changes to try and stabilize: Webvisu Update Rate: 150 ms Webvisu Buffer Size: 75,000 Visu Task Scan Rate: 75 ms Kept other tasks the same. This seems to disconnect even more frequently. Also for reference the network is very small and only consists of the PLC, a small switch and the HMI. We're also not controlling frames from outside the visu program itself. The frame changes are all done natively. Any suggestions to get this to stop disconnecting? Oh and whatever the issue is the log does not record it. Figured I would ask here before opening a ticket. Thanks in advance for your help!
Last updated: 2023-09-06

Post by rossanoparis on Upgrading CODESYS runtime from v4.7 to v4.9 using a bash script leads to lose the licences stored in the soft container CODESYS Forge talk (Post)
System information - Controller: KUNBUS RevPi CONNECT-S - OS: Linux buster 32bit 5.10.103-rt62-v7l #1 SMP PREEMPT_RT armv7l GNU/Linux - CODESYS v3.5 SP19 Patch 2 I'm facing a problem related to codesys licences using a procedure based on a bash script. Such bash script detect the presence of new .deb files and install them on system. My automation solution don't allow to be maintained by dedicated personal, thus even the CODESYS runtime SW must be installed using an "automatic" procedure instead of using the CODESYS tool. remark I've been using the following procedure since the runtime v4.5 without any issue. Before installing the new runtime packages, I need to copy the file CODESYSControl_User.cfg (here attached) because of new section which is necessary to add in order to allow some folders to be written by CODESYS runtime v4.9 Up to now, this has been unnecessary, this is the main difference between my previos bash file and the new one. remark If I skip this action, everythings goes fine, but my CODESYS application can't work as it needs to access some folders on controller's file system. Process - Before the procedure: the licenses are OK (see attached file lic-01.png) - After the procedure: the new CODESYS runtime version is correctly installed, but the software container with v1.19 and all licences disappear (see attached file lic-02.png) This is the synthetic content of bash script I'm using. # Stop runtime sudo service codesyscontrol stop sudo service codesysedge stop # Move the new CODESYSControl_User.cfg file # New configuraton with folders declared sudo mv -f CODESYSControl_User.cfg /etc # Install runtime package echo N | sudo apt-get install -y --allow-downgrades codesyscontrol_raspberry_4.9.0.0_armhf.deb # Install edge gateway package echo N | sudo apt-get install -y --allow-downgrades codesysedge_edgearmhf_4.9.0.0_armhf.deb # Reboot controller sudo reboot Thanks in advance
Last updated: 2023-09-19

Post by tcarlbom on Read tag values using external program CODESYS Forge talk (Post)
This is my first time posting in this forum and I am new to codesys. I am a fullstack developer and I am trying to figure out how the following. What would be the best approach to create a own/custom tag browser? Either directly in codesys ide or using a separate custom program (perhaps a winforms application). 1.a. Shall I parse the .project xml file to get a list of all tags in the project? 1b. Shall I use python scripting in codesys ide to get a list of tags? Once one have selected some tags. These tags shall be exposed to a python program which will be acting as a edge computer. It’s fine to be able to import a file. 2a. I found a library called codesys plchandler which (as I understand) acts a rest api server. Is this correct? If so, can I query the api from a custom python script, ie can query what tags exist in project and or read tag values? My research so far. From earlier projects I know that using opc ua would be perfect for this but from my opinion it’s bloating the plc since it’s resource intensive. So opc ua is not an option. Codesys automation server is neat. But I don’t want to rely on some cloud services and subscription based pricing. There seem to be several interesting codesys libraries like mqtt, tcp server and NVL sender which would help me expose plc tags. But all have a common problem. One have to manually write what tags which will be used in these function blocks. I want a similar experience like “selecting” tags in the opc ua or the codesys tracing, ie a tag browser.
Last updated: 2024-06-28

Post by s1ack on Wago PFC200 Ethernet / IoDrvEthernet Issue? CODESYS Forge talk (Post)
CODESYS Control for PFC200 4.13.00 CODESYS IIoT Libraries SL 1.11.0.0 Application Based License: CODESYS Control Standard M I have (2) projects with similar code base and both using Wago PFC200. On the second project I am seeing 2 things that I have not been able to resolve: 1) Errors in the log under the Ethernet Item: IoDrvEthernet: [PCI\E1Q51CE62] Could not be found on target! Please check the Ethernet settings. 2) Exception for CPU Load. "Processorload watchdog: plcload=100, maxplcload=95" I have slowed down cyclic tasks on this project, even though on the first project there is actually more code - and it does not exhibit this behavior. In looking at the CPU loading via Linux 'TOP' command there appears to be 20% idle. So plenty of headroom (my opinion). In an effort to troubleshoot I have duplicated the target hardware on my bench. It ran overnight without a CPU load exception. On the test system, I have tried (3) version of the ethernet device. 3.5.16.0 3.5.17.0 and 4.2.0.0 Presently the log does not show the error, but status says the module reports an error. I really do not know if this issue is related to the CPU load exception. The issue does not appear to effect ethernet communications (ModbusTCP or SNMP or Webvisu or PuTTy into Linux Shell). On my test bench I have ModbusTCP slave simulators for all ModbusTCP slaves, but only (1) of the (5) SNMP devices present.
Last updated: 2025-01-21

Post by clarenced on Multiple applications on one device sharing variables. CODESYS Forge talk (Post)
I am looking for an example of how to run 2 applications on 1 device that would have global variables shared between the two apps. In this case what I am trying to do is to have the main program logic run as one application and then have the visualization run as a second application. I find this https://us.store.codesys.com/media/n98_media_assets/files/000013-F/0/Multiple%20Applications_en.pdf, that talks about exactly what I want to do, but I can't find the download. The main reason I want to do this is for download speed. Right now it takes at least a minute to download our application to the PLC. A simple program downloads to the PLC in a very short time, but add visualization and the download time gets much longer. If I could download the program separately from the visualization I think that a simple program change would take very little time to download. I have tried create a GVL in the POUs view. This partly works in that both applications can see the GVL, but they each create their own instance of it and the variables are not shared between the two apps. There are ideas of using OPCUA but this raises problems with licensing and having to move any variable that needs to be shared into the Symbol Configuration. This adds a lot of management to keep this up to date. Any ideas would be appreciated thanks.
Last updated: 2025-02-20

Post by fmon on Modbus : dis- / re-connect cable: modbus does not re-start CODESYS Forge talk (Post)
Hello, I am using codesys Modbus TCP client (4.4.0.0) to communicate with a python modbus server (package pyModbusTCP). I first start my python server on the distant machine. After a fresh codesys compilation, a plc connection/transfer and a PLC run, the modbus connection is OK. Every time in this context the connection is created correctly. When I shut down the server, the modbus connection falls, that is normal. When I restart the python server, impossible to recreate the modbus connexion. With the client autoreconnection, I see on my server that the client tries to connect but unsuccesfully. I have the following message : DEBUG:pyModbusTCP.server:accept new connection from ClientInfo(address='192.168.1.20', port=33476) DEBUG:pyModbusTCP.server:Exception during request handling: NetworkError('recv return null') I tried to stop the codesys client and to restart it with these commands : Modbus_TCP_Client.xStop := True; // Or False Modbus_TCP_Client.Enable := True; // Or False Modbus_TCP_Server.Enable := True; // Or False I tried to confirm the error manually to force reconnection with: Modbus_TCP_Server_Motors.xConfirmError := TRUE; I tried also this command to STOP/RESET/START client and server (codesys side) but nothing happens : status_client := Modbus_TCP_Client.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.STOP); // .RESET & .START The answer of this function when executed is "status_client = NOT_SUPPORTED" It seems that is a socket problem, but I do not understand if it is on the client or server side. I tried a modbus simulator called "ananas.exe" and the result is the same. Impossible to get a modbus reconnection. What is different at the first connection and at a reconnection attempt ? Thanks for your help
Last updated: 2025-03-14

Post by fmon on Modbus TCP client reconnection problem CODESYS Forge talk (Post)
Hello, I am using codesys Modbus TCP client (4.4.0.0) to communicate with a python modbus server (package pyModbusTCP). I first start my python server on the distant machine. After a fresh codesys compilation, a plc connection/transfer and a PLC run, the modbus connection is OK. Every time in this context the connection is created correctly. When I shut down the server, the modbus connection falls, that is normal. When I restart the python server, impossible to recreate the modbus connexion. With the client autoreconnection, I see on my server that the client tries to connect but unsuccesfully. I have the following message : DEBUG:pyModbusTCP.server:accept new connection from ClientInfo(address='192.168.1.20', port=33476) DEBUG:pyModbusTCP.server:Exception during request handling: NetworkError('recv return null') I tried to stop the codesys client and to restart it with these commands : Modbus_TCP_Client.xStop := True; // Or False Modbus_TCP_Client.Enable := True; // Or False Modbus_TCP_Server.Enable := True; // Or False I tried to confirm the error manually to force reconnection with: Modbus_TCP_Server_Motors.xConfirmError := TRUE; I tried also this command to STOP/RESET/START client and server (codesys side) but nothing happens : status_client := Modbus_TCP_Client.SetCommunicationState(eRequestedState := DED.DEVICE_TRANSITION_STATE.STOP); // .RESET & .START The answer of this function when executed is "status_client = NOT_SUPPORTED". Is it normal ? It seems that is a socket problem, but I do not understand if it is on the client or server side. I tried a modbus simulator called "ananas.exe" and the result is the same. Impossible to get a modbus client reconnection. What is different at the first client connection and at a reconnection attempt ? Thanks for your help
Last updated: 2025-03-17

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 dnordenberg on BOOL variable in OPC UA and modbus simultaneously CODESYS Forge talk (Post)
How can I have an BOOL variable that is read/write in both modbus TCP server and from OPC UA at the same time? Variables with %MX.n %QX.n addressing which is used for BOOL/coils in modbus server is not allowed in OPC UA symbol list on Schneider M251 controllers. I have already asked on Schneiders forum but there are not a lot of codesys experts over there :( So OPC symbols can't have a address and the modbus TCP server needs a address. So how should I do it then? It seems like an impossible combination. Since I want read/write access from both ways I can't just simply make a second variable and assign it the value of another since it would be a one way assignment. I also tried using VAR_CONFIG which then makes the address syntax %Q or %M in my main variable list and that fools OPC UA Symbol Configuration to allow it and then I add the complete %MX.n address of it in the VAR_CONFIG list. This semi works, I can toggle the BOOL from modbus but the OPC UA symbol seems to be read only. It displays symbol status but nothing happens when I toogle it. I think I need another way to have the variables and symbols pointing to the same bits in memory... My plan B is to write a BOOL array compare FB that saves a history bit from previous cycle and if that does not match current status at next cycle for either the OPC symbol or the modbus variable then it copies the new status over to the other. Maybe ugly but it's like my last alternative. Kind regards David
Last updated: 2025-07-14

<< < 1 .. 44 45 46 47 48 .. 54 > >> (Page 46 of 54)

Showing results of 1349

Sort by relevance or date