Serielle COM-Schnittstellen
Die COM-Schnittstellen des PCs können von TwinCAT genutzt werden. Dazu stehen zwei Betriebsarten zur Verfügung:
- Unterbrechungsfreie Stromversorgung (USV)
- COM-Port Betrieb
Der COM-Port Betrieb unterteilt sich in die Unterbetriebsarten:
- Anschluss von seriellen Buskopplern (BK8xx0)
- Allgemeine Datenschnittstelle (Simulation einer KL6xx1)
Karteireiter "Serielle Schnittstelle"
Betriebsart: USV
In der Betriebsart USV kann eine externe USV an die serielle Schnittstelle angeschlossen und von TwinCAT gesteuert werden. Z.Zt. werden die Pinbelegungen von APC und EFFEKTA unterstützt.
Im Gegensatz, zum bei Windows NT vorhandenen USV-Service, entspricht das Verhalten der USV, die über TwinCAT gesteuert wird, eher dem was an einer Maschinensteuerung benötigt wird. Der NT-Service versucht den PC so lange wie möglich mit Spannung zu versorgen und erst bei Abfall der Batteriespannung den Rechner zu stoppen.
Wird die USV über TwinCAT gesteuert (der NT-Service darf nicht aktiviert sein), wird der Rechner nach einer angebbaren Wartezeit heruntergefahren.
Betriebsart: COM - BK8xx0
Unterhalb des E/A Gerätes können serielle Buskoppler angefügt werden, die wiederum mit beliebigen Klemmen ausgestattet werden können.
Intelligente Schnittstellenkarte erforderlich Um RS485 (BK80x0) zu betreiben, ist eine intelligente Schnittstellenkarte erforderlich, die selbstständig die RTS/CTS Leitungen kontrolliert (Senden und Empfangen). |
Betriebsart: COM - KL6xx1
Die Klemmen vom Typ KL6xx1 ermöglichen eine serielle Kommunikation z.B. von der SPS über einen Feldbus - Buskoppler und - die Klemme zu einem externen seriellen Gerät (z.B. ein Barcode Leser). Über das Prozessabbild der Klemme werden die Datenbytes ausgetauscht und das notwendige Handshake gesteuert.
Diese Funktionalität kann für die im PC vorhandenen seriellen Schnittstellen nachgebildet werden. Zum einen kann ein wesentlich größerer Datendurchsatz erreicht werden, da zum einen die Baudrate höher eingestellt werden kann und zum anderen pro Zyklus mehr Datenbytes übertragen werden können (maximal fünf bei KL6xx1).
Datenbytes:
Die Anzahl der maximal zu übertragenden Datenbytes kann zwischen 16 und 4096 eingestellt werden. Zusätzlich kann die interne Puffergröße eingestellt werden, die insbesondere für den Empfang von Datenbytes benötigt wird (zwischen 4096 und 65535).
Über das Ctrl- und Status-Word wird das Handshake abgewickelt. Diese Wörter sind sehr ähnlich dem Ctrl- und Status-Byte der KL6xx1 aufgebaut, mit dem Unterschied, dass die angebbare Datenlänge statt 3 Bits zwölf Bits beträgt (maximal 4096).
- Status Bit 0: TA: Transmit Accepted
- Bit 1: RR: Receive Request
- Bit 2: IA: Init Accepted
- Bit 3: BUF_F: Pufferüberlauf (möglicher Datenverlust)
- Bit 4-12: nIn Anzahl der im Puffer vorhanden Daten
- Ctrl Bit 0: TR: Transmit Request
- Bit 1: RA: Receive Accepted
- Bit 2: IR: Init Request
- Bit 3: unbenutzt
- Bit 4-12: nOut Anzahl der zu sendenen Daten
TA / TR
Eine Zustandsänderung von TR bewirkt, dass die in nOut festgesetzte Anzahl von Daten (maximal 4096 Bytes) von Data0-DataN in den Sende-Puffer geladen wird. Die Schnittstelle signalisiert über TA die Ausführung dieses Befehls.
RA / RR
Über eine Zustandsänderung von RR teilt die Schnittstelle der Steuerung mit, dass sich die in nIn angezeigte Anzahl von Daten in Data0-DataN befindet. Die Übernahme der Daten wird im Control-Wort mit RA quittiert, erst daraufhin werden neue Daten von der Schnittstelle zur Steuerung übertragen.
IA / IR
Ist IR high, so führt die Schnittstelle eine Initialisierung durch. Die Sende und Empfangsfunktionen werden gesperrt, die FIFO-Zeiger werden zurückgesetzt. Die Ausführung der Initialisierung wird von der Schnittstelle mit IA quittiert.
BUF_F
Der Empfangs-Puffer ist voll. Daten, die jetzt empfangen werden, gehen verloren.
Extended Ctrl/Status:
Ab TwinCAT v2.10 Build >= 1313 (CE image v2.16(x86), v2.17(ARM) und höher). Diese Option wird nur von den standard PC-Schnittstellen COMx unterstützt. Wenn diese Option angewählt ist wird ein zusätzliches Wort an Prozessausgangsdaten (ExtCtrl) und Prozesseingangsdaten (ExtStatus) zu den vorhandenen Daten eingeblendet. Über diese Prozessdaten können folgende RS232-Steuerleitungen gesetzt oder abgefragt werden.
ExtCtrl Bits:
0x0001 = DTR
0x0002 = RTS
Beim Setzen/Zurücksetzen des entsprechenden Bits wird die dazugehörige RS232-Leitung gesetzt oder zurückgesetzt. Alle anderen Bits sind reserviert.
ExtStatus Bits:
0x0001 = CTS
0x0002 = DSR
0x0004 = RI
0x0008 = DCD
0x8000 = TX buffer empty (dieses Bit wird gesetzt, wenn alle Sendepuffer (inklusive des Hardware-Fifos leer sind).
Durch das Ausmaskieren der Bits kann der Status der RS232-Leitungen abgefragt werden. Alle anderen Bits sind reserviert.
Sync Mode:
Im Sync Mode wird die Kommunikation mit der Schnittstellenhardware synchron zur Kommunikationstask abgewickelt. Diese Einstellung bietet normalerweise Vorteile bei hohen Baudraten, solange die Zykluszeit der Kommunikationstask kurz genug ist. Bei 115 kBaud werden beispielsweise pro Millisekunde 12 Zeichen empfangen. Die Schnittstelle muss also mindestens in einem 1 ms Zyklus bedient werden, damit das Hardware-FIFO von 16 Bytes nicht überlaufen kann. Bei zu langen Zykluszeiten besteht die Gefahr eines Pufferüberlaufs.
Bei abgeschaltetem Sync Mode wird die Schnittstelle unabhängig von der Task-Zykluszeit jede Millisekunde im Windows-Timer-Interrupt bedient. Diese Betriebsart ist nicht echtzeitfähig und es kann bei sehr hoher Rechnerauslastung auch zu längeren Bedienintervallen kommen. Bei sehr hohen Baudraten besteht dann ebenfalls die Gefahr eines Pufferüberlaufs.
Es wird empfohlen, den Sync Mode zu aktivieren und die Zykluszeit der Kommunikationstask so an die Baudrate anzupassen, dass der 16 Byte Hardware Puffer nicht überläuft. Bei kleinen Baudraten und gleichzeitig langsamer Kommunkation-Task kann der Sync Mode evtl. deaktiviert werden.