SerialLineControlADS

SerialLineControlADS 1:

Der Funktionsbaustein SerialLineControlADS wickelt die Kommunikation zwischen einer virtuellen seriellen Schnittstelle und der SPS ab. Der Funktionsbaustein wird zyklisch aufgerufen und stellt empfangene Daten im RxBuffer bereit. Gleichzeitig werden im Sendepuffer TxBuffer bereitgestellte Daten zur Schnittstelle übertragen.

Da die Funktion unabhängig von der Applikation abgewickelt wird, wird sie als Hintergrundkommunikation bezeichnet und kann, ebenso wie der Funktionsbaustein SerialLineControl, auch in einer schnellen Task abgewickelt werden. Im Normalfall kann der Baustein jedoch in der Standard-Task aufgerufen und so auf eine separate zweite schnellere Task verzichtet werden. (siehe Kommunikationskonzept und Unterstützte Hardware).

Sobald der Funktionsbaustein zyklisch aufgerufen und der Eingang Connect gesetzt wird, wird automatisch der parametrierte serielle COM Port geöffnet.
Dadurch ist dieser COM Port für andere Applikationen geblockt. Möchten Sie den COM Port zwischenzeitlich freigeben, um von einer anderen Applikation aus darauf zuzugreifen, so können Sie den Eingang Connect zurücksetzen. Dadurch wird der bisherige Port geschlossen. Wird in der Eingangsstruktur SerialCfg ein anderer COM Port oder eine andere Parametrierung angewählt, wird automatisch der vorherige Port geschlossen und daraufhin der neue Port geöffnet.

SerialLineControlADS 2: Eingänge

VAR_INPUT
  Connect    : BOOL;   (* connect to serial port [TRUE=connect, FALSE=disconnect] *)
  SerialCfg  : ComSerialConfig;
  NetId      : T_AmsNetId := '';            (* host NetId *)
  Timeout    : TIME := DEFAULT_ADS_TIMEOUT; (* Timeout for ADS calls *)
END_VAR

Name

Typ

Beschreibung

Connect

BOOL

Um eine Verbindung zu einem seriellen Port zu initialisieren, muss Connect TRUE am Funktionsbaustein anliegen. Liegt Connect FALSE an, so wird ein geöffneter Port wieder geschlossen.
Hinweis: Wird ein Wechsel dieser Eingangsvariablen vollzogen, kann es maximal das 6-fache der an Timeout angegebenen Zeitspanne dauern, bis die Aktion vollständig durchgeführt wurde. Die Applikation muss deshalb auf den Ausgang PortOpened achten und warten bis dieser den gewünschten Zustand annimmt.

SerialCfg

ComSerialConfig

Diese Eingangsstruktur definiert welcher COM Port mit welchen Parametern verwendet und geöffnet werden soll.

NetId

T_AmsNetId

Um die Anfrage auf dem lokalen Gerät durchzuführen, bedarf es keiner Angabe dieser Eingangsvariablen. Alternativ kann ein leerer String angegeben werden. Um die Anfrage an ein anderes TwinCAT Zielgerät zu richten kann hier die entsprechende AMS Net Id angegeben werden.

Timeout

TIME

Gibt eine maximale Zeitdauer für die Ausführung des Funktionsbausteines an. Der Defaultwert ist 5 Sekunden. (Es sollte ein Wert von mindestens 1000ms angegeben werden.)

SerialLineControlADS 3: Ein-/Ausgänge

VAR_IN_OUT
  TxBuffer         : ComBuffer;
  RxBuffer         : ComBuffer;
END_VAR

Name

Typ

Beschreibung

TxBuffer

ComBuffer

Puffer mit Sendedaten für die verwendete serielle Schnittstelle. Der Sendepuffer wird durch Funktionen wie SendByte, SendData oder SendString gefüllt.

RxBuffer

ComBuffer

Puffer in dem die Empfangsdaten abgelegt werden. Der Empfangspuffer wird durch Funktionen wie ReceiveByte, ReceiveData oder ReceiveString ausgelesen.

SerialLineControlADS 4: Ausgänge

VAR_OUTPUT
  PortOpened : BOOL;   (* Indicates if selected serial port is opened *)
  Error      : BOOL;   (* 'TRUE' if an error occurred *)
  ErrorID    : UDINT;  (* Displays the error code; 0 = no error *)
  Busy       : BOOL;   (* 'TRUE' if internal ADS communication is busy *)
  TxBufCount : UDINT;  (* number of bytes in internal Tx buffer *)
  RxBufCount : UDINT;  (* number of bytes in internal Rx buffer *)
END_VAR

Name

Typ

Beschreibung

PortOpened

BOOL

Dieser Ausgang gibt an, ob der gewählte serielle Port geöffnet und verbunden ist.

Error

BOOL

Der Error Ausgang wird TRUE, sobald ein Fehler auftritt.

ErrorID

UDINT

Der ErrorID Ausgang gibt im Fehlerfall einen Fehlercode aus. Im Kapitel Fehlercodes finden Sie eine Auflistung möglicher Werte sowie Hinweise zur Fehlerbehebung.

Busy

BOOL

Dieser Ausgang ist TRUE, so lange die interne ADS Kommunikation des Funktionsbausteines aktiv ist.

TxBufCount

UDINT

Am Ausgang TxBufCount lässt sich feststellen, ob sich noch Datenbytes im internen SPS Puffer befinden, welche noch nicht versendet wurden.

RxBufCount

UDINT

Am Ausgang RxBufCount lässt sich feststellen, ob sich noch empfangene Datenbytes im internen SPS Puffer befinden, welche noch nicht zum RxBuffer übertragen wurden.
Es muss von der Applikation sichergestellt werden, dass die empfangenen Daten schnell genug aus dem RxBuffer herausgelesen werden.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4016

PC oder CX (x86, x64)

Tc2_SerialCom