Search talk: and not

 
<< < 1 .. 108 109 110 111 112 .. 208 > >> (Page 110 of 208)

Post by dmb-fan on Hilscher cards CoDeSys Control RTE CODESYS Forge talk (Post)
You have to know this (and the crap help site don't tell you): - Changes in CODESYSControl_User.cfg, not in CODESYSControl.cfg (crash of PLC/Win possible) - Redundancy is important for Profibus, also if you don't use it because the libarys depending on it - The no. after the device is the slot numer for PLC device config [ComponentManager] Component.1=CmpDrvSchedulerAMP Component.2=CmpCodeMeter Component.3=CmpHilscherCIFX Component.4=CmpNetXCanDlDrv ; this is not in help, but thats makes the internal driver load Component.5=CmpRedundancy Component.6=CmpRedundancyConnectionIP [CmpHilscherCIFX] TraceLevel=0xFFFFFFFF InterruptMode=0 DMAMode=1 ;DynamicFirmware=1 BootloaderFile=$Firmware$/HilscherCIFX/Firmware/NETX100-BSL.bin FirmwareFilePath=$Firmware$/HilscherCIFX/Firmware ;non-dynamic declaration of FW-files: ; 100 !!! CIFIX50 cards but files called 100 !!! Device.0.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin Device.0.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxcom.nxf Device.1.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin Device.1.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxdpm.nxf ;;;; And good luck, you will need it ! ;;;;
Last updated: 2026-10-23

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

Post by timvh on USB Game Controller with Raspberry Pi CODESYS Forge talk (Post)
I'm not sure it will work, but you could try it with the CmpCharDevice library. You could create a function block that looks something like this: As input for the filename, you have to use your Linux device, e.g.: '/dev/input/event0' '/dev/input/by-path/platform-button@23-event' Off course you must also pass the pointer to the memory where the data can be written to and the size (count in number of bytes) of the buffer. FUNCTION_BLOCK FB_CharDevice VAR_INPUT szFilename: STRING; pbyBuffer : POINTER TO BYTE; udCount : UDINT; END_VAR VAR_OUTPUT iState : INT := 0; nrBytesRead : DINT; END_VAR VAR xInit : BOOL := TRUE; dFlags: DINT := CmpCharDevice.ACCESS_MODE.O_RDONLY + DINT#4000; // see details for flags: http://linux.die.net/man/2/open, + DINT#4000 is for non-blocking hDevice: CmpCharDevice.CmpCharDevice_Implementation.RTS_IEC_HANDLE := -1; Result : CmpCharDevice.CmpCharDevice_Implementation.RTS_IEC_RESULT; END_VAR IF xInit THEN hDevice := CmpCharDevice.CDOpen(szFilename, dFlags ,Result); // if it would not succeed, the result is -1 (Invalid handle) IF hDevice <> 16#FFFFFFFF AND Result = 0 THEN iState := 5; END_IF xInit := FALSE; END_IF IF iState = 5 THEN nrBytesRead := CmpCharDevice.CDRead(hDevice, pbyBuffer, udCount, Result); ELSE nrBytesRead := 0; END_IF Make sure you close the connection properly, maybe by overwriting the default FB_Exit method of the FB: // Clean up device IF hDevice <> 16#FFFFFFFF THEN __TRY CmpCharDevice.CDClose(hDevice,Result); __CATCH ; __ENDTRY iState := 0; END_IF
Last updated: 2026-05-01

Post by simotion on Online view : code is scanned CODESYS Forge talk (Post)
If I do online monitoring of code in f.i. a function block, I cannot see if the function block is called or not. In software from other vendors you normally have an indication if the online code you are looking on is scanned at that moment or not. Is there a way in Codesys to determine in the online view if (parts) of the code are scanned or not? Thanks
Last updated: 2023-10-23

Post by pernockham on Persistence Manager: Config File not found? CODESYS Forge talk (Post)
Thats what I did. The files existed originally, but when I had problems logging in as described I deleted those files (if they in some way had been corrupted causing my problems to login?). After that I have not managed to get the system to re-created these def-files. I manually created the folder structure (from CODESYS file browser) but this has not helped.
Last updated: 2024-11-02

Post by ben1 on How to write multiple coils (Modbus FC15) CODESYS Forge talk (Post)
When you say it does not work, does nothing happen or do you get an error? I have not used this function in codesys but from my past experience with Modbus I believe the coils need to be contiguous, which may be why yours is failing? Have you tried using Write Registers (16) to do the job? Or is their data in-between you do not want to edit in the transaction?
Last updated: 2024-11-17

Post by micik on CAA File, how to check whether file exists or not CODESYS Forge talk (Post)
Hello, what would be the most efficient way to check whether the file exists or not. I don't want to use file.Open function, it seems like rather inefficiet operaton. I considered GetAttribute function, but this function doesn't accept filename (with path) as an input. Basically I need to check first time when program is loaded to the runtime i.e. when application is started for the first time, whether a file exists on the specific location or not.
Last updated: 2024-05-16

Post by eschwellinger on cannot connect ot linux runtime: device does not answer the scanrequest CODESYS Forge talk (Post)
for me looks like you do not use latest CODESYS IDE version, there is a known bug if you use a newer runtime your are forced to use a more complex password as user for the login. The old IDE version does not show this problem on login. so either update CODESYS or use a pw which meet the complexity requirements.
Last updated: 2026-06-11

Post by pra83 on CODESYS SoftRedundancy β€” Both PLCs stay standalone after network interruption β€” Auto recovery not working CODESYS Forge talk (Post)
Hello, We are facing a critical issue with CODESYS SoftRedundancy that we have been unable to resolve despite extensive troubleshooting. HARDWARE: 2Γ— HP EliteDesk 800 G9 SFF Intel Core i7-14700 (20 cores) 16GB RAM, 512GB NVMe SSD Windows 11 IoT Enterprise LTSC 2024 NIC1: Built-in Intel GbE NIC2: Intel I210-T1 PCIe (NIC team) SOFTWARE: CODESYS Control Win V3 - x64 Version 3.5.22.10 CODESYS SoftRedundancy SL Server 1 IP: 172.10.10.101 (PLC1 β€” Active) Server 2 IP: 172.10.10.102 (PLC2 β€” Standby) CURRENT CODESYSControl.cfg: [CmpRedundancy] BootupWaitTime=120000 StandbyWaitTime=12100 SynchronousTimeout=12100 [CmpSchedule] ProcessorLoad.Maximum=80 WatchdogTime=12000 WatchdogTimeoutAction=0 CONFIRMED WORKING: PLC1/PLC2 identification configured via IDE Connection IP configured via IDE AutoSync enabled and written via IDE Normal Active/Standby operation working Server 2 auto-promotes when Server 1 completely fails PROBLEM DESCRIPTION: When NIC1 cable is removed from Server 1 β€” both servers go to standalone mode. When NIC1 cable is reconnected β€” both servers remain in standalone indefinitely. Neither server auto-recovers to Active/Standby without manual CODESYS service restart. AutoSync fires (!!! Autosync !!! visible in log) but recovery does not complete. Tested with direct cable (no NIC team) β€” same result. Confirmed not a hardware or NIC teaming issue. KEY LOG MESSAGES: "Timeout: No sync message RMSG_StartCycle (5) from master: Standalone" "Socket on other side closed gracefully 0" "Standby PLC: Open acyclic work socket failed" "Connection broke after 11806ms. Check BootupWaitTime." Autosync(fires but does not complete recovery) PCAP ANALYSIS (Wireshark): CODESYS sync stops completely at T+3s Server 1 sends TCP FIN on ports 1206 and 1208 at T+5s No CODESYS redundancy traffic for remaining 24 seconds Both servers stay standalone indefinitely WHAT WE HAVE TRIED: StandbyWaitTime = 12100ms SynchronousTimeout = 12100ms WatchdogTime = 12000ms (less than StandbyWaitTime) AutoSync enabled NIC2 set as Standby adapter Disabled Windows Network Discovery Direct cable test β€” rules out NIC hardware QUESTION: Per official CODESYS documentation: "No automatic Reconnect is included in the functional scope of the redundancy components. You can program the triggering of a reconnect." Is RDCY.Synchronize() the correct function to add to our application for automatic recovery after both PLCs go standalone? What is preventing auto-recovery when AutoSync is enabled and PlcIdent is correctly set? Thank you for your support.
Last updated: 2026-05-02

Post by adaml on ScriptEngine - execute "Export -> Bootproject and firmware (SD Card)" from python CODESYS Forge talk (Post)
Hi everybody, recently I was checking how many time consuming manual tasks I can perform with python scripts through ScriptEngine. I have in the project many devices and currently I export bootprojects for them by right clicking on Application, then go Export -> Bootproject and firmware (SD Card) and then point folder where files should be exported. It's fine if project has few devices, but I have some of them with over 30 devices and manual clicking like that is very time consuming. How can I do it with python script? So far I found "create_boot_application" method from Application object (taken by projects.primary.find('Application', True)) but it only generates .app and .crc file instead of full structure to store on SD card (FIRMWARE, USERDATA, SDCARD.INI, Version, Version.txt.sig). Should I use some method to control user interface? Best regards, Adam
Last updated: 2024-07-05

Post by dkugler on build (F11) / generate code using a python script file CODESYS Forge talk (Post)
thank you very much! I found the generate_code methode, but struggled with the primary and active_application. With this expample I will be able to play around. If the code generation takes a minute or more I often switch to other programs and don't notify the process is finished. So now I'll get an alert and will switch back immediately. My next little project will be, to beep different if there are errors and a seperate script to do the download incl. the user management data base without stopping at the dialogs asking for onlinechange/complete download and overwriting an existing database and as goody, play a beep/sound again.
Last updated: 2024-04-11

Post by kthomas on Cant login to Rpi4 but can see it in codesys communications settings. CODESYS Forge talk (Post)
I have been struggling for over a week to program my rapspberry pi 4 with codesys. I purchased the license. I installed the runtime and the gateway, and I can see the pi in the communication settings. But cannot log in. I have checked the status of the pi with sudo systemctl status codesyscontrol and it is running. I have enabled traffic to and from the pi with iptables and checked the logs and all looks good. I just cannot connect through the codesys ide. Can anyone help me before I lose my mind?
Last updated: 2024-06-22

Post by kthomas on Cant login to Rpi4 but can see it in codesys communications settings. CODESYS Forge talk (Post)
I have been struggling for over a week to program my rapspberry pi 4 with codesys. I purchased the license. I installed the runtime and the gateway, and I can see the pi in the communication settings. But cannot log in. I have checked the status of the pi with sudo systemctl status codesyscontrol and it is running. I have enabled traffic to and from the pi with iptables and checked the logs and all looks good. I just cannot connect through the codesys ide. Can anyone help me before I lose my mind?
Last updated: 2024-06-22

Post by rafael on Wbm/runtime and visualization login CODESYS Forge talk (Post)
Hello everyone, I’m trying to understand if it is this way or I can change it. I’m making a PLC code and visualization screens, the ideia is to operate via webvisu some controls. So i made a code, made some screens and when i try it in my web browser, first it asks me to insert te user and password of the wbm/runtime of the plc (user: admin, password: wago by default), then i can acess my screens but I have to login again with the user and password that i created in the visualization user managment. My question is: is there a way to disable this first login to the visualization screens (webvisu)? Or create another user/password for this first screen? I have a PFC200 and a Edge Controller, both are working the same way. Thanks in advance Thanks
Last updated: 2024-06-25

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 wistaro on Hardware compatibility with Linux RealTime PLC CODESYS Forge talk (Post)
Hello, I am currently using Codesys Control RTE Softmotion V3 to control my servo-drives in CAN, EtherCAT and PROFINET IRT. I am using a PC with Windows 10 with the following boards: - PEAK-CAN PCIe board (for CAN and Softmotion); - Hilscher CifX with firmware 3.X and SysDrv3s driver (for PROFINET IRT); - Realteak standard NIC (for EtherCAT). I would like to switch to Linux (Debian), because this computer is old, slow, and outdated (Windows 11 is far from being compatible with this computer). Before doing this, I would like to be sure of the compatility between my 3 boards and Codesys Control Linux SL. Otherwize, I will stay on Windows 10 and use it in an isolated environnement. Thanks for your advices. Regards,
Last updated: 2026-06-15

Post by arwie on Frustration-Fueled Feedback on Project File Management and Git Integration CODESYS Forge talk (Post)
An other approach is to split the application into a hard real-time part running in CODESYS and the business logic running in Python asyncio. The business logic part is usually bigger and changes more often. As Python code is pure text, vscode and git are your friends. A performance example on YouTube (CODESYS SoftMotion + Python): https://www.youtube.com/watch?v=BT-L0H_4Aic Docs and code on GitHub: https://github.com/arwie/controlOS_demo/blob/main/docs/codesys_python_link.md Real-time variable exchange between a CODESYS application and a Python application running in parallel, using POSIX shared memory.
Last updated: 2026-06-21

Post by pernockham on Unable to deploy "Control for Linux SL 4.18.0.0" CODESYS Forge talk (Post)
And the strange thing for me is that if i connect with an older IDE version (where I only have 4.17.0.0 installed) I can see both "CODESYS Control for Linux SL" and "CODESYS Edge Gateway for linux". And that I loose (both presence and possibility to update) the first option (Control SL) if i let the updater install "Control for linux SL" vers. 4.18.0.0 or later. (Note that runtime 4.17.0.0 is installed and it is running and I can login to that system, but no apparent option available to update it to 4.19.0.0). Attached print screen where I connected the "deploy sl tool" to the same system, where the upper (IDE) one has 4.19.0.0 installed, while the lower one has 4.17.0.0 installed..
Last updated: 2026-02-17

Post by alex-n on Problem with keeping up the distance between two axes CODESYS Forge talk (Post)
Hello. I have a task to synchronize the movement of two axes and maintain the distance between them. First axe makes equal steps by trigger using MC_MoveRelative function. The second one is standstill and after another signal should catch up the first one from its position to a specified distance and keep it. I've tried to use MC_Phasing and mostly it works. Second axis catches up the first and starts make step with it. But in one moment this axis can crash into the first and there is no clear connection as to why this is happening. It can work correct for a day or for a week.
Last updated: 2026-06-04

Post by anlebr on Codesys Communication Manger - Required information model version exists in the model repository but is not found CODESYS Forge talk (Post)
Hi I am trying use the Codesys Communication Manager to set up an Opc ua server with a custom information model. As a start I am using the Boiler model available on Opc foundations github page. I am testing with a Wago CC100 and using Codesys V3.5 SP19 Patch 6. I get the following error: Communication Manager [Device: PLC Logic: Application]: The information model http://opcfoundation.org/UA/ is required by http://opcfoundation.org/UA/Boiler/ with a minimal publication date from 15/12/2023 but the device has only a model from 15/09/2021 installed. Probably the information model from 15/09/2021 is missing in the information model repository. The error message does not make sense to me. Should it not be β€œProbably the information model from 15/12/2023 is missing in the information model repository”? Anyway, both versions are available in the repository. How can I solve this?
Last updated: 2024-03-13

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 gmau on Station 'xyz': AR aborted by device (alarm.ind): AR consumer DHT expired CODESYS Forge talk (Post)
Hello, I am writing to You with the problem of Profinet communication in my Codesys V2.5 SP21 project working on Codesys Control RTE V3 x64 device. I have implemented multiple Profinet devices in the network, the Profinet itself is configured properly, based on the hardware and software parameters of the industrial PC (Windows 10 IoT). My Profinet network contains such Profinet devices as a robot, IO-Link master with some devices on it, IO modules, safety, vision sensor (the configuration is attached to this topic). Once every few hours, sometimes more often, sometimes not even once a day, the error show up at one, two or a few random modules at the same time, every one is the same: "Station 'xyz': AR aborted by device (alarm.ind): AR consumer DHT expired". The communication is then lost with that module, but it is up instantly. It is not such a problem when it comes to regular IOs, but with safety or rotation table, it causes errors and machine stops. I have tried multiple solution based on any forum suggestions, manuals, etc., but it is still happening. Mabye when I turned on the Watchdog for this communication, it is happening less times, but still, I could not turning up the Watchdog parameters at the expense of cycle time of the process. The same is with Send Clock, Reduction and DHT. I have one of the ethernet port on the PC configured with CmpEt1000Drv driver. The card itself is Intel Ethernet Connection I219-LM. These devices are connected to one EKI-2728-NI-A Profinet switch (it was changed from the standard non Profinet one, but still nothing has changed). As I said ealier, I am attaching all the configurations for each device and the communication itself - if any of You had the same problems or have any ideas what could be the cause, I would be much gratefull for any help. For now I am out of ideas, if You have any additional question, please ask. Sincerely, PF
Last updated: 2025-09-04

Post by wildcard on Modbus Client Request Not Processed CODESYS Forge talk (Post)
Hi, does anyone has a solution for this issue. I've the same problem. I've implemented a very simple client based on the Modbus Examples and connected the soft PLC to a Modbus Simulator. PROGRAM ModbusClient VAR initDone : BOOL := FALSE; errorID : ModbusFB.Error; client : ModbusFB.ClientTCP; timeout : UDINT := 500000; replyTimeout : UDINT := 200000; aUINT : ARRAY [0..8] OF UINT; clientRequestReadHoldingRegisters : ModbusFB.ClientRequestReadHoldingRegisters; clientRequestsCnt : UINT := 0; clientRequestsProcessCnt : UINT := 0; ipAddress : ARRAY[0..3] OF BYTE := [10,54,0,72]; END_VAR IF NOT initDone THEN initDone := TRUE; client(aIPaddr:=ipAddress, udiLogOptions:=ModbusFB.LoggingOptions.All); client(xConnect:=TRUE, ); clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout); clientRequestReadHoldingRegisters.xExecute := TRUE; clientRequestsCnt := 0; END_IF clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout, xExecute := TRUE); IF clientRequestReadHoldingRegisters.xError THEN clientRequestsCnt := clientRequestsCnt +1 ; errorID := clientRequestReadHoldingRegisters.eErrorID; END_IF clientRequestReadHoldingRegisters(rClient:=client, udiTimeOut:=timeout, uiUnitId:=1, uiStartItem:=0, uiQuantity:=4, pData:=ADR(aUINT[0]), udiReplyTimeout:=replyTimeout, xExecute := NOT clientRequestReadHoldingRegisters.xExecute); When the system is running I do get the following on the logs: 2024-05-13T10:18:07.443Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= Client.RequestProcessed ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2070 state=Error 2024-05-13T10:18:07.443Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2070 change state Error -> None timestamp=63843421226 2024-05-13T10:18:08.444Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2071 change state None -> Init timestamp=63844421420 2024-05-13T10:18:09.444Z: Cmp=MODBUS lib, Class=1, Error=0, Info=0, pszInfo= ClientRequest,16#0164ADC561A0 unitId=1 fc=ReadHoldingRegisters id=2071 change state Init -> Error timestamp=63845421675 But the errorID is jumping between OK and RequestNotProcessed. Any help is very appreciated which gives me a hint what I'm doing wrong. Thanks
Last updated: 2024-05-13

<< < 1 .. 108 109 110 111 112 .. 208 > >> (Page 110 of 208)

Showing results of 5179

Sort by relevance or date