Post by amy123 on JSON Utilities ENUM to STRING
CODESYS Forge
talk
(Post)
Hello, Is it possible to get the string returned from the ENUM JSONType? I read that with regular enumerations you can add '{attribute 'to_string'}' and access it. However, this is from the compiled library, so I can not add that attribute. When I try to use TO_STRING(JSONType) it returns the integer as a string. Ex. jsonType :=TO_STRING(pJSONData^._aJSONData[i].eType); gives '8' instead of NONE Thanks!
Last updated: 2024-12-09
Post by gatto on Read codesys version in the codesys application
CODESYS Forge
talk
(Post)
hi, i used another way declaration: pApp : POINTER TO APPLICATION; pAppInfo : POINTER TO APPLICATION_INFO; ProjectName : STRING (24) ; CodesysVersion : STRING (15) ; code: //library : // CmpApp // IoDrvEthernet // // Get Pointer to current application pApp := CmpApp.AppGetCurrent( pResult:= 0 ); // Get Pointer to Application information pAppInfo := CmpApp.AppGetApplicationInfo(pApp:= pApp, pResult:= 0 ); ProjectName := pAppInfo^.pstProjectName^ ; //convert codesys version to string CodesysVersion := IoDrvEthernet.UDINT_TO_IPSTRING ( udiIPAddress := pApp^.udiPSVersion ) ; so i think you need to convert your dwVersion in a UDINT and after convert UDINT_TO_IPSTRING
Last updated: 2025-01-17
Post by rmaas on TCP Server
CODESYS Forge
talk
(Post)
Hi George, I do not know what the problem is with the syssocket implementation, but when i read the forums it seems the Net Base Services library is the recommended way to go. There is another more extensive example here: https://forge.codesys.com/prj/codesys-example/plc-chat-nbs/home/Home/ I have just tested this example and it works very well, also with closing and opening the connection from hercules... good luck!
Last updated: 2025-02-20
Post by nz-dave on Codesys 3.5.21 fails to copy file to USB
CODESYS Forge
talk
(Post)
i had a similar problem trying to send files to C: on local computer. Ended up using Oscat ftp to transfer file with filezilla. i read there is an "write protection", possibly to do with windows, issue with sp19 and up. there are some config files in the codesys dir you can change, which may help. after i was able to transfer to local PC\downloads but not c: so went the ftp route. works well. https://forge.codesys.com/forge/talk/Runtime/thread/5cac1390b4/
Last updated: 2025-05-26
Post by berkdan on SMC_ReadNCFile2 is always busy
CODESYS Forge
talk
(Post)
Hello, I’m using CODESYS V3.5 SP18. When I try to use SMC_ReadNCFile2 to read the file /PlcLogic/gcode.nc, the function block's bBusy output remains TRUE indefinitely. Can you help me understand what I might be doing wrong? Here is how I’m calling the function block. The value of strFileName is 'gcode.nc'. fbReadFile( bExecute := bExecute, sFileName := strFileName, bAbort := bCycleStop, fDefaultVel := RetainVariables.xSlowVelocity, fDefaultAccel := RetainVariables.xAcc, fDefaultDecel := RetainVariables.xDec, b3DMode := TRUE, bParenthesesAsComments := TRUE, fDefaultVelFF := RetainVariables.xFastVelocity, fDefaultAccelFF := RetainVariables.xAcc, fDefaultDecelFF := RetainVariables.xDec, ErrorID => gCNC.eErrorId, errorPos => gCNC.eErrorPos, ErrorProgramName => gCNC.eErrorProgName, bBusy => bReadFileBusy, sentences => sentencesss ); Thanks in advance for your help.
Last updated: 2025-06-16
Post by camjam on BOOL variable in OPC UA and modbus simultaneously
CODESYS Forge
talk
(Post)
I have come across this. The only way i could get it to work would be to define a word that is also the same address as the Bools. eg %MX600.0 through to %MX600.15 would be individually defined in the variables and them have another variable word defined at %MW300. You still need to break out the word in what ever program you are using to read/write the OPCUA tags.
Last updated: 2025-08-18
Post by romrot on MS SQL Compact cutting off Database name?
CODESYS Forge
talk
(Post)
I'm trying to use an fbMsSQL_compact function to read data from an SQL database. It works with some databases, but there is one database that I can't seem to get it to work on. It's set up the same as the other databases that I've tested with the only difference I see is that the name of the database is cut off in the status message. I'll get a message like "User: User logged out succesfully from database: 12345" But the whole name of the database is something like 1234567.
Last updated: 2025-08-21
Post by timvh on I want to show the current recipe name in the visualization screen
CODESYS Forge
talk
(Post)
Maybe the easiest solution for you is to add one STRING variable to your recipe and enter the name of the recipe in variable value. This is little bit double the work (naming the recipe and entering the value of the STRING variable), but in that case you always have the current value of the variable which you can read from the application and show in the visualization.
Last updated: 2025-09-04
Post by astutoski on MCP23017: inputs OK, but outputs won’t switch (CODESYS on Raspberry Pi)
CODESYS Forge
talk
(Post)
Hi everyone, I’ve connected and configured an MCP23017 over I²C on a Raspberry Pi using the available CODESYS/RPi library. Input reading works fine (I can reliably read a digital input). However, I can’t get any output pin to change state. Example: when I try to drive PB0, the watch shows MCP23017.Out_B.0 = TRUE (1), but there is no actual output on the pin (no voltage change). Anyone solved this?
Last updated: 2025-09-17
Post by usacodesysuser on How to connect serial devices ?
CODESYS Forge
talk
(Post)
@eschwellinger do you have any examples of using a USB barcode scanner? I have read through the forums here and I am unable to find how to get the barcode data to populate in a text field without having to first click into the text field to activate it. Is there a library that allows you to access the barcode data? I am really new to this in general any help is greatly appreciated, hopefully you have a pretty clear example
Last updated: 2024-01-06
Post by wehling-h on PI Input value
CODESYS Forge
talk
(Post)
Hi geoweil, have you tried to save changed values to remanent area or using a VAR RETAIN? After restart you have to initialize Counter with last remanent value. Depending on changes per cycle and the possibilitiy of your control unit to write remanent storage. Otherwise you need a buffering system to ensure save backup of last PI_Counter value. May you could read this Thread to get further help: https://forge.codesys.com/forge/talk/Engineering/thread/31e1c8349e/#bf48
Last updated: 2024-01-12
Post by ofey on two different OPC clients with different privileges
CODESYS Forge
talk
(Post)
Hi! I have usually only connected one OPC client (our system) to an OPC server created in the codesys environment on a PLC. This OPC client has a lot of write privileges. A customer also want OPC access, but I want to restrict his access to only read certain values. Do you know if this is possible inside the single codesys runtime running on a controller?
Last updated: 2024-02-01
Post by wollvieh on Problem while updating to new runtime 4.11.0.0
CODESYS Forge
talk
(Post)
okay, no ideas. So i made a new fresh image for the raspberry, so far,so good. Licensing the new image was no problem. And, after having trouble while read write files on the raspberry pi, i found the solution for these file operations with the Variable ForceIecFilePath in the CODESYSControl.cfg file. Some people had that issue discussed in that thread : https://forge.codesys.com/forge/talk/Deutsch/thread/d2df08e587/
Last updated: 2024-03-18
Post by mgengler on Recipe Manager - Not Creating Recipe Files
CODESYS Forge
talk
(Post)
Recipe Manager will load windows explorer view and allow file name to be typed in or existing file selected but will not create a new file or overwrite an existing. Will not create a file in the default folder or even a defined folder like "c:\recipes\" although it does properly navigate to that folder location. I made sure the folder is not read-only. Can't figure out what is missing...
Last updated: 2024-05-17
Post by esave on Softmotion Axis Controll
CODESYS Forge
talk
(Post)
Hello everybody I have two of these EtherCat CiA402 stepper driver from Leadshine: https://www.leadshine.com/product-detail/EM3E-556E.html I want to controll them. I already have implemented them in Codesys with Softmotion. I see the position, the velocity and the status word so I can read everything. See picture 1. But when I want to write something like MC_Power or MC_MoveAbsolut with the SM3_Basic library it wont work and with the MC_Reset POU it shows: "SMC_R_DRIVE_DOESNT_ANSWER". See picture 2. Can somebody help me? Thanks a lot esave
Last updated: 2024-05-24
Post by ph0010421 on General question about library versions
CODESYS Forge
talk
(Post)
Hello I can't find anything to read on the subject so I'll ask here. Up to now, when adding a (for example) Modbus Master, I've selected the version <= the RT version, so if I'm using SP13 Patch 3, I can use a library that doesn't exceed this. I've no idea if this is correct, but it's always worked. Can someone explain the 4.x.x.x libraries that have appeared; are they tied to a RT version? The controller I use is now at SP18Patch60, so should I continue to use 3.5.xxx or change? thanks
Last updated: 2024-05-29
Post by installwhat on C0077 on one machine but not another
CODESYS Forge
talk
(Post)
https://forge.codesys.com/forge/talk/Engineering/thread/92c913bf7c/ Solved by changing the ethercat master version after reading the thread linked above. I think I need to read up on why this happened. I understand that placeholders should point to a particular version for obvious reasons however what has occurred in this instance is different. The example project was released as a "project archive" but it seems to load differently based on what I've got installed in my repositories. I'm going to dig into that tomorrow but any advice is welcome.
Last updated: 2024-06-11
Post by gatewail0 on Digital Clock
CODESYS Forge
talk
(Post)
You can definitely pull the actual system time into CODESYS without too much trouble. Take a look at the SysTimeRtc or SysTime library—both let you read the current date and time from the Raspberry Pi. You can call SysTimeRtcGet() or SysTimeGetTime() in your PLC code and then format the hours, minutes, and seconds into variables that feed your 7-segment visualization. Once you’ve mapped those values, your Visu display will update automatically each cycle. It’s a pretty common approach for clocks in CODESYS, so you should be able to get it working quickly. golf hit
Last updated: 2025-12-04
Post by rossanoparis on After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working
CODESYS Forge
talk
(Post)
Hello at all. After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working. I'm not able to read or write files from the PLC application. Before this upgrade all worked fine. I've read this thread [ https://forge.codesys.com/forge/talk/Engineering/thread/3da9ded84e/ ] Despite I followed that indications I couldn't get my code working again. Perhaps I'm missing something or I didn't understand how to use placeholders at all. Is there a different syntax to use for "SysFileOpen" in order to use placeholders? Thanks in advance for your help. Information Compiler: CODESYS V3.5 SP19 Patch 2 Runtime: codesyscontrol 4.9.0 HW: KUNBUS RevPi Connect S Below the paths I want to access (The entire CODESYSControl_User.cfg file is attached) [SysFile] PlaceholderFilePath.1=/home/pi/hpca/bin, $hpcabin$ PlaceholderFilePath.2=/home/pi/hpca/cfg, $hpcacfg$ PlaceholderFilePath.3=/home/pi/hpca/logs, $hpcalogs$ PlaceholderFilePath.4=/home/pi/hpca/resources, $hpcares$
Last updated: 2023-08-22
Post by dtamm on How to read string from CharBufferPtr?
CODESYS Forge
talk
(Post)
I am trying to implement a mechanism to send alarm SMS. For this, I have created an Alarm Class with a Notification Action which calls a POU. This POU implements IAlarmNotifiable making it selectable in the Alarm Class configuration. IAlarmNotifiable has an Execute method which is called by the alarm class. Now, I want to extract the alarm message of the triggered alarm. The Execute method comes with a VAR_INPUT itfAlarm: AlarmManager.IAlarm which supplies a method called GetMessage. The help text says: Returns the message text, that has been configured for the alarm. The result is a pointer to the buffer, where the message text is stored The type of the result is CharBufferPtr, and at some place I read that it can be interpreted as a pointer to string. But I cannot manage to extract the alarm message, all I get are numbers. I have tried the following: psAlarmText := itfAlarm.GetMessage(__SYSTEM.TYPE_CLASS.TYPE_STRING)^; sAlarmText := TO_STRING( itfAlarm.GetMessage(__SYSTEM.TYPE_CLASS.TYPE_STRING)^ ); So how do I get access to the alarm message as clear text? (In this case, "Larm 1")
Last updated: 2024-02-21
Post by mubeta on Some 'pathetic' errors in SoftMotion program
CODESYS Forge
talk
(Post)
Thank you for your interest. Your answers are in line with what I knew, so at least it comforts me that I did not misinterpret the situation. However, I don't have an exact match as, for this project over the past few days I have: 1) I have gone back to leaving the various FBs of the motion always called, all of them, and in the state machine I use a boolean to activate the various useful Execute. (But in the future I want to go back and try the programming technique with which I wanted to develop this project); 2) For the occasional error: SMC_FB_WASNT_CALLED_DURING_MOTION perhaps it was due to the fact that I had set the Ethercat bus synchronism only at the CAN master level, but not at the level of individual drives. I have now also activated it for the individual drives and it does indeed seem to have been resolved, but having also adopted the programming technique mentioned in point 1), I cannot say whether this was the solution to the problem, or instead the previous point. Is there an error ‘regulator or start not set’ in the device log before the error ‘motion generating FB wasn't called for at least one cycle’? I can't answer that right now. By now the machine is running and I am no longer there, at this one. Also, I seem to remember that the 'fbeFBerror' drive structure (5-element array), does not cycle, BUT ONCE THE 5 EVENTS AFTER SWITCHING ON, IT DOES NOT UPDATE ANYMORE (but that's another issue), so diagnostics were not easy.
Last updated: 2024-07-24
Post by jeffg on ERROR: GetNetLinkSockAndInfoByMac(): could not open netlink socket: Too many open files
CODESYS Forge
talk
(Post)
I just installed codesys runtime on a raspberry pi Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz (Compute Module 4) I am running on Codesys control for raspberry pi 64 SL ver 4.13.0 and I keep getting a crash after about five to ten minutes. This program was running fine on a 32bit system with runtime 4.8 previously but they upgraded the panel PC cause it got smashed. Looking at the logs I see this error "ERROR: GetNetLinkSockAndInfoByMac(): could not open netlink socket: Too many open files" at the time of crash. I do have a UDP socket open for a serial to ethernet adapter and im wondering if maybe its opening a bunch of sockets and while receiving messages, Im not sending anything to the device only receiving. Below is the code used for the UDP VAR // Scale Comm fbPeerServer : NBS.UDP_Peer; ipAddress : NBS.IPv4Address; fbReceive : NBS.UDP_Receive; xPeerActiv : BOOL := TRUE; abyReceive : ARRAY [0..255] OF BYTE; sLastValidReceive : STRING(255); udiIndex : UDINT; END_VAR IF xPeerActiv AND NOT fbPeerServer.xBusy THEN ipAddress.SetInitialValue(ipAddress := gvlSettings.sIPAddres); fbPeerServer(xEnable := TRUE, itfIPAddress := ipAddress, uiPort := gvlSettings.uiPort); END_IF fbPeerServer(); fbReceive(xEnable := fbPeerServer.xBusy, itfPeer := fbPeerServer, pData := ADR(abyReceive), udiSize := SIZEOF(abyReceive)); IF fbReceive.udiCount > 0 THEN IF fbReceive.udiCount < SIZEOF(sLastValidReceive) THEN SysMem.SysMemCpy(pDest := ADR(sLastValidReceive), pSrc := ADR(abyReceive), udiCount := fbReceive.udiCount); // Set End of String sLastValidReceive[fbReceive.udiCount] := 0; END_IF END_IF If anyone as seen this I could really use some help figuring it out. I included the Log report
Last updated: 2024-09-19
Post by jeindhoven on Deploying to raspberry pi 5 hangs
CODESYS Forge
talk
(Post)
Hi CoDeSys support forum, hope that this is the correct place to ask this. Might be double as i am new to Codesys and dont know all terminology. I am trying to test Codesys with a virtual plc on a raspberry pi 5. Already figured that i need Tools -> Deploy Control SL, enter Communication parameters. Codesys says "Connected". Then tab "Deployment", there i select "CODESYS Control for Raspberri Pi SL" and "4.16.0.0 (all)". Click "Install" and the gui turns grey and unresponsive. The titlebar says "Untitled1.project - CODESYS (Not Responding)" as well. Restarting Codesys and checking shows no package was installed. How to deploy the runtime? Thank you in advance for your time. Edit: After some patience, an error showed up: "Error when sending ssh heartbeat: Session operation has timed out" "Error installing codesyscontrol" Any pointers to what remote command might have failed, or log of some sort, would be welcome. Software versions: Codesys version 3.5.21.10 Raspberry pi 5 (deployment machine): $ uname -a Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye $ apt list --installed | grep openssh-server openssh-server/oldstable,now 1:8.4p1-5+deb11u3 arm64 Development machine: $ uname -a Linux 2B 6.1.0-35-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.137-1 (2025-05-07) x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm VirtualBox Version 7.0.26 r168464 (Qt5.15.8) Virtual OS: Windows 10 Pro 64-bit (10.0, Build 19045) .NET version 4.0.30319.42000
Last updated: 2025-06-22
Post by gallusrrr on usb2can in Codeysy 3.5 Can Gateway
CODESYS Forge
talk
(Post)
Hallo und guten Morgen, Ich danke für die Rückmeldung. ich habe das oben geschriebene durchgeführt und auch festgestellt das mit die Commandos für die Can befehle noch fehlen. (Google angeschmissen und geschaut auch gefunden) sudo apt-get install can-utils (damit auch jemanden anders der Post hilft) Anschließend habe ich das CAN System komplett aufgebaut so das ich mit einen anderen CAN Adapter schauen konnte ob die Nachricht auch ankommt. die Nachricht kommt an :) danach habe ich follgende Ausgabe: pi@Codesys:~ $ sudo ip -s -d link show can0 3: can0: <noarp,up,lower_up,echo> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10 link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0 can state ERROR-ACTIVE restart-ms 0 bitrate 250000 sample-point 0.875 tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 brp 12 gs_usb: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..1024 brp_inc 1 clock 48000000 re-started bus-errors arbit-lost error-warn error-pass bus-off 0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 parentbus usb parentdev 1-1.4:1.0 RX: bytes packets errors dropped missed mcast 3549 819 0 0 0 0 TX: bytes packets errors dropped carrier collsns 32 4 0 0 0 0</noarp,up,lower_up,echo> (Sorry habe kein Speicherplatz im Web um Bilder anzuzeigen..) man kan sehen das die Nachricht abgeht und auch 32 Byte Empfangen worden sind. Die nachricht ist auch am anderen CAN Adapter sichtbar gewesen. Wie bekomem ich den einrichteten Adapter in Codesys rein? das ich den Befehl sudo ip link set can0 up type can bitrate 500000 das ich die Einrichtungs des Can Adapters noch in die Rasperry Start rutine nehmen muss ist mir klar. Ich bedanke mich .
Last updated: 2024-01-18
Post by umdee on Error when monitoring LAD programs
CODESYS Forge
talk
(Post)
I get the following error when monitoring my program (see attached screenshots): "Unhandled exception has occured in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately. Value cannot be null. Parameter name: source. And the details say: See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ** Exception Text ** System.ArgumentNullException: Value cannot be null. Parameter name: source at System.Linq.Enumerable.Any[TSource] (IEnumerable1 source, Func2 predicate) at _3S.CoDeSys.NWLEditor.NWLTextCell.OnPaintCellLayer(PaintEventArgs e) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.PaintCellCellLayer(PaintEventArgs e, GfxCell cell) at _3S.CoDeSys.Controls.Controls.GfxEdControl.OnPaint(PaintEventArgs e) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.UserControl.WndProc(Message& m) at _3S.CoDeSys.Controls.Controls.GfxEdControl.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ** Loaded Assemblies ** (3000 lines of assemblies) ** JIT Debugging ** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled. For example: <configuration> <system.windows.forms jitdebugging="true"> </system.windows.forms></configuration> When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box The windows show red X's where the networks should be. Any advice on how to fix this? Additional Information PLC used: Wago 750-8212, Firmware FW26 Startup profile: CODESYS V3.5 SP19 Patch 5 OS version: Microsoft Windows NT 10.0.22631.0 .NET version: 4.0.30319.42000 Full Version info attached as .txt
Last updated: 2024-03-17
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.