Post by thieulam on Codesys access to DICTIONARY OBJECTS of ethercat (CoE ) Servo Drive
CODESYS Forge
talk
(Post)
Hello to all! How can I read or write, via my main code (ST), to the registers present in the DO of my ethercat CoE servo drive? These objects appear in the list of the INITIALIZATION page, and from here I can only access them at startup. How do I access it in run time from my main PLC_PROGRAM?
Last updated: 2024-06-19
Post by salmawis on Advice on OOP hardware I/O code structure
CODESYS Forge
talk
(Post)
Call 10 FB instances. Connect Motor_1_Fault to the i_xHW_FaultDetected pin of FB 1, Motor_2_Fault to FB 2... By doing this, your FB will be flexible. The programming will be smooth like a perfect Drift Boss, instead of "hitting the wall" because it can't be reused!
Last updated: 2025-10-31
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 egau on Hard shutdown: no code on device after power on
CODESYS Forge
talk
(Post)
Hi, We have a machine running Codesys on a Windows IPC (CODESYS Control Win v3 - x64). When we hard shutdown the machine, the code on the PLC sometimes becomes "corrupted" after a power on (When trying to login to the PLC, we get the message "The application 'Application' does not exist on device."). I've noticed these errors in the logs, but I'm not sure what to make of them. We are not using any RETAIN variables in our code, although I'm not sure about referenced librairies. (we are using the persistence manager). I'm pretty sure that not doing a graceful shutdown is the root cause of this. This being said, what is the proper way of doing a graceful shutdown? Is putting the Codesys application in "stop" sufficient? I know how to implement this, so if it works then it would be a quick fix. However, I think we need to add a UPS, which would detect power loss and inform the PLC that it needs to initiate its shutdown, and then the PLC would shutdown gracefully. Any help with this will be greatly appreciated :)
Last updated: 2024-10-03
Post by ragarcia on Error while using UpdateConfiguredIPSettings to change IP address
CODESYS Forge
talk
(Post)
Hello everyone, I am trying to change dynamically by code the IP address of a Weidmuller controller. So I am basically using IoDrvEthernet library to use UpdateConfiguredIPSettings function but I am getting constantly the 'INVALID_STATE' error. Even though I am following a procedure it should work: * First I added on the config file of codesys the following: [SysSocket] Adapter.0.Name="eth0" Adapter.0.EnableSetIpAndMask=1 Adapter.1.Name="eth1" Adapter.1.EnableSetIpAndMask=1 * Secondly I am first disabling the ethernet interface by using Ethernet_0.Enable = FALSE and then executing DED.Reconfigure. After that, I run the Ethernet_1.updateConfiguredIPSettings Code: Ethernet_1.Enable:= EnableDisable; Reconfigure(xExecute:= TRUE, itfNode:= Ethernet_1, xError=> ErrorReconfigure, eError=> ErrorCodeReconfigure); IF Reconfigure.xDone THEN ErrorCodeIP:= Ethernet_1.UpdateConfiguredIPSettings(IPAddress:= newIP, SubnetMask:= newMask, Gateway:= newGW); END_IF IF Reconfigure.xDone OR Reconfigure.xError THEN Reconfigure(xExecute:= FALSE); END_IF Ethernet_1.Enable:= TRUE; Reconfigure(xExecute:= TRUE, itfNode:= Ethernet_1); IF Reconfigure.xDone OR Reconfigure.xError THEN Reconfigure(xExecute:= FALSE); END_IF Can someone help me? Thank you. All I am trying is to find a way to change dynamically with code, the IP addresses of my controller (2 ethernet ports).
Last updated: 2023-12-11
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 sanacfu on looking for v2.3 libraries on v3.5.19
CODESYS Forge
talk
(Post)
Hi all, I'm new to Codesys and Wago but well versed in Rockwell. I've been tasked with upgrading old Wago 750-880 PLCs that run Codesys v2.3. All I was giving is the original PLC program in v2.3 and the currently running machine. I've spec out to what I believe is a suitable upgrade, the PFC100 2ndGen, 750-8111. As I'm rewriting this code on the Codesys I can't find the same library functions blocks for ethernet settings PLC functions. Currently I'm working on code to get/set the PLC ethernet IP address and HMI IP addresses from the HMI screen. One other function I'm looking for is a warm reset function to the PLC. When googling for this stuff I see a lot of code not in ladder logic. Are these functions now not available to implement in ladder logic? Where can I get more information on finding and implementing this functions? Do I have to buy a license from Codesys to use these functions? The PLC I ordered should be arriving in 2-3 weeks.
Last updated: 2024-03-25
Post by kblundy on Change the Opening Position of the Dialog using VU.FbOpenDialog
CODESYS Forge
talk
(Post)
I hope the community can help me with this. I need to use the Visu Utils FbOpenDialog to control the opening and closing of a dialog. I have the Opening and Closing working, but I can’t get the dialogue's position to be controlled. The code looks like this: PROGRAM OPEN_DIALOG VAR xOpenLatchSettingDialog : BOOL; TopLeftDialog : VisuStructPoint ; fbOpenLatchSettingsDialog : VU.FbOpenDialog ; END_VAR IF xOpenLatchSettingDialog THEN xOpenLatchSettingDialog:= FALSE ; TopLeftDialog.iX := 100; TopLeftDialog.iY := 23; fbOpenLatchSettingsDialog(sDialogName := 'visu_AlarmLatchSettings', xExecute := xOpenLatchSettingDialog , xModal := TRUE, itfClientFilter := VU.Globals.OnlyTargetVisu, pTopLeftPosition := ADR(TopLeftDialog)); CloseVisuDialog(sDialogName:= 'visu_AlarmLatchSettings'); ELSE xOpenLatchSettingDialog:= TRUE ; IF fbOpenLatchSettingsDialog.xError THEN xOpenLatchSettingDialog := FALSE; END_IF END_IF I can't seem to work out a way to make the values in TopLeftDialog.iX and TopleftDialog.iY be passed correctly in the call and for it to change the position of the dialogue box. The code is compiled, but the position has not been changed. Any guidance or suggestions for revising this code would be incredibly valuable. Your insights could be the key to solving this issue.
Last updated: 2024-05-05
Post by bschraud on Code erzeugen mit kryptischer Fehlermeldung mit GVL_Io_dd05d808
CODESYS Forge
talk
(Post)
Hallo, beim Codeerzeugen bekomme ich wiederholt Fehlermeldungen, bei denen nicht mit einem Klick in das betroffene Modul gewechselt werden kann. Die Fehlermeldung tritt allerdings nach "Gerät aktualisieren" nicht mehr auf. Wenn ich das Projekt speichere, Codesys schließe, anschließend Codesys wieder starte und Code erzeugen will, tritt der Fehler wieder auf: ------ Übersetzungslauf gestartet: Applikation: Device.Application ------- Code typisieren... [FEHLER] PAC: C0032: Typ 'Unbekannter Typ: 'ADR(GVL_Io_dd05d808_33e6_4f6b_ba3a_6ba1d0dcc882_HPS_7.Io_dd05d808_33e6_4f6b_ba3a_6ba1d0dcc882_HPS_7)'' kann nicht in Typ 'POINTER TO IoConfigParameter' konvertiert werden [FEHLER] PAC: C0077: Unbekannter Typ: 'GVL_Io_dd05d808_33e6_4f6b_ba3a_6ba1d0dcc882_HPS_7.Io_dd05d808_33e6_4f6b_ba3a_6ba1d0dcc882_HPS_7' [FEHLER] PAC: C0046: Bezeichner 'GVL_Io_dd05d808_33e6_4f6b_ba3a_6ba1d0dcc882_HPS_7' nicht definiert Kompilierung abgeschlossen -- 3 Fehler, 1 Warnungen Übersetzung abgeschlossen -- 3 Fehler, 1 Warnungen : Kein Download möglich Die Recherche nach der Bedeutung von "HPS_7" oder "GVL_Io_dd05d808" verlief leider ergebnislos. Ich habe nur einen ähnlich erscheinenden Thread gefunden, der aber nicht gelöst wurde: https://forge.codesys.com/forge/talk/Engineering/thread/0666dce94f/ Ich verwende Codesys 3.5 SP20 (64bit) mit CODESYS Control for Raspberry Pi MC SL 4.11.0.0. Alle anderen Geräte sowie die Projektumgebung sind frisch aktualisiert. Kennt jemand die Bedeutung dieser Fehler bzw. wie man sie beheben kann? Vielen Dank für die Hilfe
Last updated: 2024-05-16
Post by mondinmr on Frustration-Fueled Feedback on Project File Management and Git Integration
CODESYS Forge
talk
(Post)
In reality, other vendors are already moving towards integration with VS Code. B&R, for example, is likely the only one that could truly challenge Codesys in the market: they’ve overhauled their once-archaic environment (previously lacking ST OOP) and are now catching up significantly with Automation Studio Code, offering modern programming capabilities and native support for tools like Git and GitHub Copilot. The other big names in the market, frankly, are still light years behind. For smaller projects, typically handled by “wire strippers” (with all due respect!), a classic environment might be just fine. But once you’re dealing with thousands or even millions of lines of code—possibly organized in an OOP paradigm, spanning large teams, integrating third-party libraries, requiring version control, and performing comprehensive tests—a lightweight, responsive editor supercharged with AI-based features becomes essential. The real strength of something like VS Code lies in its vast ecosystem of extensions and integrations: from advanced Git support to automated build/test pipelines, and even AI-assisted autocompletion that already makes software development much more agile and productive. I understand that a PLC project involves more than just ST code (task setup, fieldbus configuration, libraries, etc.). However, there’s no technical reason not to at least provide ST files in a pure text format, making version control and collaboration far easier. B&R has clearly adopted this approach; I hope Codesys will accelerate its own efforts to offer a native, text-based integration and modern development tooling. Once you go beyond a certain level of complexity—dozens of configurations, OOP hierarchies, and distributed teams—you really do need “engineer-level” software tools, not just solutions targeting “wire strippers.” For large-scale automation projects, a more open and flexible approach is the only way to avoid chronic frustration. Let me emphasize that I truly love Codesys and consider the work done so far to be brilliant—I’d be sorry to see it overshadowed by others moving faster in this direction.
Last updated: 2025-02-18
Post by youness on No source code available (cip object)
CODESYS Forge
talk
(Post)
Hi yotaro, hope your problem was resolved. I had the same, but with an other library title. This exception is not detected during compilation, but rather at a given position in the program (when switching to a given visualization). Although the exception is generated at this point, it does not involve the visualization in question. This error is due to one of 3 reasons: 1) A division by zero somewhere: The program is able to detect divisions by zero at compile time. But in the case of a variable, which takes a valid value at init and changes to 0 at a later stage. 2) An invalid pointer: (either because it has a value of 0, or because it points outside the memory reserved for the program) is being dereferenced. Locate any pointers or interfaces you have in the code and check them - you should also be wary of mixing inline modifications and pointers. 3) Array overflow: Generally when a processing operation is executed outside the array's definition range. Example: a write loop with n iterations is executed on an array of dimmension n-1. On the other hand, the error message may not appear. In the latter case, the error may have fatal consequences, as the overflow has induced writing to potentially forbidden memory areas. This problem can be explained by the fact that it's not always the adjacent memory areas of PLC_PRG that are overwritten, but the memory areas that are randomly allocated to the array during compilation. In this case, however, there is no entry in the log, so you need to integrate the "Implicit Check function", which checks the line of code generating the error. To integrate this functions, click on Application --> POU for implicit controls Regards,
Last updated: 2024-07-16
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)
For those who will step on this thread. Everything is fine, I had only to increase by 1 my place holders number. For sure the system is occupying the number 1 without being declared ... Below the modification I made to get my code working. [SysFile] PlaceholderFilePath.2=/home/pi/hpca/bin, $hpcabin$ PlaceholderFilePath.3=/home/pi/hpca/cfg, $hpcacfg$ PlaceholderFilePath.4=/home/pi/hpca/logs, $hpcalogs$ PlaceholderFilePath.5=/home/pi/hpca/resources, $hpcares$
Last updated: 2023-08-22
Post by e60newbie on NETVAR_UDP
CODESYS Forge
talk
(Post)
Hallo Forums Gemeinde, hat jemand von euch eine Idde ob und wie es möglich sein könnte die Einstellungen was für die Netzwerk variablen Liste nötig sind, also Broadcast IP, Port usw., über die Application einzustellen? Ich müsste je nach Projekt immer die IP anpassen, da auf den Anlagen die Software Identisch bleibt, wäre es für mich viel einfache diese Einstellungen über den Code einzustellen. Wenn man so im Forum sucht gibt es nicht viel was NetVar angeht... Grüße Andy
Last updated: 2023-08-29
Post by ofey on Device parameter - ‘ModbusTCP Configuration’
CODESYS Forge
talk
(Post)
Hi! Do anybody know how I can add and enable the parameter 'Default Modbus TCP slave' on a device? I am currently writing a program where the PLC shall be set up as a Modbus TCP client, but I dont know how to add parameters to devices in codesys. I'm pretty new to the codesys environment. The picture in the attachment is on a similar PLC project where I have not written the code. my goal is to add this parameter in another project.
Last updated: 2023-10-04
Post by sukrit on What licenses are required for runtime on raspberry pi cm4
CODESYS Forge
talk
(Post)
We have developed a project for 2 servo motors using raspberry pi computemodule 4 on ethercat master. we are using web visualization for display different screens. project is running well in demo. we want to implement it in production envoirment. being new still wondering which licences i need. Can We get this information in codesys devlopment software. code size is approx 5 mb, 1 instance of etharcat master and aproox 100 variables in visaualization.
Last updated: 2023-10-17
Post by mondinmr on Jitter problems on imx8
CODESYS Forge
talk
(Post)
SOLVED!!! In this imx8 max_cstate=1 in kernel boot parameters is not working! We found a workaround: #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdint.h> int main(void) { int fd; uint32_t value = 0; fd = open("/dev/cpu_dma_latency", O_WRONLY); if (fd < 0) { perror("Error opening /dev/cpu_dma_latency"); return 1; } if (write(fd, &value, sizeof(value)) != sizeof(value)) { perror("Error writing to /dev/cpu_dma_latency"); close(fd); return 1; } while (1) { pause(); } } This simple code launched before CODESYS do the same work! Now jitter is identical as measured by cyclictest!
Last updated: 2023-10-19
Post by davidbo on How to allow a user to handle certificates without access to sourcecode?
CODESYS Forge
talk
(Post)
With CODESYS V3.5 it is possible for a user to do the following things among many others. 1) Handling certificates especially move a certificate to the trusted folder. 2) Change password and create new users for OPC UA access However it requires access to the whole projects and its source code. Something you might not want to hand over to an end user for a stand alone product. Is there a way out of this problem?
Last updated: 2023-11-06
Post by nathant on Can't open online view of FB instance from code editor, only from Device/POU windows
CODESYS Forge
talk
(Post)
Hello, The title pretty much says it all. When trying to open a FB from the CFC/Ladder/SFC editors while online, the FB does not open in an online view of that specific instance. Instead, it opens an offline view with '???' shown for the value of any variable. This makes debugging extremely cumbersome, as I have to find each FB in the POU window and select the specific instance I am trying to view. Anyone know the cause/solution for this? Thanks.
Last updated: 2023-11-08
Post by drno on AlarmMgr Database Error in method WriteToStorage: Error code = 30531, Action = 1030
CODESYS Forge
talk
(Post)
Hallo zusammen, auf einer Industriesteuerung (Target-Version 3.5.5.0) läuft unter anderem eine Alarmverwaltung mit Alarmspeicherung. Offensichtlich kann kein Schreibzugriff auf das .sqlite File durchgeführt werden, daher ist die Alarmhistorie nicht mehr verfügbar. Versuche mit unterschiedlichen Unterverzeichnissen führten nicht zum Erfolg. Die Datei "application.alarmstorage.sqlite" wird zwar angelegt, aber es erfolgen keine Einträge. Hat jemand eine Idee dazu? Die Steuerung ist ca. 8 Jahre in Betrieb, die Alarmhistorie hat früher mal funktioniert. Danke, LG
Last updated: 2023-11-21
Post by joanm on Tab control element, hide/show tabs programatically?
CODESYS Forge
talk
(Post)
Hi all, Is it possible to hide or show tabs from the PLC code? I have created a few tabs in my visualizations to configure the program behavior, I'd like to be able to hide some of them if the related option in the main tab has been disabled. Is that possible? if so, how should I do it? Thank you all in advance.
Last updated: 2023-11-25
Post by mandeepahujaifm on Ethernet/IP 4.6.0 causing exceptions?
CODESYS Forge
talk
(Post)
I have experienced the same with one of our customers after updating EIP Scanner to 4.6.0.0 and really baffled by it. The core dump simply shows error with ENIPScanner I/O task and on analyzing it says no source code available for 4.6.0.0. Contemplating to go back to 4.5.1 but 4.6.0.0 has some really nice fixes. I guess it don't matter if it crashes anways. Please keep us posted if you find anything.
Last updated: 2024-07-11
Post by timvh on No source code available for this object
CODESYS Forge
talk
(Post)
The message means that you (CODESYS) tries to open the function block, but this is not possible because the library which contains the FB is compiled. You either get this when you try to manually open the function block (while editing the application), but it could also happen that an exception occurs in the running application and CODESYS tries to show the location where it occured. If it happened in an FB of the compiled library, it cannot show this and you could get this message too.
Last updated: 2024-07-16
Post by kislov on Change modbus server parameters from program
CODESYS Forge
talk
(Post)
Use in IEC-code: Modbus_Serial_Device.UpdateComPortSettings(...) https://content.helpme-codesys.com/en/libs/IoDrvModbusSerialSlave/Current/pou-ModbusSerialDeviceDiag/UpdateComPortSettings.html Take note: "Only possible if server is disabled (see xEnable Input)" So: Modbus_Serial_Device.xEnable := FALSE; Modbus_Serial_Device.UpdateComPortSettings(...) Modbus_Serial_Device.xEnable := TRUE; Please note that after PLC reboot the values from the GUI (from your screenshot) will be applied again. So you need to save values from HMI in RETAIN and restore them after start of application.
Last updated: 2024-07-17
Post by konradkmiller on Variable assignments
CODESYS Forge
talk
(Post)
I have a snippet of code that I was given as a reference in ST. ** ModbusMasterRTU( xConnect:= TRUE, IPort:= IoConfigGlobals.COM1, // IoConfigGlobals.RS232485Interface, // COM1=Front Port / Serial module = Name of module in Devices structure I/O list udiBaudrate:= 19200, usiDataBits:= 8 , eParity:= WagoTypesCom.eTTYParity.None , eStopBits:= WagoTypesCom.eTTYStopBits.One , eHandshake:= WagoTypesCom.eTTYHandshake.None , ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485HalfDuplex, xIsConnected=> xIsConnected , xError=> , oStatus=> , eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU , tTimeOut:= T#1S, utQuery:= utQuery , xTrigger:= SEND, utResponse:= utResponse)** What is the meaning of => in this context?
Last updated: 2024-07-20
Post by mase on Python script: Launch Codesys, Execute Script, Exit Codesys
CODESYS Forge
talk
(Post)
Hi, sorry I can´t help you with your issue, but I hope you can give me a hint on getting GUID for other objects than POUs. Your code states "Guid("6f9dac99-8de1-4efc-8465-68ac443b7d08")". We can I find the GUID / ObjectIds`? I wasn´t able to get details about the GUID of DataTypes (STRUCT/ENUM,..)m, Functions (FUN), GLOBALS and TYPES. I want to create markdown of all available project elements. Thanks for your help
Last updated: 2024-08-06
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.