Post by r-niedermayer on OPC UA subscriber not operational
CODESYS Forge
talk
(Post)
Hi. As far as projects in "old version"s are concerned, these can be upgraded to newer versions at any time. To do this, the device must be updated accordingly and the copilers and library versions must be adapted. You can find instructions on how to proceed in the online help/FAQ: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_changing_compiler_version.html https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_cmd_update_device.html See also 4.3.22.4 "How to open an Example Project" within the following pdf for more details on the single steps: https://forge.codesys.com/lib/counit/tickets/_discuss/thread/3e991befbc/ca97/attachment/Public%20FAQ-v13-20240610_075228.pdf Regaring your OPCUA connection state always showing just "DISABLED", without knowing both sides of the assembly in detail, one can only approach the problem theoretically. We can give a chekclist on how to proceed: Fist, please recheck the communication settings in the OPC UA connection function block to ensure that the server URL, endpoint URL, and other settings are correct and match the configuration of the OPC UA server. Verify that the OPC UA server is running and accessible. -You can try to connect to the OPC UA server using a separate client, such as UAExpert, to ensure that the issue is not related to the OPC UA server itself. Test the security settings in the OPC UA connection function block to ensure that the correct security policy and certificate are selected. If you are using a dynamic connection to the OPC UA server, probe that the connection settings are correctly configured and that the OPC UA client is able to establish a connection to the OPC UA server. Also, please loock into the log files for any errors related to the OPC UA connection function block, these should be listet there. The log files may also provide additional information about the issue and help you to further troubleshoot the problem. FYI - Please see https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_obj_data_source_communication_opc_ua_server.html: Her you can finde the Communication settings via OPC UA Server -> layout Browse Live Server: The client connects to the server and detects the existing variables and types. From Information Model The client reads the data structure (layout) of the OPC UA Server from the information model set here and as a result receives the information about available variables and types. A connection to the server is not required. The list contains the information models installed in the OPC UA Information Model Repository. "Read Connection" Settings from IEC Variable (option set): - The connection settings used by the device are not read here from the dialog, but at runtime from the IEC variable specified here. - For this possibility, please see the Using a Dynamic Connection to an OPC UA Server (https://content.helpme-codesys.com/en/CODESYS%20Communication/_comm_use_dynamic_opc_ua_server_comm_settings.html) The settings for the communication of a Client-data source to an OPC UA Server can also be dynamically configured from the IEC code and can also be changed at runtime. For such a purpose, a structure is available in the DatasourceOpcUAServer library (For a description of the OPC UA Server, there is one included in the standard installation of CODESYS, https://content.helpme-codesys.com/en/CODESYS%20Communication/_cds_encrypt_communication_data_sources_opc_ua_client.html)
Last updated: 2024-11-04
Post by alessandro on SysMemCmp SysMemCpy
CODESYS Forge
talk
(Post)
VAR Data1:ARRAY[1..10] OF SINT ; Data2:ARRAY[1..10] OF SINT ; Data3:ARRAY[1..10] OF SINT ; Data4:ARRAY[1..10] OF SINT ; ex_1 : BOOL ; ex_2 : BOOL ; enable : BOOL :=0 ; END_VAR // PROGRAM // The scope of this example is compare and copy the values of two ARRAY only if some value is different using SysMemCmp and SysMemCpy. // In this 2 example we don't use a FOR cicle for do this, and pBuffer1 and pBuffer2 is just a pointer to ARRAY. See details in Library util.SysMem of Codesys // The compare funcion util.SysMem.SysMemCmp is bidirectional if Data1 chanege respect Data2 ex_1 go to 1 and if Data2 change respect Data1 also // but the copy function util.SysMem.SysMemCpy work only from source ARRAY pSrc:=ADR(Data1) to destination ARRAY pDest:=ADR(Data2) // Example 1 Full ARRAY compare and copy // This compare 2 different equal ARRAY and if there is some difference ex_1 go to 1 and if you give enable he copy Data1 in Data2 ex_1 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data1), pBuffer2:=ADR(Data2), udiCount:=SIZEOF(Data1))); IF ex_1 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data2), pSrc:=ADR(Data1), udiCount:=SIZEOF(Data1)); END_IF // Example 2 Only selected area of the ARRAY compare and copy // This compare 2 different equal ARRAY starting from position number [3] for 4 byte in this case start at position [3] and finish at position number [6] // and if there is some difference only in area [3..6] of the ARRAY ex_2 go to 1 if you give enalbe he copy Data3[3..6] in Data4[3..6] // if something change in other array position[0..2] or [7..10] are ingnored ex_2 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data3[3]), pBuffer2:=ADR(Data4[3]), udiCount:=4)); IF ex_2 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data4[3]), pSrc:=ADR(Data3[3]), udiCount:=4); END_IF // Attention udiCount input is intended in <byte> in the example 1 I pass to udiCount:=SIZEOF(Data1) for compare and copy the intere ARRAY and // SIZEOF pass the size of intere ARRAY in byte to the function input, in this 2 examples I used variable type SINT each one occupie 1 byte and one position in the ARRAY // and in the example 2 I pass udiCount:=4 for compare and copy only 4 position of Data3/4[3..6] if you want to extend this example and use it for an ARRAY OF WORD // remember that each WORD will occupe 2 byte (16 bit) and you will have to pass udiCount:=SIZEOF(Data1) if you need to compare intere ARRAY example 1 // but need udiCount:=(42) for the example 2 because need to compare and copy 4 word each occupie 2 byte (16 bit). // For REAL (32 bit) need udiCount:=SIZEOF(44) for LREAL or (64 bit) need udiCount:=SIZEOF(416) // a good rule is calculate the dimension of the ARRAY in byte without empty space at the end, multiple of data type number for variable bigger then 8 bit // Example : If you want to create an ARRAY for 5 REAL (32 bit) each occupie 4 byte the correct size is ARRAY[0..19] OF REAL 54=20 position. // NOTE : In the example the position of compare function util.SysMem.SysMemCmp is first and the copy function util.SysMem.SysMemCpy inside the IF is after // in one cycle of the program the two array is compared and if there is some difference and enable are copied. // If you move util.SysMem.SysMemCmp after the IF cycle he will copare the ARRAY in the current cycle but the copy of the value will do in the next cycle.</byte>
Last updated: 2025-10-24
Post by thejesh on WebVisu: switch-frame destroys and rebuilds referenced visualization - is retention configurable?
CODESYS Forge
talk
(Post)
Hi, HTML5 Conrtrol elements on CODESYS V3.5 SP22 Patch 2, WebVisu only (no TargetVisu). The client is Chromium 147 in kiosk mode on a Raspberry Pi CM5 panel; the runtime is CODESYS Control Win V3 x64/CODESYS Control RTE V3 x64 on a separate IPC. I have measured that changing a Frame element's switch-frame variable destroys the currently referenced visualization and fully rebuilds it on return, including all embedded HTML5 controls. We would like to know whether this lifecycle is configurable. Measurement 1: Curently, our production page contains a good number of custom HTML5 controls and will only increase , each of which the WebVisu client instantiates as a separate about:srcdoc iframe. I counted live targets via the Chromium remote debugging endpoint (curl http://localhost:9222/json/list) before and after switching. Production displayed (index 0) 108 iframes Switched to a light page (index 1) 46 iframes Switched back to Production 108 iframes 62 controls are destroyed on leaving the page and re-instantiated on return. Observed latency was approximately 2.5 -5s away from the heavy page and approximately 4.0 -5 s back to it. This was measured with the panel otherwise idle: 2.8% system CPU, 97.1% idle, 2 h 56 min uptime, no remote-desktop session running, hardware acceleration confirmed active in chrome://gpu. I had previously measured the same behaviour under a much higher CPU load and have since resolved that load separately (VISU_TASK cycle period), so I am confident the rebuild is the frame lifecycle itself and not CPU starvation. Measurement 2 — frame offset instead of switch index I then displayed the same overlay page by a different mechanism. Instead of using a switch-frame index, I placed the page in a fixed Frame parked off-screen below the visible canvas, and drive its Y offset from an INT in Structured Text to move it into view. With this approach the overlay appears immediately, the production page underneath is never torn down and keeps updating, and no visualization is destroyed or rebuilt in either direction. The iframe count does not change at any point. This is the same visualization, containing the same HTML5 controls, as in Measurement 1 — the only difference is how it is brought on screen. So the rebuild appears to be a property of the switch-frame mechanism specifically, not of the page or its control count. Questions: Is the destroy-and-rebuild behavior on switch-frame the intended and documented lifecycle for WebVisu? Is there any setting, property or client option that causes a referenced visualization to remain instantiated when it is not the active index — the equivalent of keeping it mounted but not displayed? Does the runtime or client offer any form of caching or pre-instantiation for referenced visualizations, so that a return switch does not pay the full construction cost? Is the cost specific to HTML5 controls, or would the same rebuild occur with an equivalent number of native visualization elements? We ask because it would inform whether reducing our HTML5 control count is a viable solution. Is there a recommended pattern for showing a full-screen page over a live production screen without tearing the production screen down? My current workaround is to keep every page permanently instantiated and move it on and off screen by driving a frame offset variable, which avoids the rebuild entirely but means every page stays live and consumes client resources for the life of the session. This works, but I would prefer to use the supported mechanism if one exists. Any help on this is greatly appreciated. Thank you!
Last updated: 2026-08-07
Post by youness on No source code available (cip object)
CODESYS Forge
talk
(Post)
Hi yotaro, hope your problem was resolved. I had the same, but with an other library title. This exception is not detected during compilation, but rather at a given position in the program (when switching to a given visualization). Although the exception is generated at this point, it does not involve the visualization in question. This error is due to one of 3 reasons: 1) A division by zero somewhere: The program is able to detect divisions by zero at compile time. But in the case of a variable, which takes a valid value at init and changes to 0 at a later stage. 2) An invalid pointer: (either because it has a value of 0, or because it points outside the memory reserved for the program) is being dereferenced. Locate any pointers or interfaces you have in the code and check them - you should also be wary of mixing inline modifications and pointers. 3) Array overflow: Generally when a processing operation is executed outside the array's definition range. Example: a write loop with n iterations is executed on an array of dimmension n-1. On the other hand, the error message may not appear. In the latter case, the error may have fatal consequences, as the overflow has induced writing to potentially forbidden memory areas. This problem can be explained by the fact that it's not always the adjacent memory areas of PLC_PRG that are overwritten, but the memory areas that are randomly allocated to the array during compilation. In this case, however, there is no entry in the log, so you need to integrate the "Implicit Check function", which checks the line of code generating the error. To integrate this functions, click on Application --> POU for implicit controls Regards,
Last updated: 2024-07-16
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 imdatatas on The default ramp type selection in SoftMotion V4.18.0.0 is Quadratic
CODESYS Forge
talk
(Post)
Dear @gseidel, Thank you for your clarification. I fully agree that the quadratic ramp type may have certain technical advantages. However, the main problem is backward compatibility and consistency across projects. In many automation projects, application developers rely on the fact that creating a new axis object will behave exactly the same way as in previous versions. With SoftMotion V4.18.0.0 and later, if an application developer adds an axis and overlooks the changed default, the motion function blocks behave differently than expected. In particular, since the Jerk value in SM3_Basic function blocks is ineffective in trapezoid ramp type, users are accustomed to leaving this parameter empty in their projects. In many existing projects, this variable has not even been assigned. When the default is changed to quadratic, the Jerk parameter suddenly becomes relevant, which can cause errors or unexpected behaviour in the field. From a user perspective, a default setting should always be the “safe” and “expected” option, while alternative options (like quadratic) can be selected manually if desired. Keeping the default as trapezoid ensures compatibility with existing projects and prevents unexpected issues, while still allowing users to benefit from quadratic ramps if they explicitly choose so. For these reasons, I kindly ask you to reconsider making trapezoid the default again. This would significantly reduce the risk of unexpected behaviour in future projects while still preserving the advantages of the quadratic ramp type for those who actively select it. Of course, the final decision is entirely at your discretion. Best Regards, imdatatas
Last updated: 2025-09-26
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 testlogic on Sending Sequential Modbus TCP Packets
CODESYS Forge
talk
(Post)
I have a Modbus TCP slave device where I need to do sequential writes to the same register. The register I'm writing to is kind of like a command line, each packet is a command word encoded in Hexadecimal. I am having difficulty implementing this system in CoDeSys 3.5 SP19. I feel like the structure of the program should be something along the lines of (Pseudocode): ModbusTCPSend(Command Register, Command1) ModbusTCPSend(Command Register, Command2) ModbusTCPSend(Command Register, Command3) I have tried to implement this with a rising edge trigger wMot1OPCode := 16#E1; //Stop Motor & Kill Program xMot1SendOP := TRUE; //Send OP on rising edge xMot1SendOP := FALSE; //Reset wMot1OPCode := 16#9E; //Disable Motor xMot1SendOP :=TRUE; //Send OP on rising edge xMot1SendOP := FALSE; //Reset Where "wMot1OPCode" is the IO map for writing to the command register, and "xMot1SendOP" is the rising edge trigger for that modbus channel. However, this doesn't work. The device never responds to the modbus commands. It seems like the trigger variable is switched too quickly for modbus to send the packet. I know the modbus register is working, because I can set the channel to cyclic and the device will respond. However, I can't use this reliably because I need each command to be sent once, in order. Cyclic keeps re-sending the commands and seems like it could miss a command as well if one was sent in-between cycle time. I have also trying using the Application trigger as described by https://faq.codesys.com/pages/viewpage.action?pageId=24510480, but this is also not working for me. See attached picture for my FBD code. This seems like a simple function, I can't tell what I'm doing wrong here. Thanks for the help.
Last updated: 2024-03-06
Post by anonymous on Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part. I am able to capture the received data of client side in wireshark But unable to capture it on the codesys
CODESYS Forge
talk
(Post)
Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part.I am able to capture the data of client side in wireshark but i am unable to capture it in the codesys. Heres the below part of code of client side. PROGRAM POU_udpclient_program VAR istep : INT := 1;//step variable for state machine xStart: BOOL;// Flag to start the UDP protocol iecSocketId: syssocket_interfaces.RTS_IEC_HANDLE;//socket handle for receiving iecCreateResult: syssocket_interfaces.RTS_IEC_RESULT; ipAddr: syssocket.SOCKADDRESS;//Socket address structure for receiving sIpAddress : STRING := '192.168.0.2'; wPort: WORD:= 12346; iecConnectResult : syssocket_interfaces.RTS_IEC_RESULT;//connect paramters sDataRec : STRING[255];//Buffer for received data xiRecBytes : __XINT;//number of bytes received iecRecResult : syssocket_interfaces.RTS_IEC_RESULT;//receive data parameters iecCloseResult : syssocket_interfaces.RTS_IEC_RESULT; END_VAR syssocket.SysSockInetAddr(sIpAddress,ADR(ipAddr.sin_addr)); ipAddr.sin_family := syssocket.SOCKET_AF_INET; ipAddr.sin_port := syssocket.SysSockHtons(wPort); CASE istep OF 1: //create socket IF xStart THEN iecSocketId:= syssocket.SysSockCreate(syssocket.SOCKET_AF_INET,syssocket.SOCKET_DGRAM,syssocket.SOCKET_IPPROTO_IP,ADR(iecCreateResult)); IF iecSocketId = syssocket_interfaces.RTS_INVALID_HANDLE THEN xStart := FALSE; istep := 1; ELSE istep := 2; END_IF END_IF 2: //connect to socket server using setoption iecConnectResult := syssocket.SysSockSetOption(iecSocketId,syssocket.SOCKET_SOL,syssocket.SOCKET_SO_REUSEADDR,ADR(ipAddr),SIZEOF(ipAddr)); istep := 3; 3: //receive data xiRecBytes := syssocket.SysSockRecvFrom(iecSocketId,ADR(sDataRec),SIZEOF(sDataRec),0,ADR(ipAddr),SIZEOF(ipAddr),ADR(iecRecResult)); istep := 4; 4: //close socket iecCloseResult:= syssocket.SysSockClose(iecSocketId); xStart := FALSE; istep := 1; END_CASE
Last updated: 2024-06-03
Post by dclements on Feature Request: Read-Only References / Pointer-to-Const Support
CODESYS Forge
talk
(Post)
I would like to suggest adding support for persistent read-only references or pointers in CODESYS, similar to a C++ pointer-to-const (const T*). For example, something conceptually similar to: POINTER TO CONSTANT ST_MyData or REFERENCE TO CONSTANT ST_MyData The important distinction is that the reference itself may still be passed around or reassigned, but the referenced object cannot be modified through that reference. CODESYS currently supports VAR_IN_OUT CONSTANT, which provides read-only reference semantics for parameters, but there does not appear to be an equivalent type that can be stored in a variable or returned from a method. A practical use case is a registry that owns long-lived definitions. The registry needs to retain ownership of the data while downstream systems maintain persistent references to it. Currently, the main options are: Return the struct by value, which loses reference semantics and requires a copy. Return POINTER TO ST_Definition, which allows consumers to modify registry-owned data. Convert the structure into a Function Block and expose a getter-only interface, which provides the desired encapsulation but introduces more complexity and memory overhead. A read-only reference/pointer type would allow libraries to expose persistent, zero-copy access to internally owned data while preserving encapsulation. This would be particularly useful for library APIs and object-oriented CODESYS architectures where ownership of data should remain with one component while other components are allowed to observe it. Similar requests for constant references/pointers have been discussed on CODESYS Forge previously, so this appears to be a recurring use case rather than something specific to one application.
Last updated: 2026-09-01
Post by hhermsen on Codesys v3.5.22.10 - Internal error:System.AggregateException...Value cannot be null...Parameter name: expLValue
CODESYS Forge
talk
(Post)
Internal compiler error in SP22.x (expLValue null) — SP21 unaffected — need help isolating root cause I'm hitting the same internal compiler crash reported here. Same exact stack trace (AssignmentStatementReplacer → CreateAssignmentExpression → ArgumentNullException: Value cannot be null. Parameter name: expLValue), but in my case triggered by a self-written library, not a Visualization object — so this looks like a general SP22.x codegen regression rather than something tied to one specific language feature. What I've confirmed: Reverting to SP21 — no issue, builds clean SP22.x — internal compiler crash during Build > Application, code generation phase, with zero useful location info (no POU, no line number) check_for_errors/precompile-only passes cleanly; the crash only happens on a real full build, meaning static analysis never sees it coming What I've tried to isolate the cause (without success): Removed a suspected pattern involving a VAR_IN_OUT parameter used directly as a FOR-loop control variable, combined with early RETURN inside the loop — crash persisted identically afterward Confirmed no Visualization Manager or similar object in the project (ruling out the trigger in the linked report) Used an AI coding assistant (Claude Code) to search for other suspicious patterns — no luck pinpointing the exact statement Question @codesys-com Since the compiler gives no location info at all, is there any way to get more diagnostic output from the SP22.x codegen phase (verbose/debug build flags, log level settings, etc.)? Without that, isolating this in a large library means blind bisection — cutting the codebase in half repeatedly until the crash disappears, which is slow and error-prone without official tooling support. Happy to share the affected project or a minimal repro if that helps CODESYS engineering track it down.
Last updated: 2026-07-11
Post by mgabryel on Problems with CAN 2.0 comunication on Wago PLC (Codesys 3.5)
CODESYS Forge
talk
(Post)
Hello, I am trying to program CAN Bus comunication on WAGO PLC (more precisely on WAGO Touch Monitor model TP600). I am using for this purpose library "WagoAppCanLayer2" from Wago company. My IDE for programming this device is CODESYS V3.5 SP19 Patch 2 + (64-bit). My program is written in Structured text using function blocks from previously mentioned library. Here is code of this program: 1) Variables declarations: PROGRAM PLC_PRG VAR oOpenInterface : WagoAppCanLayer2.FbCanL2Open :=( udiBaudrate := 125000 ); xInterfaceIsOpen : BOOL; sInterfaceInfo : STRING; oReceive : WagoAppCanLayer2.FbCanRx29BitFrame :=( xBufferMode := FALSE, wCanId := 16#181 ); xRecv : BOOL; sReceiveInfo : STRING; oSend : WagoAppCanLayer2.FbCanTx29BitFrame :=( dwCanId := 16#100, //was 16#201 xRtrFrame := FALSE ); xSend : BOOL; sSendInfo : STRING; oCanDiag : WagoAppCanLayer2.FbCanErrorInfo; xRst : BOOL; aSendData : ARRAY [1..8] OF BYTE; bSendLen : BYTE; TON_0 : TON; TON_1 : TON; END_VAR 2) Program body: oOpenInterface( xEnable := NOT xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE ); sInterfaceInfo := oOpenInterface.oStatus.GetDescription(); xInterfaceIsOpen S= oOpenInterface.xValid AND NOT oOpenInterface.xError; oReceive( xEnable := xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, xRxTrigger := xRecv ); sReceiveInfo := oReceive.oStatus.GetDescription(); IF NOT xRecv THEN IF oReceive.bRxNBytes > 0 THEN oReceive.aRxBuffer[1]; oReceive.aRxBuffer[2]; oReceive.aRxBuffer[3]; oReceive.aRxBuffer[4]; oReceive.aRxBuffer[5]; oReceive.aRxBuffer[6]; oReceive.aRxBuffer[7]; oReceive.aRxBuffer[8]; END_IF xRecv := TRUE; END_IF aSendData[1] := 224; aSendData[2] := 13; aSendData[3] := 14; aSendData[4] := 15; aSendData[5] := 222; aSendData[6] := 13; aSendData[7] := 14; aSendData[8] := 15; bSendLen := 8; TON_0(IN:= NOT TON_1.Q, PT:= T#2S , Q=>xSend, ET=> ); TON_1(IN:= TON_0.Q, PT:= T#2S , Q=>, ET=> ); oSend( xEnable := xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, aTxBuffer := aSendData, bTxNBytes := bSendLen, xTxTrigger := xSend ); sSendInfo := oSend.oStatus.GetDescription(); oCanDiag( xEnable := TRUE, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, xTriggerResetCounter := xRst, xValid=> , xError=> , oStatus=> , wBusState=> , wBusDiag=> , uiRxOverflowsL2=> , uiTxOverflowsL2=> , uiRxOverflows=> , uiMsgTimeouts=> , uiBusOffs=> , uiBusWarnings=> ); Program first opens comunication on CAN 2 device and then periodically try send one CAN data frame. After starting program CAN 2 interface is properly open. The xSend variable is toggling with period 2s. When program sends data an "Tx overflow" error appears. When I am watching CAN_H line on DSub 9 socket i am not able to see proper CAN frames - see screenshot attached to this message. Could somebody help me determine what is wrong with this program. Best regards
Last updated: 2024-08-02
Post by gustavocsw on MQTT memory leak problem
CODESYS Forge
talk
(Post)
Hello everyone, I'm using the IoT Library to implement the MQTT communication with my local broker server in order to publish and subscribe at specifics topics to share and consume information about my application. But, it seems that are occurring some memory leak problem in a "high" frequency (more than 10 Hz) subscribe process. I follow the same method as in IoT Lib exemples, and at first looks perfect but my PLC was rebooting frequently and when I check its memory usage that was increasing as fast as the subscribe massage was sent. I'm using a WEG PLC410 and a WEG PLC500, and this error occurred in both of them (including in CODESYS Control Win x64). The application sends to the system a message JSON with the float payload Ex. {"data" : 0.8500}, but this happens with a INT, or BOL as well. I use the follow code in my application to find the value: //FindFirstValueByKey VARs PROGRAM JSON_VELO VAR //------Setting the JSON Subscriber to Set the Relay Value jsonDataVelo : JSON.JSONData; jsonByteArrayReaderVelo : JSON.JSONByteArrayReader; xST1okVelo : BOOL; FindFirstValueByKeyVelo : JSON.FindFirstValueByKey; jsonElementVelo : JSON.JSONElement; xDoneReaderVelo : BOOL; xDoneFindVelo : BOOL; //STRING and WSTRING for Subscribe the massage sPayloadJsonVelo : STRING := 'opa'; psPayloadJsonVelo : POINTER TO BYTE := ADR(sPayloadJsonVelo); //wsPayloadJsonRelaySet : WSTRING := "opa"; wsPayloadJsonVelo : WSTRING := STRING_TO_WSTRING('opa'); pwsPayloadJsonVelo : POINTER TO WORD := ADR(wsPayloadJsonVelo); lrVelo : LREAL; xKeepAliveVelo : BOOL; xSetVelo : BOOL; RSSet : RS; LIMPAR : STRING; //Find the msg end sFindVelo : STRING := '}'; psFindVelo : POINTER TO STRING := ADR(sFindVelo); iLenVelo : INT; iSizeVelo : INT := 12; udiContMsg : UDINT; END_VAR // FindFirstValueByKey CODE // Relay Set configuration xSetVelo := MQTT_SUBSCRIBER.RSVelo.Q1; IF xSetVelo THEN xKeepAliveVelo := TRUE; END_IF IF xKeepAliveVelo THEN udiContMsg := udiContMsg + 1; iLenVelo := TO_INT(StrLenA(psPayloadJsonVelo)); iSizeVelo := iLenVelo - TO_INT(MQTT_SUBSCRIBER.udiPayloadSizeVelo); StrDeleteA(psPayloadJsonVelo,iSizeVelo,iLenVelo); wsPayloadJsonVelo := STRING_TO_WSTRING(sPayloadJsonVelo); pwsPayloadJsonVelo := ADR(wsPayloadJsonVelo); //MQTT.ConvertUTF8toUTF16(sourceStart:= ADR(sPayloadJsonVelo), targetStart:= ADR(wsPayloadJsonVelo), dwTargetBufferSize:= TAM, bStrictConversion:= 1); //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := TRUE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := xDoneReaderVelo, wsKey := "data", diStartIndex:= 0, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); IF xDoneFindVelo THEN lrVelo := jsonElementVelo.value.lrValue; //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := FALSE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := FALSE, wsKey := "data", diStartIndex:= 1, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); xKeepAliveVelo := FALSE; GVL.xSetVeloRead := TRUE; END_IF END_IF And this to subscribe at the topic: //SUBSCRIBE VAR: //----------------- Subscribe Velocity ----------------------- MQTTSubscribeVelo : MQTT.MQTTSubscribe;//Variable MQTTSubscriber block -X - function-X wsTopicSubscribeVelo : WSTRING(1024) := "CORE/odometry/GET/data/simp"; // Topic to publish a message sSubscribeMassageVelo : STRING; udiPayloadSizeVelo : UDINT; xSDoneVelo : BOOL; xSErrorVelo : BOOL; xReceiveVelo : BOOL; eSTypeVelo : MQTT.MQTT_ERROR; eSMQTTErrorVelo : MQTT.MQTT_ERROR; RSVelo : RS; udiCont : UDINT; //SUBSCRIBE CODE: MQTTSubscribeVelo( xEnable:= MQTT_CLIENT.xConnection_Broker AND NOT xSErrorVelo AND NOT JSON_VELO.xKeepAliveVelo, pbPayload:= JSON_VELO.psPayloadJsonVelo, udiMaxPayloadSize:= SIZEOF(JSON_VELO.sPayloadJsonVelo), udiPayloadSize => udiPayloadSizeVelo, mqttClient:= MQTT_CLIENT.ClientMQTT, wsTopicFilter:=wsTopicSubscribeVelo, xDone => xSDoneVelo, xError=> xSErrorVelo, xReceived => xReceiveVelo, eMQTTError=> eSMQTTErrorVelo ); RSVelo(SET := xReceiveVelo, RESET1 := JSON_VELO.xKeepAliveVelo);
Last updated: 2024-09-09
Post by george32 on Readable IO names
CODESYS Forge
talk
(Post)
Hello Folks, I have a quite basic understanding of how PLC programming works. However I keep getting stuck on 1 problem I could not get my head around. The problem is as follow: I have a PLC with 60 IO (20 inputs, 40 outputs). Each IO is defined as a function block. Furthermore I have an external IO card connected trough a CanBus connection. This IO card has 4 analog input channels (USINT), 4 digital inputs (Bool) and 4, digital outputs (Bool) Because I have 2 different components which both has data have I made 4 arrays to store the data off every component in one variable. PLC_Input: Array [1..20] of BOOL; PLC_Output: Array [1..40] of BOOL IOCard_Input: Array [1..8] of BOOL IOCard_Output: Array [1..4] of BOOL Because the control and reading of the different in and outputs is done by a TCP connection I want to use some kind of enumeration or struct to give each index a name so that my main would be a little bit more readable instead of all the magic numbers. Also this would make my program more dynamic for the furter in case I need to changes some in the IO nummers. For example: pump is placed on the fysical terminal strip number place 54, which is the 3th output of the IO card in the program: if I am sending a message with value 54 I would like to control IOCard_Output[3]. If there is a solution or methode to get this done, I can eventually do the following in my main program: IOCard_Output[Pump]. I have tried the following: IOCard_Output[Pump - 51] with an enumration but this keeps raising an error I hope some of you could help me further with this problem. In gross lines: I want to couple all the different IO to a more readable name and this readable name should control the right Array index Thanks in advance, George
Last updated: 2024-09-26
Post by george32 on CSV file and string manipulation.
CODESYS Forge
talk
(Post)
Dear folks, I think I have a rather simple question but I could not find the right answer to my question: I have made with Excel a CSV file where I would like to have some general data regarding my program variables. I have made an program what let me read the file. The string I am currently get is at follows: 'IP_Adres;192.168.45.12$R$NPort_number;2000$R$NCycle_time;43$R$NStart_Standard_IO;20$R$N' Now I want to split the string in multiple part, which I later would connect to the right variable. By Google and experimenting I have reached to the following code for the first part of the splitting proces: // Splitting the BOM of the string: Received_string := FileReadString; IF LEFT(STR:=New_string,3)= '' THEN Received_string_without_BOM :=RIGHT(STR:= Received_string,SIZE:= (LEN(STR:= Received_string))-3); END_IF //Splitting the remaining string in part for later declaration. WHILE index = 0 DO index_split_part := FIND(STR1:= Received_string_without_BOM,STR2:= '$R$N'); Part_of_String[index]:=LEFT(STR:=Received_string_without_BOM, SIZE:= index_split_part); index := index + 1; END_WHILE However in the splitting proces I could not understand what is really happening. I understand that the Find() function returns the first value the $R$N in the Received_string_without_BOM. This would mean that the index_split_part := 23 I|P| _ |A |d|r|e|s|;|1_|9 |2 |. |1 |6 |8 |. |4 |5 |. |1 |2 |$ |R |$ |N |P | 1|2| 3 |4 |5|6|7|0|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27| So the next part is to read the first 23 characters of the Received_string_without_BOM with the LEFT() function. I expected that the outcome the following was: 'IP_Adres;192.168.45.12$'. However the outcome is: 'IP_Adres;192.168.45.12$R'. I do not understand where the R after the $ sign comes from, because its place is 24 so it would not be added to the part_of the_string[index]. If I hard coded value 24 for the size it gives me the following return: 'IP_Adres;192.168.45.12$R$N'. I would expect everything till the R but the code adds the $N also to the string. I hope someone could explain to my what I am seeing wrong in my point of view? With kind regards, George
Last updated: 2024-09-27
Post by imdatatas on MC_CamIn did not work properly with SMC_FreeEncoder on SoftMotion 4.17.0.0
CODESYS Forge
talk
(Post)
Hello, I am facing a problem with the new Softmotion 4.17.0.0 version. Has anyone encountered a similar problem, what is the solution? I would be happy if you could share it. Problem description: -- "SMC_FreeEncoder" encoder axis is the master, -- The motor of the servo driver on the EtherCAT bus is the slave axis. -- When the MC_CamIn block executed, the InSync output is activated. However, although the master encoder axis position value changes, there is no movement in the slave servo axis! Test steps: 1-) EtherCAT servo axis installed, configured and motion test was performed with MC_Jog. No problem. 2-) Softmotion general axis pool > SMC_FreeEncoder was added and pulse amount configuration was performed. No problem. 3-) Incremental encoder actual count value was transferred to the "SMC_FreeEncoder.diEncoderPosition" variable as DINT under the ethercat task in every cycle and the encoder axis position value was observed. No problem. 4-) A simple CAM table with a 1:1 ratio was created under the project tree. (For example: Simply, when the encoder rotates 1 turn, the motor will rotate 1 turn.) 5-) The SMC_FreeEncoder axis enabled with MC_Power and brought to the StandStill state. 6-) The MC_CamTableSelect block was run with default input values ​​(all absolute) and only the Cam table name was specified. The Done output was seen successfully. No problem. 7-) The MC_CamIn block was activated with default input values ​​(absolute) and only the master encoder axis name, slave servo axis name, CamTableID input pins was specified and then "Execute" input set to TRUE. 8-) The InSync output information of the MC_CamIn block observed as TRUE. However, although the encoder axis value changed, the position value of the slave axis did not change at all, it did not move. It always remained at 0.0mm. 9-) When I repeated the same steps above, only changing the master axis to SM_Drive_Virtual instead of FreeEncoder and gave movement to the virtual axis, this time the slave axis moved successfully. However, when the same steps and operations are performed with the same IDE just downgrade SoftMotion version from 4.17.0.0 to 4.10.0.0, everything works normally and without problems as expected in MC_CamIn block with FreeEncoder master. (By the way, The used IDE version is Codesys V3.5 SP20patch3.) Best Regards Imdat
Last updated: 2024-11-11
Post by alexgooi on Modbus TCP interface get stuck
CODESYS Forge
talk
(Post)
Dear Forum, I'm currently experimenting with Modbus interfaces in combination with a virtual controller. I have the following setup (Modbus_Setup.png): I have an IPC with Debian installed on it (Debian 13). On this Debian machine I have installed a docker server and on this docker server a Codesys runtime container is deployed (Codesys_image.png). The Modbus scanner makes connection with and IO coupler and this works well. But when I physically disconnect the ethernet connection between the IPC and the IO coupler the Modbus interface gets stuck in a state where it gets stuck in the busy state (Modbus_Stuck.png). When I plug the cable back in, the IO coupler isn't communicating until the xBusy variable is manually set to False, after this action is performed the communication goes back to normal. I have tried to set the container network to host and bridge (Network.png), but both version gives the same result (stuck scanner). I would expect that the Modbus interface is generating a timeout after 1 sec, because this is how it is setup (Modbus_settings.png), but this is not what happens. I have thought to write a piece of code that writes xBusy to false when it is stuck but because it is an output I'm not able to write to it. I have tried this with another PC (different CPU/motherboard) but this gives the same outcome. I tried updating to the latest version of Virtual control (4.20) but this gives the same result. I also tried to do the same thing with an ethernet IP scanner, and this gives an error after the timeout is expired (so this works well). I have tried to connect to the IO coupler using the Modbus_FB lib (Modbus_FB.png) the FB's are giving the correct errors and behaving as expected. At last I have tried to use a Scanner on a Codesys controller (no IPC) and here the scanner behaves as expected (an alarm is triggered after the timeout has been expired). The version of the Codesys components are listed in the picture Versions.png Is there anyone that can give me a push in the right direction? Kind regards Alex
Last updated: 2026-04-14
Post by bschraud on Speicherbegrenzung fĂĽr lokale Variablen
CODESYS Forge
talk
(Post)
Aufgrund einer Schnittstellenänderung muss ich meine Messagebuffer erheblich vergrößern. U.g. Konstante bestimmt die Größe einer Byte-Array-Definition, die in einer Struktur für 9 Botschaften verwendet wird. Ich benötige also 177372byte zusätzlichen Speicher in dem Modul in dem die Struktur als lokale Variable angelegt wird. Dynamisches Allokieren zur Laufzeit möchte ich vermeiden, damit ich nicht während des Betriebes Fehler aus dem Allokieren behandeln muss. Für ein Reservieren des Speicherbereiches habe ich in Codesys keine Einstellmöglichkeiten gefunden. Die Applikation läßt sich ohne weitere Modifikation kopilieren, scheitert aber bei der Ausführung. Welche Lösungs- oder Einstellmöglichkeiten gibt es? Bei c_w_process_result_content_len_max: WORD := 292; [INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes [INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet: [INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 2807632 Bytes , höchste verwendete Adresse: 2159712, größte zusammenhängende Speicherlücke: 647920 Bytes (23 %) [INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267784 Bytes , höchste verwendete Adresse: 5590600, größte zusammenhängende Speicherlücke: 1677184 Bytes (23 %) Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download Speicherprüfung: [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x00128904 (0x71D3A95C) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018EC00 (0x71DA0C58) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x0018F090 (0x71DA10E8) [INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen. [INFORMATION] PAC: Check took 00:00:13.9743220. Applikation lässt sich downloaden und funktioniert auf dem Gerät. Nach der Vergrößerung: c_w_process_result_content_len_max: WORD := 20000; [INFORMATION] Größe des lizenzierten Benutzercodes: 363304 Bytes [INFORMATION] Speicherverbrauch auf dem Gerät, nicht für Lizenzierung verwendet: [INFORMATION] Speicherbereich 0 enthält Daten, Eingang, Ausgang, Speicher und Nicht-sichere Daten: Größe: 4114264 Bytes , höchste verwendete Adresse: 3164816, größte zusammenhängende Speicherlücke: 949448 Bytes (23 %) [INFORMATION] Speicherbereich 3 enthält Code: Größe: 7267832 Bytes , höchste verwendete Adresse: 5590640, größte zusammenhängende Speicherlücke: 1677192 Bytes (23 %) Übersetzung abgeschlossen -- 0 Fehler, 10 Warnungen : Bereit für Download Speicherprüfung: (gleiches Ergebnis wie vorher) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag GVL.htFactory._itfInstList.__Interface in Area 0, Offset 0x000033BC (0x71C15414) [WARNUNG] PAC: MC0006: Pointeradresse außerhalb des verwalteten Speichers für Eintrag __datasourcesInstancesGVL.__datasourcesInstances.dsInst._allItemsHashtable._ht.__Interface in Area 0, Offset 0x0021DF38 (0x71E2FF90) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_L_Instance._IIoDrv.__Interface in Area 0, Offset 0x00284238 (0x71E96290) [WARNUNG] PAC: MC0009: Pointer to Interface zeigt nicht auf die erwartete Schnittstelle in einer FB-Instanz für Eintrag IoConfig_Globals.PiXtend_V2_S_DAC_Instance._IIoDrv.__Interface in Area 0, Offset 0x002846C8 (0x71E96720) [INFORMATION] PAC: Überprüfter Speicher für 21336 Objekte. 4 Prüfung(en) fehlgeschlagen. [INFORMATION] PAC: Check took 00:00:14.0491831. Applikation lässt sich downloaden. Ausführen mündet in Ausnahmefehler Die Applikation läuft auf der Runtime CODESYS Control for Raspberry Pi MC SL. Die Codesys Version ist 3.5 SP20 mit allen Updates. Kennt jemand eine Speichergrenze für lokale Variablen bzw. eventuelle Einstellmöglichkeiten? Vielen Dank
Last updated: 2024-05-06
Post by brandonje on [Error] IoDrvEtherNetIP Library with Weintek
CODESYS Forge
talk
(Post)
I'm using weintek and Codesys V3.5 SP22 when I try to charge an ethernetIP device show me this error: ------ Build started: Application: Device.Application ------- Typify code... [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0077: Unknown type: '(_pPhysicalLink^._xLinkState <> CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up)' [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0077: Unknown type: 'CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up' [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0062: 'CmpSysEthernet.OperStatus' is no structured variable [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0063: 'CMPSYSETHERNET, 3.4.3.0 (3S - SMART SOFTWARE SOLUTIONS GMBH)' contains no definition for 'OperStatus' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ADR(ethFrame.ethData)'' to type 'POINTER TO StructEthernetframe' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ethFrame.udFrameLen'' to type 'ANY' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '((driverInstance * 2) + 1)'' to type 'ANY' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0077: Unknown type: '(driverInstance * 2)' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0077: Unknown type: 'driverInstance' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0046: Identifier 'driverInstance' not defined [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SIZEOF(ethFrame.ethData)' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0018: 'ethFrame.udFrameLen' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ADR(ethFrame.ethData)'' to type 'POINTER TO BYTE' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'ethFrame' [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier 'ethClose' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: 'ethClose' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_diAdapterNumber' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_stName' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_stName' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_stDescription' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_stDescription' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0077: Unknown type: '(_pPhysicalLink^._xLinkState = CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up)' [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0077: Unknown type: 'CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up' [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0062: 'CmpSysEthernet.OperStatus' is no structured variable [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0063: 'CMPSYSETHERNET, 3.4.3.0 (3S - SMART SOFTWARE SOLUTIONS GMBH)' contains no definition for 'OperStatus' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] memory block manager, 3.5.21.30 (codesys): ObjectRetain [Disposable]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] memory block manager, 3.5.21.30 (codesys): ObjectRelease [Disposable]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'frame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'ethFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0032: Cannot convert type 'Unknown type: 'ADR(frame.ethData[0])'' to type 'POINTER TO BYTE' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'frame.ethData[0]' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0032: Cannot convert type 'Unknown type: 'SIZEOF(frame.ethData)'' to type 'UDINT' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'frame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0018: 'frame.udFrameLen' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Receive [UcmmReceiver]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Send [UcmmReceiver]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] asynchronous job manager, 5.0.0.0 (codesys): ExtendAsync [FactoryBase]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. Compile complete -- 71 errors, 0 warnings Build complete -- 71 errors, 0 warnings : No download possible
Last updated: 2026-08-20
Post by wallandreas008 on OPC-Server V3 - keine Items zu sehen...
CODESYS Forge
talk
(Post)
Hallo ich habe ebenfalls Probleme mit dem Verbindungsaufbau zu 3 ABB SPSen nach einem Windows Update. hier meine OPCServer.ini [Server] updaterate=200 publicgroups=0 logevents=1 syncinit=1 PLCs=3 PLC0=PLC1 PLC1=PLC2 PLC2=PLC3 [PLC:PLC1] interfacetype=GATEWAY motorola=1 nologin=0 timeout=10000 tries=3 buffersize=4800 project=ZE_PC01 reconnecttime=10 waittime=12 active=1 logevents=1 logfilter=0 gateway=Tcp/Ip gatewayaddress=localhost gatewayport=1210 parameters=3 device=Tcp/Ip instance=TCPIP_0_101 parameter0=Address value0=192.168.0.101 parameter1=Port value1=1201 parameter2=Motorola byteorder value2=Yes [PLC:PLC2] interfacetype=GATEWAY motorola=1 nologin=0 timeout=10000 tries=3 buffersize=4800 project=ZE_PC02 reconnecttime=15 waittime=10 active=1 logevents=1 logfilter=10 gateway=Tcp/Ip gatewayaddress=localhost gatewayport=1210 parameters=3 device=Tcp/Ip instance=TCPIP_0_102_ parameter0=Address value0=192.168.0.102 parameter1=Port value1=1201 parameter2=Motorola byteorder value2=Yes [PLC:PLC3] interfacetype=GATEWAY motorola=1 nologin=0 timeout=10000 tries=3 buffersize=4800 project=ZE_PC03 reconnecttime=15 waittime=10 active=1 logevents=1 logfilter=10 gateway=Tcp/Ip gatewayaddress=localhost gatewayport=1210 parameters=3 device=Tcp/Ip instance=TCPIP_0_103_ parameter0=Address value0=192.168.0.103 parameter1=Port value1=1201 parameter2=Motorola byteorder value2=Yes [Redundancy] NumOfGroups=0 Im Logfile habe ich immer diese Meldungen: ;********* ;<loggername>OPCServer.log</loggername> ;<logoptions> ; <maxfiles>0</maxfiles> ; <maxfilesize>1048576</maxfilesize> ;</logoptions> ;********* 2026-09-29T12:01:40.598+0200, OPC-Server V3.5.20.0 by CODESYS Development GmbH. 2026-09-29T12:01:40.598+0200, Path for ini-File: C:\ProgramData\CODESYSOPC\OPCServer.ini 2026-09-29T12:01:40.598+0200, Path for AE-Config: C:\Program Files (x86)\CODESYS 3.5.20.0\CODESYS OPC Server 3\OPCServerA.ini 2026-09-29T12:01:40.598+0200, AE-Configuration unused. 2026-09-29T12:01:40.598+0200, 3 PLCs configured 2026-09-29T12:01:40.598+0200, [PLC1]: Try to open connection... 2026-09-29T12:01:40.599+0200, [PLC2]: Try to open connection... 2026-09-29T12:01:40.599+0200, [PLC3]: Try to open connection... 2026-09-29T12:01:40.599+0200, [PLC1]: Open communication successful 2026-09-29T12:01:40.600+0200, [__CommState] : Initially added implicit variable. 2026-09-29T12:01:40.601+0200, [__CommStateOK] : Initially added implicit variable. 2026-09-29T12:01:40.601+0200, [PLC1]: ---------- Configuration ---------- 2026-09-29T12:01:40.601+0200, [PLC2]: Open communication successful 2026-09-29T12:01:40.601+0200, [__CommState] : Initially added implicit variable. 2026-09-29T12:01:40.601+0200, [PLC1]: PLCHandler Version: 3.5.20.0 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->ulId = 0, m_pPlcConfig->pszName = PLC1 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->it = IT_GATEWAY, m_pPlcConfig->bActive = 1 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->bLogToFile = 1, m_pPlcConfig->ulLogFilter = 0xF 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->bMotorola = 1, m_pPlcConfig->bLogin = 1 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->ulBufferSize = 4800, m_pPlcConfig->bPreCheckIdentity = 0 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->ulHwVersion = 0 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->ulTimeout = 10000, m_pPlcConfig->ulNumTries = 3 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->ulWaitTime = 12000, m_pPlcConfig->ulReconnectTime = 10000 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->pszProjectName = ZE_PC01 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->gwc->pszDeviceName = Tcp/Ip 2026-09-29T12:01:40.601+0200, [PLC1]: m_pPlcConfig->gwc->pszAddress = localhost, m_pPlcConfig->gwc->ulPort = 1210 2026-09-29T12:01:40.601+0200, [__CommStateOK] : Initially added implicit variable. 2026-09-29T12:01:40.601+0200, [PLC2]: ---------- Configuration ---------- 2026-09-29T12:01:40.601+0200, [PLC3]: Open communication successful 2026-09-29T12:01:40.601+0200, [PLC2]: PLCHandler Version: 3.5.20.0 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->ulId = 1, m_pPlcConfig->pszName = PLC2 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->it = IT_GATEWAY, m_pPlcConfig->bActive = 1 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->bLogToFile = 1, m_pPlcConfig->ulLogFilter = 0xF 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->bMotorola = 1, m_pPlcConfig->bLogin = 1 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->ulBufferSize = 4800, m_pPlcConfig->bPreCheckIdentity = 0 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->ulHwVersion = 0 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->ulTimeout = 10000, m_pPlcConfig->ulNumTries = 3 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->ulWaitTime = 10000, m_pPlcConfig->ulReconnectTime = 15000 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->pszProjectName = ZE_PC02 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->gwc->pszDeviceName = Tcp/Ip 2026-09-29T12:01:40.601+0200, [PLC2]: m_pPlcConfig->gwc->pszAddress = localhost, m_pPlcConfig->gwc->ulPort = 1210 2026-09-29T12:01:40.601+0200, [PLC2]: m_pDeviceDesc->pszName = Tcp/Ip 2026-09-29T12:01:40.601+0200, [__CommState] : Initially added implicit variable. 2026-09-29T12:01:40.601+0200, [PLC2]: m_pDeviceDesc->pszInstance = TCPIP_0_102_ 2026-09-29T12:01:40.601+0200, [PLC2]: m_pDeviceDesc->ulNumParams = 5 2026-09-29T12:01:40.601+0200, [PLC2]: parameter0 = Address, value0 = 192.168.0.102 2026-09-29T12:01:40.601+0200, [PLC2]: parameter1 = Port, value1 = 1201 2026-09-29T12:01:40.601+0200, [PLC2]: parameter2 = Motorola byteorder, value2 = Yes 2026-09-29T12:01:40.601+0200, [PLC2]: parameter3 = SymbolFilePath, value3 = C:\Windows\system32\ 2026-09-29T12:01:40.601+0200, [PLC2]: parameter4 = WriteThroughReadCache, value4 = 1 2026-09-29T12:01:40.601+0200, [PLC2]: ----------------------------------- 2026-09-29T12:01:40.601+0200, [PLC2]: CPLCHandler: Interface: IT_GATEWAY used 2026-09-29T12:01:40.602+0200, [PLC1]: m_pDeviceDesc->pszName = Tcp/Ip 2026-09-29T12:01:40.602+0200, [PLC1]: m_pDeviceDesc->pszInstance = TCPIP_0_101 2026-09-29T12:01:40.602+0200, [__CommStateOK] : Initially added implicit variable. 2026-09-29T12:01:40.602+0200, [PLC3]: ---------- Configuration ---------- 2026-09-29T12:01:40.602+0200, [PLC3]: PLCHandler Version: 3.5.20.0 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->ulId = 2, m_pPlcConfig->pszName = PLC3 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->it = IT_GATEWAY, m_pPlcConfig->bActive = 1 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->bLogToFile = 1, m_pPlcConfig->ulLogFilter = 0xF 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->bMotorola = 1, m_pPlcConfig->bLogin = 1 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->ulBufferSize = 4800, m_pPlcConfig->bPreCheckIdentity = 0 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->ulHwVersion = 0 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->ulTimeout = 10000, m_pPlcConfig->ulNumTries = 3 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->ulWaitTime = 10000, m_pPlcConfig->ulReconnectTime = 15000 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->pszProjectName = ZE_PC03 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->gwc->pszDeviceName = Tcp/Ip 2026-09-29T12:01:40.602+0200, [PLC3]: m_pPlcConfig->gwc->pszAddress = localhost, m_pPlcConfig->gwc->ulPort = 1210 2026-09-29T12:01:40.602+0200, [PLC3]: m_pDeviceDesc->pszName = Tcp/Ip 2026-09-29T12:01:40.602+0200, [PLC3]: m_pDeviceDesc->pszInstance = TCPIP_0_103_ 2026-09-29T12:01:40.602+0200, [PLC3]: m_pDeviceDesc->ulNumParams = 5 2026-09-29T12:01:40.602+0200, [PLC3]: parameter0 = Address, value0 = 192.168.0.103 2026-09-29T12:01:40.602+0200, [PLC3]: parameter1 = Port, value1 = 1201 2026-09-29T12:01:40.602+0200, [PLC3]: parameter2 = Motorola byteorder, value2 = Yes 2026-09-29T12:01:40.602+0200, [PLC3]: parameter3 = SymbolFilePath, value3 = C:\Windows\system32\ 2026-09-29T12:01:40.602+0200, [PLC3]: parameter4 = WriteThroughReadCache, value4 = 1 2026-09-29T12:01:40.602+0200, [PLC3]: ----------------------------------- 2026-09-29T12:01:40.602+0200, [PLC3]: CPLCHandler: Interface: IT_GATEWAY used 2026-09-29T12:01:40.603+0200, [PLC1]: m_pDeviceDesc->ulNumParams = 5 2026-09-29T12:01:40.603+0200, [PLC1]: parameter0 = Address, value0 = 192.168.0.101 2026-09-29T12:01:40.603+0200, [PLC1]: parameter1 = Port, value1 = 1201 2026-09-29T12:01:40.603+0200, [PLC1]: parameter2 = Motorola byteorder, value2 = Yes 2026-09-29T12:01:40.603+0200, [PLC1]: parameter3 = SymbolFilePath, value3 = C:\Windows\system32\ 2026-09-29T12:01:40.603+0200, [PLC1]: parameter4 = WriteThroughReadCache, value4 = 1 2026-09-29T12:01:40.603+0200, [PLC1]: ----------------------------------- 2026-09-29T12:01:40.603+0200, [PLC1]: CPLCHandler: Interface: IT_GATEWAY used 2026-09-29T12:01:40.623+0200, [PLC2]: CPLCHandler: Reconnect[1]: Reconnect cycle begin... 2026-09-29T12:01:40.623+0200, [PLC3]: CPLCHandler: Reconnect[1]: Reconnect cycle begin... 2026-09-29T12:01:40.623+0200, [PLC1]: CPLCHandler: Reconnect[1]: Reconnect cycle begin... 2026-09-29T12:01:40.623+0200, [PLC1]: CPLCHandler: Reconnect[1]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:40.623+0200, [PLC3]: CPLCHandler: Reconnect[1]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:40.625+0200, [PLC2]: CPLCHandler: Reconnect[1]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:40.850+0200, * ERROR: [PLC2]: CPLCHandler: Reconnect[1]: FAILED! Symbols were loaded offline 2026-09-29T12:01:40.850+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[1]: FAILED! Symbols were loaded offline 2026-09-29T12:01:40.851+0200, [PLC2]: Open communication successful 2026-09-29T12:01:40.851+0200, [PLC2]: Starting adding new symbols 746... 2026-09-29T12:01:40.852+0200, [PLC3]: Open communication successful 2026-09-29T12:01:40.852+0200, [PLC3]: Starting adding new symbols 1168... 2026-09-29T12:01:40.875+0200, [PLC2]: Adding symbols finished 2026-09-29T12:01:40.875+0200, [PLC2]: CPLCHandler: Reconnect[1]: Reconnect cycle end 2026-09-29T12:01:40.881+0200, [PLC3]: Adding symbols finished 2026-09-29T12:01:40.881+0200, [PLC3]: CPLCHandler: Reconnect[1]: Reconnect cycle end 2026-09-29T12:01:45.928+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[1]: FAILED! Symbols were loaded offline 2026-09-29T12:01:45.928+0200, [PLC1]: Open communication successful 2026-09-29T12:01:45.929+0200, [PLC1]: Starting adding new symbols 499... 2026-09-29T12:01:45.933+0200, [PLC1]: Adding symbols finished 2026-09-29T12:01:45.933+0200, [PLC1]: CPLCHandler: Reconnect[1]: Reconnect cycle end 2026-09-29T12:01:46.110+0200, OPC-Server started successful. 2026-09-29T12:01:50.625+0200, [PLC1]: CPLCHandler: Reconnect[2]: Reconnect cycle begin... 2026-09-29T12:01:50.625+0200, [PLC1]: CPLCHandler: Reconnect[2]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:55.625+0200, [PLC3]: CPLCHandler: Reconnect[2]: Reconnect cycle begin... 2026-09-29T12:01:55.625+0200, [PLC2]: CPLCHandler: Reconnect[2]: Reconnect cycle begin... 2026-09-29T12:01:55.625+0200, [PLC2]: CPLCHandler: Reconnect[2]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:55.625+0200, [PLC3]: CPLCHandler: Reconnect[2]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:01:55.625+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[2]: FAILED! 2026-09-29T12:01:55.625+0200, [PLC3]: CPLCHandler: Reconnect[2]: Reconnect cycle end 2026-09-29T12:01:55.699+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[2]: FAILED! 2026-09-29T12:01:55.699+0200, [PLC1]: CPLCHandler: Reconnect[2]: Reconnect cycle end 2026-09-29T12:01:59.341+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[2]: FAILED! 2026-09-29T12:01:59.341+0200, [PLC2]: CPLCHandler: Reconnect[2]: Reconnect cycle end 2026-09-29T12:02:00.626+0200, [PLC1]: CPLCHandler: Reconnect[3]: Reconnect cycle begin... 2026-09-29T12:02:00.626+0200, [PLC1]: CPLCHandler: Reconnect[3]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:05.700+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[3]: FAILED! 2026-09-29T12:02:05.700+0200, [PLC1]: CPLCHandler: Reconnect[3]: Reconnect cycle end 2026-09-29T12:02:10.626+0200, [PLC3]: CPLCHandler: Reconnect[3]: Reconnect cycle begin... 2026-09-29T12:02:10.626+0200, [PLC2]: CPLCHandler: Reconnect[3]: Reconnect cycle begin... 2026-09-29T12:02:10.626+0200, [PLC3]: CPLCHandler: Reconnect[3]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:10.626+0200, [PLC2]: CPLCHandler: Reconnect[3]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:10.626+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[3]: FAILED! 2026-09-29T12:02:10.626+0200, [PLC2]: CPLCHandler: Reconnect[3]: Reconnect cycle end 2026-09-29T12:02:10.627+0200, [PLC1]: CPLCHandler: Reconnect[4]: Reconnect cycle begin... 2026-09-29T12:02:10.627+0200, [PLC1]: CPLCHandler: Reconnect[4]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:10.627+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[4]: FAILED! 2026-09-29T12:02:10.627+0200, [PLC1]: CPLCHandler: Reconnect[4]: Reconnect cycle end 2026-09-29T12:02:15.693+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[3]: FAILED! 2026-09-29T12:02:15.693+0200, [PLC3]: CPLCHandler: Reconnect[3]: Reconnect cycle end 2026-09-29T12:02:20.627+0200, [PLC1]: CPLCHandler: Reconnect[5]: Reconnect cycle begin... 2026-09-29T12:02:20.627+0200, [PLC1]: CPLCHandler: Reconnect[5]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:25.626+0200, [PLC3]: CPLCHandler: Reconnect[4]: Reconnect cycle begin... 2026-09-29T12:02:25.626+0200, [PLC2]: CPLCHandler: Reconnect[4]: Reconnect cycle begin... 2026-09-29T12:02:25.626+0200, [PLC2]: CPLCHandler: Reconnect[4]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:25.626+0200, [PLC3]: CPLCHandler: Reconnect[4]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:25.626+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[4]: FAILED! 2026-09-29T12:02:25.626+0200, [PLC3]: CPLCHandler: Reconnect[4]: Reconnect cycle end 2026-09-29T12:02:25.699+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[5]: FAILED! 2026-09-29T12:02:25.699+0200, [PLC1]: CPLCHandler: Reconnect[5]: Reconnect cycle end 2026-09-29T12:02:30.629+0200, [PLC1]: CPLCHandler: Reconnect[6]: Reconnect cycle begin... 2026-09-29T12:02:30.629+0200, [PLC1]: CPLCHandler: Reconnect[6]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:30.675+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[4]: FAILED! 2026-09-29T12:02:30.675+0200, [PLC2]: CPLCHandler: Reconnect[4]: Reconnect cycle end 2026-09-29T12:02:34.710+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[6]: FAILED! 2026-09-29T12:02:34.710+0200, [PLC1]: CPLCHandler: Reconnect[6]: Reconnect cycle end 2026-09-29T12:02:40.627+0200, [PLC2]: CPLCHandler: Reconnect[5]: Reconnect cycle begin... 2026-09-29T12:02:40.627+0200, [PLC2]: CPLCHandler: Reconnect[5]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:40.628+0200, [PLC3]: CPLCHandler: Reconnect[5]: Reconnect cycle begin... 2026-09-29T12:02:40.628+0200, [PLC3]: CPLCHandler: Reconnect[5]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:40.628+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[5]: FAILED! 2026-09-29T12:02:40.628+0200, [PLC3]: CPLCHandler: Reconnect[5]: Reconnect cycle end 2026-09-29T12:02:40.630+0200, [PLC1]: CPLCHandler: Reconnect[7]: Reconnect cycle begin... 2026-09-29T12:02:40.630+0200, [PLC1]: CPLCHandler: Reconnect[7]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:40.630+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[7]: FAILED! 2026-09-29T12:02:40.630+0200, [PLC1]: CPLCHandler: Reconnect[7]: Reconnect cycle end 2026-09-29T12:02:44.711+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[5]: FAILED! 2026-09-29T12:02:44.711+0200, [PLC2]: CPLCHandler: Reconnect[5]: Reconnect cycle end 2026-09-29T12:02:50.631+0200, [PLC1]: CPLCHandler: Reconnect[8]: Reconnect cycle begin... 2026-09-29T12:02:50.631+0200, [PLC1]: CPLCHandler: Reconnect[8]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:55.628+0200, [PLC2]: CPLCHandler: Reconnect[6]: Reconnect cycle begin... 2026-09-29T12:02:55.628+0200, [PLC2]: CPLCHandler: Reconnect[6]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:55.629+0200, [PLC3]: CPLCHandler: Reconnect[6]: Reconnect cycle begin... 2026-09-29T12:02:55.629+0200, [PLC3]: CPLCHandler: Reconnect[6]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:02:55.629+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[6]: FAILED! 2026-09-29T12:02:55.629+0200, [PLC3]: CPLCHandler: Reconnect[6]: Reconnect cycle end 2026-09-29T12:02:55.690+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[8]: FAILED! 2026-09-29T12:02:55.690+0200, [PLC1]: CPLCHandler: Reconnect[8]: Reconnect cycle end 2026-09-29T12:02:59.692+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[6]: FAILED! 2026-09-29T12:02:59.692+0200, [PLC2]: CPLCHandler: Reconnect[6]: Reconnect cycle end 2026-09-29T12:03:00.632+0200, [PLC1]: CPLCHandler: Reconnect[9]: Reconnect cycle begin... 2026-09-29T12:03:00.632+0200, [PLC1]: CPLCHandler: Reconnect[9]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:04.716+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[9]: FAILED! 2026-09-29T12:03:04.716+0200, [PLC1]: CPLCHandler: Reconnect[9]: Reconnect cycle end 2026-09-29T12:03:10.628+0200, [PLC2]: CPLCHandler: Reconnect[7]: Reconnect cycle begin... 2026-09-29T12:03:10.628+0200, [PLC2]: CPLCHandler: Reconnect[7]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:10.629+0200, [PLC3]: CPLCHandler: Reconnect[7]: Reconnect cycle begin... 2026-09-29T12:03:10.629+0200, [PLC3]: CPLCHandler: Reconnect[7]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:10.629+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[7]: FAILED! 2026-09-29T12:03:10.629+0200, [PLC3]: CPLCHandler: Reconnect[7]: Reconnect cycle end 2026-09-29T12:03:10.632+0200, [PLC1]: CPLCHandler: Reconnect[10]: Reconnect cycle begin... 2026-09-29T12:03:10.632+0200, [PLC1]: CPLCHandler: Reconnect[10]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:10.632+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[10]: FAILED! 2026-09-29T12:03:10.633+0200, [PLC1]: CPLCHandler: Reconnect[10]: Reconnect cycle end 2026-09-29T12:03:14.762+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[7]: FAILED! 2026-09-29T12:03:14.762+0200, [PLC2]: CPLCHandler: Reconnect[7]: Reconnect cycle end 2026-09-29T12:03:20.634+0200, [PLC1]: CPLCHandler: Reconnect[11]: Reconnect cycle begin... 2026-09-29T12:03:20.634+0200, [PLC1]: CPLCHandler: Reconnect[11]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:24.730+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[11]: FAILED! 2026-09-29T12:03:24.730+0200, [PLC1]: CPLCHandler: Reconnect[11]: Reconnect cycle end 2026-09-29T12:03:25.630+0200, [PLC2]: CPLCHandler: Reconnect[8]: Reconnect cycle begin... 2026-09-29T12:03:25.630+0200, [PLC2]: CPLCHandler: Reconnect[8]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:25.631+0200, [PLC3]: CPLCHandler: Reconnect[8]: Reconnect cycle begin... 2026-09-29T12:03:25.631+0200, [PLC3]: CPLCHandler: Reconnect[8]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:25.631+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[8]: FAILED! 2026-09-29T12:03:25.631+0200, [PLC3]: CPLCHandler: Reconnect[8]: Reconnect cycle end 2026-09-29T12:03:29.742+0200, ERROR: [PLC2]: CPLCHandler: Reconnect[8]: FAILED! 2026-09-29T12:03:29.742+0200, [PLC2]: CPLCHandler: Reconnect[8]: Reconnect cycle end 2026-09-29T12:03:30.635+0200, [PLC1]: CPLCHandler: Reconnect[12]: Reconnect cycle begin... 2026-09-29T12:03:30.635+0200, [PLC1]: CPLCHandler: Reconnect[12]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:34.717+0200, ERROR: [PLC1]: CPLCHandler: Reconnect[12]: FAILED! 2026-09-29T12:03:34.718+0200, [PLC1]: CPLCHandler: Reconnect[12]: Reconnect cycle end 2026-09-29T12:03:40.630+0200, [PLC2]: CPLCHandler: Reconnect[9]: Reconnect cycle begin... 2026-09-29T12:03:40.630+0200, [PLC2]: CPLCHandler: Reconnect[9]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:40.631+0200, [PLC3]: CPLCHandler: Reconnect[9]: Reconnect cycle begin... 2026-09-29T12:03:40.632+0200, [PLC3]: CPLCHandler: Reconnect[9]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:40.632+0200, ERROR: [PLC3]: CPLCHandler: Reconnect[9]: FAILED! 2026-09-29T12:03:40.632+0200, [PLC3]: CPLCHandler: Reconnect[9]: Reconnect cycle end 2026-09-29T12:03:40.637+0200, [PLC1]: CPLCHandler: Reconnect[13]: Reconnect cycle begin... 2026-09-29T12:03:40.637+0200, [PLC1]: CPLCHandler: Reconnect[13]: STATE_PLC_NOT_CONNECTED: tries to open channel... 2026-09-29T12:03:40.637+0200, * ERROR: [PLC1]: CPLCHandler: Reconnect[13]: FAILED! 2026-09-29T12:03:40.637+0200, [PLC1]: CPLCHandler: Reconnect[13]: Reconnect cycle end Ich kenne mich nicht so gut aus mit dem Thema OPC. Aber bis vor dem Windows Update hat es funktioniert.. Bin mit meiner Fehlersuche langsam am Ende...!
Last updated: 2026-09-29
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.