Search talk: log in time

 
<< < 1 .. 201 202 203 204 205 .. 214 > >> (Page 203 of 214)

Post by farren on How to stay in a method until something is finished. CODESYS Forge talk (Post)
I know I'm thinking about this wrong -- too many decades of procedural and event-driven programming and only a few months of PLC ST programming...... I've created a visualization with a button that when pushed calls a method. I want the method to take a pressure reading, wait one minute and then take another pressure reading. I'm looking for leaks. I'm using TON for the delay. It seems like what is happening is that the method gets called once and it takes the first reading and starts the TON. But then execution continues, leaves that method call, and the second reading never happens. I can force the method to keep running until the whole thing is done with a While loop, but I understand that is considered BAD in PLC programming. If it push the button again to call the method again, it picks up where it left off and if the timer is complete then it runs the remaining code. How do I keep that method running until it is complete with just one call without using a while loop that ties up the PLC for a minute? Thanks! -Farren
Last updated: 2025-10-31

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

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

Post by wpawago on Message view - Column "Action" CODESYS Forge talk (Post)
Hello everyone, I am with Codesys SP21 Patch5, there is an "Action" column in the Messages view, located between "Description" and "Project". Does anyone know how this column is supposed to work? I could not find any information about it in the CODESYS documentation: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_cmd_messages.html I tried using it with Static Analysis Light, for example with the unused variables check, but the Action field remains empty. I initially thought it might provide a quick fix, such as automatically deleting the unused variable, but that does not seem to be the case. I am also developing some IronPython scripts and was wondering whether it is possible to populate this column with a custom action, allowing users to trigger a predefined command directly from the Messages view. Has anyone worked with this feature before or knows if it is exposed through the scripting API?
Last updated: 2026-08-26

Post by bmatlove on Re-create CoE online window in Visu CODESYS Forge talk (Post)
Hello, I am trying to re-create the CoE online window within a Visu for purposes of checking and interacting with device parameters occasionally for maintenance purposes. To minimize reliance on using the IDE for misc interactions. Ideally, I would like to exactly mimic the CoE online window within the IDE. I assume that it uses a few tricks to minimize overhead, such as only polling registers which are within the visual scope, for example. I'm afraid it might be too much to ask for a pre-built drop-in Visu module to exist for this task. Do I have any options aside from manually re-creating all the logic to do this, relying heavily on SdoInfo function blocks? Is there a way for me to reference the device ESI file to shortcut the process of determining how many registers there are and getting the address for each?
Last updated: 2025-12-27

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

Post by kiranbsiddaiah on CodeSys OPC UA client Unable to Connect To OPC UA sever through Username and password CODESYS Forge talk (Post)
Hi, I'm using codesys v3.5 sp21 software. I have downloaded the sample opc ua client project from https://content.helpme-codesys.com/en/CODESYS%20Examples/_ex_uacapi_example.html and i tested connecting to "prosys opc ua simulation server". Through Anonymous connection it is connecting to server and can read data. Later tried to connect using username and password. First got a SECURITY_CHECKS_FAILED error, trusted the client certificate in the server and this issue resolved. Next got an INVALID_CERTIFICATE error, trusted the server certificate in the client and this issue resolved. After these two error it is not establishing the connection and not giving any error messages. UAAsyncProp: UA.AsyncProperty := (tnTaskName:='UAClientTask', usiTaskPrio:=20, udiTaskInterval:=10000); UAPolicy: UA.SecurityPolicy := (sPolicy:=UA.OpcUa_SecurityPolicy.OpcUa_SecurityPolicy_Aes128Sha256RsaOaep, eSecurity:=UA.SECURITY_MODE.SIGN_AND_ENCRYPT); //UAPolicy: UA.SecurityPolicy := (sPolicy:=UA.OpcUa_SecurityPolicy.OpcUa_SecurityPolicy_None, eSecurity:=UA.SECURITY_MODE.NONE); UAAuth: UA.UserNameAuth := (sUserName:=UAVars.sUser, sPassword:=UAVars.sPass); UAClient: UA.Client := ( itfAsyncProperty:= UAAsyncProp, //sClientName:= 'MyOPC UA client name', //default: β€˜CODESYS OPC UA Client’ sURL:= UAVars.sURL, sSession:= UAVars.sSession, itfPolicy:= UAPolicy, itfAuth:=UAAuth, udiTimeout:= 100000 //,itfNamespaceArray:= UAVars.itfNamespaceArray //optional use ); ----------------------------------------------------------------------------------------------------------------------- Please let me know if any additional information required. Thank you...
Last updated: 2026-05-07

Post by jroddball79 on PM556-TP-ETH β€” How to change IP address without overwriting the PLC program? CODESYS Forge talk (Post)
Hi, I need to change the IP address of an ABB PM556-TP-ETH using ABB Automation Builder. The situation is: I have connectivity to the PLC using the current IP (configured in Communication Settings) Online Login works fine The Network Scan does not detect the PLC IP-Configuration tool shows all fields disabled I don't have the original project source, only an empty project The PLC has no SD card inserted The Online menu does not show an Upload option When I modify the IP in the project and connect, Automation Builder shows: "The PLC configuration needs to be updated. A full PLC download is required" I'm afraid a full download will overwrite the running program. Is there any way to change only the IP address without overwriting the application? I'm also open to solutions using third-party tools, Python scripts, or any other method (DCP protocol, direct TCP communication, etc.) as long as it doesn't overwrite the running application. Thank you
Last updated: 2026-05-19

Post by konstantin on Lenze i950 Servo and WAGO PFC200 CODESYS Forge talk (Post)
Hello, In our workshop we have a Lenze i950 servo drive that has an EtherCAT bus and CiA402 compatibility. The WAGO is PFC200 750-8212 and as per documentation it has built-in license for SoftMotion Light functionality. It is not capable of supporting the full SoftMotion functionality like gearing and synchronizing. I added the EtherCAT esi files from Lenze and the EtherCAT master does see the drive, then I added a SoftMotion Light Axis object. The problem is that I can only energize the axis, I cannot execute any other commands. I set the positive and negative torque limits from the PDOs to 200% and when I try to move the axis by force it does not move back to its original position. I use the SML function blocks from the PLCOpen library and the error from the function blocks is that the op mode cannot be changed. Then I tried using a standard SoftMotion axis object and everything works fine, except the MC_Home function block. The axis moves back to its position when forced out of it. I follow this guide from Lenze - Lenze i950 CODESYS V3 What could cause this issue with the SoftMotion Light axis object? Best Regards Konstantin Kolev
Last updated: 2026-02-11

Post by pernockham on Gateway in China - "Gateway not connected" CODESYS Forge talk (Post)
Some new test. Now I cannot connect from Automation server to my gateway in any way also from my office setup with my unit directly connected to my router by dhcp. I can use the IDE and the tool "Connect Edge Gateway" and successfully connect to my server/link to my Automation server account. However no PLC will respond from Automation server "Network scan". I guess the traffic should be initiated by the gateway towards automation server? Any tips on how I can diagnose my problem? Ports to be opened etc? Thing is that this has been working previously but not now (base system has been updated from debian 12 to debian 13, but I dont know at which point it has stopped working). Setup as before. A "Codesys Control for Linux SL" running on a debian 13 installation. Any help/tips appreciated! Per Update. Found the error. Had a wrong gateway-setting. Which meant the PLC could not reach internet. Checked by "ping google.com" from the PLC.
Last updated: 2026-02-12

Post by yannickasselin on Lenze i950 Servo and WAGO PFC200 CODESYS Forge talk (Post)
In order to use SoftMotion Light, a servo drive needs to support CiA 402 operating modes: Profile Position (PP), Profile Velocity (PV) and Homing Mode (HM). https://content.helpme-codesys.com/en/CODESYS%20SoftMotion%20Light/_sm_light_requirements.html According to the Lenze i950 documentation you linked in your post, none of these modes are supported. Not even Homing Mode which explains why MC_Home does not work even with the full SoftMotion. The full SoftMotion uses Cyclic Synchronous Position Mode (CSP) but still uses Homing Mode (HM) when using MC_Home. You can monitor PDO 0x6060 (Mode of Operation). When using SoftMotion Light you will see it set to 1 (PP) for a MC_MoveAbsolute_SML and MC_MoveRelative_SML and to 3 (PV) for MC_MoveVelocity_SML and to 6 (HM) for MC_Home_SML. When using the SoftMotion instructions, it will pretty much always be set to 8 (CSP) except when using MC_Home, then it will be set to 6 (HM).
Last updated: 2026-02-13

Post by mohammedben on Fail communication between CODESYS and Fuxa SCADA via OPC UA CODESYS Forge talk (Post)
hi, When I try to establish communication between CODESYS and Fuxa SCADA via OPC UA, the connection fails, and I receive the following error: 2026-02-15T08:38:13.618Z [ERR] 'codesys' connect failure! Error: The connection may have been rejected by server, Err = (ClientTCP_transport6: socket has been disconnected by third party) 2026-02-15T08:38:13.619Z [ERR] 'codesys' try to connect error! Error: The connection may have been rejected by server, Err = (ClientTCP_transport6: socket has been disconnected by third party) 2026-02-15T08:38:13.622Z [ERR] 'codesys' connect error! undefined (1) Note that there are no problems when I establish communication with the UaExpert and OPC UA Client Simulator software. I also previously tried communicating with RapidSCADA and received the following error: Endpoint with the specified security options not found. And when I try to connect with "none" in the security policy, I get this error: BadSecureChannelClosed I have tried almost all the solutions available online and have not found a solution. I hope you can provide me with a solution that solves this problem. Thanks in advance
Last updated: 2026-02-16

Post by fpawlak on How to register own component - CMAddComponent() or CMAddComponent2() CODESYS Forge talk (Post)
Hi All, I wonder which way is correct or better? I would like to register my own component in order to use it in CMPLog. I can use CMAddComponent() or CMAddComponent2() to do it. The main difference is whether I provide udiCmpId myself or it will be generated by runtime. But I don't know which way is correct. Please look at those two examples below. I don't know if CMAddComponent2() is newer and then should be used? CMAddComponent() + providing my own udiCmpId //16#FFFF0000 for unknown myVendorId := 16#FFFF0000; myLibId := 1; myComponentId := myVendorId OR CMPID_IecCode OR myLibId; componentHandle := CMAddComponent(pszComponent:= 'myComponent', udiCmpId:= myComponentId, udiVersion:= 1, pResult:= ADR(result)); IF componentHandle <> RTS_INVALID_HANDLE AND result = CmpErrors.Errors.ERR_OK THEN LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= myComponentId, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'myComponent regidtered succsefull.' ); ELSE LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= CMPID_CmpMgr, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'Error while regidtering myComponent.'); END_IF CMAddComponent2() + udiCmpId generated by runtime componentHandle := CMAddComponent2(pszComponent:= 'myComponent2', udiVersion:= 1, udiCmpId:= ADR(myComponentId), pResult:= ADR(result)); IF componentHandle <> RTS_INVALID_HANDLE AND result = CmpErrors.Errors.ERR_OK THEN LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= myComponentId, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'myComponent2 regidtered succsefull.' ); ELSE LogAdd2( hLogger:= STD_LOGGER, udiCmpID:= CMPID_CmpMgr, udiClassID:= CmpLog.LogClass.LOG_ERROR, udiErrorID:= 0, udiInfoID:= 0, pszInfo:= 'Error while regidtering myComponent2.'); END_IF
Last updated: 2026-02-27

Post by egr99 on Modbus TCP Server connection is ESTABLISHED but all holding registers are value 0? CODESYS Forge talk (Post)
Hi there, Read the above description and experienced the same: Reading coil/discrete input/input register/holding register doesn't fill the mapped I/O variable. Any suggestions? Defined (see attachment): - Ethernet (with parameters according to the used Ethernet adapter of my Windows 11 laptop) - -Modbus TCP Client - - -LOGO231 as Modbus TCP Server - - -WS242 as Modbus TCP Server (WaveShare Modbus TCP <-> RTU converter) - - - -WS242_01 as Modbus Server, COM port (slave-id 1 RTU) - - - -WS242_03 idem (slave-id 3 RTU) - - - -WS242_11 idem (slave-id 11 RTU) Writing coil/holding register works from a mapped I/O variable works fine. Verification of Modbus traffic with WireShark: QUERY to and the RESPONSE of all slave-ids are correct Status of all defined is CONNECTED, RESPONSE_SUCCESS, RUNNING etc. Request counters increase with expected frequency. Error counter = 0. (To have all counters works fine I had to change Modbus TCP Client's parameter OptimizationON to FALSE). LOGO231 works fine: values in mapped I/O conform expectation WS242 without Modbus Server, COM port and with defined channels (for only 1 slave-id possible) works fine. PLC Settings: Update I/O while in stop: I see xBusy changing from FALSE to TRUE and vice versa. Always update variables: Enabled 1
Last updated: 2026-04-05

Post by hhermsen on Codesys v3.5.22.10 - Internal error:System.AggregateException...Value cannot be null...Parameter name: expLValue CODESYS Forge talk (Post)
I pinpointed down 4 possible causes for this compiler error: Bare/empty statements (;) standing alone inside an IF/CASE branch β€” just removed two instances. The optimizer that tries to inline/replace expression statements may choke when a statement has no actual assignment to extract. A VAR_IN_OUT parameter used directly as a FOR loop's own control variable (FOR X := X TO Y DO) General deep-nesting complexity β€” every one of my decode routines has the same shape (IF busy THEN ... FOR loop containing nested CASE/IF chains ... END_IF), and the crash trace consistently shows for loop β†’ sequence β†’ ifst β†’ sequence β†’ ifst β†’ sequence regardless of the code change. This raises the possibility that it's not one specific statement but a structural depth/complexity limit in SP22.x's compiler optimizer β€” which would mean no small code change fixes the issue. Only restructuring to reduce nesting depth, or downgrading the compiler will. Something entirely outside my library files β€” which cannot not ruled out since the exact stack trace was triggered by a Visualization object, in a totally different codebase. This means the same crash signature can come from unrelated causes. IMHO cause 3 seems the most probable one..
Last updated: 2026-07-11

Post by lzml on HTML5 visualization controls disabled on CODESYS Control for Linux SL - overlay not supported? CODESYS Forge talk (Post)
Hello, I'm developing a custom HTML5 visualization control (via the HTML5 Control Editor / Tools > Visualization Element Repository) and I'm running into what looks like a target-device limitation when trying to deploy it to CODESYS Control for Linux SL. I'd like to understand whether this is a known/expected limitation or something in my setup. Environment - CODESYS Development System: V3.5.22.0 - Target runtime: CODESYS Control for Linux SL, package version 4.15.0.0 (installed together with CODESYS Edge Gateway for Linux 4.15.0.0) - Visu system libraries (VisuElems, VisuElemsAlarm, VisuInputs, VisuNativeControl, etc.): version 4.7.0.0 - Host OS: Debian RT (minimal/base installation) - We only use WebVisu, not TargetVisu. What I did 1. Built a custom HTML5 control following the official HTML5-API-Examples pattern (.html5control.xml manifest + ElementWrapper.js + CSS), installed it successfully via the HTML5 Control Editor ("Save and Install") into the Visualization Element Repository. 2. In the Visualization Manager, enabled "Support client animations and overlay of native elements" (documented as required for HTML5 controls to work at all). 3. With the project's Device set to CODESYS Control for Linux SL, compiling/downloading fails with: "Overlay is not supported for your target visualization device." (Visualization Manager) Build stops with 1 error, download not possible. Isolating the cause - The Visualization Element Repository confirms the control is correctly installed. - With the project Device set to a Windows-based device, the HTML5 control appears and is enabled in the Toolbox as expected. - With the project Device set to CODESYS Control for Linux SL, the HTML5 control is disabled/missing from the Toolbox entirely, even though it's installed in the repository. This points to the Linux SL device description simply not declaring overlay/HTML5 support, rather than a missing package or Debian-side dependency (WebVisu itself already works fine for standard/native visualization elements on this same target). Questions 1. Does CODESYS Control for Linux SL currently support WebVisu overlay (and therefore custom HTML5 controls)? I found documentation stating overlay support for target visualizations (Windows and Linux) was added starting with CODESYS Development System V3.5.17.0, but that seems to refer to TargetVisu, and our case is WebVisu-only on a Linux runtime. 2. If not currently supported, is this on a roadmap, or is there a different Linux runtime package/edition that does support WebVisu overlay for HTML5 controls? 3. Is there any Linux-side configuration or package needed to enable this (given the check appears to happen against a static device capability declaration rather than a live server check), or is this purely a matter of the device description bundled with the current Control for Linux SL package? Thanks in advance for any pointers.
Last updated: 2026-08-05

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 mondinmr on Frustration-Fueled Feedback on Project File Management and Git Integration CODESYS Forge talk (Post)
Good day, I’m writing this message out of frustration regarding the current way project files are saved as encrypted XML and single-file format in CODESYS. I find this approach to be quite tedious for several reasons: Limited Access to Structured Text: Not being able to access Structured Text (ST) externally makes it impossible to work with alternative editors like VSCode. Tools like VSCode are incredibly responsive and feature advanced systems such as GitHub Copilot, which would be a real game-changer when working with ST IEC. While CODESYS works well for small code snippets or debugging, when the codebase grows, switching to VSCode to boost productivity becomes essential, and copy-pasting between environments is a cumbersome workaround. Poor Integration with Git: This file format also makes it very difficult to integrate effectively with Git. I have tested the internal demo, but for advanced merges, it is unusable. Without properly formatted plain text, it’s impossible to leverage the vast ecosystem of external tools around Git that allow smooth merges in heterogeneous teams. File Corruption on Network Drives: I often work from multiple locations with shared network drives. When the development environment saves a file and something goes wrong midway (which can occasionally happen when using VPNs and network drives), the entire project becomes irrecoverable. There’s no way to cancel the save process, and the development environment freezes. This has happened to me at least four times over the past two weeks, and one of those incidents cost me an entire day of work. All of this is particularly disappointing because I truly believe that the libraries, runtime, and overall work done by CODESYS are exceptional. I find it fantastic that there is a platform allowing development of PLCs and control systems using OOP, which is a huge advantage in modern control engineering. I apologize for the rant, but this issue has been extremely frustrating. Best regards.
Last updated: 2024-10-15

Post by jzhvymetal77 on IecVarAccessLibrary.IBaseTreeNode methon CODESYS Forge talk (Post)
I had this code working in a previous version of CoDeSys to read variables from a GVL that were added to the Symbol configuration. The problem now is that when I get the _IBaseTreeNode_Parent, it returns a valid interface, but none of the methods or properties work. If you monitor the _IBaseTreeNode in the watch window, it does show the correct child count. However, it fails at step 30, where the child count incorrectly returns zero. In the image, you can see that the watch window displays the correct value that the property should return. Attached is the full project code. FUNCTION_BLOCK Symbols_TO_STR VAR_INPUT i_sPath : STRING(255); i_diIndexChild : DINT; i_diIndexComponent : DINT; END_VAR VAR_OUTPUT q_diChildCount : DINT; q_diComponentCount : DINT; q_sName : STRING(255); q_sValue : STRING(255); q_sType : STRING(80); q_sErrorResult : STRING(80); END_VAR VAR uiStepCopy : UINT; uiStep : UINT; uiStepProcessCopy : UINT; uiStepProcess : UINT; _IBase : IecVarAccessLibrary.IBase; _pIIecVarAccess5 : POINTER TO IecVarAccessLibrary.IIecVarAccess5; _IIecVarAccess5 : IecVarAccessLibrary.IIecVarAccess5; _RTS_IEC_RESULT : IecVarAccessLibrary.RTS_IEC_RESULT; _udiResult : UDINT; _VariableInformationStruct : IecVarAccessLibrary.VariableInformationStruct; _IBaseTreeNode_Parent : IecVarAccessLibrary.IBaseTreeNode; _IBaseTreeNode_Child : IecVarAccessLibrary.IBaseTreeNode; _ITypeDesc_Child : IecVarAccessLibrary.ITypeDesc; _TypeDescAsUnion_Child : IecVarAccessLibrary.TypeDescAsUnion; _arIBaseTreeNode_Child : ARRAY[0..20] OF IecVarAccessLibrary.IBaseTreeNode; _TypeClass_Child : IecVarAccessLibrary.IBaseLibrary.TypeClass; _psSymbolName_Child : POINTER TO STRING; _sSymbolName_Child : STRING(255); _IBaseTreeNode_Component : REFERENCE TO IecVarAccessLibrary.IBaseTreeNode; _TypeClass_Component : IecVarAccessLibrary.IBaseLibrary.TypeClass; _ByteAddress_Component : __XWORD; _ByteOffset_Component : __XWORD; _sArrayIndexName_Component : STRING(20); _diArrayIndexCalc_Component : DINT; _diArrayIndexValue_Component: DINT; _psSymbolName_Component : POINTER TO STRING; _sSymbolName_Component : STRING(255); END_VAR uiStepCopy:=uiStep; uiStepProcessCopy:=uiStepProcess; CASE uiStep OF 10: // GET IBASE FROM CURRENT APP _IBase:= IecVarAccessLibrary.IecVarAccGetFirstInterface2(0); IF _IBase<>0 THEN uiStep:=20; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IecVarAccGetFirstInterface2'); uiStep:=9000; END_IF 20: //QueryInterface IIecVarAccess5 from IBASE _pIIecVarAccess5 := _IBase.QueryInterface(IecVarAccessLibrary.ITFID_IIecVarAccess5, ADR(_RTS_IEC_RESULT)); IF _pIIecVarAccess5<>0 AND _RTS_IEC_RESULT=0 THEN _IIecVarAccess5 := _pIIecVarAccess5^; uiStep:=30; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': QueryInterface_IIecVarAccess5'); uiStep:=9000; END_IF 30: // Get IBaseTreeNode_Parent _IBaseTreeNode_Parent := _IIecVarAccess5.VarAccGetNode3(ADR(i_sPath), ADR(_VariableInformationStruct), ADR(_RTS_IEC_RESULT)); IF _IBaseTreeNode_Parent<>0 AND _RTS_IEC_RESULT=0 THEN q_diChildCount:=_IBaseTreeNode_Parent.ChildCount; uiStep:=40; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IBaseTreeNode_Parent'); uiStep:=9000; END_IF 40: // Get IBaseTreeNod_Child IF(q_diChildCount-1>=i_diIndexChild AND i_diIndexChild >=0) THEN _IBaseTreeNode_Child := _IBaseTreeNode_Parent.GetChild(i_diIndexChild); IF _IBaseTreeNode_Child<>0 THEN uiStep:=50; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IBaseTreeNode_Parent'); uiStep:=9000; END_IF ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': i_diIndexChild OutBounds'); uiStep:=9000; END_IF
Last updated: 2025-08-20

Post by rkohser on Scripted Git clone / checkout being blocked by "Project Environment" popup CODESYS Forge talk (Post)
Hi, I am trying to build a CI/CD pipeline around our codesys projects. The only entry point if the git url and branch, as we do not put our project file under source control, so we needed to find a way to git clone from the python scripting engine. This is currently how we do this : system.commands["Git", "Clone"].execute( "ProjectLocation=" + project_dir, "ProjectName=" + project_file_name, "RemoteUrl=" + project_git_remote_url, "GitProjectStoragePath=" + project_git_local_dir, ) system.commands["Git", "Checkout", "Branch"].execute( "PrimaryProjectHandle=0", "BranchName=origin/" + project_git_branch ) This works fine, except that, depending on the environment and the project, the "Project Environment" popup gets displayed to suggest for some updates, and waits for a user interaction, even with the "--noUI" flag injected as parameter. I investigated the VersionUpdateFlags, but the problem is that the git clone is an atomic operation that clones and directly opens the generated project without the possibility to inject any updateFlags argument (only used in the ScripProjects.open() function. I also tried to simulate some keyboard events acknowledge the window from script but I did not find the right location for the SendKeys statement, I think before the git clone call is too early and after is too late. So I am wondering if there would be some other way to do that. Is there some more proper scripting api for the git add on ? Is there a global configuration of the VersionUpdateFlags that would allow the popup to be disabled outside from any project context ? Is there some way to automatically acknowledge this kind of messages in a "--noUI" mode ? What do you suggest ? Thanks for your help, Roland Edit : I managed to solve my problem by following these steps in my pipeline : - create a template of a project and opt file preconfigured not to open the popup - open this project - initialize an empty git repo - add the remote, fetch and checkout the needed branch -> no popup is displayed, hourra Edit2 : The initial question was raised on a CODESYS V3.5 SP18 Patch 2 profile. Since CODESYS 3.5.19.30 a scripting API is available for Codesys Git that allows cloning a project with the support of VersionUpdateFlags https://content.helpme-codesys.com/en/CODESYS%20Git/_git_using_scripting.html
Last updated: 2024-01-19

Post by winki on ModbusFB ClientRequest: never recovers after a single ReplyTimeout (requires full download) CODESYS Forge talk (Post)
Library: ModbusFB (CODESYS Modbus package) IDE / Runtime: CODESYS V3.5 SP___ / Control runtime ___ Target: ___ (e.g. gateway, Linux ARM64 / Debian) Slave: Modbus TCP inverter Summary I poll a Modbus TCP slave with a permanent connection: one ClientTCP (kept connected, xConnect:=TRUE) and one ClientRequestReadHoldingRegisters, triggered cyclically. Everything works fine after a fresh application download. But as soon as one single ReplyTimeout occurs (slave temporarily not answering), the request never recovers. It stays stuck and no further messages are sent, even though the TCP connection is still reported as alive. Only a full application download brings it back β€” an online change or a runtime reset is not enough / not what I want in production. State observed when stuck So the connection is alive, the request finished in ReplyTimeout, the FB is back to _state = None, but udiNumMsgSent no longer increases β€” as if a new rising edge on xExecute is no longer accepted / no longer produces a new message. My trigger logic (simplified) Each PLC cycle, in this order: If the request is fully at rest (NOT xExecute AND NOT xBusy AND NOT xDone AND NOT xError) and a read is pending, I set xExecute := TRUE. I call clientTcp() then clientRequest(rClient := clientTcp) once each, per cycle. On xDone or xError, I set xExecute := FALSE. I made sure to insert at least one full cycle with xExecute = FALSE (seen by the FB call) before re-triggering, so the falling edge is processed. Questions After a ReplyTimeout (xError = TRUE), what is the exact, correct sequence to re-trigger the same ClientRequest so a new message is actually sent again? Is a full cycle with xExecute = FALSE between two executions mandatory? Is there a known condition where, after ReplyTimeout, the ClientTCP keeps xConnected = TRUE but silently stops sending new requests (e.g. an internal request queue / _udiRequestId that gets out of sync)? udiNumMsgSent freezing at 23 while the FB shows _state = None is what puzzles me. Is the recommended pattern to drop the connection (ClientTCP.xConnect := FALSE for one cycle, then TRUE) on a request error, rather than keeping it alive? The docs state a request error does not close the connection, so I kept it open β€” but maybe that is the issue here. Could the large uiStartItem (50514) be relevant? It works right after download, so addressing seems correct, but I want to rule it out. Any guidance on the canonical recovery pattern after a request timeout would be greatly appreciated. Thanks!
Last updated: 2026-06-19

Post by jickisticki on Witch library? CODESYS Forge talk (Post)
Crafting my Fellowship Personal Statement was like weaving the threads of my aspirations into a tapestry of words. Each sentence became a brushstroke, painting a vivid portrait of my journey and ambitions. Beyond being just a document, it became a mirror reflecting the depth of my experiences. Like a conductor guiding an orchestra, my personal statement was composed to resonate with my unique voice. In the realm of specialized opportunities, this statement serves as a compass, guiding me toward the next chapter of my professional growth. With each word, I felt the guidance of mentors shaping my story into an eloquent narrative.
Last updated: 2023-08-17

Post by jinlee on Dynamic I/Os Mapping CODESYS Forge talk (Post)
Hi guys, Recently, I am working at the Dynamic I/Os mapping feature in Ecockpit or Codesys v3.5. I have been trying the libraries. However, it looks like it will not work as I wanted. I want to build the PLC which can detect all the I/Os itself and from there, I can do something on these channels. For example, the current setup is one digital input card, one digital output card and one analogue input card. Then, I want to add one more card into the setup e.g. one more digital input. Then, wago screen can detect this and we can assign them to tasks for example to control digital output. May I know is it possible ? Kind regards
Last updated: 2023-08-18

Post by janderson on OPC UA Server limitations, large array crashes runtime CODESYS Forge talk (Post)
What are the limitations of the OPC UA Server? I am trying to get data off my PLC that is acquired at high rates (~50k samples/s) so I am storing them in arrays and trying to get the arrays off the PLC. When I attempt to read a ~200k element array through OPC UA the server and runtime crashes (requiring tools -> update linux arm64 -> start runtime). Is there a better way to get highspeed data off? The ACDatalog library seems a bit irritating to use so I would prefer to go through OPC UA.
Last updated: 2023-08-23

<< < 1 .. 201 202 203 204 205 .. 214 > >> (Page 203 of 214)

Showing results of 5340

Sort by relevance or date