Search talk: for next loop

 
<< < 1 .. 122 123 124 125 126 .. 139 > >> (Page 124 of 139)

Post by duvanmoreno24 on Modbus writing on value change CODESYS Forge talk (Post)
Yes, I tried to do what you put in the first code. However, I have a problem with that and that is that the inputs must be declared with the type. I have many data types running in my code (real, int, uint, bool) and I can't put them in the same function, another thing is that I need to instantiate that function for everything I want to write to the slave. You put a for to 200 but it means that it has to be the same data type and inside the array, but I want to get them individually. I'm struggling to do it in a good and efficient way like wago's E-cockpit does. in the first screenshot you can see, you simply type in value, change the package of things you want to write in value change and it does everything by itself automatically, without comparing any old and new values and even less having the need to activate a bool. , it is perfect.
Last updated: 2024-04-03

Post by salvadegianluca on How to use TON inside an FB that is instanced within a Visu page CODESYS Forge talk (Post)
Hi everyone; I'm building a project in which the drag of the mouse over some controls (or the click event) changes the background color of the control items; this change of color is made with an FB that assignes a color code to the background with MUX command based on the value of an enumerator, this part is perfectly working but, when I'm using a touchpanel instead of a web visu (controlled by a mouse) I get into some issues as it seems that the touch operations are not triggering the MouseEnter and MouseLeave properties as it's done with the mouse.... For this reason I'm trying to add a TON to my FB and, if the enum that changes color remains at the same state for more then 3s I'm automatically resetting it to it's "0" so the item gets back the not selected color. Anyhow it looks like the TON function from library is not working in these FB that are instanced in the various visualizations, as instead they do if I create some instances within the POUS. Anyone has ideas of how to make them work?
Last updated: 2024-04-15

Post by salvadegianluca on How to use TON inside an FB that is instanced within a Visu page CODESYS Forge talk (Post)
Hi everyone; I'm building a project in which the drag of the mouse over some controls (or the click event) changes the background color of the control items; this change of color is made with an FB that assignes a color code to the background with MUX command based on the value of an enumerator, this part is perfectly working but, when I'm using a touchpanel instead of a web visu (controlled by a mouse) I get into some issues as it seems that the touch operations are not triggering the MouseEnter and MouseLeave properties as it's done with the mouse.... For this reason I'm trying to add a TON to my FB and, if the enum that changes color remains at the same state for more then 3s I'm automatically resetting it to it's "0" so the item gets back the not selected color. Anyhow it looks like the TON function from library is not working in these FB that are instanced in the various visualizations, as instead they do if I create some instances within the POUS. Anyone has ideas of how to make them work?
Last updated: 2024-04-15

Post by leafy on Use third party actuator with IO-Link Master (IFM) CODESYS Forge talk (Post)
Hey there! I am currently doing a little automation project for uni. I am trying to integrate a control-valve-system (Buerkert AirLINE Field) in my IO-Link environment. With IFM sensors, I used their pre-built function blocks, but with this third-party device, i need to write my own function block. Thankfully, IFM provides a generic sensor-fb so I can write my own FB with "extends" and "super". So far, so good. I found the IODD and some other documentation and I thought I get how it works, but somehow can't really get it to work at all. From my understanding, i need to write data into the PDO-Array. But i get confused with the indices and subindices of IO-Link. I'll append the IODD and some screenshots of my project. There is an AOI for LogicXDesigner, but I can't use that in Codesys. I hope someone has integrated a IOL-device in Codesys before and can help me with this. Cheers leafy
Last updated: 2024-04-16

Post by leafy on Use third party actuator with IO-Link Master (IFM) CODESYS Forge talk (Post)
Hey there! I am currently doing a little automation project for uni. I am trying to integrate a control-valve-system (Buerkert AirLINE Field) in my IO-Link environment. With IFM sensors, I used their pre-built function blocks, but with this third-party device, i need to write my own function block. Thankfully, IFM provides a generic sensor-fb so I can write my own FB with "extends" and "super". So far, so good. I found the IODD and some other documentation and I thought I get how it works, but somehow can't really get it to work at all. From my understanding, i need to write data into the PDO-Array. But i get confused with the indices and subindices of IO-Link. I'll append the IODD and some screenshots of my project. There is an AOI for LogicXDesigner, but I can't use that in Codesys. I hope someone has integrated a IOL-device in Codesys before and can help me with this. Cheers leafy
Last updated: 2024-04-16

Post by rabaggett on CODESYS control for Raspberry Pi 64 SL errors CODESYS Forge talk (Post)
Hi, I am trying to create a project using a raspberry pi, I have added the modules for the Pi and MCP3008. I have encountered som errors that I don't know how to track down. 1. The GPIOs give preprocessor errors, but I read that this does not prevent compiling. This seems to be true. I can build the empty project with no errors. 2. After adding a SPI master and MCP3008, the preprocessor errors double, but seem similar and the project again builds with no errors. 3. I add a DUT and GVL, with a function, and I get the following errors. They remain even if I delete these things. ------ Build started: Application: Device.Application ------- Typify code... [ERROR] crr: C0032: Cannot convert type 'Unknown type: 'ADR(GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7)'' to type 'POINTER TO IoConfigParameter' [ERROR] crr: C0077: Unknown type: 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' [ERROR] crr: C0046: Identifier 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' not defined Compile complete -- 3 errors, 0 warnings I attach the project. What am I doing wrong? Thanks!
Last updated: 2024-05-02

Post by kblundy on Change the Opening Position of the Dialog using VU.FbOpenDialog CODESYS Forge talk (Post)
I hope the community can help me with this. I need to use the Visu Utils FbOpenDialog to control the opening and closing of a dialog. I have the Opening and Closing working, but I can’t get the dialogue's position to be controlled. The code looks like this: PROGRAM OPEN_DIALOG VAR xOpenLatchSettingDialog : BOOL; TopLeftDialog : VisuStructPoint ; fbOpenLatchSettingsDialog : VU.FbOpenDialog ; END_VAR IF xOpenLatchSettingDialog THEN xOpenLatchSettingDialog:= FALSE ; TopLeftDialog.iX := 100; TopLeftDialog.iY := 23; fbOpenLatchSettingsDialog(sDialogName := 'visu_AlarmLatchSettings', xExecute := xOpenLatchSettingDialog , xModal := TRUE, itfClientFilter := VU.Globals.OnlyTargetVisu, pTopLeftPosition := ADR(TopLeftDialog)); CloseVisuDialog(sDialogName:= 'visu_AlarmLatchSettings'); ELSE xOpenLatchSettingDialog:= TRUE ; IF fbOpenLatchSettingsDialog.xError THEN xOpenLatchSettingDialog := FALSE; END_IF END_IF I can't seem to work out a way to make the values in TopLeftDialog.iX and TopleftDialog.iY be passed correctly in the call and for it to change the position of the dialogue box. The code is compiled, but the position has not been changed. Any guidance or suggestions for revising this code would be incredibly valuable. Your insights could be the key to solving this issue.
Last updated: 2024-05-05

Post by rabaggett on Reading Named Pipes in Linux Is there a better way? CODESYS Forge talk (Post)
I have a Python program that will handle things in my application such as VISA over IP and Telnet control of instruments. I want the main control and HMI in Codesys. My problem is communication between the two. I have looked at several ways to accomplish this, and settled on having the Python program create two named pipes, one to send information to Codesys, and one for Codesys to send information to Python. The information would be packetized with \n for end of packet.. Seems simple. I think the named pipes method should work, but file reading in Codesys using the CAA file library starts to get difficult when the file is never ending, as in this case. Before I spend too much time making something that may be fundamentally flawed I want to ask. Is there a better way? Is there a way to read the file 'one line at a time' which might solve my never ending file problem? Thanks!
Last updated: 2024-05-09

Post by william-blandon on RecipeManCommands.ReloadRecipes CODESYS Forge talk (Post)
Hi Dave. Thanks for your answer. I still struggling with this. I have done everything according with the Codesys help even I have looked in detail at the example. I have double checked the recipe manager configuration and the use of all the methods. There are two methods that do not work as expected. I'm using Codesys 3.5.19.20 and recipe management 4.4.0.0 .CreateRecipe just create a recipe in the recipe definition but do not create the file. This have a walk around just giving a .ReadAndSaveRecipe afterwards. .ReloadRecipes do nothing but do not generate any error as well. After calling it I call the .GetRecipeCount and the number is always 0. When I create a new recipe (using the function block methods) then the number changes. Looks like this method is looking to the wrong directory finding nothing. I don't know if there is a missing configuration in the CODESYSControl.cfg file. I'm thinking in a walk around for this but I need to create a strings array with the recipe names as retentive and making all the management when deleting and adding recipes. Have had some one the same problem?
Last updated: 2024-05-23

Post by kaotic2499 on Upgraded Raspberry 2b to Raspberry 5, Trends Broken? CODESYS Forge talk (Post)
Hello! Raspberry pi 2b just is getting a bit slow so decided to go for a Raspberry 5. Project is now upgraded to suit Pi 64 SL... so, now although everything runs perfectly... for some reason my trends will not save! its driving me nuts... ^Tried merging tasks with main program & trends ^tried re-prioritizing tasks (shifting 1 - 31 etc) ^Recreated the Trend Recording manager from scratch ^Tried swapping persisitant vars to GVL Retains then non-retains... (Project attached is as per before trial&error) Raspberry Pi 2b still runs "perfectly" though its very chuggy (Still saves the trends, note this is of an pretty much identical project minus the device compatibility) Does anyone have any advice to offer? project attached.... I feel it could be outside of Codesys itself causing the issues, but cant see/find anything on the internet to assist (or anyone else with the same problem as me...) Can attach project in another format (non archive) any assistance is much appreciated!
Last updated: 2025-10-19

Post by cmj-icsys on Custom configure tab in device editor CODESYS Forge talk (Post)
Hi everyone, I’m developing a custom CODESYS I/O driver for my company’s device, and I’ve been studying the example projects in CODESYS V3.5 SP20 Patch 5. In the IOMappingExample.project, I noticed that EtherCAT devices provide additional configuration tabs in the Device Editor, such as General, Process Data, etc. However, for custom I/O driver examples (based on IoDrv), the Device Editor only shows the default tabs like <devicename> I/O Mapping or <devicename> Parameters.</devicename></devicename> I’d like to create custom tabs or configuration pages in the Device Editor (e.g., “General Settings”, “Communication”, etc.) to allow users to configure parameters in a more structured way. Could anyone explain: How to define and register custom tabs or UI pages in the Device Editor? What tools or SDKs are needed to create UI elements such as combo boxes or check boxes? How to bind those UI controls to device parameters defined in the XML (device description)? Any example, SDK reference, or documentation link would be really helpful. Thanks in advance!
Last updated: 2025-10-20

Post by aris on Modbus write via FB failure CODESYS Forge talk (Post)
Hi all, I am using CoDeSys V3.5 and a soft controller Win V3x64. I am trying to read a modbus slave via Function Blocks and not via the channels of the hardware tree for the Slave. I created some requests of type ModbusRequest and I notice that I can read Input Registers and Coils but I can not write Holding Registers and Coils. I am using the library IoDrvModbusTCP 4.1.0.0. When i just use a single modbus request with FC06 (or FC16), there is no request sent to the slave and although the xExecute takes its true value from a pulse of 2 seconds duration, I take almost every 3 minutes an error "TCP_COMMUNICATION_ERROR - 16#A5 - TCP Port. error. Request was not sent". My code is ok because if i change the function code for reading registers, everything works fine. Did anyone have this issue in the past? Thank you in advance.
Last updated: 2025-11-06

Post by mil581 on Modbus TCP Server connection is ESTABLISHED but all holding registers are value 0? CODESYS Forge talk (Post)
Hello everyone! I'm facing a weird issue with CODESYS Control Win V3 x64 on a fresh Windows install. The situation is as follows: CODESYS Modbus TCP Server (Slave) is running and I can see live values in the mapping display of Modbus settings: GVL (e.g., 32, 42, 50). Port 502 is LISTENING according to netstat. When connecting via Modbus Poll or Node-RED, the connection status changes to ESTABLISHED and everything reports as fine. The Problem: Despite the successful connection, all holding registers return 0 no matter what. It's like the OS accepts the TCP handshake, the request counter goes up but the data payload never reaches Modbus Client (in this case Node-RED or Modbus Poll). Quick Stats: Firewall: Completely OFF. Unit ID: Verified & Matching. IP: Tried 127.0.0.1 and 192.168.0.1. Interface: Correctly bound in Ethernet Device settings. I already tried absolutely everything from changing IP address, subnet, port, deleting the project and starting new one and even nuking my old Windows install. Since I am near completion of my bachelor thesis only thing left for me to do is connect SoftPLC to NodeRED via Modbus but this issue is driving me crazy for weeks. I do not know what to do anymore.
Last updated: 2025-12-25

Post by baott569 on CODESYS OPC UA Security: HMI Client Not Receiving Server Certificate CODESYS Forge talk (Post)
Hello everyone, I am currently using OPC UA in CODESYS with the security mode BASIC256SHA256 – Signed and Encrypted. The OPC UA Server is running on an RTE CX device, and the HMI is running on another computer. I have reviewed many CODESYS documents and successfully established communication when the security mode is set to None with Anonymous login. However, when security is enabled, the server does not provide its certificate for the CODESYS HMI client to trust. Interestingly, the client can send its certificate to the server, and UAExpert works normally, but the CODESYS HMI client does not receive the server certificate. Can anyone help clarify what I might be missing? I have been stuck on this issue for three days. If I missed or misconfigured any step, please let me know. I believe I am stuck at step 15 in the following CODESYS guide: Encrypting the Communication of a Data Source OPC UA Client https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_encrypt_communication_data_sources_opc_ua_client.html Thank you very much.
Last updated: 2026-01-06

Post by nixola on CmpCharDevice blocks gpiochip access on Raspberry Pi 5 since update from SP18 to SP21 CODESYS Forge talk (Post)
Hi, I added the following lines to /etc/codesyscontrol/CODESYSControl_User.cfg: [CmpCharDevice] PermittedPath.0=/dev/i2c* PermittedPath.1=/dev/spidev* PermittedPath.2=/sys/class/gpio/* PermittedPath.3=/dev/gpiochip* However, I'm still unable to read or control GPIO pins from any CODESYS application. Specifically, setting the pin direction (and, thus, the IoDrvGpioSysfs driver configuration) fails, with a rather non-descript error in the logs: Description Component Setting direction failed for GPIO pin 586 IEC Update configuration failed from driver IoDrvGPIOSysfs CmpIoMgr I'm running CODESYS Control for Linux ARM64 SL version 4.21.0.0; it's running in rootless mode, as the codesyscontrol user, but said user is in the gpio group and can otherwise normally interact with GPIO, both via gpioset/gpioget and via the sysfs driver in /sys/class/gpio/. The system is a custom 64-bit Raspberry OS based distro, running on a Raspberry Pi CM5 on kernel 6.18.34 with PREEMPT_RT scheduling.
Last updated: 2026-07-21

Post by animesh on SoftPLC (CODESYS Control x86 RTE V3 x64) OPC UA binds only to 127.0.0.1 — Not binding to LAN IP CODESYS Forge talk (Post)
Hello everyone, I am facing a persistent issue with the OPC UA Server on Advantech Soft PLC with hard realtime for Win64 (V3_5_2010_3) and need help from the community. Device Information Name: Advantech Control x86 RTE V3 x64 Vendor: Advantech Co., Ltd. Categories: PLCs Version: 3.5.20.10 Description: Advantech Soft PLC with hard realtime for Win64 (V3_5_2010_3) Problem Summary The OPC UA Server works perfectly when accessed via: opc.tcp://localhost:4842 opc.tcp://<hostname>:4842</hostname> But it does NOT work when using the LAN IP: opc.tcp://192.168.0.XX:4842 In UAExpert I get: Discovery FindServers on opc.tcp://192.168.0.XX:4842 failed (BadCommunicationError) Port is LISTENING in windows Firewall.. Tried with turning off the firewall completely. System Information Windows 10 x64 Advantech CODESYS RTE Soft-PLC (hard real-time) Network IP: 192.168.0.XX Hostname: WINDOWS-XXXXX Need your Support
Last updated: 2025-11-24

Post by salvatorethomas on Port instantiation of serial interface in WAGO PLC using Modb_L05.lib in CoDeSys v2.3 CODESYS Forge talk (Post)
Hi — good description of the problem. A few suggestions / questions that might help narrow this down: Since your first serial port (COM2) works fine but the second (COM4 + MODBUS_EXT_MASTER) never opens, check whether the two ports are truly independent — some WAGO modules share internal resources, so COM4 might conflict with other functions or modules. Make sure that the physical wiring and module configuration for the second port (baud rate, flow control, RS-485 vs RS-422, etc.) exactly match what the library expects — a mismatch in flow control or wiring could prevent port opening even if the LED signals seem OK. Try using a plain SERIAL_INTERFACE on COM4 first (like you did for COM2) without Modbus logic — if that opens, you know the hardware + port config is fine, so the issue is more likely with modb_L05.lib. If the port opens but Modbus still fails, enable debug/logging (if available) to inspect whether the port opening fails or the subsequent Modbus negotiation fails. If you like — I can share a minimal example project I used with WAGO + COM4 + Modbus that worked; you could adapt that to test your setup. Wacky Flip
Last updated: 2025-12-01

Post by baott569 on CODESYS OPC UA Security: HMI Client Not Receiving Server Certificate CODESYS Forge talk (Post)
Hello everyone, I am currently using OPC UA in CODESYS with the security mode BASIC256SHA256 – Signed and Encrypted. The OPC UA Server is running on an RTE CX device, and the HMI is running on another computer. I have reviewed many CODESYS documents and successfully established communication when the security mode is set to None with Anonymous login. However, when security is enabled, the server does not provide its certificate for the CODESYS HMI client to trust. Interestingly, the client can send its certificate to the server, and UAExpert works normally, but the CODESYS HMI client does not receive the server certificate. Can anyone help clarify what I might be missing? I have been stuck on this issue for three days. If I missed or misconfigured any step, please let me know. I believe I am stuck at step 15 in the following CODESYS guide: Encrypting the Communication of a Data Source OPC UA Client https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_encrypt_communication_data_sources_opc_ua_client.html Thank you very much.
Last updated: 2026-01-06

Post by manuknecht on XY Chart causes extremely long cycle in Visu Task CODESYS Forge talk (Post)
I am using the visualization element "Cartesian XY Chart" in a visualization template within a library to display recorded position values. I managed to configure the chart as desired and it displays the values like it should. A problem occurs when clicking on the chart to move the cursor, zoom or pan. Upon clicking the visualization element for the first time, the task in which the visualization is run spikes to a cycle time of around 5'000 to 15'000 ms (the configured cycle time is 100 ms). Sometimes this even completely crashes the web-visualization. After this very long cycle, the visu task normalizes again and the chart can be interacted with as usual. Another spike in cycle time occurs once the visualization is switched to a frame that does not contain the chart. I did reduce the data array to only a few values and tried changing the update behaviour of the chart, but it did not change the problems I am facing. Did anyone experience a similar issue or even has a solution for this?
Last updated: 2026-06-16

Post by nickpoon on SysProcessCreate stopped working after SP21? CODESYS Forge talk (Post)
I'm going through the process of updating the CODESYS Project a machine to 3.5 SP21 (old version was 3.5 SP20). One function that stopped working when upgrading was SysProcessCreate. I need to run a .exe file that is located in C:\Program Files\MQTTStream. Some initial searching suggested that there are new security rules that prevent the SoftPLC from reading/writing files to outside of its Device folder (located here - C:\Windows\System32\config\systemprofile\AppData\Roaming\CODESYS\CODESYSControlWinV3x64\24FD6770) Relocating files helped fix my JSON file reader/writer functions (which were failing previously), but not the case for SysProcessCreate. I've even attempted to just run window's cmd.exe and with: pszCommandLine = 'cd /d C:\Windows\System32\config\systemprofile\AppData\Roaming\CODESYS\CODESYSControlWinV3x64\24FD6770\PlcLogic\MQTTStream & sift-proxy.exe --grpc_uri="https://grpc-api.siftstack.com" --api_key="xxxxxxxxxxxxxxxxxxx" mqtt-client --broker_ip=10.0.10.101 --broker_port=1883 --config_file="mqtt_telemetry_config.json" --username Plantd --password 1234 --stream_metrics --storage_path="sift-proxy-logs"' I have not been able to find a lot of documentation on this, and I suspect the new update may have created a bug for SysProcessCreate. Any help would be greatly appreciated
Last updated: 2026-02-02

Post by fajean on Issue with library updates CODESYS Forge talk (Post)
We make heavy use of internally developed libraries, which are often nested on multiple levels. I routinely work simultaneously on several libraries along with a project that use them. I make changes to a library and immediately perform a download (online or otherwise) in the project. For the longest time, we had zero issue with this. But starting a good while back, with 3.5 SP19 I think, CODESYS started not noticing library updates in other instances most of the time. When the update is missed, the project sees no need to update the code, and any download ignores the new code. A "Clean all" does not solve the issue. But if I close and then re-open the project, then the new version is noticed and the download works. The other solution is saving the library to the registry multiple times (say, 20-30 times, less if lucky), and then at some point the project notices the changed library. I am now on SP21, and it is still not fixed. This is driving me mad, any tasks probably takes me double the time or more due to this problem. My colleague has the same problem on a separate computer. Is this a known issue? Is there a setting somewhere that changes how updates are checked? Thanks for any help!
Last updated: 2026-02-13

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 gseidel on Mismatch between coordinate monitor and actual motion using SMC_GroupJog2, MC_MoveLinearAbsolute (6DOF) CODESYS Forge talk (Post)
Hi darwin03, when all joints are 0°, then the 6-axis robot is in a so called singularity. This means that it is in a special position where it cannot move freely in all directions but is restricted by its own construction. For a simple example, imagine a scara robot where the arm is fully stretched. In this position it cannot move freely. You can find a lot of information about robot configurations in the www. As far as CODESYS SoftMotion Robotics is concerned, this page holds the most important links, look for the error SMC_CP_CONFIGS_DIFFER: https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_robotics_errors.html The most important rules: 1) CP movements (linear moves, circular moves, cartesian jogging) cannot change the configuration during the movement. Both start- and endpoint must be in the same configuration. This excludes also the edge case that one or both of them are in a singularity. 2) PTP movements can move through singularities and cross configurations without problems. 3) SMC_SetKinConfiguration can be used to set the configuration of the axis group. Regards, Georg
Last updated: 2026-05-04

Post by suyash on Device User Logon CODESYS Forge talk (Post)
Hello. Basic Info : I am using Codesys Control For Raspberry Pi SL. Version 4.4.0.0 Engineering version : CODESYS V3.5 SP19 Patch 1 (Its a old application) I am facing a difficulty with the "Device User Logon". The window (screenshot attached) pops up during login. When i enter the credentials (which i feel are correct), the windows pops up again no matter how many times I enter. To ascertain, I tried entering the incorrect credentials during which its clearly specifying that i have entered them incorrectly (which is why I am quite certain about the credentials being correct). I even tried going into Communication Settings > Device(drop down) > Change Runtime secuirity policy . However it again asks me for credentials which keep popping up again and again. I am thinking of upgrading the runtime to the latest version of 4.20 Will it cause any issues with the paid license? Please suggest me a solution. BR, Suyash
Last updated: 2026-05-13

Post by brouwyka on JSONByteArrayWriter string result incorrect order CODESYS Forge talk (Post)
Hello everybody! We are currently working on implementing a call to an API that tracks data sent to it through a JSON body. Versions: CODESYS V3.5 SP19 Patch 7 using IIOT Libraries SL license, specifically JSON Utilities SL version 1.13.0.0. For simplicity, let's say we want to construct the following JSON body for our request (simplified to just 1 key-value pair in each of the array objects to keep things shorter, but we'd have multiple fields in each in reality): { "id": "machine_1", "readings": [ { "temp_mid": 153.8 }, { "temp_mid": 98.3 } ], "status": "RUNNING" } However, our "readings" data is added over time, not in creation, so calls to the builder would be somewhat out of order. In a simplified manner, our calls would look like this: jsonBuilder(pJsonData := JsonData, diRootObj => rootJsonIndex); // rootJsonIndex = 0. // Set "id" at root JSON object. wsValue := "machine_1"; jsonBuilder.SetKeyWithValue("id", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 1, VALUE: diParentIndex = 1 & diIndex = 2. // ... Time passes, we get our first reading to add ... // The "readings" array does not exist yet, so we make it first at root JSON object before adding our first reading. readingsJsonArrayIndex := jsonBuilder.SetKeyWithArray("readings", diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 3, VALUE: diParentIndex = 3 & diIndex = 4. // Then add the first reading, for which we first have to make an object. readingsJsonArrayObjectIndex := jsonBuilder.SetObject(diParentIndex := readingsJsonArrayIndex); // JSONData OBJECT: diParentIndex = 4 & diIndex = 5. // And then we add the field(s) in the object for the first reading. // NOTE the use of `readingsJsonArrayObjectIndex` so we set the field(s) in the first object in the array. rValue := 153.8; jsonBuilder.SetKeyWithValue("temp_mid", wsValue, diParentIndex := readingsJsonArrayObjectIndex); // JSONData KEY: diParentIndex = 5 & diIndex = 6, VALUE: diParentIndex = 6 & diIndex = 7. // ... Time passes, we want to add another root-JSON-level field ... // Set "status" at root JSON object. wsValue := "RUNNING"; jsonBuilder.SetKeyWithValue("status", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 0 & diIndex = 8, VALUE: diParentIndex = 8 & diIndex = 9. // ... Time passes, we want to add a second reading ... // "readings" array exists, so add the second reading, but first we have to make another object. // NOTE the re-use of the earlier stored `readingsJsonArrayIndex`, so we add the new object to that previously created array. readingsJsonArrayObjectIndex := jsonBuilder.SetObject(diParentIndex := readingsJsonArrayIndex); // JSONData OBJECT: diParentIndex = 4 & diIndex = 10. // And then we add the field(s) in the object for the first reading. // NOTE the use of `readingsJsonArrayObjectIndex` so we set the field(s) in the SECOND(, new) object in the array. rValue := 98.3; jsonBuilder.SetKeyWithValue("temp_mid", wsValue, diParentIndex := rootJsonIndex); // JSONData KEY: diParentIndex = 10 & diIndex = 11, VALUE: diParentIndex = 11 & diIndex = 12. // ... Finally, we want to send to the API, so we must convert the builder to data the client accepts as a body ... xTestWriteToJsonArray := TRUE; jsonArrayWriter( xExecute := xTestWriteToJsonArray, pwData := ADR(jsonDataString), udiSize := SIZEOF(jsonDataString), jsonData := JsonData^ ); IF jsonArrayWriter.xDone THEN // The writer was successful, the `jsonDataString` VAR should now contain a WString copy of the JSON object from the builder. xTestWriteToJsonArray := FALSE; END_IF We see that the JsonData STRUCT is correctly organised (in terms of the diParentIndex & diIndex set by it for each JsonElement) as we expect, as outlined in my comments in the simplified code above. However, as soon as we pass it to the jsonArrayWriter (which is a JSON.JSONByteArrayWriter), the resulting jsonDataString does not match our expectations, instead coming out like this: { "id": "machine_1", "readings": [ { "temp_mid": 153.8 } ] } { "temp_mid": 98.3 } "status": "RUNNING" The behaviour of the JSONByteArrayWriter thus seems to be the problem here. It does not seem to correctly process the children of JsonElements that are ARRAYs when additions to them are done broken up by additions to the lower level JSON OBJECT they are a part of. We have confirmed this by changing the order of the calls in our example to add both readings before adding the "status", in which case we get our expected outcome. However, in reality this is not possible for us - additions to any of the JSON's objects, arrays or array objects may happen at any time after other fields elsewhere in the JSON have been added. Does anyone know a way around this, a fix, or knows a solution we simply have not found? This same phenomenon was also noted on this forum by user @ryusoup at the end of 2023 (https://forge.codesys.com/forge/talk/Engineering/thread/c45929e2f1/#e27f) and user @mtho in early 2024 (https://forge.codesys.com/forge/talk/Engineering/thread/cd1bb450db/#1292) but both topics received no activity beyond both users' opening posts. Looking through the release notes of all the versions of the JSON Utilities SL library, I also did not see any remarks on resolutions of bugs in this vain. Thanks in advance for the assistance!
Last updated: 2026-06-10

<< < 1 .. 122 123 124 125 126 .. 139 > >> (Page 124 of 139)

Showing results of 3459

Sort by relevance or date