Post by dim54 on MBChannel
CODESYS Forge
talk
(Post)
Hello! I am interested in the Modbus Slave channel parameter uiReadLength to use in the ST-program (see picture). How to read the value of uiReadLength in a ST-program? Only Edwin the Great and Terrible can answer this question.
Last updated: 2024-01-22
Post by jinlee on Multiple WebVisu
CODESYS Forge
talk
(Post)
Hi there, I am having a similar problem like you. I have 3 screens connected to one PLC. I have set 3 different URLs for them. But 3 of them are still dependent to each other. How can I make them independently ? Kind regards, Jin.
Last updated: 2024-01-25
Post by masmith1553 on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
Have you cross referenced the variable to see if it is being written some where else? You could try an Execute block instead of a Move.
Last updated: 2024-01-25
Post by fcmtw on SDO generation
CODESYS Forge
talk
(Post)
Thanks for the answer. So yes I've enabled expert settings, and yes i've added some SDOs, but some of them who are generated are likely making a mess in the network and generated error with my device... From which library comes those 2 function blocks ?
Last updated: 2024-01-26
Post by matt-s on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
I put the cross reference at the bottom of the pictures. It is not being written to elsewhere. I have tried the execute block too.
Last updated: 2024-01-26
Post by matt-s on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
I put the cross reference at the bottom of the pictures. It is not being written to elsewhere. I have tried the execute block too.
Last updated: 2024-01-26
Post by yann2021 on SoftMotion: Error after generate code
CODESYS Forge
talk
(Post)
Hello, I have a project who was working in a previous version of Codesys but if I open it now with Codesys 3.5 SP19 Patch2 I have errors after code generation. Who can me please help to solve these errors?
Last updated: 2024-01-30
Post by masmith1553 on C0564 Warning Message
CODESYS Forge
talk
(Post)
Thank you for the reply. I was able to use this attribute in both of my Network Variable List Sends to clear the warnings.
Last updated: 2024-01-30
Post by spfollen on Access to the path *** is denied
CODESYS Forge
talk
(Post)
I have the same error. It appears to be something in my project. An older version of the same project from a few days ago is fine.
Last updated: 2024-01-30
Post by matthew on New Ladder Diagram conversion does not work due to missing features
CODESYS Forge
talk
(Post)
Thanks for the update, Since you can't double click is there another way to enter the FB when online and see the running code of that instance? When can we expect to see v1.0?
Last updated: 2024-01-31
Post by jaspergain on Access to the path *** is denied
CODESYS Forge
talk
(Post)
Hello @eschwellinger, I installed the newer version of the installer, however the issue persisted. Do I need to do anything else other than updating the installer? Thanks for your help.
Last updated: 2024-02-01
Post by wbj0t on System libs and I/O Drivers
CODESYS Forge
talk
(Post)
Hi everyone. My question about: where I can learn (read or watch) an info about codesys workflow through the system IO libs? I want to know how to implement I/O drivers by my self. In the system libs I see many interfaces, methods etc... But there is no explanation about them, just names of methods and fields of the FBs. I know about this page: https://forge.codesys.com/drv/io-drivers/doc/Generic/ There is so BIG the device description file and not so clear explaining of the attributes and elements, also some elements or attributes missed at it all. Yes, there are code examples on this page, but, so shortly and, for example, code about Modbus drivers is absent. And even if I try to add the IoDrvFB with lib, I get and error, something like: "failed to load IoDrvFB driver". And what about the book of codesys that written by Gary Pratt? Is there information about system libs and drivers in this book more clearly? Thank you :)
Last updated: 2024-02-02
Post by irshad on Modbus TCP/IP slave communication errow
CODESYS Forge
talk
(Post)
While reading the value of a slave device, it shows error frequently and i need to restart my PLC for getting the communication back. In codesys it shows the slave in Red color with error status. How to solve the above
Last updated: 2024-02-03
Post by yann2021 on Errors by Code Generate
CODESYS Forge
talk
(Post)
Hello, I still have errors when I try to generate the Code of my project (see attached file). When I double clic on the error message it bring me no more info. What are theses errors? How can I solve them? Thank for your help.
Last updated: 2024-02-07
Post by mondinmr on Direct Pointers in IOMapping for EtherCAT with IoDrvEthercatLib.ETCSlave_Dia
CODESYS Forge
talk
(Post)
I have found a very interesting solution using: IoConfigTaskMap IoConfigConnectorMap IoConfigChannelMap The first is the list of IO tasks. The second is the connector for each IO module in the IOMap. The third is the individual input or output on the IOMap. One of the properties of the connector is another pointer to a connector, which corresponds with the connector of the EtherCAT slave. Through this information, it is possible to understand to which EtherCAT slave an IO connectormap corresponds. I am attaching an FB that allows for the construction of an IO map and finding the pointer to the actual IOs in the IOMap based on the bitoffset. FUNCTION_BLOCK IOExplorer VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR inputChannels: COL.LinkedList; outputChannels: COL.LinkedList; ulintFactory: COL.UlintElementFactory; END_VAR METHOD inputAtBitOffsetOfConnector : POINTER TO BYTE VAR_INPUT conn: POINTER TO IoConfigConnectorMap; bitOffset: UDINT; END_VAR VAR it: COL.LinkedListIterator; itf: COL.IElement; elem: COL.iUlintElement; channelInfo: POINTER TO ADVChannelInfo; bitOffsetR: UDINT; END_VAR inputChannels.ElementIterator(it); WHILE it.HasNext() DO it.Next(itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} channelInfo := TO___UXINT(elem.UlintValue); {warning restire C0033} IF channelInfo^.connectorField = conn THEN IF bitOffsetR = bitOffset THEN inputAtBitOffsetOfConnector := channelInfo^.addr; RETURN; END_IF bitOffsetR := bitOffsetR + channelInfo^.size; ELSE bitOffsetR := 0; END_IF END_WHILE inputAtBitOffsetOfConnector := 0; END_METHOD METHOD outputAtBitOffsetOfConnector : POINTER TO BYTE VAR_INPUT conn: POINTER TO IoConfigConnectorMap; bitOffset: UDINT; END_VAR VAR it: COL.LinkedListIterator; itf: COL.IElement; elem: COL.iUlintElement; channelInfo: POINTER TO ADVChannelInfo; bitOffsetR: UDINT; END_VAR outputChannels.ElementIterator(it); WHILE it.HasNext() DO it.Next(itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} channelInfo := TO___UXINT(elem.UlintValue); {warning restire C0033} IF channelInfo^.connectorField = conn THEN IF bitOffsetR = bitOffset THEN outputAtBitOffsetOfConnector := channelInfo^.addr; RETURN; END_IF bitOffsetR := bitOffsetR + channelInfo^.size; ELSE bitOffsetR := 0; END_IF END_WHILE outputAtBitOffsetOfConnector := 0; END_METHOD METHOD scanIO VAR_INPUT END_VAR VAR numTasks: DINT := IoConfig_Globals.nIoConfigTaskMapCount; tType: WORD; ioTask: POINTER TO IoConfigTaskMap; numCon: WORD; connector: POINTER TO IoConfigConnectorMap; numCh: DWORD; channelInfo: POINTER TO ADVChannelInfo; iTsk: DINT; iCon: WORD; iCh: DWORD; i: DINT; _tmpConnList: COL.IList; elem: COL.IUlintElement; itf: COL.IElement; tmpCh: POINTER TO ADVChannelInfo; lastE: DINT; e: COL.COLLECTION_ERROR; e1: Error; END_VAR VAR_INST lF: COL.ListFactory; END_VAR IF outputChannels.CountElements() > 0 OR inputChannels.CountElements() > 0 THEN RETURN; END_IF _tmpConnList := lF.CreateDynamicList(16, 16); //Iterate through all IO tasks FOR iTsk := 0 TO numTasks - 1 DO ioTask := ADR(IoConfig_Globals.pIoConfigTaskMap[iTsk]); //Store the type of the task (Input or Output) tType := ioTask^.wType; numCon := ioTask^.wNumOfConnectorMap; //Iterate through all connectors of the task FOR iCon := 0 TO numCon - 1 DO connector := ADR(ioTask^.pConnectorMapList[iCon]); numCh := connector^.dwNumOfChannels; //Iterate through all channels of the connector FOR iCh := 0 TO numCh - 1 DO //Create a new channel info object and fill it with the address, connector and size of the channel //Connectors is address of field connector in this case like EtherCAT slave //Address is the address of the IOMap //Size is the size of channel data in bits in IOMap channelInfo := __NEW(ADVChannelInfo); channelInfo^.addr := connector^.pChannelMapList[iCh].pbyIecAddress; channelInfo^.connectorField := connector^.pConnector; channelInfo^.size := connector^.pChannelMapList[iCh].wSize; //We put the channel info a temporary ordered list //Order is based on the address of IOMap lastE := TO_DINT(_tmpConnList.CountElements()) - 1; FOR i := 0 TO lastE DO _tmpConnList.GetElementAt(udiPosition := TO_UDINT(i), itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} tmpCh := TO___UXINT(elem.UlintValue); {warning restire C0033} //If the address of the channel is smaller than the address of the channel in the list IF tmpCh^.addr > channelInfo^.addr THEN //Insert the channel in the list at the current position _tmpConnList.InsertElementAt(TO_UDINT(i), ulintFactory.Create(TO_ULINT(channelInfo))); //Clear the channel info pointer channelInfo := 0; //Exit the loop i := lastE + 1; END_IF END_FOR //If the channel info is not 0, it means that the channel was not inserted in the list IF channelInfo <> 0 THEN //Add the channel to the end of the list elem := ulintFactory.Create(TO_ULINT(channelInfo)); _tmpConnList.AddElement(elem); END_IF END_FOR //Iterate temporary list and add the channels to the input or output list lastE := TO_DINT(_tmpConnList.CountElements()) - 1; FOR i := 0 TO lastE DO _tmpConnList.GetElementAt(udiPosition := TO_UDINT(i), itfElement => itf); __QUERYINTERFACE(itf, elem); {warning disable C0033} tmpCh := TO___UXINT(elem.UlintValue); {warning restire C0033} //If type is input, add the channel to the input list IF tType = TaskMapTypes.TMT_INPUTS THEN e := inputChannels.AddElement(ulintFactory.Create(TO_ULINT(tmpCh))); //If type is output, add the channel to the output list ELSIF tType = TaskMapTypes.TMT_OUTPUTS THEN e := outputChannels.AddElement(ulintFactory.Create(TO_ULINT(tmpCh))); ELSE __DELETE(tmpCh); END_IF END_FOR //Clear the temporary list _tmpConnList.RemoveAllElements(); END_FOR END_FOR END_METHOD
Last updated: 2024-02-13
Post by totorovic on Project loses 'Download time' information
CODESYS Forge
talk
(Post)
Hello, It happens that the offline project (the IDE one) loses the Download information. Because of this the code has to be download again. Is it possible to force this info somewhere? Is it possible to ignore it? How can I solve this ? Thank you
Last updated: 2024-02-13
Post by arundara on Variable Sync Issue In Soft Plc Redundancy
CODESYS Forge
talk
(Post)
i understood that we have to use sync variable function. when i used this i was able to achieve on the requirements of our project.
Last updated: 2024-02-13
Post by eschwellinger on CODESYS Installer Update udpate to 2.2.2 version - Important Information
CODESYS Forge
talk
(Post)
There is a bug in the auto update function of the CODESYS Installer, If you are on CODESYS Installer Version 2.1.0, 2.2.0 or 2.2.1 please update with https://store.codesys.com/de/codesys-installer.html by downloading and Install it from CODESYS Store.
Last updated: 2024-02-15
Post by nano on Dynamic setting of the modbus tcp/ip slave ip address
CODESYS Forge
talk
(Post)
habe a look to this faq, this should work for u https://faq.codesys.com/plugins/servlet/mobile?contentId=24510471#content/view/24510471
Last updated: 2024-02-17
Post by francescoc on Retrieve GIT commit hash from runtime
CODESYS Forge
talk
(Post)
Hello, is it possible to retrieve the hash of the current GIT commit hash from runtime? I would like to show it on hmi in a service section. Thank you
Last updated: 2024-02-19
Post by eschwellinger on Raspberry and problem with runtime
CODESYS Forge
talk
(Post)
Are you using Bookworm and which Rasperry PI? Check the logfile with ssh connection tail -f /var/opt/codesys/codesyscontrol.log It should work with 4.11.0.0 release. Just use the ABL licenses - (check the license metrix of your application)
Last updated: 2024-02-27
Post by dhumphries on Toolbox missing item
CODESYS Forge
talk
(Post)
When you create a new POU be sure to choose "Ladder Logic Diagram" instead of "Ladder Logic" and you'll get all the additional toolbox items.
Last updated: 2024-02-28
Post by tim-roelant on Profinet fault with codesys control V3 - Receive packet error
CODESYS Forge
talk
(Post)
Hello Tim, We already met via extendsmartcoding.nl, I already bought 2 licences of codesys control. I will try you method, thx for you answer.
Last updated: 2024-02-29
Post by pbitalc on Customize Users and groups Visualization in UserMgmtConfig
CODESYS Forge
talk
(Post)
Hi, Does anyone know if it is possible to have the source code of the library "VisuUserMgmtDialogs" version 3.5.16? Thanks in advance
Last updated: 2024-03-01
Post by dominggus on Recipe Manager - RecipeManCommands, load & write wrong values, Bug?
CODESYS Forge
talk
(Post)
I've workaround it by not using an array but 30 instances of the struct and putting these in the recipe, and then using converter functions to save and load
Last updated: 2024-03-02
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.