P3964R

Der Funktionsbaustein P3964R wickelt das 3964R-Protokoll ab. Über die verwendete Hardwareschnittstelle entscheidet die Hintergrundkommunikation, die durch einen separaten Baustein SerialLineControl abgewickelt wird. Die zugehörigen Datenpuffer TxBuffer und RxBuffer (vom Typ ComBuffer) werden an den Baustein P3964R ü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. 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. Im Empfangszustand ist RXbusy=TRUE.
Empfang abbrechen
Der Baustein P3964R 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.
Eingänge
VAR_INPUT
TXstart : BOOL; (* start signal, edge-triggered *)
RXstart : BOOL; (* start signal, edge-triggered *)
Priority : BOOL; (* 3964 priority, TRUE=high, FALSE=low *)
TXcount : INT; (* number of data bytes in TxData *)
END_VAR
Name | Typ | Beschreibung |
|---|---|---|
TXstart | BOOL |
|
RXstart | BOOL |
|
Priority | BOOL | 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 |
TXcount | INT | Die eingetragene Anzahl der Datenbytes wird in |
Ein-/Ausgänge
VAR_IN_OUT
TXdata : P3964buffer; (* application data (to send)*)
RXdata : P3964buffer; (* application data (received)*)
TxBuffer : ComBuffer; (* buffer between protocol software and terminal *)
RxBuffer : ComBuffer; (* buffer between protocol software and terminal *)
END_VAR
Name | Typ | Beschreibung |
|---|---|---|
TXdata | Sendedaten werden von der SPS in den Sendedatenpuffer | |
RXdata |
| |
TxBuffer | ComBuffer | Puffer mit Sendedaten für die verwendete serielle Hardware. |
RxBuffer | ComBuffer | Puffer in dem die Empfangsdaten abgelegt werden. |
Ausgänge
VAR_OUTPUT
Busy : BOOL; (* block is active *)
TXbusy : BOOL; (* send state *)
TXready : BOOL; (* send completed, data were transferred *)
RXbusy : BOOL; (* receive state *)
RXready : BOOL; (* receive completed, data were transferred *)
RXcount : INT; (* number of data bytes in RxData *)
Error : BOOL; (* error *)
ErrorID : P3964R_Error_t; (* error id *)
ErrorState : STRING(80); (* internal error state *)
END_VAR
Name | Typ | Beschreibung |
|---|---|---|
Busy | BOOL | Nach der Übertragung geht der Baustein in den Grundzustand ( |
TXbusy | BOOL | Im Sendezustand ist |
TXready | BOOL | Nachdem die Daten erfolgreich übertragen wurden, wird |
RXbusy | BOOL | Im Empfangszustand ist |
RXready | BOOL | Nachdem ein vollständiger Datensatz empfangen wurde, ist der Ausgang |
RXcount | INT |
|
Error | BOOL | Im Fehlerfall wird der Ausgang |
ErrorID | P3964R_Error_t | Die |
ErrorState | STRING |
|
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
|---|---|---|
TwinCAT v3.1.4012 | PC oder CX (ARM, x86, x64) | Tc2_SerialCom |