-> Hier kostenlos registrieren
Zunächst wollte ich alle in diesem forum begrüßen.
Aktueller Stand:
In einer Matrix UDT wird die Dimension einer Matrix [0..10,0..10] fest im Speicher reserviert. Die Anzahl der Zeilen und Spalten sind in der STRUCT vom Typ int und die einzelnen Elemente der Matrix wird mit
Nun möchte ich dieses 2 dimensionale Array auslesen und zurückkonvertieren bzw. in einem separaten DB ablegen damit ich diese Matrix für weitere Berechnungen (in vorhandenen Matrizen Funktionen z.B. Transponieren) heranziehen kann um das Ergebniss erneut in DB's abzulegen.
Datenbausteine sind ja in der S7 vom Typ struct. In meinem DB20 habe ich ein nun zweidimensionales Array hinterlegt. Es muss doch eine rationale Möglichkeit geben, auf diese Matrix Global zugreifen zu können, was ja die DB's in dem Sinne auch erfüllen.
Eigentlich muss ja nur ein STRUCT mit zwei int Werten und einem Array in SCL aus dem DB in den Originalen Struct umwandeln. STRUCT heißt Matrix.
Mein Problem. In einem DB (DB10) Habe ich nun die neu erstellte Matrix hinterlegt. Die neue Matrix beginnt ab DBD22 und stellt kein in S7 deklariertes Array mehr dar.
Zum Testen würde ich die Matrix gerne in einem FB mittels Funktion "Transponieren" (Funktion Fehlerfrei getestet mit Matrix Deklaration im FB selbst).
Hat jemand eine Idee?
Aktueller Stand:
In einer Matrix UDT wird die Dimension einer Matrix [0..10,0..10] fest im Speicher reserviert. Die Anzahl der Zeilen und Spalten sind in der STRUCT vom Typ int und die einzelnen Elemente der Matrix wird mit
um die Matrix von Außen parametrieren zu können werden die einzelnen elemente der Matrix (z.B. A) mittels For-Schleifen beschrieben, dessen values aus einem DB gelesen werden und in einem anderen DB hinterlegt werden.elemente: ARRAY[1..10,1..10] OF REAL; //in UDT
Erstellung der Matrix in FB gemäß:
A.elemente[1,1]:=2.3; etc.
Da aber auch die Dimension der Matrix Variabel sein soll (mittels input Berechnungen), werden in dem neuen abgelegten DB ebenfalls die inputs aufgelistet. Somit liegt meine Zeilenanzahl in DB20.DBW18, Spaltenzahl in DB20.DBW20 und das Array in DB20.DBD22 (Anzahl elemente kann ja berechnet werden). Bei einer kleineren Dimension der Matrix wird nur der benötigte Bereich des reservierten Speichers belegt.DATA_BLOCK DB20 FB20
BEGIN
END_DATA_BLOCK
Nun möchte ich dieses 2 dimensionale Array auslesen und zurückkonvertieren bzw. in einem separaten DB ablegen damit ich diese Matrix für weitere Berechnungen (in vorhandenen Matrizen Funktionen z.B. Transponieren) heranziehen kann um das Ergebniss erneut in DB's abzulegen.
Datenbausteine sind ja in der S7 vom Typ struct. In meinem DB20 habe ich ein nun zweidimensionales Array hinterlegt. Es muss doch eine rationale Möglichkeit geben, auf diese Matrix Global zugreifen zu können, was ja die DB's in dem Sinne auch erfüllen.
Eigentlich muss ja nur ein STRUCT mit zwei int Werten und einem Array in SCL aus dem DB in den Originalen Struct umwandeln. STRUCT heißt Matrix.
Mein Problem. In einem DB (DB10) Habe ich nun die neu erstellte Matrix hinterlegt. Die neue Matrix beginnt ab DBD22 und stellt kein in S7 deklariertes Array mehr dar.
Zum Testen würde ich die Matrix gerne in einem FB mittels Funktion "Transponieren" (Funktion Fehlerfrei getestet mit Matrix Deklaration im FB selbst).
Hat jemand eine Idee?
Zuletzt bearbeitet: