Post by marsmaennchen on MQTT,mehrere Topics publish/subscribe
CODESYS Forge
talk
(Post)
Hallo zusammen, ich habe im Grunde dieselbe Frage wie in diesem Thread: https://forge.codesys.com/forge/talk/Deutsch/thread/85372a6daf/ Leider hat der Threadersteller das Problem selbst gelöst, ohne seine Lösung zu teilen. Mein Setup: Ich möchte von einer WAGO PFC200 Daten per MQTT an HomeAssistant übertragen. Die Grundkommunikation steht bereits. Angenommen, man hat 50 Lichtschalter und 50 Lampen. Wie ist das übliche Vorgehen, um 50 einzelne Bool-Werte (Lichtschalter ein/aus) effizient zu übertragen? Ich finde einfach kein Beispiel, das ich als Vorlage nutzen könnte. Muss wirklich für jeden Lichtschalter ein eigenes MQTT-Topic und somit ein eigener Baustein in CODESYS angelegt werden? Also z. B. Topic/LS1/state, Topic/LS2/state usw.? Oder gibt es eine gängige, professionellere Methode, mehrere Schalter effizient zu übertragen? Zur Eingrenzung: Ich nutze die CODESYS IIoT Libraries, da die Janz Tec MQTT Library für mich bisher zu komplex ist. Kann mir jemand bitte erklären, wie Profis so etwas lösen? Vielen Dank schon mal für eure Tipps! Gruß Patrick
Last updated: 2025-10-10
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 rajatdas2005 on Codesys Virtual control SL
CODESYS Forge
talk
(Post)
Dear All, This is regarding Codesys Virtual control SL demo version. I am facing one issue. First I will describe the steps what I have followed till now. 1. In a PC I have Windows OS. Here Codesys IDE is installed, and also using the installer option of IDE I have also installed Codesys Virtual control SL. 2. A edge-gateway is also running in the same windows PC as local host. 3. Next I have a seperate PC with Ubuntu OS with docker installed. This machine is in the same network. 4. Now I have created a project in Windows machine using device "Codesys Virtual control SL". 5. In the Ubuntu machine I am running the Codesys Virtual control SL as docker and it is using the ubuntu machine network only. 6. Next using the localhost edge-gateway when I am searching the virtual control SL docker it is able to detect it. (screenshot attached) 7. But after creating the creadentials it is telling No Device is responding. 8. I have also checked the wireshark logs and able to see that in destination port 11740 data is coming. 9. From windows PC telnet ip 11740 is also working. 10. Ping is also working ===========================================LOGS ========================= sudo ss -tlnp | grep -E "(443|1217|4840|8080|11740)" LISTEN 0 10 10.135.114.142:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=21)) LISTEN 0 10 172.18.0.1:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=24)) LISTEN 0 10 172.17.0.1:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=23)) LISTEN 0 10 127.0.0.1:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=26)) LISTEN 0 10 192.168.122.1:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=22)) LISTEN 0 5 0.0.0.0:11740 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=20)) LISTEN 0 128 0.0.0.0:8080 0.0.0.0: users:(("python3",pid=1280,fd=4)) LISTEN 0 10 172.19.0.1:4840 0.0.0.0: users:(("codesyscontrol.",pid=41864,fd=25))
Last updated: 2025-08-06
Post by cfam on Codesys Control for PLCnext (PLC - AXL F 2152)
CODESYS Forge
talk
(Post)
Good day All I would like to share some information on this site for the Codesys team as well for the future members using Codesys Control for PLCnext if it is allowed. I hope that i Post it in the correct spot. Subject: Codesys, Codesys Control for PLCnext Objective: Using the following Phoenix components to built a PLC Rack and run it on Codesys: Hardware and Software used 1. 2404267, AXC F 2152 - Controller 2. 1088136, AXL F BP SE6 - Module carrier 3. 1088129, AXL SE DO16/1 - Digital module 4. 1337224, AXL SE PD16 GND - Potential distributors 5. 1088127, AXL SE DI16/1 - Digital module 6. 1337223, AXL SE PD16 24V - Potential distributors 7. 1088123, AXL SE AO4 I 4-20 - Analog module 8. 1088134, AXL SE SC-A - Cover 9. Codesys v3.5 SP19 Patch 4 10. Codesys Control for PLCnext V4.10.0.0 Process: Firstly I built the Rack according to the Phoenix Project+ Software tool. Where I rebuilt it onto my test bench . I used the PLCnext Engineer IDE from Phoenix and all Communications where up and running and my PLC program executed successfully. THEN I tried the same PLC Layout with Codesys and Codesys Control for PLCnext. It was not successful and gave me the "Error: Local Bus not Running". I searched the web for answers but was unsuccessful in finding a solution. So I tried to change my configuration and found that the following Modules COULD NOT be recognized by Codesys Control. The result was that the Local Bus Failed to run. 1337224, AXL SE PD16 GND - Potential distributors 1337223, AXL SE PD16 24V - Potential distributors Example 1, Resulted in "Error: Local Bus Not Running": Module carrier slot 1: 1088129, AXL SE DO16/1 - Digital module Module carrier slot 2: 1337224, AXL SE PD16 GND - Potential distributors Module carrier slot 3: 1088127, AXL SE DI16/1 - Digital module Module carrier slot 4: 1337223, AXL SE PD16 24V - Potential distributors Module carrier slot 5: 1088123, AXL SE AO4 I 4-20 - Analog module Module carrier slot 6: 1088134, AXL SE SC-A - Cover Example 2, Result "Successful": Module carrier slot 1: 1088129, AXL SE DO16/1 - Digital module Module carrier slot 2: 1088127, AXL SE DI16/1 - Digital module Module carrier slot 3: 1088123, AXL SE AO4 I 4-20 - Analog module Module carrier slot 4: 1088134, AXL SE SC-A - Cover Module carrier slot 5: 1088134, AXL SE SC-A - Cover Module carrier slot 6: 1088134, AXL SE SC-A - Cover Result: Codesys or Codesys Control for PLCnext, has a PROBLEM to identify the following Modules. 1. AXL SE PD16 24V - Potential distributors 2. AXL SE PD16 GND - Potential distributors Hope that this information could be useful in future. Best regards Jaco Pretorius
Last updated: 2023-12-06
Post by rita56re on AS Exclusive Temu $100 Discount Code {act892435} {act892435} for Free Stuff Canada
CODESYS Forge
talk
(Post)
Yes, you can use the exclusive Temu discount codes "act892435" and "act892435" to receive a $100 discount on your purchases, along with the opportunity for free items. This offer is available for new customers in Canada, making it an excellent time to shop on Temu in Canada. • Temu New User Free Code Canada - [ACT892435] [ACT892435] • Temu New User Codes Reddit Canada - [ACT892435] [ACT892435] • Temu Coupon New User Code Free Shipping Canada -[ACT892435] [ACT892435] • Temu Code 2024 for New & Existing Customers Canada -[ACT892435] [ACT892435] • Temu Coupon $100 Off For New & Existing Customers Canada -[ACT892435] [ACT892435] • Temu Coupon Code Canada - [ACT892435] [ACT892435] • Temu Coupon $100 Off Canada - [ACT892435] [ACT892435] • Free Temu Coupon Codes Canada - [ACT892435] [ACT892435] • Temu Coupon New User Coupon Bundle Canada -[ACT892435] [ACT892435] • Temu Code New User 50% Off Canada -[ACT892435] [ACT892435] • Temu Code New User Discount Code Canada - [ACT892435] [ACT892435] • Temu Coupon New Customers Discount Code Canada -[ACT892435] [ACT892435] • Temu Coupon New Customer Coupon Code Canada - [ACT892435] [ACT892435] • Temu Code First Time User Coupon Canada - [ACT892435] [ACT892435] • Temu Code New User Coupon Code First Order Canada - [ACT892435] [ACT892435] • Temu Code New User Promo Coupon Code Canada - [ACT892435] [ACT892435] • Temu Coupon New Account Promo Coupon Code Canada - [ACT892435] [ACT892435] • Temu Coupon First Time User Discount Code Canada - [ACT892435] [ACT892435] • 30% Off Temu Code, Promo Codes + 26% Cash Back Canada - [ACT892435] [ACT892435] • Redeem $100 Off Temu Coupon Code Canada - [ACT892435] [ACT892435] • Temu Coupon $100 Off For New & Existing Customers Free Shipping Canada - [ACT892435] [ACT892435] • Temu 100 Off Coupon Code Legit Canada - [ACT892435] [ACT892435] • Temu 100 Off Coupon Codes Reddit Canada - [ACT892435] [ACT892435] • Temu 100 Off Coupon Code For Existing Users Canada - [ACT892435] [ACT892435] • Temu Coupon 100 Off Coupon Code UK Canada - [ACT892435] [ACT892435] • Temu Coupon Codes 100 Percent Off Canada - [ACT892435] [ACT892435] • Temu Code $100 Off How Does It Work Canada - [ACT892435] [ACT892435] • Temu Code $100 Off Canada - [ACT892435] [ACT892435] • Temu Code $100 Off For Existing Customers Canada - [ACT892435] [ACT892435] • Temu Code $100 Off For Existing Customers First Order Canada - [ACT892435] [ACT892435] • Temu Code $100 Off 2024 Canada - [ACT892435] [ACT892435] • Temu 100 Off Coupon Bundle Canada - [ACT892435] [ACT892435] • 100 Doller Coupon Code Canada - [ACT892435] [ACT892435] • Temu Code 100 Value Coupon Bundle Canada - [ACT892435] [ACT892435] • 100 Off Promo Coupon Codes Canada - [ACT892435] [ACT892435]
Last updated: 2024-10-26
Post by rene-h on ClientFilter used the same Client ID 2 times - Bug?
CODESYS Forge
talk
(Post)
Hello, like the topic name says, i have a problem on one Visu which i cannot reproduce on another Visu. We filter buttons with input locks and visible items with [CURRENTCLIENTID] on different WebVisu's with different ID's, and one time the itfClient used the same Client ID for 2 Clients, so the Visualization on the first ID was wrong, because that one which connected after did not have the same permissions like the first, so the first one was blocked. We read the Clients with the VisuClientIteration project: //count active clients gCli.iNumberOfClients:=gCli.iNumberOfClients+1; // if client is active write data to global struct IF gCli.iNumberOfClients > 0 THEN gCli.astClientInfo[gCli.iNumberOfClients-1].iClientID:=itfClient.ClientId ; gCli.astClientInfo[gCli.iNumberOfClients-1].stCurrentVisu:=itfClient.CurrentVisuName; gCli.astClientInfo[gCli.iNumberOfClients-1].wsUserName:=itfClient.UserName; gCli.astClientInfo[gCli.iNumberOfClients-1].sIpAddress:=itfClient.GetIPv4Address(); gCli.astClientInfo[gCli.iNumberOfClients-1].ClientType:=itfClient.ClientType; END_IF Runtime from the device: 3.5.19.20 Codesys we use: 3.5.20.10 I added a screenshot where the same ID exists 2 times. Thanks for your answers.
Last updated: 2025-05-14
Post by laruso on Runtime device Enable/Disable procedure
CODESYS Forge
talk
(Post)
I implemented the parts from the CAA Device Diagnosis Example.project and could use it for switching on and off, the CAN devices that were located under the CANbus and CANopen_Manager. But i can't do the same with I2C_master_test_version or devices below this one. In the example project there is only the EtherCAT Master, CANbus and CANopen_Manager, and Ethernet with devices below.
Last updated: 2023-10-27
Post by rmaas on Responsive Design Example
CODESYS Forge
talk
(Post)
Hi, I just tried the example project with control WIN x64 and for me this is working correct. The only difference is that it is showing 'TabletPortrait' when i hold my smartphone in portrait mode and 'Monitor' when i hold my smartphone in landscape mode. This is because smartphone resolutions have increased i guess... You could check what resoution is detected and change accordingly in IsSmartphone method.
Last updated: 2024-07-04
Post by ricola on codesys sp20 opcua not working
CODESYS Forge
talk
(Post)
Hi, same pb for me ! did you find a solution ? (I'm working on 2 raspberry pi ) The same project compiled for 4.8.0.0 runtime with CodeSys 3.5SP20 is working fine on one target, and on the other one, my UAexpert receives the same "BadIdentityTokenInvalid" and none is working on 4.11.0.0 either ... anybody ?
Last updated: 2024-08-11
Post by tortillamarcal on TargetVisu Freezing
CODESYS Forge
talk
(Post)
Hi, I have project that worked during months. This one have targetvisu where I move between screens with a frame using the function flick/slide. The last weeks when i move sliding the screen freeze but the comutation tag of the frame continue registration the movements. The program continue working at the background but the screen freeze. Has anyone encountered something similar? Thanks!
Last updated: 2024-09-12
Post by russmann on Bitmap image in the codesys visualization doesn't show up in web visu
CODESYS Forge
talk
(Post)
Bitmap Image (outlined in Red in attachment) with it’s configure window open in Codesys 2.3.9.55. Image doesn’t show-up in on-line Web Visu (this project only). No problem with bitmap images in all other codesys 2.3 projects. Web visu in Internet Explorer since 2.3 Web visualizations don't work in Edge.
Last updated: 2024-11-12
Post by gseidel on can not new a cam table in codesys V3.5 SP20
CODESYS Forge
talk
(Post)
Hi liai, I tried it with a fresh CODESYS SP21 Patch 2 installation and SoftMotion 4.18, but cannot reproduce the compile errors. Could you please upload a project archive that has the errors? Then I can have a deeper look. https://dl.codesys.com/s/q4KcbKCcZndg6oR Best regards, Georg
Last updated: 2025-09-24
Post by markus-huber on CodeSys SVN doesn't work
CODESYS Forge
talk
(Post)
I installed CodeSys V3.5 SP9 for HY-eVision2 1.18.0.0 and activated the License Keys for SVN and noticed that the "SVN" doesn't pop up when i go on Menu - Project. For some reason the SVN works on CodeSys SP10. I already deinstalled all CodeSys Applications and installed them again but it's the same. Maybe the problem already occurred and someone could help me.
Last updated: 2024-02-20
Post by nano on Map in Codesys
CODESYS Forge
talk
(Post)
There are several versions, u can use an recipt, shm, perstance variables, persistsnce manager. all these ways has some pro's and con's and some of them depending on preparation of the controller byself. others depending on your functionalies and dependencies on project. for all of these ways, you can find the informations on the onlinehelp or from controller-oem
Last updated: 2024-04-04
Post by thisischris on "You are using inconsistent overlay settings, please check your compiler defines for the current application" error
CODESYS Forge
talk
(Post)
Hello. I am a new user. On generating the first test project I am receiving this error message. You are using inconsistent overlay settings, please check your compilerdefines for the current application (-> GENERATE_OVERLAY_VISU) and the setting within the visualization manager. Can anyone help?
Last updated: 2024-05-28
Post by pharus on Setup problems with PiXtend
CODESYS Forge
talk
(Post)
Hello all, I have an PiXtend V2L complete kit and installed everything like in the manual. Ive installed Codesys V3.5 S20 Codesys Control for Raspberry Pi PiXtend_V2_Professional_for_CODESYS.package But as soon as i Create a Project, i get a lot of error messages, and i cant find the PLC via Ethernet Thanks a lot
Last updated: 2024-06-19
Post by pharus on Setup problems with PiXtend
CODESYS Forge
talk
(Post)
Hello all, I have an PiXtend V2L complete kit and installed everything like in the manual. Ive installed Codesys V3.5 S20 Codesys Control for Raspberry Pi PiXtend_V2_Professional_for_CODESYS.package But as soon as i Create a Project, i get a lot of error messages, and i cant find the PLC via Ethernet Thanks a lot
Last updated: 2024-06-19
Post by pharus on Setup problems with PiXtend
CODESYS Forge
talk
(Post)
Hello all, I have an PiXtend V2L complete kit and installed everything like in the manual. Ive installed Codesys V3.5 S20 Codesys Control for Raspberry Pi PiXtend_V2_Professional_for_CODESYS.package But as soon as i Create a Project, i get a lot of error messages, and i cant find the PLC via Ethernet Thanks a lot
Last updated: 2024-06-19
Post by pharus on Setup problems with PiXtend
CODESYS Forge
talk
(Post)
Hello all, I have an PiXtend V2L complete kit and installed everything like in the manual. Ive installed Codesys V3.5 S20 Codesys Control for Raspberry Pi PiXtend_V2_Professional_for_CODESYS.package But as soon as i Create a Project, i get a lot of error messages, and i cant find the PLC via Ethernet Thanks a lot
Last updated: 2024-06-19
Post by gatto on variables between two applications
CODESYS Forge
talk
(Post)
No. As you can see in the uploaded image, in my test project, I have a variable list GVL_1 which is located in appication_1. But if I write in POU_2, which is instead found in application 2, I cannot find the variables of GVL_1. it seems that the GVLs are children of each app
Last updated: 2024-06-24
Post by vtec35 on search runtime 4.9.0.0 for pi 3
CODESYS Forge
talk
(Post)
Hello everyone, following corrupted data on the SD card of our Pi3B+ provided with a machine, we reinstalled a CODESYS image for Raspberry Pi, but we cannot find the 4.9.0.0 runtime that is compatible with the project. Currently, the machine is on 4.1.0.0, and we tried a more recent version 4.13.0.0, but there are error messages. Thanks in advance.
Last updated: 2025-10-24
Post by mariusz997 on Visualisation - internal error
CODESYS Forge
talk
(Post)
Hi everyone. I try to reach Codesys but I have problem on the beginning. I use Codesys 3.5.18.60 and 3.5.18.30 . On both version I have this same problem - when I create new standard project with controller Control Win v3 x64, empty PLC program - I compile it and everything is ok. But when I add visualisation without any elements and compile it - I get: ~~~ ------ Build started: Application: Device.Application ------- Typify code... Generate code... Generate global initializations... [WARNING] SortingStation: HMI Device: PLC Logic: Application: Missing element configuration. Element may not be usable. [WARNING] SortingStation: fbOutletConveyour Device: PLC Logic: Application: C0196: Implicit conversion from unsigned Type 'WORD' to signed Type 'INT' : Possible change of sign [ERROR] Internal error:System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu (in english: Object reference not set to an instance of an object.). w _3S.CoDeSys.Codex86_64.V351500.CPUx86_64.CodeStore(TypeClass tc, Register RegBase, Register RegIndex, Int32 nOffset, Register RegSrc, Int32 nScale) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.GenerateVarAbsolut(IVariableExpression varexp, Int32 iArea, Int32 nAddress, IIndexInfo indexinfo, ICompiledType ctype, Int32 nTypeSize, IAccessMode am) w ..(_IVariableExpression ) w ..(IExprement ) w ..(IExprement ) w ..(_ICompoAccessExpression ) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(IAssignmentExpression assign) w ..(_IAssignmentExpression ) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(IExpressionStatement expstat) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ICompiledPOU cpou, ISequenceStatement mainRoutine, Boolean bKeepCompileInformation, IEnumerable`1 subroutines) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ICompiledPOU cpou, Boolean bKeepCompileInformation) w ..(_ICompiledPOU ) w _3S.CoDeSys.Compiler35180.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature ) w ..(_ICompiledPOU , Boolean , Boolean , _ICompileContext , _ICompileContext , Boolean , Codegeneration , Boolean& , Boolean , Boolean ) w ..(Boolean , Boolean , _ICompileContext , _ICompileContext , InitExitSignatureInfo , Boolean , Codegeneration , _ISignature , Boolean& , Boolean , Boolean ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(Codegeneration , _ISignature , InitExitSignatureInfo& , Boolean& ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(Codegeneration , _ISignature ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(ICodegenerator ) w ..() w ..() Build complete -- 1 errors, 2 warnings : No download possible ~~~ Could someone help me with this problem? Thank you in advance Mariusz
Last updated: 2025-11-11
Post by dwpessoa on CNC Jumps G20 - SMC_NCInterpreter and long time to process
CODESYS Forge
talk
(Post)
I am studying and developing a Softmotion+CNC system for a machine that executes multiple pieces. The G code program is written by the machine operator and each cycle execute 1 piece. The programs are large, exceeding 1000 lines and using up to 8 axes (X, Y, Z, A, B, C, P and Q). The machine needs to run cyclically, executing N pieces (selected by the Operator)... so I tested it using Looping and counters (G36 G37 and G20) and it worked, but it takes a long time to process, and the more pieces I need, the longer the processing time and this is totally impracticable. I found this solution which was very good, and for a few cycles it works well, but for 99999 pieces of a program with 1000 lines, it doesn't work very well... Another solution I tested is to maintain the interpolator with an automatic restart, that is, I load the program without looping (without G20) and give it another start as soon as it finishes. This partially resolved it, but there is still a delay in processing SMC_NCInterpreter in each restart :(. Another solution I thought of is to manually create the SMC_GEOINFO structure and then reuse it, avoinding the Interpreter, but reading the documentation and checking the structure filled by standard blocks, I noticed that there doesn't seem to be a "JUMP" function in the structure! In other words, the SMC_NCInterpreter actually keeps copying and copying the program section for each jump (G20)... If I repeat a 10-line program 1000 times, I will have a structure with more than 10000 lines... possibly this is the cause of take so long to process. Has anyone ever had a problem like this? I believe the same thing happens with typical applications with manipulator robots using Codesys in continuous cycles, and I would like to know if there is any solution, or even if I am misinterpreting the G20 question in SMC_GEOINFO. Thanks!
Last updated: 2023-09-20
Post by george32 on CSV file and string manipulation.
CODESYS Forge
talk
(Post)
Dear folks, I think I have a rather simple question but I could not find the right answer to my question: I have made with Excel a CSV file where I would like to have some general data regarding my program variables. I have made an program what let me read the file. The string I am currently get is at follows: 'IP_Adres;192.168.45.12$R$NPort_number;2000$R$NCycle_time;43$R$NStart_Standard_IO;20$R$N' Now I want to split the string in multiple part, which I later would connect to the right variable. By Google and experimenting I have reached to the following code for the first part of the splitting proces: // Splitting the BOM of the string: Received_string := FileReadString; IF LEFT(STR:=New_string,3)= '' THEN Received_string_without_BOM :=RIGHT(STR:= Received_string,SIZE:= (LEN(STR:= Received_string))-3); END_IF //Splitting the remaining string in part for later declaration. WHILE index = 0 DO index_split_part := FIND(STR1:= Received_string_without_BOM,STR2:= '$R$N'); Part_of_String[index]:=LEFT(STR:=Received_string_without_BOM, SIZE:= index_split_part); index := index + 1; END_WHILE However in the splitting proces I could not understand what is really happening. I understand that the Find() function returns the first value the $R$N in the Received_string_without_BOM. This would mean that the index_split_part := 23 I|P| _ |A |d|r|e|s|;|1_|9 |2 |. |1 |6 |8 |. |4 |5 |. |1 |2 |$ |R |$ |N |P | 1|2| 3 |4 |5|6|7|0|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27| So the next part is to read the first 23 characters of the Received_string_without_BOM with the LEFT() function. I expected that the outcome the following was: 'IP_Adres;192.168.45.12$'. However the outcome is: 'IP_Adres;192.168.45.12$R'. I do not understand where the R after the $ sign comes from, because its place is 24 so it would not be added to the part_of the_string[index]. If I hard coded value 24 for the size it gives me the following return: 'IP_Adres;192.168.45.12$R$N'. I would expect everything till the R but the code adds the $N also to the string. I hope someone could explain to my what I am seeing wrong in my point of view? With kind regards, George
Last updated: 2024-09-27
Post by rcaponi on Codesys Control RTE V3. Remote Control
CODESYS Forge
talk
(Post)
Hello, I would like to have, if possible, some clarification on this function. That is, I would like to understand if it is useful for managing, fom my development PC, the RTE runtime executed on a remote control. This is what the help says: Remote PLC: Opens the Remote Configuration dialog. By enabling or disabling the Control remote PC, not local option, you determine whether a PLC is used that is on a remote or local PC. Accordingly, the menu commands Start PLC, Stop PLC, and PLC Configuration refer to the local PC or a PC reached on the network. For the remote PC, specify the Target PC address, Port number, and a Timeout value (in ms) for the connection (Remote Timeout [ms]). But does this mean that I also need to install the RTE runtime on my development PC? Is it possible to have some more information? Best regards Roberto Caponi
Last updated: 2023-09-22
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.