Search talk: array declarations

 
<< < 1 .. 10 11 12 13 14 .. 22 > >> (Page 12 of 22)

Post by janderson on OPC UA Server limitations, large array crashes runtime CODESYS Forge talk (Post)
when using an array of structs, the runtime crashes. but when using an array of LREALS, it'll do 100k at least
Last updated: 2023-08-23

Post by timvh on displaying all incoming CAN bus messages CODESYS Forge talk (Post)
Create a (global) array of Messages: aMessage : ARRAY[0..NR_OF_MESSAGES-1] OF CAN.RxMESSAGE; Then add each received message to the array. IF UserVarGlobal.g_countMsg_RPMset < NR_OF_MESSAGES THEN aMessage[UserVarGlobal.g_countMsg_RPMset] := Message; UserVarGlobal.g_countMsg_RPMset := UserVarGlobal.g_countMsg_RPMset + 1; END_IF
Last updated: 2024-07-22

Post by timvh on Array of Program CODESYS Forge talk (Post)
You cannot create an array of Programs. Create a Function Block for this purpose instead of a program. You can create an array of FB instances and call each instance in a loop.
Last updated: 2024-09-03

Post by apurv on Cannot pass array of constant size to a function as a reference CODESYS Forge talk (Post)
okay but will this pass the array by copying it or it will be a reference to original array only.
Last updated: 2024-01-09

Post by paro on OPCUA array max length? CODESYS Forge talk (Post)
I think the amount of data is already relatively high and maybe it has something to do with that? Maybe also the CPU load of your device? an array with string(5000)? and have you tested with how many array elements it still works?
Last updated: 2024-02-17

Post by ihatemaryfisher on Sorting array of any-sized structure CODESYS Forge talk (Post)
With that I could make an array of varying size, but would still have to define the array type in the function's declaration VAR_IN_OUT stArray: array [*..*] of <pre-defined data type> END_VAR I wanted a function that could take an array of any type (e.g., a structured VAR) as an input. That way I could call it in multiple POUs to handle different arrays structures.
Last updated: 2023-08-18

Post by dominggus on Recipe Manager - RecipeManCommands, load & write wrong values, Bug? CODESYS Forge talk (Post)
I still have the same problem even when updating to CODESYS Recipes 4.3.0.0. My scenario: I'm trying to save/load an array of structs using the Visu: - Execute Command > "SaveRecipeAs" works properly - Execute Command > "LoadWriteRecipe" works not entirely: the structs of array[6] and array[7] should have been empty but were duplicates of array[4] and array[5]... the struct contains 26 variables and the array's length is 30.. Maybe there is a upper limit on recipe variable count?
Last updated: 2024-03-02

Post by corriibme on Setting array values with JSON Utilities SL CODESYS Forge talk (Post)
I have been trying to set an array value to a JSON structure of this form: {"key": [1,2,3,4]} While I have been able to create the key and set its value to an empty array, I've not had any luck in putting any value in that array. objindex:= fb_JBuilder.SetKeyWithArray("Key6", diParentIndex := diRootIndex); objindex2:= fb_JBuilder.SetValue(value:= iValue2, diParentIndex:= objindex); iValue2: ARRAY[0..3] OF INT:= [1,2,3,4]; The two lines of code above produce {"key6": []} . The second line essentially has no effect.
Last updated: 2024-05-12

Post by alessandro on SysMemCmp SysMemCpy CODESYS Forge talk (Post)
VAR Data1:ARRAY[1..10] OF SINT ; Data2:ARRAY[1..10] OF SINT ; Data3:ARRAY[1..10] OF SINT ; Data4:ARRAY[1..10] OF SINT ; ex_1 : BOOL ; ex_2 : BOOL ; enable : BOOL :=0 ; END_VAR // PROGRAM // The scope of this example is compare and copy the values of two ARRAY only if some value is different using SysMemCmp and SysMemCpy. // In this 2 example we don't use a FOR cicle for do this, and pBuffer1 and pBuffer2 is just a pointer to ARRAY. See details in Library util.SysMem of Codesys // The compare funcion util.SysMem.SysMemCmp is bidirectional if Data1 chanege respect Data2 ex_1 go to 1 and if Data2 change respect Data1 also // but the copy function util.SysMem.SysMemCpy work only from source ARRAY pSrc:=ADR(Data1) to destination ARRAY pDest:=ADR(Data2) // Example 1 Full ARRAY compare and copy // This compare 2 different equal ARRAY and if there is some difference ex_1 go to 1 and if you give enable he copy Data1 in Data2 ex_1 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data1), pBuffer2:=ADR(Data2), udiCount:=SIZEOF(Data1))); IF ex_1 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data2), pSrc:=ADR(Data1), udiCount:=SIZEOF(Data1)); END_IF // Example 2 Only selected area of the ARRAY compare and copy // This compare 2 different equal ARRAY starting from position number [3] for 4 byte in this case start at position [3] and finish at position number [6] // and if there is some difference only in area [3..6] of the ARRAY ex_2 go to 1 if you give enalbe he copy Data3[3..6] in Data4[3..6] // if something change in other array position[0..2] or [7..10] are ingnored ex_2 := TO_BOOL(util.SysMem.SysMemCmp(pBuffer1:=ADR(Data3[3]), pBuffer2:=ADR(Data4[3]), udiCount:=4)); IF ex_2 AND enable THEN util.SysMem.SysMemCpy(pDest:=ADR(Data4[3]), pSrc:=ADR(Data3[3]), udiCount:=4); END_IF // Attention udiCount input is intended in <byte> in the example 1 I pass to udiCount:=SIZEOF(Data1) for compare and copy the intere ARRAY and // SIZEOF pass the size of intere ARRAY in byte to the function input, in this 2 examples I used variable type SINT each one occupie 1 byte and one position in the ARRAY // and in the example 2 I pass udiCount:=4 for compare and copy only 4 position of Data3/4[3..6] if you want to extend this example and use it for an ARRAY OF WORD // remember that each WORD will occupe 2 byte (16 bit) and you will have to pass udiCount:=SIZEOF(Data1) if you need to compare intere ARRAY example 1 // but need udiCount:=(42) for the example 2 because need to compare and copy 4 word each occupie 2 byte (16 bit). // For REAL (32 bit) need udiCount:=SIZEOF(44) for LREAL or (64 bit) need udiCount:=SIZEOF(416) // a good rule is calculate the dimension of the ARRAY in byte without empty space at the end, multiple of data type number for variable bigger then 8 bit // Example : If you want to create an ARRAY for 5 REAL (32 bit) each occupie 4 byte the correct size is ARRAY[0..19] OF REAL 54=20 position. // NOTE : In the example the position of compare function util.SysMem.SysMemCmp is first and the copy function util.SysMem.SysMemCpy inside the IF is after // in one cycle of the program the two array is compared and if there is some difference and enable are copied. // If you move util.SysMem.SysMemCmp after the IF cycle he will copare the ARRAY in the current cycle but the copy of the value will do in the next cycle.</byte>
Last updated: 2025-10-24

Post by rickj on Defining local variables that can be independent with several users. CODESYS Forge talk (Post)
You need to create an array with one element for each possible user. I usually define these arrays in the root screen. FrameIndex : Array [0..MaxUsers] OF INT; Then use the global CurrentClientId (defined by one of the VISU libraries) to index the array element used to select the frame. FrameIndex[CurrentClientId]
Last updated: 2023-10-21

Post by leon78 on Codesys 3.5 SP17 Patch 2 CheckBounds (POUs for Implicit Checks) CODESYS Forge talk (Post)
Hello! I use CheckBounds (POUs for Implicit Checks). But I have a problem. I use an array as an VAR_IN_OUT of Function Block. If I try to monitor the array of variable length ([* ]), its does't work. The CheckBounds POU isn't called. If I use the array of fixed lenght ([lower..upper]), the CheckBounds POU is called. Why?
Last updated: 2023-11-14

Post by leon78 on Codesys 3.5 SP17 Patch 2 CheckBounds (POUs for Implicit Checks) CODESYS Forge talk (Post)
Hello! I use CheckBounds (POUs for Implicit Checks). But I have a problem. I use an array as an VAR_IN_OUT of Function Block. If I try to monitor the array of variable length ([* ]), its does't work. The CheckBounds POU isn't called. If I use the array of fixed lenght ([lower..upper]), the CheckBounds POU is called. Why?
Last updated: 2023-11-14

Post by mmpl on Array to String CODESYS Forge talk (Post)
I would like to create one large JSON string from an array of objects, where each object contains a value. My current approach involves using a for loop and string concatenation, but with 20,000 elements in the array, this method takes almost 7 seconds and negatively affects the PLC scan time. Is there a more efficient way to accomplish this?
Last updated: 2024-07-18

Post by mmpl on Array to String CODESYS Forge talk (Post)
I would like to create one large JSON string from an array of objects, where each object contains a value. My current approach involves using a for loop and string concatenation, but with 20,000 elements in the array, this method takes almost 7 seconds and negatively affects the PLC scan time. Is there a more efficient way to accomplish this?
Last updated: 2024-07-18

Post by janber on REFERENCE TO in an array CODESYS Forge talk (Post)
Hi all, in the online help it written, that array of reference to data type is not possible. Ok... but if I create array of struct of reference to - everything works fine - please see the screenshots: and it works this way OK. Is it intention or error in compiler 3.5.18.20 and we should avoid it? Thanks a lot, Jan.
Last updated: 2024-10-14

Post by eaglealex on Length of string and Array of bytes CODESYS Forge talk (Post)
Thank you for your answer! I know that 0 will be the end of the string. I checked it. There is no 0 in array of bytes. I made screenshots. There is array of bytes, aborted string and the result of my test via online converter.
Last updated: 2025-04-02

Post by gurkan on OPCUA array max length? CODESYS Forge talk (Post)
We are using codesys 3.5.16.30 and we have a array with strings of length 5000. We are having issues subscribing to this variable from an OPCUA client. Is there any limit in the OPCUA Server in codesys for how long an array can be on the opcua server?
Last updated: 2024-02-16

Post by alexgooi on Init Array input on a method CODESYS Forge talk (Post)
Dear Forum, I would like to initialize an array input on a method. When I do this, I get the following error: "The type of ARRAY [1..2] OF BOOL cannot have a default value in this context." I attached a picture for more clarity. Is this simply not possible or is there a different way of tackling this problem? Thank you in advance
Last updated: 2024-02-26

Post by voffi on Converting UINT into bytes and converting 2Bytes into UINT CODESYS Forge talk (Post)
There are some ways. One is to use SHR and SHL and it depends on your byte order in the data array. For Motorola byte order: PROGRAM PLC_PRG VAR u : UINT; byte_array_in : ARRAY [1..8] OF BYTE := [16#11, 16#12, 16#13, 16#14, 16#15, 16#16, 16#17]; byte_array_out : ARRAY [1..8] OF BYTE; END_VAR u := SHL(TO_UINT(byte_array_in[2]), 8) + TO_UINT(byte_array_in[1]); byte_array_out[1] := TO_BYTE(u); byte_array_out[2] := TO_BYTE(SHR(u, 8)); If it's Intel byte order just change 1 and 2 in the array indexes.
Last updated: 2023-12-07

Post by eaglealex on Length of string and Array of bytes CODESYS Forge talk (Post)
Browser's bug... Sorry
Last updated: 2025-04-02

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 mxj262 on FB having single input but initialized with Array CODESYS Forge talk (Post)
Last updated: 2024-05-04

Post by mxj262 on FB having single input but initialized with Array CODESYS Forge talk (Post)
works
Last updated: 2024-05-06

Post by ph0010421 on How to manage variable types larger than 64 bits - Ethernet/IP CODESYS Forge talk (Post)
So it's currently mapped to an array of BYTES? Can you create a UNION? TYPE sBytesString : UNION AsBytes: ARRAY[0..127] OF BYTE; AsString: STRING(128); END_UNION END_TYPE Map it to the bytes, read it in the STRING!
Last updated: 2024-09-23

Post by avenue68 on REFERENCE TO in an array CODESYS Forge talk (Post)
That's because the array only contains structures themselves, not references. It doesn't matter that what consists of each struectures unless they are not pointers.
Last updated: 2025-05-21

<< < 1 .. 10 11 12 13 14 .. 22 > >> (Page 12 of 22)

Showing results of 526

Sort by relevance or date