Post by laurits on Max lines of code, codesys CNC ?
CODESYS Forge
talk
(Post)
Hi, yes now its working, to get "QUEUE.bFull" to work, I've had to set the "QUEUE.nNumReservedEntries" to 3. (I tried different values here, only effect for larger values i can see is the the queue capacity gets smaller.) I've noticed the movement is slowing down when it reaches the end of the "fill Up", must be because of the "checkVelocity" can only see the current "QUEUE". Any way of solving this ? BUF : ARRAY[0..20000] OF SMC_GEOINFO; xp : ARRAY[1..100000] OF REAL; yp : ARRAY[1..100000] OF REAL; CASE iState OF 000: IF R_TRIG_bStart.Q THEN iState := iState + 1; END_IF bReady := FALSE; //initialize Queue GEO.dT1:=0; GEO.dT2:=1; GEO.dToolRadius := 0; GEO.dVel := 15000; GEO.dVelEnd := 15000; GEO.dAccel := 2000; GEO.dDecel := 2000; GEO.iObjNo := 0; GEO.piDestPos.dX := 0; GEO.piDestPos.dY := 0; QUEUE.bEndOfList := FALSE; QUEUE.nPastMarker := -1; QUEUE.nWritePos := 0; QUEUE.pbyBuffer := ADR(BUF[0]); n := 0; sMC_CheckVelocities(bExecute:= FALSE); SM3_CNC.SMC_SetQueueCapacity(ADR(QUEUE), SIZEOF(BUF)); QUEUE.nNumReservedEntries := 3; 001: FOR i := 1 TO SIZEOF(xp)/SIZEOF(xp[1]) DO xp[i] := UDINT_TO_REAL(i) * 0.01; yp[i] := UDINT_TO_REAL(i) * 0.01; END_FOR iState := iState + 1; 002: WHILE NOT QUEUE.bFull DO // when the Queue is full, wait until it has been processed by the following FBs n := n + 1; GEO.iSourceLine_No := n; GEO.piStartPos := GEO.piDestPos; // copy last destination GEO.iMoveType := LIN; // generate linear movement GEO.iObjNo := GEO.iObjNo + 1; // calculate number GEO.piDestPos.dX := xp[n]; // generate position GEO.piDestPos.dY := yp[n]; SMC_CalcLengthGeo(pg := ADR(GEO)); // calculate length of object with the help of the standard function SMC_AppendObj(poq:=ADR(QUEUE), pgi:=ADR(GEO)); //append object to queue IF n = UDINT_TO_DINT( SIZEOF(xp)/SIZEOF(xp[1])) THEN // all target positions processed QUEUE.bEndOfList := TRUE; iState := iState + 1; EXIT; END_IF END_WHILE sMC_CheckVelocities(bExecute:= TRUE, poqDataIn:= ADR(QUEUE)); bReady := TRUE; // Send message to smc_interpolator to start 003:
Last updated: 2025-06-04
Post by dnordenberg on BOOL variable in OPC UA and modbus simultaneously
CODESYS Forge
talk
(Post)
How can I have an BOOL variable that is read/write in both modbus TCP server and from OPC UA at the same time? Variables with %MX.n %QX.n addressing which is used for BOOL/coils in modbus server is not allowed in OPC UA symbol list on Schneider M251 controllers. I have already asked on Schneiders forum but there are not a lot of codesys experts over there :( So OPC symbols can't have a address and the modbus TCP server needs a address. So how should I do it then? It seems like an impossible combination. Since I want read/write access from both ways I can't just simply make a second variable and assign it the value of another since it would be a one way assignment. I also tried using VAR_CONFIG which then makes the address syntax %Q or %M in my main variable list and that fools OPC UA Symbol Configuration to allow it and then I add the complete %MX.n address of it in the VAR_CONFIG list. This semi works, I can toggle the BOOL from modbus but the OPC UA symbol seems to be read only. It displays symbol status but nothing happens when I toogle it. I think I need another way to have the variables and symbols pointing to the same bits in memory... My plan B is to write a BOOL array compare FB that saves a history bit from previous cycle and if that does not match current status at next cycle for either the OPC symbol or the modbus variable then it copies the new status over to the other. Maybe ugly but it's like my last alternative. Kind regards David
Last updated: 2025-07-14
Post by testlogic on Sending Sequential Modbus TCP Packets
CODESYS Forge
talk
(Post)
I have a Modbus TCP slave device where I need to do sequential writes to the same register. The register I'm writing to is kind of like a command line, each packet is a command word encoded in Hexadecimal. I am having difficulty implementing this system in CoDeSys 3.5 SP19. I feel like the structure of the program should be something along the lines of (Pseudocode): ModbusTCPSend(Command Register, Command1) ModbusTCPSend(Command Register, Command2) ModbusTCPSend(Command Register, Command3) I have tried to implement this with a rising edge trigger wMot1OPCode := 16#E1; //Stop Motor & Kill Program xMot1SendOP := TRUE; //Send OP on rising edge xMot1SendOP := FALSE; //Reset wMot1OPCode := 16#9E; //Disable Motor xMot1SendOP :=TRUE; //Send OP on rising edge xMot1SendOP := FALSE; //Reset Where "wMot1OPCode" is the IO map for writing to the command register, and "xMot1SendOP" is the rising edge trigger for that modbus channel. However, this doesn't work. The device never responds to the modbus commands. It seems like the trigger variable is switched too quickly for modbus to send the packet. I know the modbus register is working, because I can set the channel to cyclic and the device will respond. However, I can't use this reliably because I need each command to be sent once, in order. Cyclic keeps re-sending the commands and seems like it could miss a command as well if one was sent in-between cycle time. I have also trying using the Application trigger as described by https://faq.codesys.com/pages/viewpage.action?pageId=24510480, but this is also not working for me. See attached picture for my FBD code. This seems like a simple function, I can't tell what I'm doing wrong here. Thanks for the help.
Last updated: 2024-03-06
Post by mp9876 on Device logon problem following fresh install
CODESYS Forge
talk
(Post)
All screenshots are enclosed in MS Word document. NOTE; 4 questions features at the end. Any assistance would be greatly appreciated! Hi everyone, I am still having device logon problem following a fresh install Here are the STEPS I went through following a FRESH CODESYS Win 64 3.5.19.60 install on a different computer. ‘Gateway not configured properly’ when attempting to REFRESH from the Users and Groups. Then did Gateway manage and confirmed it was ok: This message popped out as it was a fresh install: YES then: Initially went with Administrator twice (user & password) but it did not like it. No device is responding to …: Continued by setting a new user Pressed OK and obtained the following message: Stopped and Restarted PLC at that point: Obtained the following: Attempted to login a 2nd time without success. Then I scanned the network to see if matching device can be detected: Only way to get it detected was to remove the tick in the ‘Hide non-matching devices…’ Attempted a WINK but got a return like this one: REFRESH either @ Users and Groups or @ Access Rights returns: Then created user ‘mp’ at Project level ang logged in: Understandably device user mp9876 was not valid for the Project. Device information A few questions comes to my mind following these connection attempts: 1- Gateway not configured properly message pops out because of a non-compatible device ? 2- Why would the device not be compatible ? 3- Any way to make the device compatible ? 4- Any ideas on how to get this connectivity problem to the device solved ?
Last updated: 2024-03-17
Post by mawaloc on IMAGE DISPLAY ACCORDING TO INPUT VARIABLE
CODESYS Forge
talk
(Post)
Hello thank you to all, it's work regards
Last updated: 2023-08-17
Documentation / Usage Help For Scripting Engine Libraries
CODESYS Forge
talk
(Thread)
Documentation / Usage Help For Scripting Engine Libraries
Last updated: 2023-08-21
Strong Private Key Protection for Encryption Certificates
CODESYS Forge
talk
(Thread)
Strong Private Key Protection for Encryption Certificates
Last updated: 2023-08-22
No source code available for profinet library
CODESYS Forge
talk
(Thread)
No source code available for profinet library
Last updated: 2023-08-23
Security Screen - Custom Certificates for OPC UA Server?
CODESYS Forge
talk
(Thread)
Security Screen - Custom Certificates for OPC UA Server?
Last updated: 2023-08-23
Post by kreisfilho on Stop raspberry from executing a plc program
CODESYS Forge
talk
(Post)
Hi guys, Can someone inform where in a raspberry pi are stored the codesys programs? I´ve been training the use of a RPI as PLC, which works pretty well, however while both the RPI and PC (running codesys) remain connected to the same network. The question is: how to run the codesys program downloaded to the RPI as a stand alone device (disconnected from the PC)? Thanks! Kreis
Last updated: 2023-08-23
V3.5 SP19 C-Code-Module nicht auffindbar
CODESYS Forge
talk
(Thread)
V3.5 SP19 C-Code-Module nicht auffindbar
Last updated: 2023-08-23
OPC UA Server limitations, large array crashes runtime
CODESYS Forge
talk
(Thread)
OPC UA Server limitations, large array crashes runtime
Last updated: 2023-08-23
Stop raspberry from executing a plc program
CODESYS Forge
talk
(Thread)
Stop raspberry from executing a plc program
Last updated: 2023-08-24
Raspberry Pi Control SL MC - Restoring License not working anymore!
CODESYS Forge
talk
(Thread)
Raspberry Pi Control SL MC - Restoring License not working anymore!
Last updated: 2023-08-24
Unable to Import PLC Open XML from Easy Remote IO
CODESYS Forge
talk
(Thread)
Unable to Import PLC Open XML from Easy Remote IO
Last updated: 2023-08-24
Post by mozed on Connection to device closed
CODESYS Forge
talk
(Post)
i found this error in /opt/CoDeSysControl/Files
Last updated: 2023-08-25
Post by reinier-geers on Ping By Name
CODESYS Forge
talk
(Post)
What library is that? Is there a version 9.2 ?
Last updated: 2023-08-25
Post by pierre123 on User management - User Tab missing
CODESYS Forge
talk
(Post)
i had the same problem. Thanks you for the response.
Last updated: 2023-08-25
Same program to more than one PLC
CODESYS Forge
talk
(Thread)
Same program to more than one PLC
Last updated: 2023-08-25
Two drives on one axis, Gantry Robot
CODESYS Forge
talk
(Thread)
Two drives on one axis, Gantry Robot
Last updated: 2023-08-25
Profinet connection to Siemens CP343-1 Lean (IO-Device/Slave)
CODESYS Forge
talk
(Thread)
Profinet connection to Siemens CP343-1 Lean (IO-Device/Slave)
Last updated: 2023-08-26
new feature: list/view plclogs from the plcs
CODESYS Forge
talk
(Thread)
new feature: list/view plclogs from the plcs
Last updated: 2023-08-30
Post by timvh on gateway problem
CODESYS Forge
talk
(Post)
Maybe select the local gateway instead of the gateway on the remote device?
Last updated: 2023-08-31
Comments in arrays and assigning RST coil's to 600 outputs
CODESYS Forge
talk
(Thread)
Comments in arrays and assigning RST coil's to 600 outputs
Last updated: 2023-08-31
Ranges, Lambdas, on Fixed arrays of structs
CODESYS Forge
talk
(Thread)
Ranges, Lambdas, on Fixed arrays of structs
Last updated: 2023-08-31
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.