Search talk: declare variables declaration/tooltip

 
<< < 1 .. 15 16 17 18 19 20 > >> (Page 17 of 20)

Post by wbj0t on mobus tcp slave device. read/write holdings with 2 variables. CODESYS Forge talk (Post)
Hi there. I have an issue to read and set time for the controller. In the issue many registers described as writable by 6/16 functions, and, in this time, also(!) readable! For example: I have time registers: min, hour, day, mon, year. By specifications it is possible check time (so I need always update these varibles in loop) and set time by writing these same registers, BUT how to set, if they will immediatle updated by current time after writing? So, I need to separate one address at two variables. I have seen option mark: Overlay of the process image by the holding and input register. I understand this so: When I READ by function 3, I will get variable that connected with the same INPUT address and when I WRITE by 6/16 this will change second variable that connected with HOLDING address. BUT, this mark doesnt work, when I write 6/16 and try to get by function 3, I will get written value instead INPUT variable. So, what to do?
Last updated: 2024-03-20

Post by open on How to create a stopwatch? CODESYS Forge talk (Post)
Hi @ph0010421, I tried the program the TimeTaken is calculated when stop is triggered. I want the TimeTaken to be continuously calculated and counting when a BOOL variable is true. I tried to program this way: Declaration: PROGRAM PLC_PRG VAR bStartStop: BOOL := FALSE; // Start/Stop button bReset: BOOL := FALSE; // Reset button bRunning: BOOL := FALSE; // Flag indicating whether the stopwatch is running tStartTime: TIME; // Variable to store the start time tElapsedTime: TIME; // Variable to store the elapsed time END_VAR Implementation: // Main program logic IF bReset THEN // Reset button pressed, reset the stopwatch bRunning := FALSE; tElapsedTime := T#0s; ELSIF bStartStop THEN // Start/Stop button pressed, toggle the running state IF bRunning THEN // Stop the stopwatch bRunning := FALSE; ELSE // Start the stopwatch bRunning := TRUE; tStartTime := tElapsedTime; END_IF; END_IF // Update the elapsed time when the stopwatch is running IF bRunning THEN tElapsedTime := tElapsedTime + T#1s; // Adjust the time increment as needed END_IF However counting of the seconds is not accurate. I tried changing the main task cycle time interval to 1000ms. The counting of seconds become slower. (see attached) Please help
Last updated: 2023-12-08

Post by paulorb on STRUCT AT %MW1000 CODESYS Forge talk (Post)
Hi I am trying to use STRUCT to parse commands from Modbus/TCP, Modbus client will fill the bytes related to a specific command (type, parameters), then PLC (Codesys) will access the command parameters. A STRUCT will simplify a lot the process of parsing the data, so I don't need to parse byte per byte, address will be mapped to a struct and I can use it for parsing the data. From what I understood, the compiler does not allow me to specify the location of the struct for a %MW register. VAR_COMMAND AT %MW1002: structGenericModbusCommand; This will throw: Bad declaration, use '%ML' for 'structGenericModbusCommand' variable But If I change it to %ML, when you go online you see that it is actually allocating the struct in another memory address. When we go online, on GVL we can see: VAR_COMMAND. structGenericModbusCommand %ML1002 commandType COMMANDTYPE %MB8016 ... %MB8020 I am not specifying a pointer or a reference it is a struct type, why is it mapping to a %MW location (random one). How can I control where it is mapping to? I need a consistent way to map STRUCT to specific modbus address. Is it possible? Thanks, Paulo Note I am using a Codesys OEM: Schneider Machine Expert Logic Builder (M241)
Last updated: 2024-08-13

Post by e13740e on Parameterized Property syntax for array element processing CODESYS Forge talk (Post)
Hello. I'm trying to create a Parameterized Property(CDS V3.5 SP21) to avoid copy-pasting code for processing array elements. I can't seem to get any result. Perhaps I am making a mistake with the syntax. None of the declaration options below are accepted by the compiler. If you know and use them (Parameterized Properties) in your work, please let me know. Thank you in advance. Option 1: PROPERTY <property_name> : <data_type> VAR_INPUT <index_name> : <index_type>; // One or more index parameters are declared here END_VAR</index_type></index_name></data_type></property_name> GET Code that uses <index_name> to return a value END_GET</index_name> SET Code that uses <index_name> and the implicit variable <property_name> to write a value END_SET</property_name></index_name> END_PROPERTY Option 2: PROPERTY <property_name> (<index_name> : <index_type>) : <data_type></data_type></index_type></index_name></property_name> GET Code that uses <index_name> to return a value END_GET</index_name> SET Code that uses <index_name> and the implicit variable <property_name> to write a value END_SET</property_name></index_name> END_PROPERTY
Last updated: 2025-10-09

Post by e13740e on Parameterized Property syntax for array element processing CODESYS Forge talk (Post)
Hello. I'm trying to create a Parameterized Property(CDS V3.5 SP21) to avoid copy-pasting code for processing array elements. I can't seem to get any result. Perhaps I am making a mistake with the syntax. None of the declaration options below are accepted by the compiler. If you know and use them (Parameterized Properties) in your work, please let me know. Thank you in advance. Option 1: PROPERTY <property_name> : <data_type> VAR_INPUT // One or more index parameters are declared here <index_name> : <index_type>; END_VAR</index_type></index_name></data_type></property_name> // Accessor for reading GET // Code that uses <Index_Name> to return a value END_GET // Accessor for writing SET // Code that uses <Index_Name> and // the implicit variable <Property_Name> to write a value END_SET END_PROPERTY Option 2: PROPERTY <property_name> (<index_name> : <index_type>) : <data_type></data_type></index_type></index_name></property_name> // Accessor for reading GET // Code that uses <Index_Name> to return a value END_GET // Accessor for writing SET // Code that uses <Index_Name> and // the implicit variable <Property_Name> to write a value END_SET END_PROPERTY
Last updated: 2025-10-09

Post by vipul on Multicast udp CODESYS Forge talk (Post)
Hi, Good afternoon can anybody help me with UDP Multicast code. I am not able to send or recieve data when code is dumped on linux device. Below is my code. Declaration: PROGRAM udp_multicast VAR oneTimeFlag :UINT :=0; state: INT:=0; driver: UDP.UDPDriver; //port : UDP.Port;//moved to GVL src_ipAddr_ud: UDINT; src_ipAddr_st:STRING := '192.168.127.155';//'192.168.1.155';//ipms ip address dst_ipAddr_ud:UDINT; group_ipAddr_st:STRING := '239.1.5.10'; //group_ipAddr_ud:UDINT; result: SysTypes.RTS_IEC_RESULT; //result of recieve function. bind: UDINT; //result of binding. resultCreate:SysTypes.RTS_IEC_RESULT;//result of port creation. timer:BLINK; temFlag :INT:= 0; post:INT :=0; checksumFunc:checksumXor; localStringBuf:STRING[500]; chksum:BYTE; dataBuffer:POINTER TO BYTE; checksumString:ARRAY[0..5] OF BYTE; recvSize:__XINT; errorCode:UDINT; joinGroupErrorCode:UDINT; END_VAR ************8 Implementation: IF oneTimeFlag <> 1 THEN oneTimeFlag:=1; resultCreate := driver.CreatePort(ADR(GVL.port)); src_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIPAddress:= src_ipAddr_st); GVL.group_ipAddr_ud := UDP.IPSTRING_TO_UDINT(sIpAddress:= group_ipAddr_st); GVL.port.IPAddress := src_ipAddr_ud; GVl.port.ReceivePort:= GVL.src_port;//port on which messages are expected. GVl.port.SendPort := GVL.dest_port; GVl.port.OperatingSystem := 0; //0- any system GVL.port.Socket :=3; //3- socket type is multicast bind := GVL.port.Bind(udiIPAddress:=src_ipAddr_ud,); GVl.port.JoinGroup(udiGroupAddress:= GVL.group_ipAddr_ud,udiInterfaceAddress:= src_ipAddr_ud,eLogCode=>joinGroupErrorCode); END_IF timer(ENABLE:=TRUE,TIMELOW:=T#100MS,TIMEHIGH:=T#100MS); IF timer.OUT = TRUE THEN GVL.port.Send(udiIPTo:=GVL.group_ipAddr_ud,GVL.dest_port,pbyData:=ADR(GVL.writeData),diDataSize:=SIZEOF(GVL.writeData)); ELSE SysMemSet(ADR(GVL.readData[0]),0,SIZEOF(GVL.readData)); result := GVl.port.Receive(ADR(GVL.readData),diDataSize:=SIZEOF(GVL.readData),udiIPFrom=>dst_ipAddr_ud,diRecvSize=>recvSize,eLogCode=>errorCode); SysMemMove(ADR(GVL.readDataBuf[0]),ADR(GVL.readData[0]),SIZEOF(GVL.readData)); END_IF post:=LEN(GVL.readDataBuf);
Last updated: 2024-01-14

Post by bmatlove on Variable Length Array - Cannot mix variable and fixed length dimensions? CODESYS Forge talk (Post)
Using Codesys 3.5.18.30 I am trying to work with an array of variable length in one dimension, but known in the other dimension. For example, using an array that represents a list of items, each with an attribute profile. I do not know how many items will be in the list, but I know that every item has 5 attributes, like size, weight, etc. Codesys does not seem to be able to accept this. I have referenced Data Type: ARRAY OF documentation page, which is not explicit if variable & fixed length array dimensions can be mixed. In the VAR_IN_OUT scope, I initially tried MY_ARRAY : ARRAY [*, *] OF REAL; which was no problem, of course. I then modified it to MY_ARRAY : ARRAY [*, 1..5] OF REAL; which throws C0006: ', or ]' expected instead of '..' among consequent downstream errors. I then used the Auto Declare -> Array Wizard, which accepted (asterisk)-(asterisk) and 1-5 for 2-dimensional lower and upper bounds. It output: MY_ARRAY: ARRAY[*..*, 1..6] OF INT; which throws the same error stream. What's the deal here? Is this possible?
Last updated: 2025-05-23

Post by gatto on Backtick identifiers CODESYS Forge talk (Post)
Hello, I’m in Codesys 3.5.20.40 and I try to declare the variable ´var1´ but I get an error. here : https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_rules.html i read : Backtick identifiers By using backticks, characters can also be used in identifiers that are not normally permitted in identifiers, such as special characters. The acute accent character is used for backticks: ´ (Unicode: U+02CA) The use of backticks is recommended in order to be able to use the same identifiers in CODESYS as in other programming languages or documents, such as circuit diagrams. Any character may be used between two backticks, except line breaks and other backticks. Keywords are also allowed as identifiers between backticks. Examples: ´Variable+9´ ´INT´ The backticks are part of each identifier and therefore var1 and ´var1´ are two different identifiers. Example PROGRAM PLC_PRG VAR var1 : INT; ´var1´: INT; END_VAR var1 := var1 + 1; ´var1´ := 12; Are there any limitations or is something missing in my development environment?
Last updated: 2025-10-28

Post by jerry-sorrells on Find Function: Object reference not set to an instance of an object. CODESYS Forge talk (Post)
Build: CODESYS 3.5 SP19 Patch 1 (64-bit) Host OS: Windows 10 Target: Linux SL I have a project with programs in Structured Text and Ladder Diagram. When I try to use the Find function, it works for the Active Editor; however, when I try to use Find for the Entire Project, I get the error "Object reference not set to the instance of an object." I know what this error means in the context of the program, but I have no idea why the find function is returning this error. The variable I am searching does not matter: it happens with all variables. Any help with this will be greatly appreciated. I generally use the Find function quite often as I am developing and not having it is really slowing me down.
Last updated: 2023-10-23

Post by jegerjon on Testing of Codesys program CODESYS Forge talk (Post)
I have a simulation function that toggle xSimActive. I map all IO variables to "IO GVLs" when xSimActive=0. I map IO corresponding SimIO GVL to "IO GVLs" when xSimActive=1. Then I write code for the simulation program that runs when xSimActive=1. Typically increase flow corresponding to pump speed, simulate tankfilling corresponding to flow and so on. I made a FC that require a correct code to activate simulation to avoid unintended activation by service dept. When comissioned remove any possibility to activate simulation. Super when officetesting and supporting service dept. + cheap as it requires no additional equipment, and it is easier to support customer later on in the life cycle as you can test proposed changes without setting up a testlab.
Last updated: 2023-12-07

Post by jegerjon on Testing of Codesys program CODESYS Forge talk (Post)
I have a simulation function that toggle xSimActive. I map all IO variables to "IO GVLs" when xSimActive=0. I map IO corresponding SimIO GVL to "IO GVLs" when xSimActive=1. Then I write code for the simulation program that runs when xSimActive=1. Typically increase flow corresponding to pump speed, simulate tankfilling corresponding to flow and so on. I made a FC that require a correct code to activate simulation to avoid unintended activation by service dept. When comissioned remove any possibility to activate simulation. Super when officetesting and supporting service dept. + cheap as it requires no additional equipment, and it is easier to support customer later on in the life cycle as you can test proposed changes without setting up a testlab.
Last updated: 2023-12-07

Post by alimans on OPC-UA Server, Symbol Set: Raise an error: Object reference not set to an instance of an object. CODESYS Forge talk (Post)
Hi everyone, I just created a very simple library without any code and, added it to my very simple project. after adding this library, I get an error when I try to open "Symbol Set" in "OPC UA Server" in "Communication Manager". Here is the code of my POU in the library: FUNCTION_BLOCK POU VAR eCommand : (CMD_NONE:=0, CMD_RESET:=-1) INT := CMD_NONE; END_VAR Attached is the error that I get. I also noticed that by removing the enumeration variable above (eCommand), I can open the "Symbol Set" again. Anybody has any idea why this error is raised and how could I use enumeration variables without error in "OPC UA Symbol Set"?
Last updated: 2024-08-08

Post by expertplas on No connection to opc server from codesys opc client CODESYS Forge talk (Post)
Hello, we have aproblen to connect our CODESYS OPC Client to the OPC Server. We installed the client according the CODESYS manual. We can browse the server and variables can be linked to the PLC. I created a self signed certificate for the CmpOPCUAClent as described. The server has a cerificate also. I copied the certificates to the trusted zone of server and client. But when it comes to data exchange we get an error message. "Communication error in data source OPC UA Library. Error ID : 7001 German : "Kommunikatinsfehler inder Datenquelle OPC UA -Bibiothek. Es wurde kein genauer Fehler angegeben. Fehler ID : 7001" It semms that there is no cerificate exchange. We are working with CODESYS 3.5 SP19 Patch 5. Can anyone here say something about this error or has an idea for a solution? Thanks.
Last updated: 2024-08-19

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by jp23 on Unable to Connect to Modbus RTU Device CODESYS Forge talk (Post)
Hi all, I am attempting to use the Control Win V3 soft PLC to control a WAGO 750-315 remote I/O system via modbus RTU communication. I am struggling to connect to the device. I have been following this tutorial: https://www.youtube.com/watch?v=YlRfkESaNds I have setup my devices as shown in the images below. I have verified that my com port settings are correct as I am able to connect/control using modbus simulator software with these settings. I have also connected to a modbus master simulator program as instructed in the video, but the orange triangles will not go away. Additionally, I have updated my settings to 485 using the PLC shell. I have also set "always update variables" to enabled (1). Serial port, PCI-Bus, and modbus serial device status all show as "Not Running."
Last updated: 2024-08-26

Post by thn-power on How to change OPC NodeId IdentifierType CODESYS Forge talk (Post)
Hi Yet another OPC UA question. When setting up a OPC server using "Communcation manager" (Symbol set and information model) in Codesys the NodeId is always given as "opaque" type. At least when browsing using UAExpert. Other standard OPC objects use numeric (or string) identifier, but for some reason my variables seems to get opaque/binary type. See attached photo. How can I change this? I can't see that this is a parameter in the CodesysControl.cfg. Can this be specified in the information model nodeset? And is it possible to specify the exact numeric or string NodeId for each instance? And on a related topic, is there a way to export the OPC server nodeId's with variable name so that it can be imported in a OPC Client? The .xml files in the project folder does not seem to contain the NodeId.
Last updated: 2024-09-20

Post by pernockham on Linking to IO during runtime with hot swap? CODESYS Forge talk (Post)
I have a project where a single PLC shall control multiple nodes (up to 10 units?) with IO connected through profinet. Ideally each node should be identical however with time I see situations were different setups/configurations will be used. Codesys PLC (GVLs) |Profinet | |--PNIO-node-1--| | | AIO, | | DIO, | | CNT etc. | |--PNIO-node-2--| | | AIO, | | DIO, | | CNT etc. Ideally I think of a configuration through yaml/xml-files (the assignment/linking of the profinet nodes towards GVL-variables in the PLC as well as scaling, channel configration etc.). Would be grateful if someone could suggest library/-ies that can handle the following: - Verify what IO is connected to a device/node. - Hot-swap/assign link for IO towards GVLs, either automatically or through a HMI.
Last updated: 2024-10-11

Post by bjarne-pagaard on OPC UA Server Status on Win RTE CODESYS Forge talk (Post)
Hi there, An "OPC Expert" client software is connecting to a Codesys Control RTE (x64) OPC UA Server. It reads only about 25 variables every 5 minutes. The OPC UA Server seems to shut down on the Codesys runtime. Is there any way to get information about the Codesys OPC UA Server status? Restart it? There is nothing in the PLC Logs after the OPC UA Server has started. It works for a while, then it doesn't. Any ideas? Any way of getting more info out of the Codesys OPC UA Server? -Bjarne
Last updated: 2024-10-21

Post by trent on Automation server - trends stop recording - need to manually reconnect CODESYS Forge talk (Post)
Hi All, I use the analysis page in automation server to capture historical trends from my PLC - i only sample one point per hour but it does the job (for now) One issue I have is I often log on to analysis page to find the system has stopped recording trends from my PLC. To fix this, I need to choose "state information" in the "List view" under PLC and click "Reconnect" When I do this I see my variables listed under "parameters" under "PLC Details" start updating again and the trend in Data analyzer continues to update. My Question, Why do I need to manually reconnect? Is there a way to get automation server to automatically reconnect to the PLC so I continue to capture data from the PLC? Regards, Trent
Last updated: 2024-10-22

Post by pistola on Case Function - Multiple Conditions, Is it possible? CODESYS Forge talk (Post)
Looking at the help (https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_st_instruction_case.html). I don't think it is possible but I figured I'd ask. I'm looking at have a case that evaluates two variables, instead of having multiple If Else statements I was hoping I could just use a case. Example * Case Var1 & Var 2 of 10 & 10: Instruction Code 10 & 20: Instruction Code 20 & 20: Instruction Code End_Case Obviously I tried typing as noted above and Codesys threw an error. But I was wondering if there was a different way of programming to make something like this work? If not I'll just use a bunch of If Else Statements, Thanks.
Last updated: 2024-11-03

<< < 1 .. 15 16 17 18 19 20 > >> (Page 17 of 20)

Showing results of 490

Sort by relevance or date