TIA LGF MatrixMultiplication: Array mit variablen Grenzen

Fluffi

Level-2
Beiträge
532
Reaktionspunkte
88
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte gerne in TIA(v15.1) mit der Funktion MatrixMultiplication (v3.0) aus der Siemens LGF Bibliothek eine Matrix`-Multiplikation durchführen. Diese Funktion benötigt als Eingabeparameter für die Vektoren bzw. Matrizen einen Datentyp des Typs "Array[*, *] of LReal", also ein unbestimmtes Array variabler Größe. Die übergebenen Matrizen werden in der Funktion selber dann hinsichtlich der Dimensionen analysiert. Allerdings lässt sich dieser Datentyp nur als InOut Parameter einer Funktion definieren aber nie als Variable und einen fixen Array an die Funktion zu übergeben funktioniert auch nicht, da dann der Datentyp nicht mehr übereinstimmt. Wie kann ich einer Funktion die solch einen Datentyp benötigt überhaupt Daten übergeben?
 
Als Eingabe kannst du jedes 2 dimensionale Array nehmen. Wenn du eine zwei Matrizen mit 3x3 dann machst due zwei Variable vom Type "Array[0..2,0..2] of LReal".

Der FC LGF_MatrixMultiplikation erlaub an seinen InOut Eingängen alle zwei dimensionalen Arrays. Siehe Bild.

Die Warnungen am oberen Beispiel rühren daher, dass dadurch, dass man ein Input an einen InOut Eingang eines Bausteins verschaltet. Das System weiß aber nicht, ob innerhalb der Bausteins auf die InOut geschrieben wird und warnt vor Wertänderungen, die bei nächsten PLC Zyklus verloren sind. Der Eingang wird da ja mit den aktuell am Eingang des Bausteins anliegenden Wert überschrieben. Des weiteren gibt es eine Warnug, weil möglicherweise der Output nicht korrekt initialisiert wurde (weil er auch nicht initialisiert wurde) und nun in dem LGF_Baustein darauf auch lesend zugegriffen werden könnte.

Der dritte Aufruf im zweiten Bild ermöglicht, dass man erst außerhalb des FBs entscheidet, welche Größe die Matrizen haben sollen.

Habe hier leider nur ein TIA V16 um das nachzuvollziehen und die LGF V5.0
 

Anhänge

  • LGF_Matrix.PNG
    LGF_Matrix.PNG
    97,8 KB · Aufrufe: 29
  • LGF_Matrix_2.PNG
    LGF_Matrix_2.PNG
    100,9 KB · Aufrufe: 27
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die Hilfe. Dank deiner Erklärung und den Screenshots hab ich es hinbekommen. Meine Deklaration der 2D Arrays hatte nicht gepasst und zudem dachte ich, dass es bei der Funktion erlaubt sein, dass bei der zweiten Eingangsmatrix eine Array-Dimension fehlen darf.
 
Zurück
Oben