Skip to main content

CODESYS Math Libraries

Introduzione

CODESYS Math Libraries include Matrice libreria e interno FloatingPointUtils libreria. Matrix la libreria supporta matrici di dimensioni arbitrarie e operazioni matematiche di base su di esse. Sono supportate le seguenti operazioni: addizione, moltiplicazione, risoluzione di equazioni lineari, inversione

Descrizione del prodotto

Le Matrix la libreria fornisce un tipo di dati per definire matrici di dimensioni arbitrarie e funzioni per eseguire operazioni di base sulle matrici.

Tipi di dati e funzioni

Le matrici sono definite tramite mtx.Matrix tipo di dati. mtx.Matrix il tipo di dati salva una matrice come ARRAY di LREAL. L'array è in forma di riga principale

Le operazioni matematiche di base sono fornite come funzioni che hanno 3 matrici come VAR_IN_OUT argomento: risultato, origine, destinazione. Ad esempio, la funzione per l'aggiunta di matrici ha la seguente interfaccia:

(* Adds two matrices : C := A + B. 
* A, B, and C must have identical dimensions.
* Note: A, B, and C may all be the same matrix. *)
FUNCTION AddM : ResultCode
VAR_IN_OUT
   C : Matrix ; (* The result *)
   A : Matrix ; (* The first summand *)
   B : Matrix ; (* The second summand *)
END_VAR

La libreria offre le seguenti operazioni matematiche:

  • Addizione di matrici (per elemento): AddM

  • Sottrazione di matrici (per elemento): SubM

  • Moltiplicazione di matrici (per elemento): TimesM

  • Divisione delle matrici (per elemento): RDivideM

  • Moltiplicazione scalare di una matrice: MultMS

  • Moltiplicazione di matrici: MultM

  • Trasposizione di una matrice: TransposeM

Esistono anche alcune funzioni ausiliarie per inizializzare le matrici, copiare e accedere agli elementi:

  • Inizializza una matrice con un ARRAY di valori: InitMatrix

  • Copia ARRAY elementi da inserire nella matrice: CopyElems

  • Copia matrici con la stessa dimensione: CopyMatrix

  • Inizializza come matrice di identità: IdentityMatrix

  • Inizializza come matrice zero: ZeroMatrix

  • Leggere e scrivere elementi: Elem, SetElem

Sono previste anche operazioni più complesse:

  • Risolvere un'equazione lineare A * X = B: SolveLU

  • Invertire una matrice quadratica: InvertLU

  • Calcola il determinante di una matrice quadratica: DeterminantLU

  • Determinare un LU decomposizione (questa decomposizione serve come base per le tre funzioni precedenti): DecomposeLU

Gestione della memoria

L'utente è responsabile della gestione della memoria. Le matrici verranno inizializzate con un puntatore alla memoria InitMatrix funzione). In alcuni casi, è possibile che l'utente fornisca una memoria adeguata. Inoltre, i blocchi funzionali ausiliari MatrixS, ColVectorS, e RowVectorS può essere usato per inizializzare matrici con arrays di dimensioni costanti. IMatrixAllocator interfaccia che è disponibile anche per l'utente.