Architektur der Netzteile
Die vier verfügbaren Netzteile des CX10x0-Systems erfüllen mehr als nur die Aufgabe, das System mit Strom zu versorgen. In jedem Netzteil sind drei Grundfunktionen verfügbar. Zusätzlich bieten die verschieden Modelle unterschiedliche Anbindungen an Kommunikationsbusse an. Durch diese erweiterten Funktionen unterscheiden sich die internen Architekturen der Netzteile. Zunächst werden die gemeinsamen Funktionen vorgestellt. Als Beispiel dient das Netzteils CX1100-0001, da dieses Modul stellt nur diese Grundfunktionen bereitstellt. Die weiteren Modelle beinhalten dann Erweiterungen zu dieser Architektur.
Alle Netzteile verfügen, abgesehen von der Spannungsversorgung, über folgende Funktionen:
- Display 2 x 16 Zeichen
- 4+1 Navigationsschalter
- Non Volatile RAM
Diese Funktionen werden über den PC104-Bus angesteuert. Das Strukturbild des CX1100-0001 zeigt die Funktionsblöcke.

"General Control Block" (GCB)
Die Steuerung erfolgt über das Programm in der CPU des Hauptmoduls. Über einen Speicherbereich werden die Daten ausgetauscht. Die zum Betrieb des Systems notwendigen Daten werden im "General Control Block" (GCB) zusammen gefasst. Seine Startadresse lautet "0xD1000". Das Schaubild zeigt die Daten und den Offset auf die Startadresse, an denen sie abgelegt sind. Einige Register werden nicht für alle Netzteile benötigt. Über die Adressumsetzung werden im Modul nur die benötigten Register angesprochen. Die anderen Adressen werden ausgeblendet.
Firmware Version:
Dieses Datenfeld enthält die Versionsnummer der Firmware. Sie ist hexadezimal kodiert.
Firmware Revision:
Dieses Datenfeld enthält die Revisionsnummer der Firmware. Auch sie ist hexadezimal kodiert.
Service Request / Response Bitfield: (nur für CX1100-0002 / -0003)
Über dieses Bitfeld können bestimmt Servicefunktionen ausgelöst werden. Die Funktion wird ausgelöst in dem das entsprechende Bit gesetzt ist. Die entsprechende Funktion wird ausgeführt zu die Reaktion im "Service Response Bitfield" angezeigt. Es ist möglich die Funktionen mehrfach zu verwenden, dazu muss das entsprechende Bit zunächst auf "Null" gesetzt werden und die Reaktion im "Response Bitfield" abgewartet werden. Anschließend kann die Funktion durch erneutes Setzen des Bits aufgerufen werden. Ein Ausführungsfehler wird im BIT 7 des "Response Bitfields" angezeigt. Die Bitfelder haben folgenden Aufbau:
Bitfeld |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Request |
- |
- |
- |
- |
- |
Link Images |
Remap |
Reset Node |
Response |
Error |
- |
- |
- |
- |
Images Linked |
Remapped |
Reset Done |
Die Servicefunktionen haben folgende Aufgaben:
Reset Node:
Diese Funktion bewirkt ein Reset des 80C165 Microcontrollers. Dies ist kein genereller Systemreset. Es wird nur der Kontroller für die Kommunikationsschnittstellen zurückgesetzt.
Remap:
Mit diesem Befehl lassen sich die beiden PLC-Register, die sich im Speicherbereich des I/O-Prozesses befinden, in dem GCB abbilden.
Link Images:
Beim Setzen dieses Bits werden K-Bus und IP-Link-Bus logisch miteinander verbunden. Im Falle eines Fehlers werden beide Busse angehalten. Die Standardeinstellung für dieses Bit ist gesetzt, d.h. bei Fehlern auf dem einen Bus-System werden beide Systeme angehalten.
Watchdog Time:
Wird ein I/O-Zyklus durch ein "Processdata cycle request" angestoßen, so startet ein Timer. Dieser läuft bis zur in "Watchdog Time" eingestellten Zeit. Trifft in der Zwischenzeit kein weiteres "PD cycle request" Signal ein, so werden alle Ausgänge in den sicheren Zustand (alle Ausgänge auf "Null") gesetzt. Gleichzeitig wird der Wert im Register "Watchdog Error Counter" inkrementiert. Die Standardeinstellung für diesen Wert beträgt 100ms. Soll ein anderer Wert verwendet werden, so muss dieser in das Register geschrieben werden. Der Wert wird aber erst nach einem "Reset Node" - Befehl aktiviert.
Cycle Time:
Sie gibt die Zeit zwischen Start und Beendigung eines I/O-Prozessupdates an. Die Zeit wird in Millisekunden angegeben. Ein neuer Zyklus beginnt mit dem Eintreffen eines "PD cycle Requests"-Signals. Er endet mit dem "PD cycle Ready" -Signal. Für das Netzteil CX1100-0002 beträgt diese Zeitspanne die Zeit, die der K-Bus für ein Update benötigt. Beim CX1100-0003 beträgt diese Zeit die Updatezeit von K-Bus und IP-Link-Bus.
Watchdog Error Counter:
Tritt ein Überlauf im Watchdog-Timer auf, so wird dieser Wert um eins inkrementiert. Es lässt sich also die Anzahl von Watchdog-Zeitüberschreitungen auslesen. (verfügbar ab Firmware Version B6)
Processdata Error:
Diese Byte enthält die Informationen über den Zustand des I/O-Blöcke. Mögliche Zustände sind:
Bitfeld |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
Processdata Error |
- |
- |
- |
- |
- |
- |
IP-Link Error |
K-Bus Error |
Das Bit wird logisch "Eins", wenn ein Fehler auftritt. Sind beide Werte "Null" liegt kein Fehler vor. Ein Fehler kann möglicherweise mit einem Reset des Busses behoben werden. Die Funktion hierfür wird im Control-Block des jeweiligen Busses aktiviert.
Processdata Cycle Overrun:
Diese Speicherzellen enthält einen Zähler. Dieser zählt die Zeitüberschreitungen, wenn ein "PD Cycle Request" - Signal eintrifft, bevor ein "PD Cycle Ready" - Signal anliegt. Dieser Überlauf kann nur auftreten, wenn durch einen Synchronisationsfehler im Programm die Zykluszeit kleiner ist, als die Zeit für den I/O-Update.
PD Cycle Ready / PD Cycle Request:
Diese beiden Bytes enthalten die Daten für den aktuellen Prozess. Das Programm legt einen Wert in dem "Request-Register" ab. Ist der Prozess beendet, so schreibt er diesen Wert in das "Ready-Register". Bei einem erneuten Prozess wird das "Request-Register" wieder überschrieben.
"Auxiliary Control Block" (ACB)
Für den Zugriff auf das Display bzw. den Taster wird ein weiterer Bereich benötigt. Dieser wird als "Auxiliary Control Block" bezeichnet. Er umfasst 16 Byte und liegt oberhalb des GCBs. Den Aufbau zeigt folgendes Schaubild:

Es lassen sich vier Register zusammenfassen. Im folgenden werden die Register mit ihren Bits erläutert.
Display Cmd Register:
R/#W: Dieses Bit steuert das Lesen bzw. Schreiben zur Programmierung des Displays.
DATA/#CMD: Hier wird zwischen Daten und Kommandos umgeschaltet.
EN: Aktivierungsbit zum Ausführen der Kommandos.
BL OFF: Mit diesem Bit kann die Hintergrundbeleuchtung des Displays abgeschaltet werden. Diese Funktion kann zum Blinken des Displays benutzt werden.
Display Data Register:
In diesem Byte werden Daten für die Programmierung des Displays gehalten. Diese Daten wirken im Zusammenspiel mit den Daten aus dem Display Cmd Register.
In Register:
Über dieses Register kann auf den Taster zugegriffen werden. Es handelt sich um eine 4+1 Navigationsschalter. Über diesen kann ein SPS-Programm ohne Tastatur oder Touchscreen mit Eingaben versorgt werden. Wird der Taster gedrückt, so ist das entsprechende Bit auf "Eins" gesetzt. Beim Lösen der Taste springt das Bit wieder auf "Null". Das Register ist im Prozessabbild von TwinCAT sichtbar und kann mit dem SPS-Programm verknüpft werden.
Bit 0 UP
Bit 1 DOWN
Bit 2 LEFT
Bit 3 RIGHT
Bit 4 SELECT
Bit 5 PWR-FAIL (für spätere Verwendung vorgesehen - nicht verwenden)
Ein Beispiel zum Ansteuern des Tasters findet sich bei der Beschreibung des Tasters.
Out Register:
Durch Setzen des Bit 0 wird der Microcontroller 80C165 zurück gesetzt. Dadurch werden die Busse (K-Bus / IP-Link) initialisiert. Dieser Schalter kann benutzt werden um bei Busproblemen den Bus zurück zu setzen. Zu Beginn des Betriebs muss es mindestens einmal gesetzt werden, damit der Bus initialisiert wird.
Die Bits 1, 2 und 3 (IRQ0, IRQ1 und IRQ2) sind für spätere Verwendung vorgesehen und dürfen NICHT gesetzt werden.
Speicherbereich 0xD1004 bis 0xD1008:
In diesem Bereich ist der Typ des Netzteils abgelegt. Nimmt man die vier Register zusammen, ergibt sich die Typen Bezeichnung.
CX1101 CX1100-0001 Netzteil mit Display, Taster und NOVRam
CX1102 CX1100-0002 Netzteil mit Display, Taster, NOVRam und K-Bus-Anschluss
CX1103 CX1100-0003 Netzteil mit Display, Taster, NOVRam, K-Bus-Anschluss und IP-Link-Anschluss
CX1104 CX1100-0004 Netzteil mit Display, Taster, NOVRam und E-Bus-Anschluss
Das Non Volatile RAM
Das NoVRam ist eine der wichtigsten Funktionen der Netzteile. Der Zugriff erfolgt über den PC104 - BUS. Die Anbindung an die SPS-Software erfolgt über den TwinCAT System Manager. Hier können benötigte Variablen bzw. entsprechende Bereiche definiert werden. Diese werden dann mit Variablen des Programms verknüpft. Details hierzu finden sich in der TwinCAT Dokumentation.
I/O-Zyklus mit Busklemmen
Verfügt ein Netzteil über einen Klemmenanschaltung (CX1100-0002 und CX1100-0003), so kann der Abfragezyklus der Klemmen in einem Programm auf der CPU gesteuert werden. Das folgende Schaubild zeigt eine solchen Zyklus. Er besteht aus 8 Schritten.

Das Programm initialisiert den Klemmbus. Details hierzu sind im GCB beschrieben. (Servicefunktion: Reset node) Dann wird eine beliebige Nummer (hier 4711) als aktuelle Zyklusnummer in das Feld "PD cycle request" des GCBs geschrieben. Es kann dabei jede beliebige Zahl verwendet werden. Es bietet sich aber an, eine aufsteigende Nummerierung zu verwenden, um im Fehlerfall den Zyklus identifizieren zu können. Der Microcontroller liest den Wert und veranlasst die Klemmen ihre Daten an den Controller zu senden. Dieser schreibt die Daten in das Prozessabbild im DPRAM. Sind alle Daten im DPRAM abgelegt, wird die Zyklusnummer in das Feld "PD cycle ready" im GCB geschrieben. Das Programm prüft alle 10 ms, ob Daten von dem Klemmbus geliefert wurden. Ein K-Bus-Zyklus ist auch bei maximaler Klemmenzahl deutlich kleiner als 10 ms. Die Zeit liegt in etwa zwischen 700 µs und 5 ms. Ist nach 10 ms keine gültige Zyklusnummer (also die gleiche wie die aktuelle Nummer) im Register "DP cycle ready" im GCB, so ist wahrscheinlich ein Fehler aufgetreten und das Programm versucht den Fehler auszuwerten und beendet danach die Schleife. Ist die Zyklusnummer korrekt gesendet worden können die Daten aus dem DPRAM gelesen und verarbeitet werden. Die Ergebnisse der Verarbeitung werden dann wieder ins DPRAM geschrieben und ein neuer Zyklus wird angestoßen indem die Zyklusnummer erhöht und ins Register "PD cycle request" geschrieben wird.
Da die Klemmen im K-Bus mit einem Watchdog versehen sind, sollte der K-Bus mindestens alle 100 ms abgefragt werden, da sonst der K-Bus angehalten wird. Sollten mehr als ein Prozess Zugriff auf den Klemmbus benötigen, so greifen alle Prozesse auf das gleiche Speicherabbild des DPRAMs zu. Nur der Prozess mit der höchsten Priorität initiiert den Datenaustausch mit dem K-Bus. Auf diese Weise sollte gewährleistet sein, dass alle Prozesse ihre Daten in gewünschter Form erhalten. Zugriffskonflikte muss der Anwender selbst ausschließen!