Post by ademarvribeiro on warning message
CODESYS Forge
talk
(Post)
this mean your project dont have compile information. try to upload code from PLC and them go online. To know the differences between online program and your project clica in Details, when the message pop-up.
Last updated: 2024-04-14
Post by k2saki on CNC Override speed. SMC_Interpolator.dOverride is working ?
CODESYS Forge
talk
(Post)
Hello. I have a question about override of moving speed. I am testing G-Code in Simulation mode. I set SMC_Interpolator.dOverride <--- 0.5, 1.0, 2.0 when Interpolator is working But SMC_Interpolator.dVel(speed) did not changed at all. Am I missing something to take effect ?
Last updated: 2024-05-01
Post by eschwellinger on OPC Da Server Code Meter Issues after Enabling License
CODESYS Forge
talk
(Post)
it is mandatory to activate the OPC DA license into the 32-xxxxxx legacy container (not UFC) you need a remove ticket -> contact CODESYS store - my question to move the license
Last updated: 2024-05-03
Post by bryandimino on OPC Da Server Code Meter Issues after Enabling License
CODESYS Forge
talk
(Post)
Additionally the license is loaded on the soft storage for my device but it shows up as invalid. I just activated it today.
Last updated: 2024-05-02
Post by ton on Code erzeugen mit kryptischer Fehlermeldung mit GVL_Io_dd05d808
CODESYS Forge
talk
(Post)
Ich habe das gleiche problem. Losch mal die '.precompile cacheβ datei und ΓΆffne dass project. Ich habe dan keine fehler meldung und kann ohne probleme online.
Last updated: 2024-05-22
Post by calviniscoding on JSON
CODESYS Forge
talk
(Post)
Can you post the new code that you have by chance? Also, are you able to send the values of tags dynamically with the RTAC in this JSON format? I'm running into a lot of road blocks with it.
Last updated: 2024-06-21
Post by calviniscoding on JSON
CODESYS Forge
talk
(Post)
Can you post the new code that you have by chance? Also, are you able to send the values of tags dynamically with the RTAC in this JSON format? I'm running into a lot of road blocks with it.
Last updated: 2024-06-21
Post by calviniscoding on JSON
CODESYS Forge
talk
(Post)
Can you post the new code that you have by chance? Also, are you able to send the values of tags dynamically with the RTAC in this JSON format? I'm running into a lot of road blocks with it.
Last updated: 2024-06-21
Post by fizzy-bubblech on 3.5 P20 hangs - no response
CODESYS Forge
talk
(Post)
Colleagues, i have the same problems. At the current time, I have to use the new version of the Codesys (3.5.20.10) + Control for Linux SL 4.11.0.0, but it works unstable : theree are a lot of freezes and not-respondings. I tested this on different projects: those that were created in the current version of the project, and those that were migrated from other versions of the development environment. Compiling a project without connecting to a controller is fast enough. The first downloading of the code into the controller, too. But as soon as you need to make edits and download a new code problems begin. Codesys "freezes" at the "Generation code" stage for 15-20 minutes. And only after that time loads the code into the controller. Previously, we used version 3.5.17.60 + Control for Linux SL 4.7.0.0. The process took 1-2 minutes. Do you have any ideas how can i fix it? I will be grateful for your answers.
Last updated: 2024-06-27
Post by lhohmann on EtherNet_IP_Scanner - No driver found
CODESYS Forge
talk
(Post)
I've managed to run Ladder logic code on a virtual PLC running on my laptop. Now, I want to connect to a device over EthernetIP, but I always get the "No driver found" message. Can anyone shed me some light?
Last updated: 2024-07-02
Post by disha on Export data with the Trend API
CODESYS Forge
talk
(Post)
Can you please share the code as i am the beginner for codesys. I don't have any idea that how sqlite is integrated with the codesys.
Last updated: 2024-07-08
Post by gauravthelkar on Static Code Analysis
CODESYS Forge
talk
(Post)
I am using the codesys V3.5 patch 7 64 bit. I have to write the python script for running the static analysis with loading standard rule .CSA file. how can we load the .csa rules file before running the static analysis command.
Last updated: 2024-08-05
Post by robert-o on Converting hex bytes to float
CODESYS Forge
talk
(Post)
Try OSCAT_BASIC and Function DW_TO_REAL. DWORD_OF_BYTE my although help. The Lib is open and free. It is not necessary to add this Lib, you can use/copy the source code just to get an idea.
Last updated: 2024-08-05
Post by abrarsk on SysCom Library Usage
CODESYS Forge
talk
(Post)
Update: I was able to successfully use the SysCom.lib. I had to install SysTypes2Interface library as well and wrote following code. Declaration hCom : RTS_IEC_HANDLE; pResult : POINTER TO RTS_IEC_RESULT; Implementation hCom := SysComOpen(ComSettings.sPort, ADR(pResult));
Last updated: 2024-08-10
Post by tgf2024 on Dynamic I/Os Mapping
CODESYS Forge
talk
(Post)
Hi Jinlee, how are you? I have similar application requirements on my project. I have tried dynamic mapping, but the code cannot detect the IO module change when I did hot switch. Do you find the way of how to identify the module change dynamicly? Thanks.
Last updated: 2024-08-15
Post by pietrobalint on Retain / Persistent Variables in Codesys for Raspberry Pi
CODESYS Forge
talk
(Post)
Ok, I figured out that I do not call the program in the main task. Thank you for the source code, it works!
Last updated: 2024-08-17
Post by pietrobalint on Retain / Persistent Variables in Codesys for Raspberry Pi
CODESYS Forge
talk
(Post)
Hi, I am very new in Codesys so let me apologize for my dumb question. Could you explain how to impement this code mentioned before? Thank you very much!
Last updated: 2024-08-17
Post by fabriciosegalin on SMC_NCDecoder very slow to decode lines
CODESYS Forge
talk
(Post)
Does anyone know a way to load a CNC program from CNC Editor faster using SMC_NCDecoder? It takes around 7 seconds to load 34 lines of G code and this is a problem for repeating the CNC program.
Last updated: 2024-08-23
Post by pietrobalint on Retain / Persistent Variables in Codesys for Raspberry Pi
CODESYS Forge
talk
(Post)
If I select "Update boot aplication" while I download the code the persistent variables got a constant startup value. But during the running I am still not able make the persistent variables to hold they actual value.
Last updated: 2024-09-01
Post by banialuk on CAN Open Manager - varible of SYNC
CODESYS Forge
talk
(Post)
Hello, were I have find varaible of SYNC "Cycle Period" , or variable that informs about the start of a new cycle SYNC. I want to use this variable in program code. I need to for communication beetween Mster and slave, and send PDO informations.
Last updated: 2024-10-26
Post by banialuk on CAN Open Manager - varible of SYNC
CODESYS Forge
talk
(Post)
Hello, were I have find varaible of SYNC "Cycle Period" , or variable that informs about the start of a new cycle SYNC. I want to use this variable in program code. I need to for communication beetween Mster and slave, and send PDO informations.
Last updated: 2024-10-26
Post by jari-koivuluoma on Problem trying Net Base Services 3.5.15.0 TCP connection
CODESYS Forge
talk
(Post)
I have a need to send messages between 2 PLCs and I cant use network variables (because of size limit) so I tried writing this simple test program. This seems to work fine. I can send messages back and forth when a first "Start server" and then "Connect client". See the attached image. However, if I disconnect the client by setting ClientConnect to false and try to re-connect then the TCP_Client just gives me TIMEOUT error. When I stop and start the server again, then Im able to reconnect. How is this supposed to work? Why reconnecting wont work. There is not other way of disconnecting the client than setting xEnable of the TCP_Client to false. This is just a testing program and I will try it on 2 seperate devices once this works. PROGRAM PLC_PRG VAR CONSTANT mySize : UDINT := 255; END_VAR VAR Server: NBS.TCP_Server; ServerIpStr: STRING := '127.0.0.1'; ServerIP: NBS.IP_ADDR; ServerPort: UINT := 50000; ServerConnection: NBS.TCP_Connection; Client: NBS.TCP_Client; ServerRead: NBS.TCP_Read; ServerWrite: NBS.TCP_Write; ServerSend: STRING(mySize); ServerReceive: STRING(mySize); ServerConnect: BOOL; bServerSend: BOOL; IP: NBS.INADDR; ConnectedClientIP: STRING; ClientPort: UINT := 50000; ClientIpStr: STRING := '192.168.1.49'; ClientIP: NBS.IP_ADDR; ClientRead: NBS.TCP_Read; ClientWrite: NBS.TCP_Write; ClientSend: STRING(mySize); ClientReceive: STRING(mySize); ClientConnect: BOOL; bClientSend: BOOL; Error: BOOL; Message: BOOL; END_VAR // Server ServerIP.sAddr := ServerIpStr; Server( ipAddr := ServerIP, uiPort := ServerPort ); ServerConnection( xEnable := Server.xEnable, hServer := Server.hServer, ); IP := ServerConnection.IPAddress; ConnectedClientIP := F_Concat7( BYTE_TO_STRING(IP.S_un_b.s_b1),'.', BYTE_TO_STRING(IP.S_un_b.s_b2),'.', BYTE_TO_STRING(IP.S_un_b.s_b3),'.', BYTE_TO_STRING(IP.S_un_b.s_b4)); ServerRead( xEnable := ServerConnection.xActive, hConnection := ServerConnection.hConnection, szSize := SIZEOF(ServerReceive), pData := ADR(ServerReceive) ); IF ServerRead.xReady AND ServerRead.szCount > 0 THEN Message := TRUE; END_IF IF ServerRead.eError > 0 THEN Error := TRUE; END_IF ServerWrite( xExecute := ServerConnection.xActive AND bServerSend, hConnection := ServerConnection.hConnection, szSize := LEN(ServerSend)+1, pData := ADR(ServerSend) ); IF ServerWrite.xDone THEN bServerSend := FALSE; END_IF IF ServerWrite.eError > 0 THEN Error := TRUE; END_IF // Client ClientIP.sAddr := ClientIpStr; Client( xEnable := ClientConnect, ipAddr := ClientIP, uiPort := ServerPort, udiTimeOut := 10000000 ); ClientRead( xEnable := Client.xActive, hConnection := Client.hConnection, szSize := SIZEOF(ClientReceive), pData := ADR(ClientReceive) ); IF ClientRead.xReady AND ClientRead.szCount > 0 THEN Message := TRUE; END_IF IF ClientRead.eError > 0 THEN Error := TRUE; END_IF ClientWrite( xExecute := Client.xActive AND bClientSend, hConnection := Client.hConnection, szSize := LEN(ClientSend)+1, pData := ADR(ClientSend) ); IF ClientWrite.xDone THEN bClientSend := FALSE; END_IF IF ClientWrite.eError > 0 THEN Error := TRUE; END_IF
Last updated: 2024-10-03
Post by smeitink on Timeout Error in Modbus Communication with WAGO PFC200 and iEM2050 Meter using 750-652 Module
CODESYS Forge
talk
(Post)
Hi all, I'm looking for help with an issue I've come across while trying to facilitate Modbus communication between a WAGO PFC200 PLC using a 750-652 communication module and an iEM2050 Series Single Phase Energy Meter. I believe to have everything wired and setup correcty, but I keep running into a "Error time out" message, and by now I don't really know what else to try. My setup is as follows: A PFC200 Wago PLC, which has 2 750-652 Serial Interfaces extension modules connected to its field bus. I'm using one of these to talk to a Schneider iEM2050 - kWh-meter over modbus. I have connected terminal 23 (A) of the iEM2050 to connector 6 (A) on the 750-652. I have connected terminal 24 (B) of the iEM2050 to connector 2 (B) of the 750-652. I'm using 200mm of twisted together wires to connected them both, and I have placed a 120 ohm resistor between A and B at both ends. I've attached relevant pinout images to this post. I then wrote a simple program that configures the Mobus port, as per the datasheet of the iEM2050. You can find an image of the relavent page attached to this post too. This is my program: PROGRAM PLC_PRG VAR Master: FbMbMasterSerial; xIsConnected: BOOL; xError: BOOL; iIndex: INT := 1; xTrigger: BOOL; utQuery : typMbQuery := ( bUnitId := 1, // The Modbus unit or slave address bFunctionCode := 4, // Function code for reading input registers uiReadAddress := 1829, // adress for the Power on off counter uiReadQuantity := 1 // Quantity of registers to read ); iStep: INT; oStatusModbus: WagoSysErrorBase.FbResult; utResponseModbus: typMbResponse; xConnect: BOOL := FALSE; delayTimer: TON; END_VAR Master( xConnect:= xConnect, I_Port:= _750_652_24_1, udiBaudrate:= 9600, usiDataBits:= 8, eParity:= WagoTypesCom.eTTYParity.Even, eStopBits:= WagoTypesCom.eTTYStopBits.One, eHandshake:= WagoTypesCom.eTTYHandshake.None, ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex, xIsConnected=> xIsConnected, xError=> xError, oStatus=> oStatusModbus, eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU, tTimeOut:= T#5S, utQuery:= utQuery, xTrigger:= xTrigger, utResponse:= utResponseModbus); delayTimer(IN := TRUE, PT := T#3S); // Use the Q output of the timer to set xConnect after the delay IF delayTimer.Q THEN xConnect := TRUE; END_IF CASE iStep OF 0: //Wacht totdat de master de poort geopend heeft IF xIsConnected THEN iStep := 1; END_IF 1: //Stuur request naar de slave xTrigger := TRUE; iStep := 2; 2: //Wacht totdat de master klaar is met het afhandelen van de request IF NOT xTrigger THEN iStep := 3; END_IF END_CASE The TON delay before opening the port is due to a an error I encountered when opening it straight away. This seems to be a bug, as described here. However, the TON solved that particular issue. I tried reading multiple registers, but like I said, I still always end up with the "Error time out". What else can I test or try at this point?
Last updated: 2024-02-24
Post by john-robinson on Limiting Memory Access of an Array to Within its Bounds
CODESYS Forge
talk
(Post)
Recently we had an issue regarding some simple code to calculate a rolling average. The code indexes from zero to 199 to properly store the current input into a circular buffer which then allows us to calculate a rolling average: VAR input_5s : REAL; outs_arr : ARRAY[0..199] OF REAL; i : USINT := 0; END_VAR ___ //this code runs every five seconds, calculating a rolling average outs_arr[i] := input_5s; i := i + 1; output := OSCAT_BASIC.ARRAY_AVG(ADR(outs_arr), SIZEOF(outs_arr)); IF i >= SIZEOF(outs_arr) THEN i := 0; END_IF There is a simple bug in this code where the index will be set to 0 when it has surpassed the length of the array in bytes (800 in this case) rather than larger than the number of reals in the array (200). The solution here is simple, replacing i >= SIZEOF(outs_arr) with i >= SIZEOF(outs_arr)/SIZEOF(outs_arr[0]). In this example when the index increased to 201 and the line outs_arr[201] := input_5s was called, codesys arbitrarily wrote to the address in memory that is where outs_arr[201] would be if the array was that long. I would like to find a way to wrap the codesys array inside of a wrapper class that checks if an input is within the bounds of an array before writing to that value. I know how I would implement that for a specific array, I could create a method or class that takes an input of an array of variable length, ie. ARRAY[*] OF REAL, but I don't know how to make this for any data type. I am wondering if anyone has ever done anything similar to this, or has any better suggestions to ensure that none of the programmers on this application accidentally create code that can arbitrarily write to other locations in memory.
Last updated: 2024-03-05
Post by jari-koivuluoma on JSON_Utilities_SL JSONFileWriter error NULL_POINTER
CODESYS Forge
talk
(Post)
FB jsonFileWriter gives a NULL_POINTER error, why? JSONByteArrayWriter works fine so the JSONData FB should be fine. The device is CODESYS Control Win V3 x64 in simulation mode. Codesys version is V3.5 SP16 Patch 5 JSON_Utilities_SL version is 1.3.0.0 Src: ST_TestStruct1a; TXT: WSTRING(10000); MakeJSON : BOOL := TRUE; SrcJSONData: JSON.JSONData; jsonFileWriter : JSON.JSONFileWriter; IF MakeJSON THEN MakeJSON := FALSE; // Struct data to JSONData FB F_TestStructToJSON(ADR(Src),ADR(SrcJSONData)); // Writing to file jsonFileWriter( xExecute := TRUE, sFileName := 'c:\JSONTEST\JSON.txt', eEncoding := JSON.Encoding.UTF_16, xAsyncMode := TRUE, jsonData := SrcJSONData ); // Waiting to finish WHILE jsonFileWriter.xBusy DO ; END_WHILE // To text jsonArrayWriter( xExecute := TRUE, pwData := ADR(TXT), udiSize := SIZEOF(TXT), jsonData := SrcJSONData, xAsyncMode := FALSE, ); END_IF
Last updated: 2023-09-08
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND
or OR
.