ADD_2D_ARRAY-Baustein
Kurz-Information
Name | ADD_2D_ARRAY |
---|---|
→POE-Typ | →Funktion |
Kategorie | IEC-Baustein, NumericEnh, Baustein mit interner Fehlerdiagnose |
Konform zur →IEC-Norm | nicht in IEC-Norm vorgesehen |
Grafische Schnittstelle | |
Verfügbar ab |
|
Funktionalität
Der Baustein addiert 2 Arrays mit 2 Dimensionen elementweise bis zu einer angegebenen Zeile und Spalte.
Sie geben das erste Array über den Ein-/Ausgang A1
ein und das zweite Array über den Ein-/Ausgang A2
. Die Arrays dürfen von unterschiedlicher Größe und Index-Unterbereich sein (z.B. A1 =
[1..2, 1..3]
, A2 = [3..4, 4..8]
). Die Arrays müssen jedoch mindestens jene Zeilen und Spalten enthalten, die über die Eingänge M
und N
eingegeben werden.
Der Baustein liefert ein Array, in dem die ersten M
Zeilen und N
Spalten das Ergebnis der Addition enthalten. Die Größe dieses Arrays wird von dem "Ziel-Array" bestimmt, dem das Ergebnis des Bausteins zugewiesen ist. Falls das Ziel-Array mehr Elemente als M * N
enthält, werden die restlichen Elemente nicht verändert.
Eingänge, Ergebniswert
Bezeichner | →Datentyp | Beschreibung | |
---|---|---|---|
Ein-/Ausgänge (VAR_IN_OUT): | A1 | ARRAY [*,*] OF REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT oder LINT (entspricht dem →allgemeinen Datentyp ANY_NUM )
| Array von variabler Länge für die ersten Operanden |
A2 | ARRAY [*,*] OF REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT oder LINT (entspricht dem →allgemeinen Datentyp ANY_NUM )
| Array von variabler Länge für die zweiten Operanden | |
Eingänge: | M | UINT | Anzahl der zu addierenden Zeilen |
N | UINT | Anzahl der zu addierenden Spalten | |
Ergebniswert: | – | ARRAY [*,*] OF REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT oder LINT (entspricht dem →allgemeinen Datentyp ANY_NUM )
| Array mit dem Ergebnis der Massen-Addition |
Der Eingang EN
und der Ausgang ENO
sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN
und zum Ausgang ENO
.
Informieren Sie sich unter:
- "Bausteine für sichere Logik", ob dieser Baustein für das Entwickeln von sicherheitsrelevanten Anwendungen unterstützt wird.
- "Kennzeichnung von sicherer Logik im FBS-Editor", welche Auswirkung die Verwendung des Bausteins als Baustein für sichere Logik hat.
Interne Fehlerdiagnose für Baustein
Der Baustein prüft, ob die Größe der Arrays für A1
und A2
mindestens M
Zeilen und N
Spalten beträgt. Ist dies nicht der Fall, wird der Ausgang ENO
des Bausteins auf den Wert FALSE
(oder eine Entsprechung) zurückgesetzt.
Beispiel für Verwendung im ST-Editor
FUNCTION_BLOCK ExampleAdd2DArray VAR array1 : ARRAY [1..2, -1..1] OF LREAL := [2( [1.0, 2.0, 3.0])]; array2 : ARRAY [-1..30, -50..50] OF LREAL := [ [5.0, 10.0, 20.0, 98(30.0)], 31( [10.0, 20.0, 30.0, 98(40.0)])]; arrayResult1 : ARRAY [1..20, 1..20] OF LREAL; arrayResult2 : ARRAY [1..20, 1..20] OF LREAL; arrayExpected1 : ARRAY [1..20, 1..20] OF LREAL := [[6, 12, 23, 17(0)], [11,22,33, 17(0)], 18([20(0)])]; arrayExpected2 : ARRAY [1..20, 1..20] OF LREAL; enoCheck1, enoCheck2 : BOOL; arrayEqual : BOOL := TRUE; indexFirstDimension, indexSecondDimension : INT; END_VAR arrayResult1 := ADD_2D_ARRAY(A1 := array1, A2 := array2, M := 2, N := 3, ENO => enoCheck1); // The following elements of 'array1' and 'array2', i.e. the following values, are added. 'enoCheck1' evaluates to 'TRUE'. // [1][-1] + [-1][-50] = 1.0 + 5.0 = 6.0 // [1][0] + [-1][-49] = 2.0 + 10.0 = 12.0 // [1][1] + [-1][-48] = 3.0 + 20.0 = 23.0 // [2][-1] + [0][-50] = 1.0 + 10.0 = 11.0 // [2][0] + [0][-49] = 2.0 + 20.0 = 22.0 // [2][1] + [0][-48] = 3.0 + 30.0 = 33.0 // check the results FOR indexFirstDimension := 1 TO 20 DO FOR indexSecondDimension := 1 TO 20 DO arrayEqual := AND(arrayEqual, arrayResult1[indexFirstDimension, indexSecondDimension] = arrayExpected1[indexFirstDimension, indexSecondDimension]); END_FOR; END_FOR; ENO := AND(arrayEqual, enoCheck1); arrayResult2 := ADD_2D_ARRAY(A1 := array1, A2 := array2, M := 3, N := 2, ENO => enoCheck2); // 'enoCheck2' evaluates to 'FALSE' because 'array1' has only 2 rows. // All elements of arrayResult2 remain unchanged. // check the results FOR indexFirstDimension := 1 TO 20 DO FOR indexSecondDimension := 1 TO 20 DO arrayEqual := AND(arrayEqual, arrayResult2[indexFirstDimension, indexSecondDimension] = arrayExpected2[indexFirstDimension, indexSecondDimension]); END_FOR; END_FOR; ENO := AND(ENO, arrayEqual, NOT(enoCheck2)); END_FUNCTION_BLOCK
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.