Search talk: Communication task

 
<< < 1 .. 27 28 29 30 31 > >> (Page 29 of 31)

Post by rohan on Child Application Alarm CODESYS Forge talk (Post)
Hi All, I'm trying to develop a multi-application project that allows me to switch between applications. I currently have a parent application and several child applications, as this is the only way for them to share CAN/Ethernet communication. I've noticed that I am only able to create an Alarm Configuration for the parent application. But the children application do not seem to be displaying alarms on the Alarm Table in the visualisation for when an alarm is raised. Does anyone know of a fix, solution or a way around this? I am utilising Codesys v3.5 SP16 Patch 5 64Bit
Last updated: 2024-06-21

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 msegon on OPC UA Client failed to connect CODESYS Forge talk (Post)
Hi everyone, I would appreciate your help with a problem I've been working on for a few days but haven't been able to resolve. I'm trying to read data from Tridium Niagara 4.15 OPC UA Server, but I get the error BadCertificateInvalid. As far as I understand, you need to add a CA certificate somewhere to establish a secure connection, but I don't know where. 2025-10-27T09:06:43.247Z, 0x0000008d, 4, 0, 0, * ERROR: OpcUa_Channel_BeginConnect: Cannot create secure channel without certificates! 2025-10-27T09:06:43.247Z, 0x00001090, 4, 0, 0, * ERROR: Datasource: Error Failed (268468242) in state Connecting I tried communicating without encryption, but it doesn't find the point. Has anyone managed to establish encrypted OPC UA communication?
Last updated: 2025-10-28

Post by timvh on CPU + EtherCAT redundancy CODESYS Forge talk (Post)
It works well with two Wago 750-8210's. I helped a few customers setting this up. But it should work with any device which can control EtherCAT I/O, is real-time and has sufficient network interfaces. Two network adapters can be used to create a redundant EtherCAT network (you need 2 additional switches for this). The other network adapters can be used to interconnect the 2 PLC's (synchronization). We noticed that if you exchange variable lists that there could be some issues if you have long lists. So what we did is use a SoftPLC on a server that contains all the settings which continuously sends network packages (GVL sender) and which is received by both PLC's (network receiver). Switching over is done in milliseconds. The bus doesn't notice the change-over. EtherCAT communication works flawlessly.
Last updated: 2026-01-30

Post by yannickasselin on Question about Demo License limitations for Modbus TCP communication and Fieldbus Instances CODESYS Forge talk (Post)
As far as I know, there is no other limitations than the 2 hours limit. The demo mode should be plenty enough for testing purposes. Regarding instances. In the device tree, 1 master = 1 instance, no matter how many slaves the master is communicating with. But it is also possible that your Codesys runtime act as a slave. In this case, each slave in the device tree is one instance. You can also use the license metric tool in the IDE. This will tell you exactly how many instances you have in your project. https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_edt_device_licensed_software_metrics.html
Last updated: 2026-02-28

Post by mariussandu on OPC-UA CODESYS Forge talk (Post)
Hello, I am experiencing an intermittent OPC UA server issue on CODESYS Control for Raspberry Pi SL 4.21.0.0. Runtime information: codesyscontrol 4.21.0.0 Raspberry Pi 4 Model B Rev 1.1 - 4Gb OPC UA Server: CmpOPCUAServer 3.5.22.x Server IP: 192.168.0.110 OPC UA endpoint: opc.tcp://192.168.0.110:4840 The main OPC UA client is Node-RED running on 192.168.0.111. This has an active subscription with some tags and also some write functions active. The system normally works correctly for a period, but at some time the OPC UA communication stopped. Node-RED started reconnecting continuously but could not reconnect. I also tried connecting using UaExpert, but UaExpert returned: BadTimeout At the same time, the PLC application itself was still running. Before restarting CODESYS, I captured the TCP connections. The OPC UA server was still listening: tcp 11 0 192.168.0.110:4840 0.0.0.0:* LISTEN However, there were many connections from the Node-RED client stuck in CLOSE_WAIT: 192.168.0.110:4840 192.168.0.111:45008 CLOSE_WAIT 192.168.0.110:4840 192.168.0.111:53678 CLOSE_WAIT 192.168.0.110:4840 192.168.0.111:44032 CLOSE_WAIT 192.168.0.110:4840 192.168.0.111:36612 CLOSE_WAIT 192.168.0.110:4840 192.168.0.111:45012 CLOSE_WAIT 192.168.0.110:4840 192.168.0.111:36592 CLOSE_WAIT ... Some of these sockets also had data remaining in Recv-Q, for example: Recv-Q = 61 Recv-Q = 121 There were roughly 15–20 OPC UA connections in CLOSE_WAIT. Restarting only the CODESYS runtime immediately restored OPC UA communication. After restart: LISTEN 0 10 192.168.0.110:4840 and both Node-RED and UaExpert can connect normally again. There are no obvious OPC UA errors during startup or in log. On RPI 2 I had a memory leak regarding OPCUA so I had to upgrade to RPI4. What can I do in this case? Thank you!
Last updated: 2026-08-26

Post by thierry-b on Blocking UDP ports 1740–1743 and 22350 to disable CODESYS network scan (startup + device discovery) CODESYS Forge talk (Post)
Hello, I am currently investigating the network behavior of CODESYS 3.5 (IDE + Gateway) in environments where the engineering workstation is connected to a very large /16 network. In such networks, the automatic device scan performed at IDE startup (and the manual “Scan Network” device discovery) can cause significant delays or freezes, due to the broadcast‑based discovery mechanism. After analyzing the traffic with Wireshark, I identified that the IDE uses the following UDP ports: 1740 – broadcast discovery 1741 – handshake / responses 1742 – fallback discovery 1743 – fallback handshake 22350 – additional runtime / gateway communication (WAGO, debug, extended discovery) To prevent the IDE from scanning the large /16 network, I tested blocking these ports in both directions (IN/OUT) on the network interface connected to the /16 segment (while keeping them open on the OT /24 network interface). Result: When UDP 1740, 1741, 1742 and 1743 are blocked on the IT interface, the IDE no longer sends any discovery traffic on that interface. The IDE still works normally on the OT interface (device discovery, online mode, download, etc.). Blocking port 22350 does not seem required to stop the scan, but I included it for completeness. My question: => Can you confirm that blocking UDP ports 1740, 1741, 1742, 1743 (and optionally 22350) on a specific network interface is a valid and supported way to completely disable the CODESYS IDE network scan on that interface (both at startup and during manual device discovery)? I am not trying to block communication with controllers on the OT network — only to prevent the IDE from scanning the large /16 IT network. Any confirmation or additional technical details about the discovery mechanism would be greatly appreciated. Thank you.
Last updated: 2026-03-31

Post by drbuzz on Communication Error (#0) for IFM controller CODESYS Forge talk (Post)
Hi Folks, Every time I use an IFM controller I always seem to run into a problem connecting to it. I get the Communications Error (#0). So I thought I would share some tips and tricks. Once the CANfox Cable (EC2112) cable driver is installed, you can use the yellow app in the sys tray to blink the lights on the cable. Confirm the cable works in the IFM maintenance software by connecting to the controller and reading the information on it. Make sure to download an OS into the controller (the light will go from a fast blink to solid green). In Codesys V2.3, the communication settings for the CR0401 is 250kBaud by default and Node ID 127. What got me, was I needed to reboot the computer after the cable driver install. Also if your application has canbus settings in it which are changed from default, after the controller is power cycled, the new Node ID and Baud will be in effect. I made a handy guide because too much time has been wasted on this. Programming IFM CR0401 Serial/Can Programming Cable • Connect IFM EC2112 CanFox programming cable with connector adapter. • Make sure cable is linked to VM (if using VM). • Install drivers for cable if not installed. o Download from IFM EC2112 site. https://www.ifm.com/ca/en/product/EC2112 • Once Installed, reboot computer. • In system tray, there should be a yellow icon that you can open and check on programming cable. Select the cable in the list and flash the lights to confirm it is working. Maintenance Software • Install IFM Maintenance Tool Software. o Download from IFM Site. https://www.ifm.com/ca/en/download/eco100_MaintenanceTool • Open IFM Maintenance software • Select Basic System • Select CAN cable • It will tell you if you don’t have a cable connected. • Use Wizard if needed. • Read Channel Parameter on the Settings page, or get Identity in the System Information > Identity. • Default Node is 127 on a new unit. Baud is 250kBaud (bits/sec) • Controller information should populate. • Controller green light should be blinking at 5hz (meaning OK but no OS, just bootloader). • Click Software > Load. • Open the OS file. Should match Codesys version selection (for CR0401 this is version 3). o Download OS file from IFM Website. https://www.ifm.com/ca/en/product/CR0401 o It is located at the top of the download under “software for CR0401”. o Select the file and load it… this will take a minute. • Once completed the unit should now have a solid green light o Solid green means the controller has an OS but no application is running. Codesys V2.3 Application • Codesys needs to be downloaded and installed from the IFM website as it has the IFM libraries and license to use the software. o Download from the IFM CR0401 page. o https://www.ifm.com/ca/en/product/CR0401 • Create new application with the correct IFM controller or Open Codesys application. • Keep in mind that the PLC Configuration on the Resources tab can be changed for the CAN communication interface… so changes to node and baud will take effect after the first download and reboot of the controller. • Go to “Online” in the top menu and change “Communication Parameters” o The Local dropdown shows the last configuration used. All other interfaces will show below it and need to be updated when changed or used. o Confirm Node ID is 127 for the first download.  The NodeID will change to whatever the program has after (in my case 125).  Node Send Offset should be default at 1536  Node Recv Offset should be default at 1408  Can bus Baudrate should be 250 kbaud.  Yes to Motorola Byte Order  Block Transfer should be false and note used (60 is default setting).  Can Card Driver should match the systray item which is Sie_USB. • If the system populated the other one, just update and relay the communication parameters. The software will usually bring up the available cable and driver. • Go to “Online” and Login to download. o Press Yes to Download Application. I hope this helps!
Last updated: 2025-03-21

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 smeitink on Timeout Error in Modbus Communication with WAGO PFC200 and iEM2050 Meter using 750-652 Module CODESYS Forge talk (Post)
Hi all, I'm looking for help with an issue I've come across while trying to facilitate Modbus communication between a WAGO PFC200 PLC using a 750-652 communication module and an iEM2050 Series Single Phase Energy Meter. I believe to have everything wired and setup correcty, but I keep running into a "Error time out" message, and by now I don't really know what else to try. My setup is as follows: A PFC200 Wago PLC, which has 2 750-652 Serial Interfaces extension modules connected to its field bus. I'm using one of these to talk to a Schneider iEM2050 - kWh-meter over modbus. I have connected terminal 23 (A) of the iEM2050 to connector 6 (A) on the 750-652. I have connected terminal 24 (B) of the iEM2050 to connector 2 (B) of the 750-652. I'm using 200mm of twisted together wires to connected them both, and I have placed a 120 ohm resistor between A and B at both ends. I've attached relevant pinout images to this post. I then wrote a simple program that configures the Mobus port, as per the datasheet of the iEM2050. You can find an image of the relavent page attached to this post too. This is my program: PROGRAM PLC_PRG VAR Master: FbMbMasterSerial; xIsConnected: BOOL; xError: BOOL; iIndex: INT := 1; xTrigger: BOOL; utQuery : typMbQuery := ( bUnitId := 1, // The Modbus unit or slave address bFunctionCode := 4, // Function code for reading input registers uiReadAddress := 1829, // adress for the Power on off counter uiReadQuantity := 1 // Quantity of registers to read ); iStep: INT; oStatusModbus: WagoSysErrorBase.FbResult; utResponseModbus: typMbResponse; xConnect: BOOL := FALSE; delayTimer: TON; END_VAR Master( xConnect:= xConnect, I_Port:= _750_652_24_1, udiBaudrate:= 9600, usiDataBits:= 8, eParity:= WagoTypesCom.eTTYParity.Even, eStopBits:= WagoTypesCom.eTTYStopBits.One, eHandshake:= WagoTypesCom.eTTYHandshake.None, ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex, xIsConnected=> xIsConnected, xError=> xError, oStatus=> oStatusModbus, eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU, tTimeOut:= T#5S, utQuery:= utQuery, xTrigger:= xTrigger, utResponse:= utResponseModbus); delayTimer(IN := TRUE, PT := T#3S); // Use the Q output of the timer to set xConnect after the delay IF delayTimer.Q THEN xConnect := TRUE; END_IF CASE iStep OF 0: //Wacht totdat de master de poort geopend heeft IF xIsConnected THEN iStep := 1; END_IF 1: //Stuur request naar de slave xTrigger := TRUE; iStep := 2; 2: //Wacht totdat de master klaar is met het afhandelen van de request IF NOT xTrigger THEN iStep := 3; END_IF END_CASE The TON delay before opening the port is due to a an error I encountered when opening it straight away. This seems to be a bug, as described here. However, the TON solved that particular issue. I tried reading multiple registers, but like I said, I still always end up with the "Error time out". What else can I test or try at this point?
Last updated: 2024-02-24

Post by kuegerls on PROFINET Controller SL: WRREC remains BUSY forever, no DCE/RPC packets transmitted (RevPi Connect 5 + NORD SK205E) CODESYS Forge talk (Post)
Hello , I am currently evaluating the CODESYS PROFINET Controller SL on a Revolution Pi Connect 5 and have encountered a problem with acyclic PROFINET Record Access (WRREC/RDREC). System Hardware: Revolution Pi Connect 5 Runtime: CODESYS Control 4.16.0.0 (SDK 3.5.21.10) Development System: CODESYS V3.5 SP21 (64-bit) CommFB: 3.5.17.10 ProfinetCommon: 4.6.0.0 PROFINET Controller Device: PN-Controller 4.6.0.0 PROFINET Device: NORD DRIVESYSTEMS SK205E with SK TU4-PNT GSDML: GSDML-V2.46-NORDDRIVESYSTEMS-PNT-20251016.xml Network The PROFINET network is completely separated from the office network. RevPi: eth0 → Office network eth1 → PROFINET wlan0 → Visualization The PN Controller is configured to use eth1. IP configuration: RevPi (eth1): 192.168.100.1/24 NORD Drive: 192.168.100.3 Connection is established successfully. Current Status The PN Controller reports: Controller Status = Run Online = TRUE IP Active = TRUE Connections = 1 Cyclic PROFINET IO communication works correctly. Problem I am trying to access PKW parameters via WRREC (Record Index 100). The request buffer contains: 01 14 00 04 92 00 00 00 00 00 00 which corresponds to Reference = 0x01 Request = Read Axis = 0 Parameter = 170 + 1000 Subindex = 0 Value = 0 The WRREC call is fbWRREC( REQ := xWrReq, ID := ConnectionID, INDEX := 100, LEN := 11, RECORD := ADR(TxBuffer) ); REQ is pulsed for one PLC cycle only. Observed Behaviour WRREC enters BUSY state and never finishes. Observed values: BUSY = TRUE DONE = FALSE ERROR = FALSE STATUS = 16#FFFFFFFF indefinitely. Packet Capture A Wireshark capture was taken on the PROFINET network. Observed traffic: PROFINET RT LLDP DCP Observed: successful cyclic IO Not observed: DCE/RPC Record Write Record Read RPC Bind No RPC packets are transmitted at all. Diagnostic Messages The controller repeatedly reports AR alarm.ind(err) AR CMI timeout although cyclic IO communication continues to work. Already Verified The following points have already been checked: correct Ethernet interface (eth1) correct CREATE_ID result correct Device ID correct Slot/Subslot correct GSDML correct REQ pulse RECORD buffer is larger than LEN cyclic IO communication works different Record Indices (100...104) tested Question Is there any known issue or limitation where WRREC/RDREC requests remain permanently BUSY and no RPC Record Access packets are generated? Could this behaviour be related to Runtime 4.16.0.0, PN Controller 4.6.0.0, the missing runtime license (currently running in demo mode), or any known issue with the PROFINET Controller SL? I am currently evaluating the PROFINET Controller SL and therefore the runtime is operating in demo mode. Could you please confirm whether WRREC/RDREC (acyclic Record Data services) are fully supported in demo mode, or whether a valid license is required for these services? If required, I can provide: complete project archive Wireshark capture (.pcap) GSDML online screenshots diagnostic log Thank you very much for your help. Best regards, Stefan
Last updated: 2026-07-17

Post by sturmghost on Initialization of visualization variables and cyclic code execution CODESYS Forge talk (Post)
I'm looking for a smart and short way to implement initialization of visualization variables depending on the visualization input. For an easy example consider a rectangle which rests at XPos := 0 when the input state is false and at XPos := 50 when the input state is true. My visualization variables look like this: VAR_IN_OUT State : BOOL; END_VAR VAR XPos : INT; END_VAR I put this rectangle via a visualization frame element into another visualization and link a frame reference variable with the state to it. If the variable is true, the rectangle should rest at XPos := 50 and false at XPos := 0 at visualization init but how should I assign the 50 or 0 to the internal visualization variable XPos? I would need some init-methode for the visualization but I dont want a global init-method for such tasks. I want to do it inside of the visualization element but I can't see any solution for this? It would be good to be able to define ST-code within the visualization element which runs cyclic at each VISU_TASK task-cycle then I could just check the input state and change the XPos accordingly. Does someone have a solution?
Last updated: 2023-10-01

Post by martinlithlith on Mux I2C CODESYS Forge talk (Post)
Hi! I´ll try to get this thread going again as i´m having simliar problems. Right now i get a red triangle on my connected devices (i´m testing with a BME280 sensor and a PCA9685 resvo driver). The TCA9548 have the green symbol beside it. On the "red" devices i get that the bus is not running. I have tried to either run it using the parent bus cycle setting or creating a new freewheeling task prio 1 but nothing helps. I have compared my settings to the settings from the example from the MUX package and i have read (i think) every thread in forge that could be of interest. EDIT: The ic2detect only shows the mux (70-70) and the servo drive (70-76) so i´ll look in to if i managed to burn the 280-sensor while soldering). Another question regarding the 280 sensor. I have a sensor GY-BM E/P 280 that should record humidity and temperatur. Could this be a problem with the library? Does anyone have an idea of what i might be doing wrong? I have some experience from Codesys but not much so this could be an easy one. All suggestions are welcome. I tried to upload the project archive but it did not work. Should i upload the export or how could i show you my horrible project? Best, Martin
Last updated: 2023-10-22

Post by open on How to create a stopwatch? CODESYS Forge talk (Post)
Hi @ph0010421, I tried the program the TimeTaken is calculated when stop is triggered. I want the TimeTaken to be continuously calculated and counting when a BOOL variable is true. I tried to program this way: Declaration: PROGRAM PLC_PRG VAR bStartStop: BOOL := FALSE; // Start/Stop button bReset: BOOL := FALSE; // Reset button bRunning: BOOL := FALSE; // Flag indicating whether the stopwatch is running tStartTime: TIME; // Variable to store the start time tElapsedTime: TIME; // Variable to store the elapsed time END_VAR Implementation: // Main program logic IF bReset THEN // Reset button pressed, reset the stopwatch bRunning := FALSE; tElapsedTime := T#0s; ELSIF bStartStop THEN // Start/Stop button pressed, toggle the running state IF bRunning THEN // Stop the stopwatch bRunning := FALSE; ELSE // Start the stopwatch bRunning := TRUE; tStartTime := tElapsedTime; END_IF; END_IF // Update the elapsed time when the stopwatch is running IF bRunning THEN tElapsedTime := tElapsedTime + T#1s; // Adjust the time increment as needed END_IF However counting of the seconds is not accurate. I tried changing the main task cycle time interval to 1000ms. The counting of seconds become slower. (see attached) Please help
Last updated: 2023-12-08

Post by xgongx on What is the insights of IoDrvEtherCAT.DCInSyncWindow? CODESYS Forge talk (Post)
It is well known that you need to increase the value of IoDrvEtherCAT.DCInSyncWindow to solve the "Fieldbus lost synchronicity" issue. In the official document, IoDrvEtherCAT.DCInSyncWindow is explained as the toleration of a certain jitter. But the official document doesn't explain what kind of the jitter is. Is it the jitter of DC sync deviation, master timer or something else? It is very important to know the insights of IoDrvEtherCAT.DCInSyncWindow. For example, if it is the toleration of DC sync deviation, and the official recommending value is 200us for CODESYS SoftMotion. It means maximum of DC sync deviation is 200us. It is unacceptable for some high precision motion control tasks, for example high speed gear task, etc. Increasing the value of IoDrvEtherCAT.DCInSyncWindow will increase the deviation of motor rotation sync if it is the toleration of DC sync deviation. So, would anyone tell me what the insights of IoDrvEtherCAT.DCInSyncWindow is? Thanks.
Last updated: 2024-07-09

Post by trusty-squire on CNC - How to manipulate SMC_GeoInfo objects CODESYS Forge talk (Post)
I have an application using CNC GCode interpolation, but I need to modify the GCode provided to the PLC based on certain parameters. I am currently attempting to modify the SMC_GeoInfo objects in the SMC_OutQueue using the code below. Note that all the other code is pretty standard and works fine, but when I add the below it errors. PROGRAM TEST VAR fbReadCncFile : SMC_ReadNCFile2; fbCncInterpreter : SMC_NCInterpreter; arrCncInterpreter : ARRAY[1..99] OF SMC_GeoInfo; pGeoInfo: POINTER TO SMC_GeoInfo; giGeoInfo: SMC_GeoInfo; // ... END_VAR // ... Some code here in order to read CNC file using SMC_ReadNCFile2 and provide to SMC_NCInterpreter pGeoInfo := SMC_GetObj(poq:=ADR(fbCncInterpreter.poqDataOut), n:=1); IF pGeoInfo <> 0 THEN giGeoInfo := pGeoInfo^; // Do some manipulation here, then update the queue at the same position MC_SetObj(poq:=ADR(fbCncInterpreter.poqDataOut) , n:=0 , pgi:=ADR(giGeoInfo) ); END_IF It throws an error when I get to the line giGeoInfo := pGeoInfo^; Error: EXCEPTION [AccessViolation] occured: App=[Sim.Device.Application], Task=[PathTask] How do I use SMC_GetObj and access the data? It creates a pointer with the value as shown in the photo, but all the dereferenced values say dereference of invalid pointer.
Last updated: 2024-07-26

Post by z870623 on About CPU Loading CODESYS Forge talk (Post)
I am running a runtime environment on an ARM A35 dual-core processor (1.5GHz) and have encountered some issues. The CPU load (both CPU0 and CPU1) occasionally spikes above 50% before returning to normal, and this happens around 2-3 times per minute. At the same time, I’ve noticed that the Max Cycle Time in the Codesys monitoring screen shows much worse performance compared to the A53 (1.2GHz), with nearly double the cycle time. The optimizations I have made so far are as follows: Set the CPU to performance mode. Isolated CPUs: CPU0 is dedicated to running Linux services and the runtime itself, while CPU1 runs the EtherCAT task and the MainTask. Despite CPU1 only running these two tasks, the utilization still increases above 50%, which I find unreasonable. Additionally, I performed tests using cyclictest both without and with the runtime running. The performance is shown in the following image: From the results, I believe the CPU performance should be fine, but I am unsure why the monitoring results are not as expected. The testing outcomes should ideally be as close as possible to the cyclictest results. Does anyone have related solutions to this issue?
Last updated: 2024-10-14

Post by breiter on Frustration-Fueled Feedback on Project File Management and Git Integration CODESYS Forge talk (Post)
Hi, supporting a text based storage format is on our roadmap, see https://www.codesys.com/the-system/releases-updates-lifecycle/release-plan-roadmap.html It will be an Add-On feature called "File Based Storage" for the professional developer edition. Structured text POUs will be stored as plain text. Other graphical languages will remain in an xml format. You will be able to switch the storage type for projects. Certain workflows will become easier this way. Nevertheless restrictions will remain because of CODESYS specific storage logic (for example how methods below function blocks are stored as file). So merging using our Git Integration Add-On remains the recommended workflow. A workflow involving Visual Studio Code as the main IDE is not supported. Simply because many topics like library management, task configuration or fieldbus configurators are not available for VS Code. A PLC project is a lot more than just some ST POUs. Best Regards
Last updated: 2024-10-16

Post by ellocco on XOR with four Inputs with OR-, NON- and AND-Operators CODESYS Forge talk (Post)
My topic is more of academic nature, I would like to implement an XOR-operation with four inputs on my own (without the predefined XOR-operator) in a function block diagram (FBD). I have two proposals. One works fine and the other one is just an idea, but I do not know, if it is possible to code it in CODESYS V3.5 SP18 in form of a FBD. Here the one that works: And here an idea, which I have not managed to code it as an FBD: Any ideas? Is the 2nd diagram a correct interpretation of the coding task? And is there a way to implement it in form of an FBD in CODESYS V3.5 SP18? Followup (08-Nov-2024): Also in the current version of CODESYS (V3.5SP20Patch3) I have not managed to connect the existing blocks. In the alternative SPS-IDE PLCnext Engineer it is possible.
Last updated: 2024-11-08

Post by struccc on The future and proper use of CAA.BOLT, CAA.SEMA,.. CODESYS Forge talk (Post)
Dear All, Dear CODESYS, I'm curiously following CODESYS transitioning away from the CAA libraries, and I'm mostly in favor of these major changes. Naturally, I'd like to align my current (not end-user) developments accordingly. I'm tracking , reading release notes, ... And want to figure out the future :) Is it possible to hear / read more about the reasons, objectives and scope of these changes? One important element is CAA Types - CAA Types Extern. What is the plan with that? What's the future of CAA.SEMA, CAA.BOLT ? I have never used them (always relied on SysLib*), but they are tempting... Would be useful to have a platform independent "Macro" for this functionality... Is there something in existing or planned ? Are they suitable to be used in low level libraries... For Example IO-Drivers, Components, "to-become system libraries"? CAA.TaskLock, CAA.TaskUnlock ? Well, they don't claim platform independency, so I can't rely on those.... Any up-to-date advise, standard, pattern to follow in new libraries for task and resource locking? Practical set of conditional defines to be used? If this information is not publicly available, can you please send a private message about the proper way to achieve this? I have support agreement, just couldn't get trough with these questions... P.
Last updated: 2025-03-14

Post by jschu on Dynamical scaling of bar graph without the bar itself CODESYS Forge talk (Post)
Hi there, Task: dynamical changing the scaling of an bar graph, linear scaling whitout showing the bar only the scaling values and Lines for Main and partial steps. Define 4 Limits for Hi and LO Values with different colors Option 1 : use the bar graph whitout showing the actual bar whitout showing the bar, only the scaling values and lines for main and partial steps. Then what to do with the 4 Limits ? I could use 4 moveable Rectangles with the start and end value fo the areas but then the whoel bargraph must be transparent. Best way would be if only the scale ist possible to show as it is possible for the Meter 180° but this option does not exist for the bargraph. Option 2 : user defined HMTL5 Widgets wich may be some allreay has created or where is a dome for using this kind of html5 widget. The expanse for use html is in my eyes to big and gives more option for errors. Have some one experience in this topic or a hint how to do it the easiest way? Thanks for your help.
Last updated: 2025-05-15

Post by jy77812 on MC_MoveCircularAbsolute Using Help CODESYS Forge talk (Post)
Dear People I’m trying to draw a circle using MC_MoveCircularAbsolute, but I keep encountering an error. The error message is SMC_CP_CIRCLE_CENTER_NOT_ON_BISECTOR. What I’m trying to do is simply draw a circle with a diameter of 20, starting from the point X=0, Y=0. I’ve set CircMode to center. It seems like a simple task, but the error keeps occurring, and it’s giving me a headache. I’d appreciate your help. I’ve also attached the program, so please provide any advice you can. I want to use the mode as the center. I've tried changing multiple coordinates and it won't run. Please help. sample stCirculAuxPoint.c.X := 20; stCirculAuxPoint.c.Y := 10; stCirculEndPoint.c.X := 20; stCirculEndPoint.c.Y := 30; fbMoveCircularAbsolute( AxisGroup := AxisGroup, Execute := xGroupCirculEx, CircMode := SMC_CIRC_MODE.CENTER, AuxPoint := stCirculAuxPoint, EndPoint := stCirculEndPoint, PathChoice := 0, Velocity := 50, Acceleration := 50, Deceleration := 50, Jerk := 50, CoordSystem := SMC_COORD_SYSTEM.MCS, BufferMode := 0, TransitionMode := 0, TransitionParameter := , OrientationMode := , VelFactor := , AccFactor := , JerkFactor := , TorqueFactor := , Name := , Done => , Busy => , Active => , CommandAborted => , CommandAccepted => , Error => , ErrorID => , MovementId => );
Last updated: 2025-06-04

Post by ph0010421 on How to create a stopwatch? CODESYS Forge talk (Post)
Do you need an 'hours-run' counter? And 1 second resolution is ok? I think you're over-thinking it. (The task time needs to be < 1second) Have a look at the LAD... Then, the time in seconds can be made into hh:mm:ss with this FUNction Declarations: FUNCTION funSecondsToStringTime: string VAR_INPUT InSeconds: UDINT; END_VAR VAR AsString: STRING; Minutes: UDINT; Hours: UDINT; Seconds: UDINT; MinutesAsString: STRING(2); HoursAsString: STRING(2); SecondsAsString: STRING(2); END_VAR and the code: Hours := InSeconds / 60 / 60; //Derive hours Minutes := (InSeconds - (Hours * 60 * 60)) / 60; //Derive minutes Seconds := InSeconds - ((Hours * 60 * 60) + (Minutes * 60));//Derive seconds HoursAsString := UDINT_TO_STRING(Hours); MinutesAsString := UDINT_TO_STRING(Minutes); SecondsAsString := UDINT_TO_STRING(Seconds); IF LEN(HoursAsString) = 1 THEN HoursAsString := CONCAT('0',HoursAsString); END_IF; IF LEN(MinutesAsString) = 1 THEN MinutesAsString := CONCAT('0',MinutesAsString); END_IF; IF LEN(SecondsAsString) = 1 THEN SecondsAsString := CONCAT('0',SecondsAsString); END_IF; AsString := CONCAT(HoursAsString, ':'); //assemble string AsString := CONCAT(AsString,MinutesAsString); AsString := CONCAT(AsString,':'); AsString := CONCAT(AsString, SecondsAsString); funSecondsToStringTime := AsString;
Last updated: 2023-12-08

Post by mondinmr on Direct Pointers in IOMapping for EtherCAT with IoDrvEthercatLib.ETCSlave_Dia CODESYS Forge talk (Post)
Using SDO, I can read the EtherCAT mappings and offsets from various registers like 0x1c12, 0x1c13, etc. When I obtain registers mapped in the PDOs and various offsets, I could technically access directly to the statusword, controlword, etc., if they are mapped. I have noticed that on IoDrvEthercatLib.ETCSlave_Diag I can find pointers to the input and output buffers. However, although the input buffer can be easily read by referring to what has been obtained from the SDOs, it is not possible to write to the output buffer, as it is overwritten in each cycle by the data from the IOMapping task. Is there a way, knowing an instance of IoDrvEthercatLib.ETCSlave_Diag, to obtain the pointer to the first data in the IOMapping? The offsets are identical to those of the PDOs, but obviously the data is a copy. For me, the cleanest thing would be to access the pointers on IOMapping, for DS402a devices to retrieve the key data and point them to internal references. I need to know this as, having developed our own motion library, I would like to simplify the initial setup by eliminating unnecessary and nonsensical mappings that can lead users to unnecessary errors. In the current version that we have been using for years, we have to map everything manually. I would like to pass only the slave reference to the FB_init constructors and eliminate the mapping.
Last updated: 2024-02-12

<< < 1 .. 27 28 29 30 31 > >> (Page 29 of 31)

Showing results of 765

Sort by relevance or date