Is it possible to link an array of bits to an alarm group to show a lot of alarms at once?
CODESYS Forge
talk
(Thread)
Is it possible to link an array of bits to an alarm group to show a lot of alarms at once?
Last updated: 2021-07-08
How to transfer data from DINT to Union(16 Bools) which I need to use in Few FBs
CODESYS Forge
talk
(Thread)
How to transfer data from DINT to Union(16 Bools) which I need to use in Few FBs
Last updated: 2023-12-14
Post by jackbrady on Function Blocks and arrays of function blocks
CODESYS Forge
talk
(Post)
Hello, I am new to Codesys and PLC programming in general (please go easy ha!) I'm not looking for code to be written for me just some help and pointing in the right direction. I am writing some code to send commands to a relay based on input values (to put it simply). Quite basic stuff. I have wrote a function block that takes a global variable (Open_command:BOOL) and outputs to another global variable (Opened : BOOL). The function block is simulating a device so I'll eventually get the globals from that. I now need to create multiple versions of this function block/ device (lets say 100) but I need each iteration of that function block to reference it's own relevant global variable. I think that the best way of doing this would be to use arrays, although I could be wrong. I am aware that for up to 100 instances I could very well manually assign everything but that seems rather time consuming and I want a fancier way of doing it. Here is a very basic example of what I am looking to do, please note I have not written this in proper code it's just to show what I mean. Global Variables V[0-100] int Open_command [0-100] Bool Opened [0-100] Bool Function Block var input x : BOOL Var output y : BOOL if x then y = TRUE ELSE y = FALSE The input to my function block will be Open_command, output will be Opened Example code. If V[x] > 10 then Open_command [x] = TRUE ELSE Open_command [x] = FALSE (So when V1 goes above 10 I need Open_command1 = TRUE therefore initiating FB1 output. V2 > 10, open_command2 = True > FB2 output V3 > 10, open_command3 = True > FB3 output ... ... ) What I can't seem to figure out is how to tie all this together, I have read through the codesys documentation and if anything it has confused me more! ha. Apologies for the poorly written post but hopefully you understand what I am trying to get at. Thanks, Jack
Last updated: 2024-02-14
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 jari-koivuluoma on Problem trying Net Base Services 3.5.15.0 TCP connection
CODESYS Forge
talk
(Post)
I have a need to send messages between 2 PLCs and I cant use network variables (because of size limit) so I tried writing this simple test program. This seems to work fine. I can send messages back and forth when a first "Start server" and then "Connect client". See the attached image. However, if I disconnect the client by setting ClientConnect to false and try to re-connect then the TCP_Client just gives me TIMEOUT error. When I stop and start the server again, then Im able to reconnect. How is this supposed to work? Why reconnecting wont work. There is not other way of disconnecting the client than setting xEnable of the TCP_Client to false. This is just a testing program and I will try it on 2 seperate devices once this works. PROGRAM PLC_PRG VAR CONSTANT mySize : UDINT := 255; END_VAR VAR Server: NBS.TCP_Server; ServerIpStr: STRING := '127.0.0.1'; ServerIP: NBS.IP_ADDR; ServerPort: UINT := 50000; ServerConnection: NBS.TCP_Connection; Client: NBS.TCP_Client; ServerRead: NBS.TCP_Read; ServerWrite: NBS.TCP_Write; ServerSend: STRING(mySize); ServerReceive: STRING(mySize); ServerConnect: BOOL; bServerSend: BOOL; IP: NBS.INADDR; ConnectedClientIP: STRING; ClientPort: UINT := 50000; ClientIpStr: STRING := '192.168.1.49'; ClientIP: NBS.IP_ADDR; ClientRead: NBS.TCP_Read; ClientWrite: NBS.TCP_Write; ClientSend: STRING(mySize); ClientReceive: STRING(mySize); ClientConnect: BOOL; bClientSend: BOOL; Error: BOOL; Message: BOOL; END_VAR // Server ServerIP.sAddr := ServerIpStr; Server( ipAddr := ServerIP, uiPort := ServerPort ); ServerConnection( xEnable := Server.xEnable, hServer := Server.hServer, ); IP := ServerConnection.IPAddress; ConnectedClientIP := F_Concat7( BYTE_TO_STRING(IP.S_un_b.s_b1),'.', BYTE_TO_STRING(IP.S_un_b.s_b2),'.', BYTE_TO_STRING(IP.S_un_b.s_b3),'.', BYTE_TO_STRING(IP.S_un_b.s_b4)); ServerRead( xEnable := ServerConnection.xActive, hConnection := ServerConnection.hConnection, szSize := SIZEOF(ServerReceive), pData := ADR(ServerReceive) ); IF ServerRead.xReady AND ServerRead.szCount > 0 THEN Message := TRUE; END_IF IF ServerRead.eError > 0 THEN Error := TRUE; END_IF ServerWrite( xExecute := ServerConnection.xActive AND bServerSend, hConnection := ServerConnection.hConnection, szSize := LEN(ServerSend)+1, pData := ADR(ServerSend) ); IF ServerWrite.xDone THEN bServerSend := FALSE; END_IF IF ServerWrite.eError > 0 THEN Error := TRUE; END_IF // Client ClientIP.sAddr := ClientIpStr; Client( xEnable := ClientConnect, ipAddr := ClientIP, uiPort := ServerPort, udiTimeOut := 10000000 ); ClientRead( xEnable := Client.xActive, hConnection := Client.hConnection, szSize := SIZEOF(ClientReceive), pData := ADR(ClientReceive) ); IF ClientRead.xReady AND ClientRead.szCount > 0 THEN Message := TRUE; END_IF IF ClientRead.eError > 0 THEN Error := TRUE; END_IF ClientWrite( xExecute := Client.xActive AND bClientSend, hConnection := Client.hConnection, szSize := LEN(ClientSend)+1, pData := ADR(ClientSend) ); IF ClientWrite.xDone THEN bClientSend := FALSE; END_IF IF ClientWrite.eError > 0 THEN Error := TRUE; END_IF
Last updated: 2024-10-03
Post by forest on SM Drive license error
CODESYS Forge
talk
(Post)
Hi, when it comes about license, I used INVTmatic Studio, which uses Codesys, for programming INVT plc. I bought Codesys Modbus license, it was not expensive, and then realised that INVT didn't have License Manager option (greyed out in program) which is needed for using of Codesys License. I contacted support from INVT, but developers told me that option is still not available. So depending on environment for programming Codesys, you can or not use Modbus license. Good thing about this version of Modbus TCP it works both direction. I could send commands and receive feedbacks from drive. But communication stops after 30 mins. So I used simple version of ethernet modbus which is somewhere in INVT or Condesys library (I can check tomorrow) which works only one way. I could send cmd to drive, and control it, but didn't have any feedback, like some readings back in PLC. which is bad, but at least I could start it and it didn't fail after 30 mins.
Last updated: 2024-01-10
Post by k2saki on CNC / G-Code streaming processing ( to start quickly in long G-Code File )
CODESYS Forge
talk
(Post)
Is it possible like G-Code streaming processing (like FANUC or SIEMENS DNC Function )? Or Does anyone know the tips for CODESYS Motion to start moving long Long G-Code File quickly? I have to wait long time after "Start" button to start moving, I have to wait finishing interpreting whole G-Code file, ( and I have to prepare huge buffer to store. ) Now, I'm working on my CNC Project using SMC_ReadNCFile2, and SMC_NcInterpreter to preprocess G-Code. I tried to set SMC_Interpolator.xExecute to true to Start while after SMC_NcInterpreter processed more 50-line of G-Code, but that not worked, I had to wait SMC_NcInterpreter processed all lines to start SMC_Interpolator. G-Code have about 2000 lines of XY of G01 (or more over.. ) of short segment that a CAM software has exploded from NURBS Curve.
Last updated: 2024-05-03
Post by vformanek on OPCUA Datasource, can not login...
CODESYS Forge
talk
(Post)
Hello? I have a problem with datasource... I am trying to connect to a OPCUA server. I create a datasource, but I can not login into it. I need to use login credentials to login... Everything works fine in UAExpert, but in codesys I cant seem to get in properly using the login credentials... I have tried to configure the datasource initializer but seem to keep failing... Do I need to call it somewhere ? Will the find endpoints work with this configured to store my password ? !
Last updated: 2023-11-20
Post by pistola on Pause Tab Order
CODESYS Forge
talk
(Post)
I'm programming an HMI, and on a settings page I have external buttons allow the operator to tab between various elements to select which one they want to adjust. I then use "Input Configuration" > "OnMouseClick" to select which variable to adjust. The problem is, when adjusting the variable the pointer will move to the other elements within the tab order. Is there a way to pause or prevent the pointer to move to the other elements when a variable is TRUE?
Last updated: 2025-03-17
Post by bagusd on gateway problem
CODESYS Forge
talk
(Post)
hello, I have a problem with the gateway not being able to connect to the plc, does anyone know why the gateway is difficult to connect to the plc? even though the lan cable has been connected to the plc and codesys gateway V3 has been restarted, thank you
Last updated: 2023-08-25
Post by bnewman on Delete PLC Log
CODESYS Forge
talk
(Post)
I also would like to now how to clear the PLC Device Log. @eschwellinger are you saying there is no way to clear the log? When I am debugging I want to clear the log, it would make things some much easier to find.
Last updated: 2023-10-17
Post by totorovic on Codesys Softmotion Win V3 x64
CODESYS Forge
talk
(Post)
You have to update the device in your IDE to 3.5.14 or you can contact your Codesys runtime supplier to know how to set the connected system to 3.5.19
Last updated: 2023-11-09
Post by liamb on Unable to add alarm configuration object to project
CODESYS Forge
talk
(Post)
I'm trying to add an alarm configuration object to a project in Codesys 3.5 SP12 however when I right click on application and try to add object there is no option for it. Is alarm configuration avaiblible on this service pack?
Last updated: 2024-09-24
Post by kumareasu on Cursor to move to a control
CODESYS Forge
talk
(Post)
How to move cursor to a particular control in HMI through PLC program to enter data from keyboard without using tocuhscreen or mouse
Last updated: 2025-08-08
Post by dim54 on multiple entry of the Owner password
CODESYS Forge
talk
(Post)
I have to enter the owner password from time to time, even though I haven't closed the project yet. Is there a way to disable this option? So I only have to enter it once when I log in to the project, and that's it.
Last updated: 2025-10-10
Post by fransh on WAGO PFC200 FW25 unable to connect
CODESYS Forge
talk
(Post)
Hi I set up my WAGO PFC200 controller and am unable to connect to the processor. Gateway is set to local host. I can connect to the unit with the WAGO Web Based management but not with Codesys V3.5 SP18.5. Any suggestion?
Last updated: 2023-12-09
Post by yelshebani on Add device greyed out
CODESYS Forge
talk
(Post)
Hi Add device is greyed out, havent connected to the PLC yet. what do I need to do to have ability to add devices, I want to add a Modbus TCP Master device
Last updated: 2023-12-19
Post by hclai on Table Content with Multilanguage
CODESYS Forge
talk
(Post)
I have an data structure which intend to list in a table and let user to add the content to the table. How can we able to support for displaying different language in the content of the table? which is dynamic to the user input.
Last updated: 2024-01-10
Post by victor on Trend-Trace / Time x-axis
CODESYS Forge
talk
(Post)
Good morning, I am new to codesys, I am currently manipulating the Trace and Trend elements and I would like to know if it was possible to configure a variable or a trigger to reset the "X" axis to 0. have a good day.
Last updated: 2024-01-26
Post by dtamm on How to read string from CharBufferPtr?
CODESYS Forge
talk
(Post)
Solved it! The simple answer was to declare a variable as POINTER TO STRING and assign the GetMessage result to that variable. Then, the ^ operator can be used to extract the message as string.
Last updated: 2024-02-21
Post by dkugler on I want to convert a WORD to a hex string like 15.432 to '3C48'
CODESYS Forge
talk
(Post)
you try to convert a WORD with BYTE_TO_HEX directly? Using https://de.helpme-codesys.com/ lead to the SM3_shared lib. There is a function: https://content.helpme-codesys.com/en/libs/SM3_Shared/Current/SM3_Shared/StringFormat/Word_To_HexString.html
Last updated: 2024-04-19
Post by helcioburd on How long can a WSTRING be in CodeSys V3?
CODESYS Forge
talk
(Post)
Thank you, very useful information. I did a library for serial communication and could not understand the reason only 256 chars could be read (after sending more than 256). Following your suggestion, I can now send any number of chars and everything will be received.
Last updated: 2025-03-02
Post by timvh on eCockpit - unable to start simulation
CODESYS Forge
talk
(Post)
You need to start the application, see the "start" option at the top left (next to close simulation).
Last updated: 2023-08-31
Post by rshabsh on How to allow a user to handle certificates without access to sourcecode?
CODESYS Forge
talk
(Post)
Did you find the solution?
Last updated: 2024-08-07
Post by trusty-squire on How to revert to previous version library
CODESYS Forge
talk
(Post)
Turns out the issue was user error, no need to revert libraries.
Last updated: 2024-09-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.