P3964RBC

P3964RBC 1:

VAR_INPUT
      TXstart : BOOL;     
      RXstart : BOOL;     
      Priority: BOOL;   
      TXcount : INT;      
END_VAR
VAR_OUTPUT
      Busy      : BOOL;    
      TXbusy    : BOOL;     
      TXready   : BOOL;     
      RXbusy    : BOOL;     
      RXready   : BOOL;     
      RXcount   : INT;      
      Error     : BOOL;      
      ErrorID   : INT;      
      ErrorState: STRING(80); 
END_VAR
VAR_IN_OUT
      TXbuffer: COMbuffer;   
      RXbuffer: COMbuffer;   
      TXdata  : P3964bufferBC; 
      RXdata  : P3964bufferBC; 
END_VAR

P3964bufferBC

TXstart: Startsignal, Flankengetriggert

RXstart: Startsignal, Flankengetriggert

Priority: 3964-Priorität

TXcount: Anzahl Datenbytes in TxData

Busy: Baustein aktiv

TXbusy: Sendezustand

TXready: Senden beendet

RXbusy: Empfangszustand

RXready: Empfang beendet

RXcount: Anzahl Datenbytes in RxData

Error: Fehler

ErrorID: Fehlernummer

ErrorState: interner Fehlerzustand

TXbuffer: Zwischenpuffer zur Hardware

RXbuffer: Zwischenpuffer zur Hardware

TXdata: Anwendungsdaten (zu senden)

RXdata: Anwendungsdaten (empfangen)

Hardwareanbindung

Der Funktionsbaustein P3964RBC wickelt das 3964R-Protokoll ab. Über die verwendete Hardwareschnittstelle entscheidet die Hintergrundkommunikation, die durch einen separaten Baustein (KL6ControlBC, KL6Control5B) abgewickelt wird. Die zugehörigen Datenpuffer Txbuffer und Rxbuffer werden an den Baustein P3964RBC übergeben.

Senden

Sendedaten werden von der SPS in den Sendedatenpuffer Txdata eingetragen. Die eingetragene Anzahl der Datenbytes wird in Txcount übergeben und anschließend Txstart auf TRUE gesetzt. Txstart ist flankengetriggert, das heißt, vor einem neuen Sendeversuch muß der Baustein mit Txstart=FALSE aufgerufen werden. Im Sendezustand ist Txbusy=TRUE. Nachdem die Daten erfolgreich übertragen wurden, wird Txready=TRUE.

Empfangen

Zum Empfang von Daten wird RxStart auf TRUE gesetzt. Nachdem ein vollständiger Datensatz empfangen wurde, geht der Ausgang Rxready auf TRUE und Rxcount Datenbytes liegen im Empfangsdatenpuffer Rxdata bereit. Rxstart ist ebenfalls flankengetriggert. Im Empfangszustand ist Rxbusy=TRUE.

Empfang abbrechen

Der Baustein P3964RBC kann entweder im Sende- oder im Empfangsmodus betrieben werden. Es ist empfehlenswert, den Baustein in der Zeit, in der nicht gesendet wird auf Empfang zu schalten. Solange der Baustein im Empfangsmodus ist, jedoch noch kein Startzeichen der Gegenstelle empfangen wurde kann durch eine steigende Flanke an Txstart der Empfang unterbrochen und das Senden von Daten eingeleitet werden. Nach der Übertragung geht der Baustein in den Grundzustand (Busy=FALSE) und wird erst durch eine neue Flanke an Rxstart auf Empfang geschaltet.

Priorität

Bei einer 3964R-Datenverbindung darf jede Gegenstelle zu einem beliebigen Zeitpunkt senden. Versuchen beide Seiten gleichzeitig zu senden, kommt es zu einer Kollision. In diesem Fall geht die Seite mit niedriger Priorität in den Empfangszustand und die Seite mit hoher Priorität sendet erneut. Aus diesem Grund kann bei niedriger Priorität der Ausgang RxReady TRUE werden, obwohl Daten gesendet werden sollten. Die Daten in RxData sind dann gegebenenfalls auszuwerten. Die Einstellung der Priorität auf beiden Seiten ist Vereinbarungssache.

Fehler

Im Fehlerfall geht der Baustein in den Grundzustand (Busy=FALSE) und der Ausgang Error wird TRUE. Die ErrorId gibt den Fehlercode zurück. ErrorState gibt bei Kenntnis der internen Protokollstruktur Aufschluss über den Zustand, in dem der Fehler aufgetreten ist.