Post by damian177 on Persistence variables PFC200
CODESYS Forge
talk
(Post)
Hi, I using persistence variables like below: VAR_GLOBAL PERSISTENT RETAIN id_worker1: ARRAY [0..3] OF INT := [231,234,176,222]; id_worker2: ARRAY [0..3] OF INT := [211,129,125,221]; Initial values can cause some problems?
Last updated: 2023-12-08
Post by fless on FB having single input but initialized with Array
CODESYS Forge
talk
(Post)
with every call of the FB500 it keeps adding the INTs of the array to the sum variable. set sum to 0 before you start the loop.
Last updated: 2024-05-06
Post by john-robinson on Limiting Memory Access of an Array to Within its Bounds
CODESYS Forge
talk
(Post)
Recently we had an issue regarding some simple code to calculate a rolling average. The code indexes from zero to 199 to properly store the current input into a circular buffer which then allows us to calculate a rolling average: VAR input_5s : REAL; outs_arr : ARRAY[0..199] OF REAL; i : USINT := 0; END_VAR ___ //this code runs every five seconds, calculating a rolling average outs_arr[i] := input_5s; i := i + 1; output := OSCAT_BASIC.ARRAY_AVG(ADR(outs_arr), SIZEOF(outs_arr)); IF i >= SIZEOF(outs_arr) THEN i := 0; END_IF There is a simple bug in this code where the index will be set to 0 when it has surpassed the length of the array in bytes (800 in this case) rather than larger than the number of reals in the array (200). The solution here is simple, replacing i >= SIZEOF(outs_arr) with i >= SIZEOF(outs_arr)/SIZEOF(outs_arr[0]). In this example when the index increased to 201 and the line outs_arr[201] := input_5s was called, codesys arbitrarily wrote to the address in memory that is where outs_arr[201] would be if the array was that long. I would like to find a way to wrap the codesys array inside of a wrapper class that checks if an input is within the bounds of an array before writing to that value. I know how I would implement that for a specific array, I could create a method or class that takes an input of an array of variable length, ie. ARRAY[*] OF REAL, but I don't know how to make this for any data type. I am wondering if anyone has ever done anything similar to this, or has any better suggestions to ensure that none of the programmers on this application accidentally create code that can arbitrarily write to other locations in memory.
Last updated: 2024-03-05
Post by garrian on How to write multiple coils (Modbus FC15)
CODESYS Forge
talk
(Post)
Thanks for your reply. I belive it is contiguous, I'm writing to adress 0 to 4. Or, do you mean something else? Well, something is happening. If I on the client set adress 1,2,3 to true, only 1 is set to true on the server side. On the client side, the data is array of word. But on the server side, the coils are array of bool. Holding register is array of word on server side. Can this be a problem? Attached screenshot of how it looks at the server side.
Last updated: 2024-11-17
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
Codesys 2.3.9.28 Webvisu Tabelle mit Array 1..12,1..31 edit
CODESYS Forge
talk
(Thread)
Codesys 2.3.9.28 Webvisu Tabelle mit Array 1..12,1..31 edit
Last updated: 2012-05-11
how to declare an array size without constant
CODESYS Forge
talk
(Thread)
how to declare an array size without constant
Last updated: 2016-11-16
Exporting Array from Codesys to Text or Excel
CODESYS Forge
talk
(Thread)
Exporting Array from Codesys to Text or Excel
Last updated: 2018-10-10
Mit UNION Bit-Array auf WORD verknüpfen
CODESYS Forge
talk
(Thread)
Mit UNION Bit-Array auf WORD verknüpfen
Last updated: 2016-09-09
Fehler: Falscher Index für Array! Aufrufhierarchie aufrufen
CODESYS Forge
talk
(Thread)
Fehler: Falscher Index für Array! Aufrufhierarchie aufrufen
Last updated: 2012-03-23
DINT adds 2 additional empty bytes in array/union
CODESYS Forge
talk
(Thread)
DINT adds 2 additional empty bytes in array/union
Last updated: 2021-10-12
Eingabe in die Visualisierung in ein Array
CODESYS Forge
talk
(Thread)
Eingabe in die Visualisierung in ein Array
Last updated: 2014-06-27
Reset an Array[] in one line, possible?
CODESYS Forge
talk
(Thread)
Reset an Array[] in one line, possible?
Last updated: 2013-03-22
RUNTIME ERROR: Wrong array index! Please open callstack!
CODESYS Forge
talk
(Thread)
RUNTIME ERROR: Wrong array index! Please open callstack!
Last updated: 2016-03-20
Re: Exporting array data into Excel
CODESYS Forge
talk
(Thread)
Re: Exporting array data into Excel
Last updated: 2013-09-12
Übergabe von Array variabler Größe an FB / PRG
CODESYS Forge
talk
(Thread)
Übergabe von Array variabler Größe an FB / PRG
Last updated: 2007-08-24
wie kann ich ein Array ini mit EOF
CODESYS Forge
talk
(Thread)
wie kann ich ein Array ini mit EOF
Last updated: 2008-06-03
ARRAY finding specific value and its pocition /TwinCAT
CODESYS Forge
talk
(Thread)
ARRAY finding specific value and its pocition /TwinCAT
Last updated: 2019-11-26
Array mit Konstanten als Tabelle in der Visu dargestellt
CODESYS Forge
talk
(Thread)
Array mit Konstanten als Tabelle in der Visu dargestellt
Last updated: 2021-12-09
SysFileWrite schreibt nur 1sten Eintrag vom Array
CODESYS Forge
talk
(Thread)
SysFileWrite schreibt nur 1sten Eintrag vom Array
Last updated: 2017-06-11
Daten eines DUTs in Array mit gleichen DUTs kopieren
CODESYS Forge
talk
(Thread)
Daten eines DUTs in Array mit gleichen DUTs kopieren
Last updated: 2008-09-30
External C code with an array with initial values?
CODESYS Forge
talk
(Thread)
External C code with an array with initial values?
Last updated: 2010-02-16
Accessing a array instance variable is declared in VAR
CODESYS Forge
talk
(Thread)
Accessing a array instance variable is declared in VAR
Last updated: 2015-10-10
Problem mit Array-Index-Variable in Webvisu auf WAGO 841
CODESYS Forge
talk
(Thread)
Problem mit Array-Index-Variable in Webvisu auf WAGO 841
Last updated: 2014-12-08
[Visualization]Table element with variable-length array
CODESYS Forge
talk
(Thread)
[Visualization]Table element with variable-length array
Last updated: 2020-10-23
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
.