P3964R
![P3964R 1:](Images/png/9007199340852107__de__Web.png)
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 |