LGF_MatrixMultiplication (FC / V3.0.1)


Autor: Siemens Digital Industries

Kurzbeschreibung

Die Funktion multipliziert zwei Matrizen vom Datentyp ARRAY[*,*] of LREAL.

Beispiel für 2x2-Matrix:

result = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} * \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}*b_{11}+a_{12}*b_{21} & a_{11}*b_{12}+a_{12}*b_{22} \\ a_{21}*b_{11}+a_{22}*b_{21} & a_{21}*b_{12}+a_{22}*b_{22} \end{bmatrix}

Der Baustein multipliziert zwei Matrizen variabler Größe. Die einzelnen Elemente der zwei eingehenden Matrizen werden gelesen, multipliziert und anschließend in der matrixResult-Matrix ausgegeben.

Hinweis
Beachten Sie, dass die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix sein muss.
Die Größe der Ausgangsmatrix (m * n) ergibt sich aus der Anzahl der Zeilen (m) der matrix1 und Anzahl der Spalten (n) der matrix2.

Baustein Schnittstelle

LGF_MatrixMultiplication (FC)
   Ret_Val  Void
    
   error  Bool
    
   status  Word
    
Array[*, *] of LReal  matrix1  Array[*, *] of LReal
       
Array[*, *] of LReal  matrix2  Array[*, *] of LReal
       
Array[*, *] of LReal  matrixResult  Array[*, *] of LReal
       
   

Output Parameter

BezeichnerDatentypBeschreibung
Ret_ValVoidVoid - Funktion hat keinen Rückgabewert
errorBoolFALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)

In/Out Parameter

BezeichnerDatentypBeschreibung
matrix1Array[*, *] of LRealErster Faktor: Zu multiplizierende Matrix
matrix2Array[*, *] of LRealZweiter Faktor: Zu multiplizierende Matrix
matrixResultArray[*, *] of LRealProdukt: Die resultierende Matrix

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Abarbeitung ohne Fehler beendet
16#8200ERR_MATR1_LOWBOUND_COLUMNS_MATR2_LOWBOUND_ROWS
Error: Untere Grenze Spalten(Dim2) des Arrays von Matrix1 und untere Grenze Zeilen(Dim1) Matrix2 sind unterschiedlich
16#8201ERR_MATR1_UPPBOUND_COLUMNS_MATR2_UPPBOUND_ROWS
Error: Obere Grenze Spalten(Dim2) des Arrays von Matrix1 und obere Grenze Zeilen (Dim1) der Matrix2 sind unterschiedlich.
16#8202ERR_MATR1_LOWBOUND_ROWS_RESMATR_LOWBOUND_ROWS
Error: Untere Grenzen Zeilen(Dim1) der Arrays von Matrix1 und Ergbnis Matrix sind unterschiedlich.
16#8203ERR_MATR2_LOWBOUND_COLUMNS_RESMATR_LOWBOUND_COLUMNS
Error: Untere Grenze Spalten(Dim2) des Arrays von Matrix2 und untere Grenze Spalten(Dim2) der Ergebnis Matrix sind unterschiedlich.
16#8204ERR_MATR1_UPPBOUND_ROWS_RESMATR_UPPBOUND_ROWS
Error: Obere Grenzen Zeilen(Dim1) der Arrays von Matrix1 und Result Matrix sind unterschiedlich.
16#8205ERR_MATR2_UPPBOUND_COLUMNS_RESMATR_UPPBOUND_COLUMNS
Error: Obere Grenze Spalten(Dim2) des Arrays von Matrix2 und obere Grenze Spalten(Dim2) der Ergebnis Matrix sind unterschiedlich.

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
19.08.2015First released version
01.00.01Siemens Industry Online Support
02.01.2017Upgrade: TIA Portal V14 Update 1
02.00.00Siemens Industry Online Support
06.02.2017Functionality using Array[*,*]
02.00.01Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
02.00.02Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
02.00.06Simatic Systems Support
13.11.2019Regions, comments and constants are added
Moved matrices to IO field.
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
02.02.2020Insert documentation