Post by hardcoder on EtherCAT Mailbox Gateway
CODESYS Forge
talk
(Post)
Hi all I found that in the last Ethercat master release (4.8.0.0) the Mailbox Gateway feature has been added. This would be useful for me to connect to a specific slave in my system, since its configuration software supports this type of gateway communication. Anyway I don't find usage information or examples. At the moment I tried to enable it in the ethercat master device settings and I configured with an IP address on the subnet of the ethercat adapter (i.e. ethercat nic configured with static ip 192.168.10.100 subnet 255.255.255.0, mailbox gateway configured to 192.168.10.30). I expected it would have responded to ping commands on the address but nothing happens. I am missing something?
Last updated: 2024-12-11
Post by imdatatas on MC_CamIn did not work properly with SMC_FreeEncoder on SoftMotion 4.17.0.0
CODESYS Forge
talk
(Post)
Hi @tk096, Thank you for your response. Here is example project file and some screenshot for your analysis regarding this matter. In order to reproduce the problem on your side and make it independent of the hardware, I simulated the encoder counter incrementally for the master in this example. I configured a virtual axis as the slave motion axis. The problem occurs in the same way in the real hardware configuration (servo drive connected to Ethercat and hardware incremental encoder) in MC_CamIn. I hope this example helps you see the problem on your side and understand and find the source of the problem with FreeEncoderAxis for Softmotion 4.17.0.0. Best Regards, Imdat
Last updated: 2024-12-19
Post by srouse on Adding a Softmotion License to a Weintek HMI
CODESYS Forge
talk
(Post)
I am trying to add a Softmotion license to my Weintek HMI. The HMI is already licensed for Codesys and I have already purchased a Softmotion license as well. When using the License Manager I get an error saying the licensing info is not available. I am fairly new to working with Codesys so I am at a bit of a loss and there seems very little information online about troubleshooting this specific issue. I have attached the error message below. If there are any ideas of how to troubleshoot this better I would be happy to hear them.
Last updated: 2025-01-09
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by tmarmy1 on Redundancy for RTE x64 - stuck in standalone
CODESYS Forge
talk
(Post)
Sorry if this has been asked before, but I can't seem to locate a thread that leads me answers. I am running two RTE x64 softPLCs, one on the host machine and a second via a VM. I have managed to finally get both to a position that they see each other, but they are in standalone mode instead of an active/passive state for failover (image attached). Every attempt to sync via the button fails. There is probably some step or option that I have missed in my bumbling through this learning process, but for the life of me I can't seem to figure it out. Anyone got any suggestions what I need to look at to get this into an active/passive redundancy state?
Last updated: 2025-02-20
Post by peterkcontrols on TargetVisu started in windowed or not full screen
CODESYS Forge
talk
(Post)
Hello, I am using Codesys on an industrial pc with a single monitor. I would also like to have a separate vision software running on the PC and would like to display it half screen. When I run the soft PLC the my visualization screen appears full screen, I would like to be able to set the size of the visualization screen so I can display other software on the monitor. Is it possible to set the width/height of the targetVisu? Anyone try something similar? I would like to avoid having to put it on a Virtual Machine. Thank you
Last updated: 2025-02-26
Post by pernockham on Inheritence of struct,
CODESYS Forge
talk
(Post)
Apparently my construction will not work as any of the sub-types are not be able to accept any (further) value-initiation. Ie: string_item : log_data_base := (string_value := 'test', val_type := STRING_); is not eq to (the string_value will not be assigned): string_item_2 : log_data_string := (string_value := 'test'); Because effectively for the compiler this is eq. to a "double" assignment where the compiler sees only the first assignment (my guess). string_item_2 : log_data_base := (val_type := STRING_) := (string_value := 'test'); Im not sure this should be treated as a bug, but it would surely be nice to be able to use this construction (compiler is 3.5.20.40). Anyone see any other alternative for solution (other than 4 complete STRUCTS with all fields individually defined)?
Last updated: 2025-03-07
Post by trusty-squire on AXIS Rollover
CODESYS Forge
talk
(Post)
If you mean you want to shift the Origin or Zero position of your axis, you can try MC_SetPosition and set the position to 0 (if you want to take the current active position and make it the new 0. Adjust this number accordingly if/as needed). This means the servo drive keeps it's current origin position, and Codesys applies an offset to the servo drive position in the logic. You can also use the homing function of your servo drive using MC_Home and have your drive configured to set the current position as origin when it receives a homing command.
Last updated: 2025-03-11
Post by milosfejgl on Codesys Licenses - How to reload them after updating the Raspberry Pi OS
CODESYS Forge
talk
(Post)
We use several control units running on Raspberry Pi, programmed using Codesys software, with multiple licenses stored as soft containers. We are planning to update the SD card image of the Raspberry Pi to a newer OS version. However, we are concerned that this process might result in the loss of our soft container licenses. Is there a way to temporarily deactivate the license so that it can be reactivated on the updated system? Alternatively, what would be the best method to preserve the licenses during the update? Thank you in advance for any responses!
Last updated: 2025-03-13
Post by alberto on ExportPLCopenXML is failing
CODESYS Forge
talk
(Post)
I'm trying to export my whole project through the option ExportPLCopenXML. It seems working, but when I'm trying to import the xml I have the following error during the importation process: Object reference not set to an instance of an object. It seems a usual issue with this process that affects to the pointer to user classes inside a procedure. I receive this error for two general functions that have this pointer declarations in the VAR_INPUT section. It seems a bug into the export/import process of CodeSYS and I couldn't skip it so far. Anyone could help me? Thanks in advance.
Last updated: 2025-03-15
Post by agentcousto on [Bug report] Issue with Importing XML Files Containing "POINTER TO" Variables in Codesys Platform Plugins Versions 2.7 and 2.8
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 madskaizer on ModbusTCP Slave Device, maximum uiClientConnections?
CODESYS Forge
talk
(Post)
I got a Wago PFC200V2, running Codesys 3.5.16.40, 100ms scan cycle, consumes about 20ms. It will randomly crash the runtime every 10 minutes to a few hours. We suspect an overloaded ModbusTCP Slave Device, as this is work done by a 3rd party contractor, but we can not find anything in the help files or documentation, that mentions a hard limit on maximum number of clients connections. This PLC currently has 44 client connections to the Slave Device and 29 slaves configured for its own Master Device. This topic metnions a hard limit of maximum 16 connections, but where is this written? https://forge.codesys.com/forge/talk/Engineering/thread/bd95b9d6d2/
Last updated: 2025-03-26
Post by jampid on Struct Literal
CODESYS Forge
talk
(Post)
Bonjour Davidmic, Il n'est pas possible d'associer une méthode à une fonction. Cela est possible sur les Blocs fonctions. En utilisant ta DUT MyStruct, je créé une fonction avec en entrée un tableau de structure :** FUNCTION F_F3 : REAL VAR_IN_OUT // bien définir un type IN_OUT IN_ptrINT: ARRAY[*] OF MyStruct; // la taille sera définie ultérieurement/ END_VAR VAR _di: DINT; // Index de parcours du tableau pour l'écriture dans les cases ENDVAR ============== //Programme F_F3: FOR _di := LOWER_BOUND(IN_ptrINT,1) TO UPPER_BOUND(IN_ptrINT,1) DO IN_ptrINT[_di].som:=IN_ptrINT[_di].a + IN_ptrINT[_di].b; END_FOR J'utilise ensuite cette fonction dans un POU Programme : PROGRAM Test_F_Fx VAR _aiTAB9:ARRAY[0..3] OF MyStruct := [(a := 1, b := 1.2), (a := 2, b := 2.2), (a := 3, b := 3.3), (a := 4, b := 4.4)]; END_VAR ** ==========** F_F3(IN_ptrINT:=_aiTAB9 ); Voilà l'idée pour avancer. Une autre idée, est d'utiliser les pointeurs ou les références. Bon développement!
Last updated: 2025-04-07
Post by bjarne-pagaard on Global Variables
CODESYS Forge
talk
(Post)
Old thread, I know - but it still has good answers. I would like to add a bit of info to it, as I was having a problem that lead me to this thread, but didn't give an exact answer. I am porting a project to a different PLC architecture. (Wago PFC300) A GVL named 'GVL' in the POUs section of my project was shadowed by a PLC-specific library in the Application->Library Manager. So all the existing references in the device specific code to 'GVL.something' would not resolve. Right-clicking the GVL in the code and 'Go to definition' would point me to the library in the Application Library Manager. All I had to do from there, was right-click the library, and set the property 'Only allow qualified access to all identifiers' in the library.
Last updated: 2025-04-11
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Pages Cut&Paste is not working at its best
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by ulvis on CFC Cut & Paste not working at its best.
CODESYS Forge
talk
(Post)
In the CFC page oriendted editor, if I copy some elements consisting of an input connector, some connected logic and an output connector and then paste this on a another page then the pasted elements get inserted with an offset to the right so that the rightmost connector falls outside of the page, in the grey hatched area. So far so good. Then I mark all the elements and try to drag them into the correct placement, collectively. THIS IS NOT POSSIBLE! I only get the "forbidden" icon tooltip. One has to drag & drop the INDIVIDUAL elements to move the elements around. What am I doing wrong?
Last updated: 2025-05-15
Post by elsmart on How to create custom visualisation components (widgets)?
CODESYS Forge
talk
(Post)
Hello I'm currently working on a project where I need to implement visualisation in Codesys on Raspberry Pi via web browser. I'm uing Codesys IDE V. 3.5 and I was able to successfully run my program and visualisation using generic elements provided by Codesys on Raspberry Pi Compute Module 4. However I am dissatisifed by the limiations and looks of generic elements. I would like to create my own components for this specific task (like cyclic buffer with messege boxes or matrix of data structures). How do people develop their own visualisation components in Codesys and how to implement them in a project?
Last updated: 2025-05-27
Post by tk096 on Max lines of code, codesys CNC ?
CODESYS Forge
talk
(Post)
Hi, this is a bug in CODESYS Softmotion. Due to this bug the size is limited to a maximum of 32767 elements. However, we recommend to use way smaller buffer sizes. You could use a small buffer (it should be big enough so that it does not run empty when the interpolator processes the elements). In the beginning you fill the buffer in PLC_PRG until it is full. Afterwards, you start the interpolator. The interpolator processes the elements and removes them as soon as it travels past them. In PLC_PRG you check whether new elements can be stored in the buffer (NOT QUEUE.bFull). If the buffer has space, you generate the next elements and add them to the buffer (SMC_AppendObj()). I hope this helps you.
Last updated: 2025-06-04
Post by george32 on Learning ST in an object-oriented way.
CODESYS Forge
talk
(Post)
Dear all, I am currently creating a program in the ST language. Because the program is starting to grow nicely I would like to switch to a more object-oriented way of programming. (Like for example in Python). By surfing the internet I found out that Function Blocks is the best method for this. Now I would like to delve further into this, with all the possibilities that Function Blocks have only I cannot find a clear course, explanation of what everything is around the function block thing and how to approach everything. I find the standard documentation around Function Blocks rather abstract and the examples are minimal. Therefore I am looking for a page/course/document explaining object oriented programming in Codesys (or other PLC programming environment). Do you have any recommendations on this?
Last updated: 2025-06-10
Post by fedex03 on Read Global Variable from an IoT Device
CODESYS Forge
talk
(Post)
Hello everyone, I am new to the forum, and to programming with CodeSys. I am dealing with IoT device for industry and I should check if a device is able to read/write global variables in an EtherNet/IP Master. Since I do not have an EtherNet/IP PLC, I thought of using CodeSys as a softPLC. I created a program with a set of global variables (GVL) and a task that increments them. I would like to know if I need to enable any options so that the global variables can be read by IoT devices. My device supports Class 2 Class (Explicit Messaging Connection) communication. Thank you in advance for your help.
Last updated: 2025-07-22
Post by timvh on Dynamically enabling/disabling Modbus slave devices in runtime (performance issue with timeouts)
CODESYS Forge
talk
(Post)
As far as I remember, the Reconfigure functionality doesn't work for Modbus devices. But... Each Modbus device in your device tree has a name. You can set the property "Enable" of this device to FALSE to stop communicating with it. So if one of your Modbus Slave devices name is "MbSlave1" in the device tree, then in your code you can set the Enable to FALSE to let it stop communicating: MbSlave1.Enable := FALSE; Please let us know if this worked on your controller with your application and your CODESYS version. Alternatively you could use the ModbusFB library. See: https://forge.codesys.com/prj/codesys-example/modbus/home/Home/
Last updated: 2025-08-13
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
If anybody finds this in the future, I managed to do it like this: scalingValue := EncoderPulseCountPerRev / ABS(AxisName.fScaleFactor); No need to use MC_ReadParameter as I am able to read this value directly from the axis object. Using an absolute value of the fScaleFactor is there in case the axis is set as inverted, in which case it would be a negative value. I was not able to figure out how to get EncoderPulseCountPerRev programatically, but since all my servos use an encoder with pulse count per revolution of 16#800000, the final equation looks like this: scalingValue := 16#800000 / ABS(AxisName.fScaleFactor);
Last updated: 2025-08-19
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.