DBconfig

Der Funktionsbaustein RK512 arbeitet in zwei Betriebsarten. In der passiven Betriebsart empfängt er Daten und Anforderungstelegramme von einem Kommunikationspartner, der Datenbausteine über ihre Datenbausteinnummer adressiert. Nummerierte Datenbausteine sind in der IEC-1131 und damit auch in TwinCAT zunächst unbekannt. Datenbausteine sind in TwinCAT Variablen verschiedenen Typs, z. B. Arrays oder Datenstrukturen (STRUCT).

Zur Definition eines nummerierten Datenbausteins wird in einer Initialisierungsphase die Methode DBconfig des Funktionsbausteins RK512 mit allen notwendigen Parametern aufgerufen. Der Aufruf der Methode wird einmalig für jeden Datenbaustein durchgeführt, der vom Kommunikationspartner adressiert werden soll. Für die aktive Betriebsart (Send und Fetch) ist diese Konfiguration nicht notwendig.

In der aktiven Betriebsart können unabhängig von dieser Datenbausteinkonfiguration Variableninhalte zum Kommunikationspartner gesendet bzw. von diesem geholt werden. Die Datenbausteinnummer bezieht sich in der aktiven Betriebsart auf die Gegenstelle und muss nur dort bekannt sein.

Parameter

DbAdr

DbAdr ist die Speicheradresse einer SPS-Variablen, die als Datenbaustein definiert werden soll. Die Adresse wird mit der ADR-Funktion ermittelt.

z. B.: DbAdr := ADR( PLCvar );

Die SPS-Variable kann beliebigen Typs sein. Beispielsweise ist ein ARRAY OF WORD oder eine Datenstruktur STRUCT geeignet.

DbSize

DbSize ist die Größe der SPS-Variablen an DbAdr in Byte, die mit der SIZEOF-Funktion ermittelt wird.

z. B. DbSize := SIZEOF( PLCvar );

RemoteDbNr

RemoteDbNr enthält die Nummer des Datenbausteins beim Kommunikationspartner.

TxBuffer

Der Sendedatenpuffer TxBuffer ist vom Typ COMbuffer. Dieser Parameter wird für die Konfiguration nicht benötigt, muss aber als IN_OUT-Parameter übergeben werden.

RxBuffer

Der Empfangsdatenpuffer RxBuffer ist vom Typ COMbuffer. Dieser Parameter wird für die Konfiguration nicht benötigt, muss aber als IN_OUT-Parameter übergeben werden.

Beispiel

VAR
(* declare some DB
(* the type of data doen't matter but the
(* size shouldn't be larger than 128 bytes
(**)
    DB1 : ARRAY[1..64] OF WORD; (* exemplary type of db *)
    DB5 : ARRAY[1..64] OF WORD; (* exemplary type of db *)
    DB10 : ARRAY[1..64] OF WORD; (* exemplary type of db *)

(* input and ouput data for the RK512 function block *)
    RK512com : RK512;

    initialized : BOOL;
END_VAR

IF NOT initialized THEN
    RK512com.DBconfig( RemoteDbNr:=5, DbAdr:=ADR(DB5), DbSize:=SIZEOF(DB5), TxBuffer:=TxBuffer, RxBuffer:=RxBuffer );
    RK512com.DBconfig( RemoteDbNr:=10, DbAdr:=ADR(DB10), DbSize:=SIZEOF(DB10), TxBuffer:=TxBuffer, RxBuffer:=RxBuffer );
initialized := TRUE;
END_IF

Durch die Initialisierung im Beispiel wird erreicht, dass der Kommunikationspartner die Datenbausteine 5 und 10 beschreiben und lesen darf. Jeder Zugriff auf einen anderen Datenbaustein wird mit einem Fehler abgewiesen.