Data to server
CODESYS Forge
talk
(Thread)
Data to server
Last updated: 2025-11-11
Convert word to ascii
CODESYS Forge
talk
(Thread)
Convert word to ascii
Last updated: 2026-04-27
Post by vipul on Multicast udp
CODESYS Forge
talk
(Post)
Hi, Good afternoon can anybody help me with UDP Multicast code. I am not able to send or recieve data when code is dumped on linux device. Below is my code. Declaration: PROGRAM udp_multicast VAR oneTimeFlag :UINT :=0; state: INT:=0; driver: UDP.UDPDriver; //port : UDP.Port;//moved to GVL src_ipAddr_ud: UDINT; src_ipAddr_st:STRING := '192.168.127.155';//'192.168.1.155';//ipms ip address dst_ipAddr_ud:UDINT; group_ipAddr_st:STRING := '239.1.5.10'; //group_ipAddr_ud:UDINT; result: SysTypes.RTS_IEC_RESULT; //result of recieve function. bind: UDINT; //result of binding. resultCreate:SysTypes.RTS_IEC_RESULT;//result of port creation. timer:BLINK; temFlag :INT:= 0; post:INT :=0; checksumFunc:checksumXor; localStringBuf:STRING[500]; chksum:BYTE; dataBuffer:POINTER TO BYTE; checksumString:ARRAY[0..5] OF BYTE; recvSize:__XINT; errorCode:UDINT; joinGroupErrorCode:UDINT; END_VAR ************8 Implementation: IF oneTimeFlag <> 1 THEN oneTimeFlag:=1; resultCreate := driver.CreatePort(ADR(GVL.port)); src_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIPAddress:= src_ipAddr_st); GVL.group_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIpAddress:= group_ipAddr_st); GVL.port.IPAddress := src_ipAddr_ud; GVl.port.ReceivePort:= GVL.src_port;//port on which messages are expected. GVl.port.SendPort := GVL.dest_port; GVl.port.OperatingSystem := 0; //0- any system GVL.port.Socket :=3; //3- socket type is multicast bind := GVL.port.Bind(udiIPAddress:=src_ipAddr_ud,); GVl.port.JoinGroup(udiGroupAddress:= GVL.group_ipAddr_ud,udiInterfaceAddress:= src_ipAddr_ud,eLogCode=>joinGroupErrorCode); END_IF timer(ENABLE:=TRUE,TIMELOW:=T#100MS,TIMEHIGH:=T#100MS); IF timer.OUT = TRUE THEN GVL.port.Send(udiIPTo:=GVL.group_ipAddr_ud,GVL.dest_port,pbyData:=ADR(GVL.writeData),diDataSize:=SIZEOF(GVL.writeData)); ELSE SysMemSet(ADR(GVL.readData[0]),0,SIZEOF(GVL.readData)); result := GVl.port.Receive(ADR(GVL.readData),diDataSize:=SIZEOF(GVL.readData),udiIPFrom=>dst_ipAddr_ud,diRecvSize=>recvSize,eLogCode=>errorCode); SysMemMove(ADR(GVL.readDataBuf[0]),ADR(GVL.readData[0]),SIZEOF(GVL.readData)); END_IF post:=LEN(GVL.readDataBuf);
Last updated: 2024-01-14
Post by kevinrn on Github Actions CI/CD tasks - development topic
CODESYS Forge
talk
(Post)
Hi @steven-schalm, Thank you for your inquiry, and I apologize for the delayed response! We use GitHub Actions cloud runners for this purpose, as it eliminates the need to maintain our own build runners. You can get started by creating a free GitHub account, which includes complimentary minutes for running actions on Windows runners. You can find an example implementation in our repository: https://github.com/powerIO-GmbH/action-codesys-setup I'm currently working on making additional features public, including: Git checkout functionality, Code signing, Custom script execution However, these additions require some preparation before release. Feel free to contribute to the project! BTW: You can also execute this locally, even the yml files with nektos/act on your windows dev machine.
Last updated: 2024-11-27
Post by trusty-squire on Strange problem with the ‘MC_SetPosition’ function
CODESYS Forge
talk
(Post)
How are the servo drives controlled? EtherCAT, step/dir pulses, other? Another thought is that - if it's step/dir pulse based control - the pulses from the PLC to the drive are getting missed/lost at high frequencies? If that's the case then there would be multiple troubleshooting steps/corrections that could be investigated. You could try to create a simplified program, with all the same parameters, that only has an MC_SetPosition FB you manually trigger and see if you are still getting the same results? When you manually control the motor directly from the servo drive software at the speeds you are calling for, does it move precisely to the target position?
Last updated: 2025-01-18
Post by gatto on Two licenses have to be installed forgot to enable one license
CODESYS Forge
talk
(Post)
Sorry, I've never used Raspy. Maybe someone else can help. From personal experience, I've had license activation issues, but it was caused by my company firewall, which was blocking traffic from the Codesys license server. So I found that the license was listed as activated on the server (and therefore used and no longer activable), but it wasn't present in the PLC. I solved the problem by using an unblocked internet connection when I needed to activate the purchased license ticket. Since then, the activation process has always worked, and I've never lost any licenses.
Last updated: 2026-02-03
Post by forest on SM Drive license error
CODESYS Forge
talk
(Post)
Hi, when it comes about license, I used INVTmatic Studio, which uses Codesys, for programming INVT plc. I bought Codesys Modbus license, it was not expensive, and then realised that INVT didn't have License Manager option (greyed out in program) which is needed for using of Codesys License. I contacted support from INVT, but developers told me that option is still not available. So depending on environment for programming Codesys, you can or not use Modbus license. Good thing about this version of Modbus TCP it works both direction. I could send commands and receive feedbacks from drive. But communication stops after 30 mins. So I used simple version of ethernet modbus which is somewhere in INVT or Condesys library (I can check tomorrow) which works only one way. I could send cmd to drive, and control it, but didn't have any feedback, like some readings back in PLC. which is bad, but at least I could start it and it didn't fail after 30 mins.
Last updated: 2024-01-10
Post by paulpotat on cm4 runtime problem
CODESYS Forge
talk
(Post)
Hello, We are having the same kind of problem again with the last CM4 we received : ooops... this runtime was built for RASPBERRYPI. Hardware version or firmware version not supported! (-18, 0x00000BB8, 0xFFFFFFFB) Hardware Version $ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 126.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 1 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 126.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 2 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 126.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 3 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 126.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 Hardware : BCM2711 Revision : a03141 Serial : 1000000097594db7 Model : Raspberry Pi Compute Module 4 Rev 1.1 Kernel Version $ uname -a Linux cmr-pv2-1t00-0001 6.12.25-rt9-v7l #1 SMP PREEMPT_RT Thu Sep 25 11:53:00 CEST 2025 armv7l GNU/Linux OS Version $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)" NAME="Raspbian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" CodeSys runtime 4.13.0.0 So far we tested runtime versions up to 4.18.0.0, here are the results : * 4.13.0.0 --> Not working ❌ * 4.14.0.0 --> Not working ❌ * 4.15.0.0 --> Not working ❌ * 4.16.0.0 --> Not working ❌ * 4.17.0.0 --> Working ✅ * 4.18.0.0 --> Working ✅ There is nothing in the 4.17.0.0 release note that mentions that, so I'm not sure what to think about this. Is this a known problem within the CodeSys development team ? If yes, how do you follow CM4 hardware evolutions ? Is there a way of making this work without having to update the runtime version ? We have several products working with the 4.13.0.0 runtime and we would like to avoid having to update them all. BR
Last updated: 2026-02-02
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 manuknecht on Opening a Dialog on a specific Client from ST
CODESYS Forge
talk
(Post)
I managed to find a solution that seems to work reliably. As the VU.Globals.CurrentClient-filter accesses the CURRENTCLIENTID or at least a similar, internal variable it can only be used if called from a certain client (e.g. from a button in a visualization). My solution works by implementing a new client filter that compares the client ID of all clients to the ID of the last client that was used. The variable containing the data of the last client is defined as: G_LastClient : VU.IVisualizationClient; // Copy of last client that detected click This last client is then updated every time a button is pressed using the Execute ST-Code input configuration of the button: G_LastClient := VU.PublicVariables.Clients.Current; Next, I created a function block that implements the client filter interface as so: FUNCTION_BLOCK FB_LastClientFilter IMPLEMENTS VU.IVisualizationClientFilter VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR END_VAR Then i added a method to the FB called IsAccepted which is used to filter out the client. When creating the method, it should automatically be filled with the according variable declaration, as it is defined in the interface: (* For every client can be desided, if it is accepted. ``TRUE``: Client is accepted*) METHOD IsAccepted : BOOL VAR_INPUT (* The client, to check*) itfClient : VU.IVisualizationClient; END_VAR Now the client can be compared to the last used client as such: // check if clientID corresponds to clientID of last recorderd client IF itfCLient.ClientId = G_LastClient.ClientId THEN IsAccepted := TRUE; ELSE IsAccepted := FALSE; END_IF To make use of this custom client filter, initialize a variable with the client filter: LastClient : FB_LastClientFilter; // Client filter to find last used client Then use this client filter when opening or closing a dialog from ST: fbOpenMyDialog(itfClientFilter:=LastClient,xExecute:=TRUE,sDialogName:='VIS_MyDialog_DLG');
Last updated: 2023-09-27
Post by pernockham on Gateway in China - "Gateway not connected"
CODESYS Forge
talk
(Post)
Trying to communicate (from Europe) with/to a unit located in china, the communication seems blocked/stopped. The edge gateway is installed in a linux environment and was possible to link to my Automation server account using the "Automation service tool". However it seems the unit cannot communicate with the Automation server (a Network scan will give the message "Gateway not connected"). (I have tested the eq. setup with units locally which works.) Anyone having experience situation similar to this and if its possible to make this work? Will a VPN be needed possibly? Other tips?
Last updated: 2025-09-04
Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Hi, I am looking for a good way to update a decice remotely. The devices are distributed worldwide and have normally no connection to the internet. The CODESYS Automation Server can't help here. So I want to update the decices via USB stick. I have written my own code* to update the files that are created with ‘Create boot application’. But sometimes strange things happen: visu elements are present, but are not found the application is no longer registered and therefore no longer starts I have not yet found out why these errors occur. Has anyone had similar problems or found a better way? Is there perhaps a CODESYS library or something else? Many thanks! *the code deletes the directories on the device and copies the new directories from the USB stick while the system is running (goes without saying)
Last updated: 2024-02-05
Post by andre-luis on Check if Codesys runtime is on 'Running' or 'Stopped' state?
CODESYS Forge
talk
(Post)
It's already there, the service get started as default. I missed to say that sometimes it happens w/o even the system get restarted. Anyway, the main issue here is to know the state of the runtime. We collect a lot of informations about the whole system, and it would be nice to have a way to detect the runtime state.
Last updated: 2024-07-02
Post by agentcousto on (no subject)
CODESYS Forge
talk
(Post)
Hello, I have developed a Python script that I run to import XML files into my project. For this, I use the Python function import_xml(). Everything was working fine when I was using Codesys platform plugins version 2.6.1.2320, but since I upgraded to versions 2.7 and even 2.8, some files are no longer imported correctly. After some research, I identified that all the files containing variables of the type "POINTER TO" are affected. I have attached a screenshot of the error I am encountering. Do you know about this bug? Do you plan to fix it?
Last updated: 2025-03-26
Post by simover on TCP/IP client
CODESYS Forge
talk
(Post)
I want to send a string to a tics TCP/IP server. I got i working with the Net Base lib. for communication good with this tcis i need to by array of byte I want to include a string in the third position of the array TCIS_Send[1] :=254; //this valus is fix for evry communication TCIS_Send[2] :=80; //this valus is fix for evry communication TCIS_Send[3] := ; here I put my and my string is lik this 5806509-DRAP10#AB#3452302073 TCIS_Send[4] :=252; //this valus is fix for evry communication
Last updated: 2023-12-18
Post by scrollman on Attribute FB for comment
CODESYS Forge
talk
(Post)
Masters, I need your help. I can explain in different way. I can get the name and comment of parameter if i use "VARINFO", but right now I want to get name and comment of FB from inside one. I can get the name to use the "{attribute 'reflection'}" but I don't understand how to get comment? Do you have any idea how to do it? Thanks
Last updated: 2026-01-08
Post by danieldiaz on Problem with FB execution
CODESYS Forge
talk
(Post)
Hello everyone, I've been working on a system which needs an error function, with this purpose I've created a FB programmed in LD, after debugging I run the simulation. It seems that the variable linked to a coil doesn't change the value when the contacts are associated to input variables. When I use internal variables the logic works properly. I don't know if the problem is related to the variables definition or with the logic program. As you can see in the image, I1 and I2 are variables declared on the FB, the rest are input variables. If I force the eStop and Reset signals to TRUE the coil value should change, but it doesn't. However in the second network if I1 is TRUE the coil change to TRUE as it has to be. To sum up, my doubt is why that coil doesn't change its value? I would like someone to shed a light on this. Thanks!
Last updated: 2024-04-02
Post by konstantin on CAM Motion Recover after STO
CODESYS Forge
talk
(Post)
Hello Mr. Seidel, both the master and the slave axis are modulo. Basically the situation is as follows: One master cycle is 100 units. Slave's modulo length is 2000 units. In the CAM table I defined 10 master cycles on X axis - 1000 units and on the Y axis is the slave - 2000 units. Then depending on the master position 0 to 1000 units the slave's position is plotted on the Y axis - 0 to 2000 units. For example, while the master is executing the 3rd cycle i.e. above 200 units, I trigger the STO function of the slave and it stops. The master executed his cycle but the slave was stopped during the execution. How can I set the slave to continue the CAM sequence from the point where it stopped i.e. third cycle of the master? When I reset the slave error and sync again, everyrhing starts from master's 0 position. Best Regards Konstantin Kolev
Last updated: 2026-02-13
Post by gseidel on Movesuperimposed Command Aborted Error
CODESYS Forge
talk
(Post)
Hi transcend, most likely cause: one of the motion FBs was not called in each IEC cycle. See https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_basic_common_errors.html. A different possible error, if you are using buffermode buffered or blending: the execution order of the motion FBs was wrong. See https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_buffermode_execution_order.html. Best regards, Georg
Last updated: 2026-04-13
Post by timvh on Get the numer of day
CODESYS Forge
talk
(Post)
For a demo application related to date/time, see: https://forge.codesys.com/prj/codesys-example/date-and-time/home/Home/
Last updated: 2023-09-14
Post by arnaud on eCockpit - unable to start simulation
CODESYS Forge
talk
(Post)
Thanks for your help. Seems like one of these libraries are the root cause indeed.
Last updated: 2023-10-20
Post by snhatton on Saving variable values on power cycle (RevPi Connect)
CODESYS Forge
talk
(Post)
Have you tried using the persistence manager which uses the file system of the controller to store persistent variables?
Last updated: 2023-12-04
Post by dkugler on Alarm Management - Import and Export of AlarmGroup
CODESYS Forge
talk
(Post)
without the knowledge which error occures, it's difficult to help?!
Last updated: 2023-12-06
Post by faceplant on Get the .git folder path via scripting
CODESYS Forge
talk
(Post)
Using the git scripting API, is there any way to get the file path of the project's .git/ folder?
Last updated: 2024-08-08
Post by tk096 on SMC_NCDecoder very slow to decode lines
CODESYS Forge
talk
(Post)
Hi, you can call the decoder function block in a loop and/or decrease the task cycle interval of Task_PATH.
Last updated: 2024-08-23
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND or OR.