DE3610433A1 - Speicherprogrammierbares steuergeraet mit funktionsplaninterpreter - Google Patents

Speicherprogrammierbares steuergeraet mit funktionsplaninterpreter

Info

Publication number
DE3610433A1
DE3610433A1 DE19863610433 DE3610433A DE3610433A1 DE 3610433 A1 DE3610433 A1 DE 3610433A1 DE 19863610433 DE19863610433 DE 19863610433 DE 3610433 A DE3610433 A DE 3610433A DE 3610433 A1 DE3610433 A1 DE 3610433A1
Authority
DE
Germany
Prior art keywords
program
ladder
bit
ladder program
microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19863610433
Other languages
English (en)
Other versions
DE3610433C2 (de
Inventor
Terry L. Chardon Ohio Dauterman
David R. Richmond Heights Ohio Rohn
Ronald E. Willoughby Ohio Schultz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allen Bradley Co LLC
Original Assignee
Allen Bradley Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Allen Bradley Co LLC filed Critical Allen Bradley Co LLC
Publication of DE3610433A1 publication Critical patent/DE3610433A1/de
Application granted granted Critical
Publication of DE3610433C2 publication Critical patent/DE3610433C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/052Linking several PLC's
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13105Two or more languages, ladder diagram or progression, basic program

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Description

rj 'mi
ALLEN-BRADLEY COMPANY INC., Milwaukee, Wisconsin, VStA *
Speicherprogrammierbares Steuergerät mit Punktionsplaninterpreter
Die Erfindung bezieht sich auf speicherprogrammierbare Steuergeräte wie sie aus den US-PSn 3 810 118, 3 942 158, 4 165 534 und 4 442 504 bekannt sind.
Speicherprogrammierbare Steuergeräte sind typischerweise mit industriellen Anlagen wie Montagestraßen g und Werkzeugmaschinen verbunden und dienen dazu, die , Anlagen in Abhängigkeit von einem gespeicherten Programm sequentiell zu betätigen oder zu betreiben. Bei speicherprogrammierbaren Steuergeräten, wie sie aus den oben genannten Patenten bekannt sind, ist das Steuerprogramm beispielsweise in einem Speicher gespeichert und es enthält Anweisungen, die in sehr schneller Sequenz oder Aufeinanderfolge ausgelesen und ausgeführt werden, um den Zustand von ausgewählten Sensor- oder Fühlervorrichtungen an der gesteuerten Anlage zu überprüfen und ausgewählte Stell- oder Betätigungsvorrichtungen an der gesteuerten Anlage in Ab- * hängigkeit vom Status eines oder mehrerer der über- \ prüften Fühlervorrichtungen zu erregen bzw. einzu- ^,
schalten oder zu entregen bzw. auszuschalten.
Der Prozessor in einem programmierbaren Steuergerät ist so ausgelegt, daß er äußerst schnell Anweisungen vom programm!erbaren Steuergerättyp ausführen kann, die in mittleren bis großen Steuergeräten nicht nur Anweisungen enthalten, welche die Manipulation von Einzelbit-Eingabe- und -Ausgabe-Daten umfassen, sondern auch arithmetische Anweisungen, Dateihandhabungsanweisungen sowie Anweisungen beinhalten, die Zeitgeber und Zähler, Ab- β lauffolgeSteuerungen und andere komplexe Vorgänge be- -
treffen. Um sicherzustellen, daß das speicherprogrammierbare Steuergerät sehr schnell auf eine Änderung im Status der Fühlervorrichtungen an der gesteuerten Anlage ansprechen kann, ist es unbedingt erforderlich, daß das Steuergerät das Steuerprogramm wiederholt mit einer sehr hohen Geschwindigkeit ausführt. Die Geschwindigkeit, mit der ein programmierbares Steuergerät die Anweisungen in seinem Anweisungssatz ausführen kann, sowie der Umfang oder die Größe des Steuerprogramms stellen die Hauptfaktoren dar, die für die Geschwindigkeit entscheidend sind, mit der das speicherprogrammierbare Steuergerät wiederholt das Steuerprogramm ausführen oder abfragen bzw. abtasten kann.
Vom Prozessor eines speicherprogrammierbaren Steuergeräts erwartet man, daß er gewisse wohlbekannte Anweisungen vom speicherprogrammierbaren Steuergerättyp ausführen kann. Diese Anweisungen wurden in der Industrie weitgehend standardisiert, und sie können direkt den Elementen eines auch mit "Ladder"-Diagramm bezeichneten Kontaktplans zugeordnet werden, der von Steuer- und Regelungsfachleuten leicht verstanden wird. Programmierungsvorrichtungen, wie sie aus den US-PSn 3 798 612, 3 813 649 und 4 070 702 bekannt sind, dienen zur Unterstützung des Anwenders bei der Entwicklung und Editierung von Kontaktplan-Steuerprogrammen, die aus den genannten Anweisungen vom programmierbaren Steuergerättyp bestehen.
Während Kontaktplansteuerprogramme für relativ kleine und mittlere Steueraufgaben leicht und einfach zu entwickeln sowie zu editieren sind, werden derartige Programme für großangelegte Steuerungsaufgaben schwerfällig und ineffizient. Große Kontaktplansteuerprogram- me sind schwierig zu verstehen und bei der Fehlersuche schwierig zu handhaben, und ihre Ausführung erfordert auch eine sehr lange Zeit.
Die Erfindung zielt daher auf einen Prozessor für k
ein speicherprogrammierbares Steuergerät ab, der eine jj
Vielzahl separater Kontaktplansteuerprogramme speichern |
kann, die über ein gespeichertes Strukturplanprogramm \
miteinander in logischer Beziehung stehen. Der Prozessor j
ist derart betreibbar, daß er das gespeicherte Struktur- \
planprogramm ausführen kann, das festlegt, welches der I
gespeicherten Leiter(Ladder)- oder Kontaktplanprogram- j
me wiederholt vom Prozessor zu irgendeinem Zeitpunkt
10 ausgeführt wird.
Der Erfindung liegt die allgemeine Aufgabe zu- J gründe, große Steuerungsaufgaben einfacher, leichter ! und schneller zu handhaben und auch den Programmie- :
rungsaufwand zu vermindern. Der Erfindung liegt die ί
Erkenntnis zugrunde, daß große Steuerungsaufgaben für i gewöhnlich in separate Steuerungsschritte aufgebrochen < werden können, die, während die gesteuerte Maschine :
oder der gesteuerte Prozeß durch ihre bzw. seine Be-
triebszustände voranschreitet, in einer sequentiellen ; Aufeinanderfolge ausführbar sind. Jeder Steuerschritt
ist definiert durch ein getrennt ausführbares Leiter-(Ladder)- oder Kontaktplanprogramm, das leicht zu verstehen ist und das mit einer sehr hohen Abfrage- oder ^ Abtastgeschwindigkeit ausgeführt werden kann. Die
Sequenz, in der die separaten Steuer schritte ausgeführt ,; werden, ist durch das Strukturplanprogramm definiert, ; bei dem es sich um einen geneüfllen Ausdruck bezüglich
der Art und Weise handelt, wie die gesteuerte Maschine [ oder der gesteuerte Prozeß betätigt oder betrieben werden muß. Der Anwender kann daher unter Verwendung von
Strukturplangestaltungen die generelle Art und Weise
definieren, in der die Maschine oder der Prozeß zu betreiben ist, und dann die Einzelbetriebsweise der Ma-
schine oder des Prozesses in separaten, leicht zu handhabenden Leiter- oder Kontaktplanprogrammen definieren»
Die erfindungsgemäße Aufgabe umfaßt auch die Erhöhung der Geschwindigkeit, mit der der Prozessor das Anwendersteuerprogramm ausführen kann. Zur Lösung dieser Aufgabe trägt bei, daß das Steuerprogramm in separat ausführbare Leiter- oder Kontaktplanprogramme aufgeteilt wird und vorzugsweise nur solche Kontaktplanprogramme ausgeführt werden, die zum gegenwärtigen Zeitpunkt erforderlich sind. Anstatt der Ausführung eines einzigen großen Kontaktplanprogramms schafft somit die Erfindung die Möglichkeit, mit einer viel höheren Abtastgeschwindigkeit ein oder mehrere kleine Kontaktplanprogramme auszuführen.
Vorzugsweise zielt die Erfindung auch darauf ab,
>» 15 die Geschwindigkeit zu erhöhen, mit der der Prozessor
ein Leiter- oder Kontaktplanprogramm ausführen kann. Dies wird durch die Verwendung eines Bit-Prozessors erreicht, der in einer solchen Weise betreibbar ist, daß er einen ausgewählten Teilsatz von bitorientierten Anweisungen mit sehr hoher Geschwindigkeit ausführen kann, und daß ein programmierter Mikroprozessor bereitsteht, diejenigen anderen Anweisungen im Leiter- oder Kontaktplanprogrammanweisungssatz auszuführen, die der Bit-Prozessor nicht ausführen kann. Im Gegensatz zu herkömmlichen Prozessoren, die festverdrahtete Bit-Prozessorschaltungen benutzen, um programmierten Mikroprozessoren zu assistieren, fährt der nach der Erfindung vorgesehene Bit-Prozessor damit fort, Steueranweisungen so lange auszuführen, bis er auf eine An-Weisung trifft, die er nicht ausführen kann. Erst dann veranlaßt er den Transfer der Führung oder Kontrolle zurück zum Mikroprozessor. Da nach der Statistik 75% bis 95% der tatsächlichen Leiter- oder Kontaktplanprogramme aus Einzelbitanweisungen bestehen, die von einem Bit-Prozessor ausführbar sind, wird die Abfrage- oder Abtastrate in den meisten Fällen dadurch beträchtlich * erhöht, daß der Bit-Prozessor die Führung oder Kon-
-11- ■' ■ *
trolle der Ge samt steuerung behält. Ä,
Zusammenfassend 1st in einem speicherprogrammierbaren Steuergerät nach der Erfindung ein Anwendersteuerprogramm gespeichert, das aus einer Vielzahl herkömmlicher Kontaktplanprogramme und einem Strukturplanprogramm besteht. Ein Mikroprozessor führt eine Strukturplaninterpretierroutine aus, um das Strukturplanprogramm zu interpretieren und auf diese Weise eine Aktivzustandsliste zu erstellen, die diejenigen Kontaktplanprogramme anzeigt, welche ausgeführt werden sollen. Derselbe Mikroprozessor führt auch mit der Hilfe eines Bit-Prozessors die Kontaktplanprogramme aus, die von der Aktivzustandsliste angezeigt werden, um eine mit dem speicherprogrammierbaren Steuergerät verbundene * Maschine zu steuern.
Die vorstehenden und weiteren Ziele und Vorteile der Erfindung können der folgenden Beschreibung entnommen werden. In dieser Beschreibung wird auch Bezug auf Zeichnungen genommen, an Hand von denen ein bevorzugtes Ausführungsbeispiel der Erfindung beschrieben ist. Es zeigt:
F I G . 1 eine perspektivische Ansicht eines speicherprogrammierbaren Steuergeräts, das von der Erfindung Gebrauch mach,
F I G . 1A ein schematisches Blockschaltbild eines Prozessor-Bausteins, der einen Teil der Steuergeräts nach FIG. 1 bildet,
F I G . 2 ein elektrisches Schaltschema eines Steuerteils, der Teil des Prozessor-Bausteins nach FIG. 1 bildet, I
F I G . 3 ein elektrisches Schaltschema eines Orts-Eingabe/Ausgabe-Teils des Prozessor-Bausteins nach FIG. 1A,
F I G . 4 ein elektrisches Schaltschema eines Kommunikationsteils des Prozessor-Bausteins nach FIG. 1A,
FIG. 5A ein elektrisches Schaltschema eines Bit-Prozessors, der Teil des Steuerteils nach FIG. 2 bildet,
F I G . 5B ein elektrisches Schaltschema einer Logikeinheit, die Teil des Bit-Prozessors nach FIG. 5A bildet,
F I G . 5C ein Zeitdiagramm, das zur Erläuterung der Betriebsweise der Steuerschaltung nach FIG. 5A dient,
F I G . 6 eine Speicherabbildung eines Direktzugriffsspeichers, der Teil des Steuerteils nach FIG. 2 bildet,
F I G . 7 bis 9 schematische Darstellungen von Datenstrukturen, die im Direktzugriffsspeicher der Steuerteils nach FIG. 2 gespeichert sind, FIG. 10 ein Flußdiagramm eines Exekutivprogramms, das vom Steuerteil nach FIG. 2 ausgeführt wird,
FIG. 11 ein Flußdiagramm eines Strukturplaninterpretierprogramms, das Teil des Exekutivprogramms nach FIG. 10 bildet,
FIG. 12A bis 12C schematische Darstellungen von Datenstrukturen, die vom Programm nach FIG. 11 verwendet werden und die in dem Direktzugriffsspeicher des Steuerteils nach FIG. 2 gespeichert sind,
FIG. 13 ein Flußdiagramm einer Leiter- oder Kontaktplanprogramminterpretierroutine, die Teil des Programms nach FIG. 10 bildet,
FIG. 14 eine Speicherabbildung des Direktzugriffsspeichers, der Teil des Orts-E/A-Teils nach FIG. bildet,
F I G . 15 eine Speicherabbildung des Direktzugriffs-Speichers, der Teil des Kommunikationsteils nach FIG. bildet,
-13- ;
F I G . 16 ein Flußdiagramm einer 1O-ms-Unterbrecungsbedienungsroutine, die vom Steuerteil nach FIG. 2 ausgeführt wird,
FIG, 17 ein Flußdiagramm eines Schedulerprogramms, das vom Mikroprozessor im Kommunikationsteil nach FIG. 4 ausgeführt wird,
FIG. 18 ein Flußdiagramm einer 10-ms-Unterbrechungsbedienungsroutine, die vom Mikroprozessor im Kommunikationsteil nach FIG. 4 ausgeführt wird, ;
FIG.19 ein Flußdiagramm einer weiteren Unterbrechungsbedienungsroutine, die vom Mikroprozessor im Kommunikationsteil nach FIG. 4 ausgeführt wird,
F I G . 20 ein Flußdiagramm des Hauptprogramms, das vom Mikrocomputer ausgeführt wird, der Teil des Kommunikationsteils nach FIG. 4 bildet, ^
FIG. 21 ein Flußdiagramm einer Eingabe/Ausgabe-Gestellunterbrechungsbedienungsroutine, die vom Mikrocomputer im Kommunikationsteil nach FIG. 4 ausgeführt wird,
F I G . 22 ein Flußdiagramm einer Serienkanalunterbrechungsbedienungsroutine, die vom Mikrocomputer im Kommunikationsteil nach FIG. 4 ausgeführt wird,
F I G . 23 eine Bilddarstellung einer beispielsweise vom speicherprogrammierbaren Steuergerät nach FIG. 1 gesteuerten Maschine,
F I G . 24 eine Schemadarstellung eines Strukturplanprogramms der als Beispiel dargestellten Maschine ^ nach FIG. 23 und
F I G . 25 eine Schemadarstellung des gespeicherten Strukturplanprogramms, das der Darstellung nach FIG. 24 entspricht.
Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung
Nach FIG. 1 ist ein speicherprogrammierbares Steuergerät, das von der Erfindung Gebrauch macht, in einem Gestell 1 untergebracht, das eine Reihe von Schlitzen zur Aufnahme von Bausteinen (Modulen) aufweist. Die Bausteine sind an eine Mutterschaltungsplatte angeschlossen, die sich längs der Rückseite des Gestells 1 erstreckt und dort eine rückseitige Verbindungsebene vorsieht. Die Bausteine umfassen einen Energieversorgungs-Baustein 2, einen Prozessor-Baustein 3 und bis zu acht Eingabe/Ausgabe-Bausteine 4. Die E/A-Bausteine 4 können verschiedenartig ausgebildet sein und beispielsweise Bausteine mit gleichstromführenden Eingängen oder Ausgängen, wechselstromführenden Eingängen oder Ausgängen sowie analogen Eingängen oder Ausgängen umfassen und auch in Steuerketten oder Regelschleifen einbezogene Positionier-Bausteine sein. Bezüglich des genauen Aufbaus des Gestells 1 wird auf die US-PS 4 151 580 verwiesen.
Der Prozessor-Baustein 3 ist über ein Kabel 5 mit einem Programmierungsgerät 6 verbunden. Das Programmierungsgerät 6 enthält eine Tastatur 7, mit deren Hilfe der Anwender Daten zur Programmierung des Prozessor-Bausteins 3, zum Betreiben des Prozessor-Bausteins 3 oder zum Überwachen des Prozessorbetriebs eingeben kann. Ein Kathodenstrahlröhren-Bildschirm dient zur Anzeige alphanumerischer Daten sowie von Kontaktplandarstellungen von Anwendersteuerprogrammen. In ein Diskettenlaufwerk 9 kann eine Diskette eingesetzt werden, die zum Speichern von Programmen und Daten dient. Bezüglich weiterer Einzelheiten eines geeigneten industriellen Anschlußgeräts kann auf die US-PS 4 326 193 verwiesen werden.
Der Prozessor-Baustein 3 kann auch über ein Kabel *
10 mit einer Fern-Eingabe/Ausgabe-Einheit oder einem Fern-E/A-Gestell 11 verbunden sein. Das Fern-E/A-Gestell
11 hat einen ähnlichen Aufbau wie das Gestell 1 und
enthält ein ähnliches Sortiment von E/A-Bausteinen 4, die über eine eine rückseitige Verbindungsebene bildende Mutterschaltungsplatte mit einem E/A-Adapter-Baustein 12 verbunden sind. Der E/A-Adapter-Baustein ist in der US-PS 4 413 319 beschrieben und seine Funktion besteht darin, zwischen den E/A-Bausteinen 4 des Gestells 11 und dem Prozessor-Baustein 3 des Gestells 1 Daten zu übermitteln. Ähnliche Fern-E/A-Gestelle 11 ^ können an ein Kabel 13 angeschlossen sein, das zum E/A-Adapter-Baustein 12 führt. *
Wie weiter unten noch im einzelnen erläutert wird,
gibt der Anwender ein Steuerprogramm in den Speicher des Prozessor-Bausteins 3 über das Programmierungsgerät 6 ein. Der Prozessor wird dann in die Betriebsart "RUN" gebracht und führt daraufhin das gespeicherte Steuerprogramm wiederholt aus. Dabei werden in Abhängigkeit vom Zustand von Eingabegeräten, die mit den Eingabe-Bausteinen 4 verbunden sind, Ausgabegeräte betrieben, die mit den Ausgabe-Bausteinen 4 in den Ge- *' stellen 1 und 11 verbunden sind. Da sich der Zustand bestimmter Eingabegeräte mehrmals pro Sekunde ändern * kann, ist es dringendst geboten, daß der Prozessor-Baustein 3 über eine hinreichend hohe Verarbeitungsleistung verfügt, damit er das gespeicherte Steuerpro- gramm äuBerst schnell ausführen kann. Da weiterhin eine gro3e Anzahl und Vielfalt von Eingabe- und Ausgabe-Geräten mit den Gestellen 1 und 11 verbunden werden können, so daß auch komplexe Maschinen oder Prozesse betrieben bzw. gesteuert werden können, ist es ferner dringendst geboten, daß das Steuerprogramm mit Hilfe einer Programmiersprache entwickelt werden kann, die -*
vom Anwender leicht verstanden wird. Auf die Erreichung dieser beiden Konstruktionsziele ist der im Rahmen der Erfindung vorgesehene Prozessor-Baustein 3 besonders
abgestellt.
5 HARDWARE
An Hand von FIG. 1A sowie 2 bis 4 wird dargelegt, daß der Prozessor-Baustein 3 in logischer Hinsicht in drei Teile aufgeteilt ist: Ein in FIG. 2 gezeigtes Steuerteil 3A, ein in FIG. 4 gezeigtes Kommunikationsteil 3C und ein in FIG. 3 gezeigtes Orts-E/A-Teil 3B. Das Steuerteil 3A ist in erster Linie verantwortlich für die Speicherung und Ausführung des Steuerprogramms des Anwenders. Das Kommunikationsteil 3C ist vorwiegend verantwortlich für die Kommunikation mit dem Programmierungsgerät 6 und den Fern-E/A-Gestellen 11. Die Hauptfunktionen des Orts-E/A-Teilε 3B sind die Kommunikation mit den E/A-Bausteinen 4 des Gestells 1 und die Verbindung des Kommunikationsteils 3C mit dem Steuerteil 3A. Jedes dieser Teile des Prozessor-Bausteins 3 wird im folgenden im einzelnen erläutert.
Wie aus FIG. 2 ersichtlich, ist das Steuerteil 3A um einen 16-Bit-Mikroprozessor 20 herum aufgebaut, der einen 20-adrigen Adreßbus 21 und einen 8-adrigen Datenbus 22 ansteuert. Der Mikroprozessor 20 führt in einem Festwertspeicher 23 gespeicherte Maschinensprachanweisungen aus, und zwar zur Durchführung der darin enthaltenen Funktionen. Diese Maschinensprachanweisungen werden durch einen Programmzähler im Mikroprozessor 20 adressiert und aus der adressierten Zeile des Festwertspeichers (ROM) 23 ausgelesen, wenn eine Freigabesteuerleitung 24 und eine Lesesteuerleitung (RD) 25 aktiv sind. Die abgerufene Anweisung wird vom Mikroprozessor 20 decodiert und ausgeführt zwecks Vornahme der angegebenen Funktion. Die in Abhängigkeit von der Ausführung dieser Maschinensprachanweisungen oder "Firmware"
durchgeführten Funktionen als auch die Organisation der Firmware wird unten in weiteren Einzelheiten beschrieben. Bezüglich einer genaueren Erläuterung des Maschinensprachanweisungssatzes als auch des Aufbaus und der Arbeitsweise des Mikroprozessors 20 wird auf eine Broschüre mit dem Titel "MC68008 16-Bit Microprocessor With 8-Bit Data Bus", veröffentlicht 1982 von Motorola, Inc., verwiesen.
Es können auch Daten aus anderen Elementen des Prozessor-Bausteins 3f die mit den Bussen 21 und 22 verbunden sind, ausgelesen oder in diese Elemente eingeschrieben werden. Das jeweilige Element wird von einer Decodierschaltung 26 freigegeben, die Adreßdaten vom Adreßbus 21 sowie Steuersignale von einem Steuerbus 27 erhält, der vom Mikroprozessor 20 angesteuert wird. Die Decodierschaltung 26 erhält auch ein Signal von einer R/W-Steuerleitung 28, die entweder vom Mikroprozessor 20 oder von einem separaten Bit-Prozessor 30 angesteuert werden kann. Die Decodierschaltung 26 erhält noch eine Reihe anderer Eingangssignale, die im einzelnen noch beschrieben werden. Zusätzlich zur RD-Steuerleitung 25 und zur ROM-Freigabesteuerleitung 24 steuert die Decodierschaltung 26 eine Schreibfreigabesteuerleitung 31> eine RAM-Freigabesteuerleitung 32 und eine Bit-Prozessor-Freigabeleitung 33 an. Die übrigen Eingänge und Ausgänge der Decodierschaltung 26 werden weiter unten in Verbindung mit dem Orts-E/A-Teil 3B beschrieben. Im Anhang A ist der Speicherplatz angegeben, der von den Elementen besetzt ist, die von der Decodierschaltung 26 freigegeben werden.
Ein Direktzugriffsspeicher (RAM) 35 ist mit den Bussen 21 und 22 verbunden. Ein 8-Bit-Byte an Daten kann aus einer adressierten Zeile des RAM 35 ausgelesen
oder in eine adressierte Zeile eingeschrieben werden, wenn die RAM-Freigabesteuerleitung 32 aktiv ist. Der RAM 35 speichert eine Vielzahl von Datenstrukturen, die weiter unten noch im einzelnen beschrieben werden. Die meisten dieser Strukturen bilden allerdings Teil eines bei 37 angedeuteten Anwendersteuerprogramms oder einer bei 38 angedeuteten Datentabelle. Das Anwendersteuerprogramm enthält ein oder mehrere Leiter(ladder)- oder Kontaktplanprogramme, die aus Anweisungen bestehen, mit denen der Anwender speicherprogrammierbarer Steuergeräte vertraut ist und die über das Programmierungsgerät 6 in den RAM 35 geladen werden. Das Anwendersteuerprogramm 37 enthält auch ein Strukturplanprogramm (structure chart program), das einnalig ist, und im einzelnen weiter unten noch beschrieben wird. Der Mikroprozessor 20 führt das Strukturplanprogramm aus und, in Abhängigkeit von dessen Typ oder Art, wird eine Leiter- oder Kontaktplan-Programmanweisung entweder vom Mikroprozessor 20 oder vom Bit-Prozessor 30 ausgeführt, wie es noch im einzelnen weiter unten beschrieben wird.
Bei der Ausführung einer Steuerprogrammanweisung benutzt der Mikroprozessor 20 in der Anweisung einen Operationscode, um eine entsprechende Maschinensprachinterpreterroutine zu lokalisieren, die im ROM 23 gespeichert ist. Der Mikroprozessor 20 führt somit Leiterprogrammanweisungen dadurch aus, daß er entsprechende Interpreterroutinen ausführt, die im ROM 23 gespeichert sind. Diese Interpretationstechnik zur Ausführung von Leiterprogrammen ist in den US-PSn 4 165 534, 4 282 584 und 4 443 865 beschrieben.
Der Bit-Prozessor· 30 ist eine maßgeschneiderte integrierte Schaltung, die im Tandem mit dem Mikroprozessor 20 arbeitet, um ausgewählte Anweisungen der Leiterprogrammanweisungen direkt auszuführen. Der Mikro-
prozessor 20 beginnt mit der Ausführung des Leiterprogramrns (d.h. der Programmabfrage oder Programmabtastung), überläßt jedoch unmittelbar danach die Leitung oder Führung dem Bit-Prozessor 30. Dieser Führungstransfer wird dadurch erreicht, daß die Adresse der Leiterprogrammanweisung in ein Leiterprogrammzählerregister 40 im Bit-Prozessor 30 eingeschrieben wird. Der Bit-Prozessor 30 trennt dann den Mikroprozessor 20 von den Bussen 21, 22 und 27 dadurch, daß er über eine Steuerleitung 41
10 einen Busanforderungsanschluß BR besetzt. Der
Bit-Prozessor 30 ruft die Leiterprogrammanweisung ab, führt sie aus und ruft dann nachfolgende Leiterprogrammanweisungen ab und führt sie so lange aus, bis eine Anweisung auftritt, die er nicht ausführen kann.
Jetzt wird die zuvor besetzte Busanforderungsleitung 41 freigesetzt, und der Mikroprozessor 20 übernimmt wieder die Führung oder Kontrolle der Programmausführung. Der Mikroprozessor 20 liest den Inhalt des Leiterprogrammzählerregisters 40 in seinen eigenen Leiterprogrammzähler und geht dann dazu über, die angegebene Leiterprogrammanweisung abzurufen und auszuführen. Obgleich der Bit-Prozessor 30 zur Ausführung von nur einigen wenigen nbit-orientiertenw Anweisungen ausgelegt ist, bestehen 75% bis 95% typischer Anwenderleiterprogramme aus solchen Anweisungen. Das Ergebnis davon ist, daß durch die Ausführung dieser wenigen Anweisungsarten oder Anweisungstypen in dem dafür besonders geeigneten, mit hoher Geschwindigkeit arbeitenden Bit-Prozessor 30 die gesamte Programmabtast- oder Progratmnabfragezei t beträchtlich reduziert wird.
Der Bit-Prozessor 30 enthält auch eine Echtzeituhr (in FIG. 2 nicht gezeigt), die in regelmäßigen Abständen ein Unterbrechungssignal an eine Steuerleitung 45 legt. Diese ühterbrechungsanf orderung und wei-
tere Unterbrechungsanforderungen, die an Leitungen 46 und 47 auftreten, werden den Eingängen eines Priorität scodierers 48 zugeführt. Der Prioritätscodierer 48 erzeugt eine 2-Bit-Unterbrechungsanforderung für den Mikroprozessor 20 an Leitungen 49 und zeigt über eine Leitung 50 dem Bit-Prozessor 30 eine Unterbrechungsanforderung an. Hat der Bit-Prozessor 30 gerade die Kontrolle oder Führung bezüglich einer Unterbrechungsanforderung, verzichtet er auf diese Führung oder Kon- trolle zugunsten des Mikroprozessors 20 in einer Weise, wie sie bereits oben beschrieben worden ist. Die vom Bit-Prozessor 30 hervorgerufene Unterbrechung wird zum . Implementieren einer Echtzeitunterbrechungsanweisung verwendet. Die an der Leitung 46 auftretende Unterbrechung stammt vom Kommunikationsteil 3C des Prozessor-Bausteins 3 und wird unten noch im einzelnen beschrieben. Die Unterbrechung an der Leitung 47 erscheint, wenn gerade ein Energieverlust auftritt und der Mikroprozessor 20 als Antwort darauf gewisse Notfallaktionen durchführt, die sicherstellen sollen, daß das System behutsam angehalten wird..
Wie insbesondere aus FIG. 3 ersichtlich, ist der Orts-E/A-Teil 3B des Prozessor-Bausteins 3 mit dem Adreßbus 21, dem Datenbus 22 sowie den Steuerleitungen 25 und 31 im Steuerteil 3B verbunden. Der Orts-E/A-Teil 3B ist rund um einen 16-adrigen gemeinsamen Adreßbus 101 und einen 8-adrigen gemeinsamen Datenbus 102 aufgebaut. Der gemeinsame Adreßbus 101 kann vom Adreßbus 21 angesteuert werden, wenn ein Satz von Tri-State-Toren 103 freigegeben wird, und Daten können zwischen dem gemeinsamen Datenbus 102 und dem Datenbus 22 übermittelt werden, wenn bidirektionale Tore 104 freigegeben werden. Die Richtung des Datentransfers wird durch den Zustand der RD-Steuerleitung 25 bestimmt, die von der Decodierschaltung 26 im Steuerteil 3A angesteuert wird.
In ähnlicher Weise verbindet eine Gruppe von Tri-State-Toren 105 den gemeinsamen Adreßbus 101 mit einem Adreßbus 201 im Kommunikationsteil 3C, und eine Gruppe von bidirektionalen Toren 106 verbindet den gemeinsamen Datenbus 102 mit einem Datenbus 202. Der gemeinsame Adreßbus 101 kann daher auch vom Kommunikationsteil 3C des Prozessor-Bausteins 3 angesteuert werden, und es können Daten zwischen den Datenbussen 102 und 202 in einer Richtung transferiert werden, die durch eine RE-Steuerleitung 203 bestimmt wird.
Eine Schiedsstelle oder Arbiterschaltung 110 bestimmt, welcher Teil des Prozessor-Bausteins 3 zu den gemeinsamen Bussen 101 und 102 Zugriff haben darf. Die Schaltung 110 kann ein Anforderungssignal vom Steuerabschnitx 3A über eine REQ-Leitung 111 (Decodierschaltung 26 in FIG. 2) oder eine Anforderung vom Kommunikationsteil 3C über eine CREQ-Steuerleitung 112 erhalten. Die Arbiterschaltung gewährt zu einer Zeit jeweils einem der Teile die Anforderung, und zwar dadurch, daß sie entweder an einer GRANT-Leitung 113 oder an einer CGRANT-Leitung 114 ein Signal erzeugt. Diese Signale werden beide an Eingänge der Decodierschaltung 26 im Steuerteil 3A (FIG. 2) gelegt, und sie werden dazu verwendet, die jeweils betreffenden Tore 103, 104 und 120 oder die Tore 105, 106 und 121 freizugeben. Auf diese Weise kann entweder das Steuerteil 3A oder das Kommunikationsteil 3C des Prozessor-Bausteins Zugriff und Kontrolle zu bzw. über das Orts-E/A-Teil 3B
30 haben.
Das Orts-E/A-Teil enthält einen Direktzugriffsspeicher (RAM) 125, der mit dem gemeinsamen Adreßbus 101 und mit dem gemeinsamen Datenbus 102 verbunden ist. Der gemeinsame RAM 125 speichert Daten, die zwischen den beiden anderen Teilen des Prozessor-Bausteins 3 hin und
her geleitet werden, und enthält eine Fern-E/A-Bildtabelle 126 sowie Kommunikationsdaten 127. Daten können in eine adressierte Zeile des gemeinsamen RAM 125 eingeschrieben oder aus einer adressierten Zeile ausgelesen werden, wenn der RAM 125 über eine Adreßbusader SA11 freigegeben wird und eine Schreib-Steuerleitung 128 aktiv ist. Die Schreib-Steuerleitung (WRITE) 128 wird angesteuert vom Prozessorteil 3A oder 3C, je nachdem, welchem Teil die Kontrolle über die gemeinsamen Busse 101 und 102 gewährt worden ist, und der gemeinsame RAM 125 besetzt tatsächlich denselben Adreßplatz in jedem dieser Teile.
Wie aus FIG. 3 ersichtlich, enthält das Orts-E/A-Teil 3B ein 8-Bit-Ausgangslatch oder eine 8-Bit-Ausgangsverriegelung 130 und einen 16-Bit-Eingangsmultiplexer 131. Die Ausgangsverriegelung wird freigegeben von einer Adreßbusader SA13, und der Zustand der Datenbusader SDO kann in einen der acht Ausgänge geschrieben werden, und zwar wie es vom Zustand der acht Adreßbusadern SAO bis SA2 ausgewählt wird. Einer dieser Ausgänge steuert die Unterbrechungssteuerleitung 46 an, die mit dem Prioritätscodierer 48 (FIG. 2) verbunden ist, und ein anderer Ausgang steuert eine Unterbrechungssteuerleitung 246 an, die eine ähnliche Unterbrechung im Kommunikationsteil 3C hervorruft. Durch Einschreiben in das Ausgangslatch oder die Ausgangsverriegelung 130 kann jedes Teil 3A oder 3C des Prozessor-Bausteins 3 das andere Teil, oder gar sich selbst, unterbrechen. Ein dritter Ausgang 132 der Verriegelung 130 steuert eine E/A-Rücksetzleitung an, die mit jedem E/A-Baustein 4 im Ortsgestell 1 verbunden ist. Dieser Ausgang kann betätigt werden, um alle Stell- oder Betätigungsvorrichtungen zu sperren, die vom Ortsgestell 1 aus gesteuert
35 werden.
Der Eingangsmultiplexer wird von einer Adreßbusader SA14 freigegeben, und der Zustand von zwei beliebigen Eingängen der sechzehn Eingänge wird in Übereinstimmung mit dem Auswählcode an den Adreßbusadern SAO bis SA2 auf die Datenbusadern SDO bis SD1 gelesen. Diese Eingänge überwachen die Batteriegangreserve und eine Vielzahl verschiedener Schalter, die alternative Funktionen angeben, welche implementiert werden können.
Wie es ferner aus FIG. 3 ersichtlich ist, sind die gemeinsamen Busse 101 und 102 über einen 1-aus-16-Decodierer 135 und eine Gruppe bidirektionaler Tore I36 mit der rückseitigen Ebene des Gestells 1 verbunden. Ein 8-Bit-Byte an Daten kann in irgendeinen der 16 E/A-Schlitze im Gestell 1 eingeschrieben oder aus einem dieser Schlitze ausgelesen werden, wenn die Adreßbusader SA12 freigegeben wird. Der adressierte Schlitz wird identifiziert durch den Auswählcode an den Adreßbusadern SA1 bis SA4. Es gibt zwei E/A-Schlitze in jedem der acht E/A-Bausteine 4, die im Gestell 1 angeordnet sind, und es kann daher entweder das Steuerteil 3A oder das Kommunikationsteil 3C des Prozessor-Bausteins 3 aus einem beliebigen von ihnen Daten auslesen oder in einen beliebigen von ihnen Daten einschreiben.
Das Orts-E/A-Teil 3B des Prozessor-Bausteins 3 dient als Verbindung zwischen den beiden anderen Teilen. So liest das Steuerteil 3A beispielsweise periodisch den Zustand der mit dem Ortsgestell 1 verbundenen Eingabevorrichtungen, bringt mit diesen Informationen seine Eingabe/Ausgabe-Bildtabelle 38 im RAM 35 auf den neuesten Stand, bringt die mit dem Ortsgestell 1 verbundenen Ausgabevorrichtungen auf den neuesten Stand, schreibt Ausgabedaten von seiner Datentabelle 38 in die Eingabe/Ausgabe-Bildtabelle 126 und bringt mit den Eingängen von der Eingabe/Ausgabe-Bildtabelle 126 seine
Datentabelle 38 auf den neuesten Stand. Das Kommunikationsteil 3C bringt den Eingabeteil der E/A-Bildtabelle 126 im gemeinsamen RAM 125 mit dem Zustand oder Status der mit den Fern-E/A-Gestellen 11 verbundenen Eingabevorrichtungen periodisch auf den neuesten Stand und liest den Ausgabeabschnitt der E/A-Bildtabelle 126 zur Übertragung zu den mit den Fern-E/A-Gestellen 11 verbundenen Ausgabevorrichtungen aus. Programmierungsgerätnachrichten, die vom Kommunikationsteil 3C empfangen werden, werden im Kommunikationsabschnitt 127 des gemeinsamen RAM 125 gespeichert und irgendwelche Antwortnachrichten vom Steuerteil 3A werden daraus ausgelesen. Wie es im einzelnen weiter unten noch beschrieben wird, unterbricht das Kommunikationsteil 3C alle 10 ms den Betrieb des Steuerteils 3A, und als Teil seiner Unterbrechungsbedienungsroutine liest das Steuerteil 3A irgendwelche Nachrichten aus, die für es im gemeinsamen RAM 125 zurückgelassen worden sind.
Wie es insbesondere aus FIG. 4 hervorgeht, ist das Kommunikationsteil 3C des Prozessor-Bausteins 3 um einen 8-Bit-Mikroprozessor 205 herum aufgebaut, der den 16-adrigen Adreßbus 201 und den 8-adrigen Datenbus 202 ansteuert. Der Mikroprozessor 205 arbeitet in Beantwortung' von Maschinensprachprogrammanweisungen, die in einem Festwertspeicher (ROM) 206 gespeichert sind, und führt auf diese Weise die meisten der Kommunikationsteilfunktionen aus. Bei dem Mikroprozessor 205 kann es sich um ein Bauelement vom Typ "Ζ80Μ von Zilog, Inc.
handeln. Bezüglich des genauen Aufbaus und Befehlssatzes dieses Bauelements wird verwiesen auf "Microcomputer Components Data Book" veröffentlicht 1981 von Zilog, Inc.
Erzeugt der Mikroprozessor 205 einen Adreßcode am Bus 201, in welchem die Ader AD15 aktiv ist, erfolgt über die CREQ-Steuerleitung 112 ein Aufruf zum Zugriff zum Orts-E/A-Teil 3B. Wie oben ausgeführt, gelangt dieser
Aufruf zur Arbiterschaltung 110 im Orts-E/A-Teil 3B (FIG. 3) und zur Decodierschaltung 26 im Steuerteil 3A (FIG, 2). Die Decodierschaltung 26 spricht darauf dadurch an, daß sie ein Signal an einer Wartesteuerlei^ tung (WAIT) 207 erzeugt, die den Mikroprozessor 205 in einen Warte zustand "bringt, bis die Arbiter schaltung 110 den Zugriff gewährt. Sobald der Zugriff gewährt ist, entfernt die Decodierschaltung das Signal WAIT von der Wartesteuerleitung 207, und der Mikroprozessor 205 kann dann Speicherlese- und Speicherschreiboperationen an im gemeinsamen RAM 125 gespeicherten Daten vornehmen. In seinem Betrieb tritt nur eine vorübergehende Pause auf, wenn der gemeinsame RAM 125 bereits vom Steuerteil 3A unter Zugriff steht.
Eine Hauptfunktion des Kommunikationsteils 3C besteht darin, die beiden Serienkanäle 5 und 10 mit Datenstrukturen in dem gemeinsamen RAM 125 zu verbinden. Hierbei handelt es sich um Hochgeschwindigkeitskanäle, und um die Handhabung von Unterbrechungen, die durch sie hervorgerufen werden, zu erleichtern, steht ein 8-Bit-Mikrocomputer 210 zur Verfügung. Bei dem Mikrocomputer 210 kann es sich um ein Bauelement vom Typ "Z8M von Zilog, Inc. handeln, und dieser Mikrocomputer enthält einen nicht dargestellten intern maskierten Pestwertspeicher (ROM), der Maschinensprachanweisungen speichert, die seinen Betrieb anweisen. Der Mikrocomputer 210 teilt einen 8K mal 8-Bit-Direktzugriffs speicher (RAM) 211 mit dem Mikroprozessor 205, und seine Hauptfunktion besteht darin, alle Unterbrechungen von den Serienkanälen 5 und 10 zu handhaben und Daten zwischen diesen Kanälen 5 und 10 sowie dem RAM 211 zu übermitteln. Der Mikroprozessor 205 transferiert dann diese Daten zwischen dem RAM 211 und dem
35 gemeinsamen RAM 125 im Orts-E/A-Teil 3B.
Vie ebenfalls aus FIG. 4 ersichtlich, ist eine Zähler/Zeitgeber-Schaltung (CTC) 208 mit den Bussen 201 und 202 sowie mit einem Unterbrechungsanschluß 209 am Mikroprozessor 205 verbunden. Die CTC 208 erhält Unterbrechungsaufrufe vom Orts-E/A-Teil 3B über eine Steuerleitung 246 sowie Unterbrechungsaufrufe vom Mikroprozessor 210 über eine Steuerleitung 212. Die CTC 208 kann an einer Steuerleitung 213 einen Unterbrechungsaufruf erzeugen, und sie ist auch als Zeitgeber ausge- legt, der an der INT-Leitung 209 alle 10 ms einen Unterbrechungsaufruf erzeugt. Als Antwort auf einen Unterbrechungsaufruf von der CTC 208 liest der Mikroprozessor 205 eine Vektorgröße von der CTC 208, die den Mikroprozessor 205 zu einer im ROM 206 gespeicherten geeigneten Unterbrechungsbedienungsroutine dirigiert.
Der Mikroprozessor 205 ist mit dem RAM 211 über einen Satz aus dreizehn Bustreiberschaltungen 215 sowie einen Satz aus acht bidirektionalen Datentoren 216 verbunden. Wird der RAM 211 vom Mikroprozessor 205 adressiert, erfolgt über die Adreßbusader AD15 und eine MREQ-Steuerleitung 218 eine Signalisierung einer Schiedsstelle- oder Arbiterschaltung 217. Die Arbiterschaltung 217 bringt den Mikroprozessor 205 über eine Steuerleitung 219 in einen Wartezustand, bis der Zugriff zum RAM 211 gewährt wird. In diesem Augenblick werden die Tore 215 und 216 durch eine Steuerleitung 220 freigegeben, und der Mikroprozessor 205 wird aus seinem Wartezustanc entlassen, so daß er entweder einen Lese- oder Schreibzyklus mit dem RAM 211 vervollständigen kann. Die Mikroprozessorschreibfreigabesteuerleitung (WE) 204 ist mit dem RAM 211 über ein Tri-State-Tor 221 verbunden, um entweder eine Lese- oder Schreiboperation auszuwählen, und diese selbe Steuerleitung steuert die
35 Richtung des Datenflusses durch die Tore 216.
Der Mikrocomputer 210 steuert einen 8-Bit-Datenbus 225 an, der verbunden ist mit einem Adreßlatch oder einer Adreßverriegelung 226, einer Serienkommunikationssteuergerätschaltung (SCC) 227 und einer Gruppe aus acht bidirektionalen Datentoren 228. Ferner steuert der Mikrocomputer 210 acht höherwertige Adreßadern oder Adreßleitungen an, die mit niedrigerwertigen Adern oder Leitungen vereint werden, welche von der Adreßverriegelung 226 angesteuert werden, und zwar unter Ausbildung eines Adreßbusses 230. Ein typischer Lese- oder Schreibzyklus läuft derart ab, daß die niedrigerwertigen Adreßbits in der Adreßverriegelung 226 gespeichert werden, wenn eine Adreßtaktleitung 231 aktiv ist, und dann die höherwertigen Bits am Adreßbus 230 erzeugt und Daten
15 über den Datenbus 225 übermittelt werden.
Der Mikrocomputer 210 kann zum RAM 211 in ähnlicher Weise Zugriff erlangen wie der Mikroprozessor 205. Ist eine Adreßbusader MA14 aktiv, erfolgt ein Aufruf für einen Zugriff zum RAM 211 an die Arbiterschaltung 217. Wird der Zugriff gewährt, ist die Steuerleitung 235 aktiv, und eine Gruppe von Bustreiberschaltungen 236 sowie die bidirektionalen Datentore 228 werden freigegeben, um die Busse 230 und 225 mit dem RAM 211 zu verbinden. Ss wird ein Lese- oder Schreibzyklus ausgeführt, wie es durch den Status oder Zustand einer WT-Steuerleitung 237 bestimmt wird, die über ein Tri-State-Tor 238 mit dem RAM 211 verbunden ist.
Bei der SCC 227 kann es sich um eine handelsübliche integrierte Schaltung von Zilog, Inc. handeln. Sie dient dem Zweck, die beiden Serienkanäle 5 und 10 zu bedienen. Sobald ein Datenbyte an einem der Kanäle 5 oder 10 auftritt, unterbricht die SCC 227 den Mikrocomputer 210 über eine Leitung 240, und der Mikrocomputer 210 spricht in einer solchen Weise darauf an, daß er einen Vektor aus der SCC 227 ausliest, der auf die geeignete Unterbre-
cJxings servi ceroutine deutet, die im internen ROM des Mikrocomputers gespeichert ist. Das auftretende oder empfangene Datenbyte kann mit anderen empfangenen Daten kombiniert werden, um eine vom Programmierungsgerät 6 stammende Nachricht zu bilden, oder es kann einen Block aus Statusinformation bilden, die von einem E/A-Gestell 11 stammt. In beiden Fällen wird die Information vom Mikrocomputer 210 in die geeignete Form gebracht und in eine E/A-Bildtabelle 241 oder einen Nachrichtendatenabschnitt 242 des RAM 211 geschrieben. In ähnlicher Weise kann der Mikrocomputer 210 Daten aus dem RAM auslesen und sie in eine solche Form bringen, daß sie zur Übertragung entweder über den Serienkanal 5 oder den Serienkanal 10 geeignet sind. Die Art und Weise, wie Information zwischen den Serienkanälen 5 und 10 sowie dem Mikroprozessor 205 übertragen wird, wird im folgenden noch beschrieben.
Die meisten Bauelemente und Baukomponenten, die in den drei Teilen des oben beschriebenen Prozessor-Bausteins 3 verwendet werden, sind im Handel von einer Reihe von Bezugsquellen erhältlich. Eine genaue Liste dieser Baukomponenten einschließlich ihrer Bezugsquellen findet man im Anhang B. Eine Ausnahme bildet allerdings der Bit-Prozessor 30 im Steuerteil 3A. Diese Baukomponente ist eine speziell hergestellte integrierte Schaltung, die in dieser Form im Handel nicht erhältlich ist. Der Bit-Prozessor 30 ist allerdings aus Elementen aufgebaut, die funktionsmäßig mit handelsüblichen Elementen äquivalent sind.
Aus FIG. 2 und 5A geht hervor, daß der Bit-Prozessor 30 rund um eine Steuerschaltung 400 aufgebaut ist, die über den Adreßbus 21 adressiert werden kann, wenn die Freigabeleitung 33 aktiv ist. Der 16-Bit-Mikroprozessor 20 kann die Führung oder Kontrolle an den Bit-Prozessor 30 durch Erzeugen einer "Transfer"-Adresse
übertragen, die von der Steuerschaltung 400 decodiert wird, um ein D-Flipflop 401 über seine Löschleitung 405 zurückzusetzen. Vom Flipflop 401 wird dann eine Busanforderung an der Steuerleitung 41 erzeugt, und der 16-Bit-Mikroprozessor 20 spricht darauf dadurch an, daß er sich selbst von den Bussen 21 und 22 abtrennt und an einer Busbewilligungs steuerleitung 402 ein Signal erzeugt. Ein Paar in Kaskade geschalteter Flipflops 403 und 404 verriegeln dieses Signal und erzeugen ein Freigabesignal an einer Steuerleitung 406, die zur Steuerschaltung 400 führt. Der Mikroprozessor 20 wird auf diese Weise vom weiteren Betrieb ausgeschlossen, und der Bit-Prozessor 30 beginnt mit seinem aktiven Betrieb.
Sobald die Steuerschaltung 400 freigegeben worden ist, erzeugt sie Zeitgabesignale für verschiedenartige Bit-Prozessorelemente, die jetzt beschrieben werden sollen. Diese Zeitgabesignale erzeugen drei voneinander verschiedene Zyklen C1, C2 und C3t die zum Ausführen der Funktionen des Bit-Prozessors erforderlich sind. Der Zyklus C1 ist ein "Lesewort" Zyklus, in welchem die KontaktplanprograTTiffianweisung, die vom Kontaktplansteuerpro grammzähl er 40 angezeigt wird, vom RAM 35 abgerufen wird. In Abhängigkeit vom Operationscode der abgerufenen Anweisung kann dann entweder ein Zyklus C2 oder ein Zyklus C 3 durchgeführt werden. Der Zyklus C2 ist ein "Lese-Modifizier-Schreibt1-Zyklus, in welchem ein Operand aus der Datentabelle 38 des RAM 35 ausgelesen wird, ein Bit darin geändert wird und dann die geänderten Daten wieder in die Datentabelle 38 eingeschrieben werden. Der Zyklus C3 ist ein "Lesetest"-Zyklus, in welchem ein Operand aus der Datentabelle 38 ausgelesen wird und dann darin ein Bit von einer Logikeinheit 407 getestet oder überprüft wird. Zeitablaufdiagramme für jeden dieser Zyklen sind in FIG. 5C dargestellt.
Der Bit-Prozessor 30 behält die Führung oder Kontrolle über das Steuerteil 3A und fährt damit fort, das Kontaktplanprogramm auszuführen, solange irgendeine der folgenden Kontaktplananweisungen vom Anwendersteuerprogramm 37 abgerufen wird.
XIC - "Prüfe-auf-geschlossen"-Anweisung. Überprüft wird ein Bit in der Datentabelle 38 auf eine logische Eins, die einem geschlossenen Kontakt bei entsprechender Stromeinspeisung entspricht. Der Status der Sprosse oder Querverbindung wird auf "falsch" gesetzt, wenn das Bit nicht "eingeschaltet" ist. Andernfalls bleibt der Status unverändert.
XIO - "Prüfe-auf-geöffnet"-Anweisung. Überprüft wird ein Bit in der Datentabelle 38 auf eine logische Null, die einen geöffneten Kontakt bei entsprechender Stromeinspeisung darstellt. Der Status der Sprosse oder Querverbindung wird auf "falsch" gesetzt, wenn das Bit nicht "ausgeschaltet" ist. Andernfalls wird der Status nicht verändert.
OTE - "Errege-Ausgabe"-Anweisung. Gesetzt wird ein Bit in der Datentabelle 38, wenn der Status der Sprosse oder Querverbindung "wahr" ist. Andernfalls wird das Bit zurückgesetzt. Der Sprossenstatus wird wieder durch einen "wahren" Zustand initialisiert.
OTL - "Verriegele-Ausgabe"-Anweisung. Gesetzt wird ein Bit in der Datentabelle 38, wenn der Status der Sprosse oder Querverbindung "wahr" ist. Andernfalls bleibt das Bit unverändert. Der Sprossenstatus wird wieder durch einen "wahren" Zustand initialisiert.
OTU - "Entriegele-Ausgabe"-Anweisung. Zurückgesetzt wird ein Bit in der Datentabelle 38, wenn der Status der Sprosse oder Querverbindung "wahr" ist. Andernfalls bleibt das Bit unverändert. Der Sprossenstatus wird wieder durch einen "wahren" Zustand initialisiert.
BST - "Verzweigungsstarf-Anweisung. Durchgeführt wird die erforderliche Stapelung des gegenwärtigen Status in ein internes "Stapel"-Register, um die Verarbeitung paralleler logischer Pfade zu ermöglichen.
NXB -"Nächste-Verzweigung"-Anweisung. Identifiziert wird der Beginn eines anderen parallelen logischen Pfads, und der gegenwärtige Sprossenstatus wird erneut initialisiert.
BND - "Verzweigungsende"-Anweisung. Durchgeführt wird die erforderliche Entstapelung des Status und ein auf den neuesten Stand Bringen des Hauptsprossenstatus am Ende paralleler logischer Pfade.
ADX - "Adreßausdehnung"-Anweisung. Vorgesehen wird zusätzlicher Adressierplatz über die normalen 256 Wörter hinaus, die von den standardisierten acht Bits der Operandenadresse zur Verfügung gestellt werden, die den obigen OP-Codes folgt. Dies wird erreicht durch Verwendung des zweiten Byte dieses OP-Code als die Daten für das hohe Byte der Operandenadresse für die nachfolgende Anweisung.
Wie aus PIG. 5A ersichtlich, wird beim Abruf einer anderen Steuerprogrammanweisung als den obigen Anweisungen eine Steuerleitung 408 am Ausgang der Logikeinheit 407 freigegeben. Die Folge davon ist, daß am Ende des gegenwärtigen Zyklus C1 das D-Flipflop 401 zurückgesetzt wird und das Busanforderungssignal von der Steuerleitung 41 verschwindet. Die Flipflops 403 und werden ebenfalls gelöscht und die Steuerschaltung 400 wird über die Steuerleitung 406 in eine passive Betriebsart versetzt. Die Führung oder Kontrolle wird daher zurück auf den 16-Bit-Mikroprozessor 20 übertragen, der dann durch Freigabe oder Betätigung der Steuerleitung aus Elementen des Bit-Prozessors 30 auslesen kann oder in Elemente dieses Prozessors einschreiben kann.
Ferner zeigt FIG. 5A, daß die Bauelemente des Bit-Prozessors 30 zusätzlich zum Kontaktplanprogrammzähler und zur Logikeinheit 407 einen Satz aus sechzehn Adreßbustoren 410 und zwei Sätze aus acht Datenbustoren 411 und 412 enthalten, die mit dem Kontaktplanprogrammzähler 40 verbunden sind. Der 16-Bit-Mikroprozessor 20 kann zwei aufeinanderfolgende Bytes von Daten in den Kontaktplanprogrammzähler 40 einschreiben, und diese Datenbytes nehmen eine solche Voreinstellung des Zählers 40 vor, daß er den geeigneten Punkt im Kontaktplanprogramm adressiert. Der Zähler 40 wird in dieser Weise voreingestellt,
wenn jeweilige Steuerleitungen 413 und 414 während Mikroprozessorschreibzyklen aktiv sind. Der Ausgang des Kontaktplanprogrammzählers 40 wird während jedes Zyklus C1 der Steuerschaltung 400 an den Adreßbus 21 dadurch gelegt, daß über eine Steuerleitung 415 die Adreßbustore 410 freigegeben werden. Der Steuerprogrammzähler 40 wird inkrementiert durch die Steuerschaltung 400 über eine Steuerleitung 416 in der Mitte und am Ende des C1-Zyklus. Wenn die Führung oder Kontrolle zurück an den 16-Bit-Mikroprozessor 20 gegeben wird, kann dieser Prozessor die Inhalte des Kontaktplanpro grammzählers 40 dadurch auslesen, daß über jeweilige Steuerleitungen 417 und 418 die Datenbustore 411 und 412 aufeinanderfolgend freigegeben werden. Wie oben angedeutet, werden die beiden 8-Bit-Datenbytes, die aus dem Zähler 40 ausgelesen worden sind, vom Mikroprozessor 20 dazu verwendet, um die nächste Kontaktplanprogrammanweisung abzurufen, wenn der Mikroprozessor 20 die Kontrolle und Führung wieder übernimmt.
Während des C1-Zyklus wird die vom Zähler 40 bezeichnete Kontaktplanprogrammanweisung aus dem RAM 35 abgerufen. Jede solche Anweisung enthält einen Operationscode, der der Logikeinheit 407 zugeführt wird, und alle Anweisungen außer den Anweisungen BST, NXB und BND enthalten einen begleitenden Operanden oder eine be-, gleitende Operandenadresse. Lautet der Operationscode "ADX", ist er von einem Operanden begleitet, der aus dem RAM 35 ausgelesen und in einem ADX-Latch oder einer ADX-Verriegelung 420 gespeichert wird, wenn eine Steuerleitung 421 von der Steuerschaltung 400 betätigt wird. Andernfalls wird eine begleitende Operandenadresse aus dem RAM 35 ausgelesen und in einem Operandenadreßlatch oder einer Operandenadreßverriegelung 422 gespeichert, wenn eine Steuerleitung 423 von der Steuerschaltung betätigt wird. Während des nachfolgenden C2- oder C3-Zyklus wird die 16-Bit-Adresse, die von der ADX-Ver-
riegelung 420 und der Operandenadreßverriegelung 422 erzeugt wird, dem Adreßbus 21 über einen Satz von Toren 424 zugeführt, die über eine Steuerleitung 425 freigegeben werden. Der gewünschte Operand, der in der Datentabelle 38 des RAM 35 gespeichert ist, kann somit adressiert und bearbeitet werden, und zwar vom Bitprozessor 30.
Wie aus FIG. 5A ersichtlich, enthält der Bit-Prozessor 30 auch einen Echtzeitzähler 426, der mit dem Datenbus 22 verbunden ist. Der Echtzeitzähler wird vom 16-Bit-Mikroprozessor 20 voreingestellt, der in ihn dadurch eine Zahl einschreibt, daß von der Steuerschaltung 400 eine Steuerleitung 427 freigegeben wird. Der Echtzeitzähler 426 wird dann von einem an einer Leitung 428 auftretenden Zeit- oder Taktsignal so lange dekrementiert, bis er den Zählwert Null erreicht. An der Leitung 45, die wie bereits erwähnt zum Prioritatscodierer 48 (FIG. 2) führt, erscheint dann ein Uhterbrechungsaufrufsignal. Der Echtzeitzähler 426 wird mit einem Wert voreingestellt, der eine solche Unterbrechung in regelmäßigen Abständen hervorruft.
FIG. 5A und 5B zeigen insbesondere, daß die Logikeinheit 407, die einen Teil des Bit-Prozessors bildet, den Operationscodeanteil jeder Steuerprogramm,-anweisung bei einem Latch oder einer Verriegelung 440 empfängt. Die Verriegelung 440 wird über eine Leitung 441 während des C1-Zyklus von der Steuerschaltung 440 freigegeben. Fünf Bits des Operationscode werden decodiert, um die von der Logikeinheit 407 vorzunehmende Operation anzuzeigen, und drei Bits werden als Bit-Zeiger-Code (bit-pointer code) verwendet, um in dem zu bearbeitenden Operanden ein Bit aus acht Bits auszuwählen. Ein 3-auf-8-Decodierer 442 und ein 2-auf-4-Decodierer 443 werden zum Decodieren des Operationscode
verwendet, und die resultierenden Ausgänge werden über einen Steuerbus 444 an einen booleschen Prozessor 445 gelegt. Der boolesche Prozessor ist dem in der US-PS 4 165 534 beschriebenen booleschen Prozessor ähnlich. Er empfängt als Eingangsdatum ein Einzelbit an einem Anschluß 446 während der Ausführung einer XIC- oder XIO-Anweisung, und er erzeugt als Ausgang ein Einzelbit an einem Anschluß 447, wenn eine OTE-, OTL- oder OTU-Anweisung ausgeführt wird. Der Zustand des booleschen Prozessors 445 kann auf den Datenbus 22 vom 16-Bit-Mikroprozessor 20 ausgelesen werden, wenn die Steuerschaltung 400 eine Freigabeleitung 448 aktiviert. Der Zustand kann in den booleschen Prozessor 445 wieder eingespeichert werden, wenn eine Steuerlei-
15 tung 449 aktiviert wird.
Wird von der OP-Code-Verriegelung 440 ein Operationscode empfangen, bei dem es sich nicht um einen von denjenigen Codes handelt, die vom Bit-Prozessor 30 ausführbar sind, wird vom 3-auf-8-Decoder 442 ein Signal an der Steuerleitung 408 erzeugt. Wenn dies geschieht, wird, wie oben beschrieben, der 16-Bit-Mikroprozessor wachgerufen, und der Bit-Prozessor 30 wird in den passiven Betriebszustand überführt. Typischerweise ruft dann der 16-Bit-Mikroprozessor 20 dieselbe Anweisung vom Kontaktplanprogramm auf, liest den Zustand des booleschen Prozessors 445 in eines seiner internen Register und führt die Kontaktplanprogrammanweisung durch Abbildung (mapping) zu einer im ROM 23 gespeicherten, geeigneten Interpretierroutine aus. Nach Beendigung schreibt der 16-Bit-Mikroprozessor 20 den Zustand seines interen Registers zurück in den booleschen Prozessor 445 und legt die Führung oder Kontrolle wieder in die Hände des Bit-Prozessors 30.
Wie es insbesondere in Verbindung mit FIG. 5B erläutert werden kann, wird ein C3-Zyklus ausgeführt,
nachdem die Kontaktplanprogrammanweisung während des C1-Zyklus abgerufen worden ist, und zwar für den Fall, daß entweder eine XIC- oder eine XIO-Anweisung vom Bit-Prozessor 30 ausgeführt wird. Der von der Operandenadresse in der Kontaktplanprogrammanweisung angegebene Operand wird während des C3-Zyklus aus der Datentabelle 38 ausgelesen, und er wird als Antwort auf ein Signal von der Steuerschaltung (400 FIG. 5A) an einer Leitung 451 in einem Operanden-Latch oder einer Operanden-Verriegelung 450 gespeichert. Eine 1-aus-8-Selektorschaltung 452 ist mit dem Ausgang der Operandenverriegelung 450 verbunden und wird von einem UND-Tor 453 freigegeben, wenn entweder der XIC- oder XIO-Operationscode in der Verriegelung 440 vorhanden ist. Der an den Ausgängen 454 der OP-Codeverriegelung 440 erzeugte Bit-Zeiger-Code steuert die Auswahlanschlüsse des 1-aus-8-Selektors 452 an, und als Ergebnis wird der Zustand von einem der acht Bits in dem Operanden an den Eingang 446 des booleschen Prozessors 445 gelegt.
Wird eine der Ausgangsanweisungen (OTE, OTL oder OTU) ausgeführt, führt die Steuerschaltung 400 einen C2-Zyklus durch, nachdem die Kontaktplanprogrammanweisung während der C1-Zyklus abgerufen worden ist. Das zu bearbeitende Ausgangsbit wird während des C2-Zyklus aus der Datentabelle 38 ausgelesen und in der Operandenverriegelung 450 gespeichert. Der Bit-Zeiger-Code, der an den Ausgängen 454 erscheint, wird an die Eingänge eines S-Leitung-auf-e-Leitung-Decodierers 456 gelegt, und die acht Ausgänge dieses Decodierers sind verbunden mit den Eingängen von acht Tri-State-Invertertoren 457. Dieselben Ausgänge sind mit den jeweiligen Freigabeanschlüssen von acht Bustreibertoren 458 verbunden, und der Eingang jedes dieser Tore 458 ist an den Ausgang 447 des booleschen Prozessors 445 angeschlossen. Die Invertertore 457 steuern die jeweiligen Freigabeanschlüsse von acht zusätzlichen Bustreibertoren 459 an,
und sieben von den acht Bits in der Operandenverriegelung 450 werden zum Datenbus 22 übermittelt, wenn die invertierenden Tore 457 durch die Steuerleitung 460 von der Steuerschaltung 400 freigegeben werden. Das vom Bit-Zeiger-Code ausgewählte achte Bit wird nicht an den Bus 22 weitergeleitet, sondern statt dessen, wird die Ader oder die Leitung in dem Datenbus 22, die diesem Bit entspricht, über eines der Bustreibertore 458 vom Ausgang 447 des booleschen Prozessors angesteuert.
Der in einer Ausgabeprogrammanweisung angegebene Operand wird somit aus der Datentabelle 38 ausgelesen und zurück in die Datentabelle 38 eingeschrieben, wobei jedoch das darin befindliche ausgewählte Bit vom Ausgang des booleschen Prozessors 445 modifiziert worden ist.
Datenstrukturen
Wie es insbesondere an Hand FIG. 2 und 6 erläutert werden kann, speichert der RAM 35 eine Anzahl von Daten-Strukturen, die vom 16-Bit-Mikroprozessor 20 und vom Bit-Prozessor 30 verwendet werden, damit diese Prozessoren ihre jeweiligen Funktionen ausführen können. Diese Datenstrukturen umfassen die Datentabelle 38 und das Anwendersteuerprogramm 37 und sind in weiteren Einzel-
25 heiten in FIG. 6 dargestellt.
Die Datentabelle 38 enthält getrennte Datendateien, von denen jede einen spezifischen Datentyp enthalten kann und jede zum Ausführen einer spezifischen Funktion beim Betrieb des speicherprogrammierbaren Steuergeräts dienen kann. Die Datendatei Nr. 0 ist beispielsweise eine Ganzzahldatei, die als Ausgabebildtabelle 500 dient, und die Datendatei Nr. 1 ist ebenfalls eine Ganzzahldatei, die als Eingabebildtabelle 501 dient. Bei der Datendatei Nr. 3 handelt es sich ebenfalls um eine Ganzzahldatei, der die Funktion einer Statusdatei 502 züge-
ordnet ist. Der Inhalt der Statusdatei 502 wird im einzelnen unten noch beschrieben, und die Eingabebildtabelle 500 sowie die Ausgabebildtabelle 501 stellen, wie bei herkömmlichen speicherprogrammierbaren-Steuergeräten, die Abbildungen der Zustände der E/A-Vorrichtungen dar, die mit den E/A-Bausteinen 4 in den Steuergerät-E/AGestellen 1 und 11 verbunden sind.
Wie aus FIG. 6 und 8 ersichtlich, kann die Datentabelle 38 viele andere Datendateien umfassen, von denen eine jede unter Verwendung von Datentabellenzeigem 503 lokalisiert werden kann, die in einem Dateiinhaltsverzeichnisabschnitt des RAM 35 gespeichert sind. Jeder Datentabellenzeiger 503 enthält eine Einwort-"Datei-Startadressew, welche die absolute Adresse im RAM 35 der zugeordneten Datendatei angibt. Ein zweites Wort in jedem Datentabellenzeiger 503 gibt den Typ der Daten in der Datei, die Anzahl von Elementen in der Datei und weiterhin an, ob oder ob nicht die Datei schreibgeschützt (P) ist. Die Datentypen oder Datenarten werden durch die folgenden Codes angegeben:
0000 = ganze Zahlen;
000'i = Zeitgeberstrukturen für Kontaktplanprogramm-
25 Zeitgeberanweisungen;
0010 β Zählerstrukturen für Kontaktplanprogramm-
zähleranweisungen;
0011 as Steuerstrukturen; 0100 = Gleitkommazahlen;
30 0111 * ASCII-Zeichen; 1111 = BCD-Daten für Darstellungszwecke.
Wie oben erwähnt, hat die Datendatei Nr. 2 die Funktion der Statusdatei 502. Wie insbesondere aus FIG. 9 ersichtlich, hat die Statusdatei 502 eine Länge von 32 Wörtern, und sie enthält eine Anzahl ihr zugeeigneter Strukturen:
-38-Wort Beschreibung
arithmetische Statusflaggen
Bit O = C - Übertrag Bit 1 = V - überlauf Bit 2 = Z - Null Bit 3 = N - Vorzeichen
Störungsroutineprogrammdateinummer (0 = keine Störungsroutine)
Störungen
Bit 0 = Software-Überwachung (software watchdog)
Bit 1 m illegaler OP-Code
Bit 2 = illegale Adresse
Bit 3 = keine Kennung
Bit 4 = Stapelfehler
10 3 Dateinummer des gerade laufenden Programms, wenn
eine Störung auftritt.
4 Sprossen- oder Querverbindungsnummer, die gerade
ausgeführt wird, wenn Störung auftritt.
5 E/A-Störungen, Status- und Abtast- oder Abfrage
sperrung
Bit 0 = Gestell 0 gestört Bit 1 = Gestell 1 gestört
Bit 2 = Gestell 2 gestört Bit 3 = Gestell 3 gestört
Bit 4 = Gestell 0 Status
Bit 5 = Gestell 1 Status
Bit 6 = Gestell 2 Status Bit 7 = Gestell 3 Status
Bit 8 = Gestell 0 Abtastung gesperrt Bit 9 = Gestell 1 Abtastung gesperrt Bit 10 = Gestell 2 Abtastung gesperrt Bit 11 = Gestell 3 Abtastung gesperrt
6 Ist Zeituhr, Jahr (0 bis 32767)
Echtzeituhr, Monat (1 bis 12)
8 Echtzeituhr, Tag (1 bis 31, 30, 29 oder 28)
Echtzeituhr, Stunden (0 bis 23) Echtzeituhr, Minuten (0 bis 59)
11 Echtzeituhr, Sekunden (0 bis 59)
Programmbereichprüfsumme
Vorherige Abtastzeit
Größte vorherige Abtastzeit
Programmüberprüfungssetzpunkt (0=gesperrt)
Wort Beschreibung
16 Echtzeitunterbrechungssetzpunkt in Millisekunden
(O β gesperrt)
17 EchtzeitunterbrechungsdateinuTtimer
(O= gesperrt)
18 Strukturplanstatus
5 Bit 0 = erste Abtastflagge
Bit 8 = neuer Start mit Beginn des Energiehochfanrens
19 Strukturplanrückkehrwert
Mit besonderem Verweis auf FIG. 6 und 7 wird ausgeführt, daß das Anwendersteuerprogramm 37 aus separaten Programmdateien besteht. Die Programmdateien Nr. 1 und Nr. 2 sind spezifischen Funktionen gewidmet, jedoch ist der Rest variabel sowohl was Typ und Art als auch Größe angeht. Die Programmdatei Nr. 0 dient zur Programmidentifikation, und wie noch weiter unten beschrieben wird, ist die Programmdatei Nr. 1 die Aktivstrukturplandefinition 504 oder das Strukturplanprogramm. Jede Programmdatei im Anwendersteuerprogramm 37 ist identifiziert durch einen Programmdateizeiger 499, der im Dateiinhaltsverzeichnisabschnitt des RAM 35 gespeichert ist. Jeder Zeiger 505 gibt den Programmdateityp, die absolute Speicherstartadresse und Länge des Programms an. Jeder Zeiger 499 liefert auch eine Anzeige darüber, wenn es sich um eine Datei handelt, die schreibgeschützt (P) ist, und er liefert eine Prüf- oder Kontrollsumme der Programmdatei, und zwar zum Einsatz als Diagnosewerkzeug.
Es gibt drei Typen oder Arten von Programmdateien: Kontaktplan (ladder); Strukturplan (structure chart); und Maschinensprache (machine language). Die Kontaktplanprogrammdateien können ausgeführt werden vom Prozessor-Baustein 3, und sie bestehen aus Anweisungen der Art oder des Typs, wie er auch in herkömmlichen speicherprogrammierbaren Steuergeräten gefunden wird. Der Ausdruck "Leiter" oder "Kontaktplan" ("ladder") ist vom Kontakt-
planformat abgeleitet, das benutzt wird, das Programm auf dem Programmierungsgerät 6 darzustellen. Maschinensprachprogrammdateien enthalten Anweisungen, die direkt vom 16-Bit-Mikroprozessor 20 ausführbar sind. Diese Programme werden benutzt, um Dualsprachmerkmale zu implementieren, wie sie in der US-PS 4 302 820 beschrieben sind.
Die Strukturplanprogramme (structure chart programs) stellen ein neues Konzept in speicherprogrammierbaren Steuergeräten dar und sie werden ausgeführt von einer Strukturplaninterpretierroutine, die unten im einzelnen noch näher diskutiert wird. Wie es aus Fig. 12A bis 12C hervorgeht, verwendet die Strukturplaninterpretierroutine zusätzlich zur Strukturplandefinitionsprogrammdatei 504 eine Aktivzustandsliste 505, die im RAM 35 gespeichert ist und sich aus sechzehn Beschreibungs- oder Descriptorzeigern zusammensetzt. Diese Descriptorzeiger sind Adressen von Descriptoren 506, die in der Strukturplandefinition 504 gespeichert sind. Die Strukturplandefinitionsprogrammdatei 504 ist nichts weiter als ein Satz solcher Descriptoren 506, die unter Verwendung des Programmierungsgeräts 6 erzeugt worden sind. Die Descriptoren 506 umfassen die Nummer einer Kontaktplanprogrammdatei, die ablaufen soll, wenn der Descriptor 506 aktiv ist. Wie noch im einzelnen erläutert wird, zeigt die Aktivzustandsliste 505 auf spezifische Descriptoren von den Descriptoren 506 und gibt dabei solche Kontaktplanprogramme an, die zu irgendeinem Zeitpunkt vom Prozessor-Baustein 3 in Betrieb genommen bzw. den Ablauf zugeführt werden sollen.
Wie bereits angegeben, wird der gemeinsame RAM 125 im Orts-E/A-Teil 3B dazu benutzt, um Information zwischen dem Steuerteil 3A und dem Kommunikationsteil 3C zu übermitteln. Unter besonderer Bezugnahme auf FIG. 3 und 14 wird ausgeführt, daß ein geeigneter Befehl in einen Ein-
gabenachrichtenpuffer 605 im gemeinsamen RAM 125 eingeschrieben wird, wenn das Kommunikationsteil 3C eine Nachricht vom Programmierungsgerät 6 empfängt, die eine Antwort vom Steuerungsteil 3A erfordert. Ein geeigneter Befehl wird dann eingeschrieben an einen Steuerunterbrechungsbefehlsplatz 606 im gemeinsamen RAM 125, und der 16-Bit-Mikroprozessor 20 wird dadurch unterbrochen, daß in der oben beschriebenen Weise eine Einschreibung in die Ausgabeverriegelung 130 erfolgt. Als Teil seiner Unterbrechungsbedienungsroutine liest der Mikroprozessor den Steuerunterbrechungsbefehl 606 und bestimmt, daß ein Programmierungsgerätbefehl auf seine Ausführung im Eingabenachrichtenpuffer 605 wartet.
Nach der Ausführung des Programmierungsgerätbefehls schreibt das Steuerteil 3A eine Antwort in einen Ausgangsoder Ausgabenachrichtenpuffer 607 und einen Befehlscode in einen Kommunikationsunterbrechungsbefehlsplatz 608. Der Kommunikationsmikroprozessor 205 wird dann durch den Einschreibvorgang in die Ausgangsverriegelung 130 unterbrochen. Als Teil seiner Unterbrechungsbedienungsroutine liest der Kommunikationsmikroprozessor 205 den Kommunikationsunterbrechungsbefehl 508, stellt fest, daß ihn eine Antwort im Ausgangsnachrichtenpuffer 607 erwartet, und liest die Antwortnachricht aus dem gemeinsamen RAM 125. Die ünterbrechungsbefehlsplätze 606 und 608 arbeiten somit in Kombination mit den Nachrichtenpuffern 605 und 607, um einen ordentlichen Informationsfluß zwischen dem Programmierungsgerät 6 und dem Steuerteil 3A des Prozes-
30 sor-Bausteins 3 vorzusehen.
Ein etwas ähnlicher Datenaustausch geschieht bezüglich der Fern-E/A-GeStelldaten. An Hand von FIG. 3 und 14 kann erläutert werden, daß Eingabedaten von den drei Fern-E/A-Gestellen 11 vom Kommunikationsteil 3C empfangen und in den Eingabeabschnitt 126A der E/A-Bildtabelle 126 geschrieben werden. Als Teil seiner regulären E/A-
Abtastroutine, die noch im einzelnen veiter unten erläutert wird, liest der 16-Bit-Mikroprozessor 20 diese Eingabebilddaten aus dem gemeinsamen RAM 126 und schreibt sie in seine eigene Datentabelle 38. Als Teil dieser selben E/A-Abtastroutine bringt der 16-Bit-Mikroprozessor 20 einen Ausgangs- oder Ausgabeabschnitt 126B der E/A-Bildtabelle 126 dadurch auf den neuesten Stand, daß er Daten von seiner eigenen Datentabelle 38 transferiert. Das Kommunikationsteil 3C übermittelt diese Ausgabedaten zu dem geeigneten E/A-Gestell 11.
Jedes Fern-E/A-Gestell 11 hat ein E/A-Gestellstatuswort 610, das im gemeinsamen RAM 125 gespeichert ist. Diese Statuswörter sehen bezüglich des Zustands ihrer jeweiligen Fem-E/A-Gestelle die folgenden Informationen vor:
N = neue Ausgänge betreffendes Bit wird vom 16-Bit-Mikroprozessor 20 gesetzt, wenn dieser die Ausgabebildtabelle 126B auf den neuesten Stand bringt,und wird vom Kommunikationsmikroprozessor 205 zurückgesetzt, wenn die Ausgänge an das Fern-E/A-Gestell 11 gesendet werden.
RS = Ausgänge sind zurückzusetzen, wenn dieses Bit entweder vom Mikroprozessor 20 oder 205 gesetzt wird.
„j. F = eine E/A-Störung wird angezeigt, wenn dieses Bit gesetzt wird.
I = die Ausgangsabtastung zu diesen E/A-Gestell 11 ist gesperrt.
Die E/A-GestellStatuswörter 610 werden somit verwendet, um die Übermittlung von E/A-Daten zwischen den Fern-E/A-Gestellen 11 und dem Steuerteil 3A des Prozessor-Bausteins 3 zu koordinieren.
Eine weitere im gemeinsamen RAM 125 gespeicherte Datenstruktur ist ein Systemflaggenwort 611. Dieses Flaggenwort 611 speichert einen Satz aus drei Bits, die die Betriebsart anzeigen, in der das speicherprogrammier-
-43-bare Steuergerät betrieben werden soll,
R = Lauf-Betrieb (RUN mode), wenn gesetzt, T = Prüf-Betriebsart, wenn gesetzt, 5 P= Programm-Betriebsart, wenn gesetzt.
Diese Bits können natürlich geändert oder überprüft werden, und zwar entweder vom Steuerteil 3A oder vom Kommunikationsteil 3C des Prozessor-Bausteins 3.
Aus FIG. 4 und 15 geht insbesondere hervor, daß der RAM 211 im Kommunikationsteil 3C Daten speichert, die vom Mikroprozessor 205 und vom Mikrocomputer 210 gemeinsam benutzt werden. Es sind Eingabe- und Ausgabeabschnitte der Fern-E/A-Bildtabelle 241 und ein Satz aus drei E/A-Gestellstatuswörtern 705 vorgesehen. Die Statuswörter 705 betreffen die folgende Information bezüglich jedes der drei Fern-E/A-Gestelle 11:
N = Neue Ausgänge betreffendes Bit wird gesetzt
vom Mikroprozessor 205, wenn dieser die Ausgabebildtabelle 241 auf den neuesten Stand bringt, und wird zurückgesetzt vom Mikrocomputer 210, wenn dieser die E/A-Gestelle 11 auf den neuesten Stand bringt.
RS = Ausgänge sollen zurückgesetzt werden, wenn Bit gesetzt wird.
F = Sine E/A-Störung ist aufgetreten in diesem Gestell.
I = Ausgabeabtastung sperren, wenn Bit gesetzt ist. OD = Ausgaben zum E/A-Gestell sind gesendet worden. ^Q ID = Eingänge sind abgetastet worden.
Eingabenachrichten vom Programmierungsgerät 6 oder anderen "Stationen", die mit dem Serienkanal 5 verbunden sind, werden in Nachrichtenpuffern 242 gespeichert. Die Nachrichtenpuffer 242 speichern auch die Antwortnachrichten vom Prozessor-Baustein 3. Wie oben angegeben, stammen einige dieser Antwortnachrichten vom Steuerteil 3A,
oder sie stammen vom Kommunikationsteil 3C selbst. Es gibt insgesamt fünfzehn Nachrichtenpuffer, von denen jeder bis zu 71 Datenbytes und ein einziges Steuerbyte speichert. Das Steuerbyte wird dazu verwendet, die Verarbeitung der ihm zugeordneten Nachricht zu koordinieren, und es enthält eine Stationsaktivflagge (SA) und eine Nachrichtenaktivflagge (MA). Die Stationsaktivflagge (SA) wird gesetzt, wenn eine Nachricht in seinem Puffer vom Programmierungsgerät 6 oder einer anderen Station vom Serienkanal 5 empfangen worden ist. Dieses Bit wird zurückgesetzt, nachdem eine Nachricht zurück an das Ursprungsgerät über denselben Puffer gesendet worden ist. Die Nachrichtenaktivflagge (MA) wird gesetzt, wenn vom Mikroprozessor 205 Nachrichtendaten in den Puffer 242 gegeben worden sind, und sie wird zurückgesetzt, • wenn die Gesamtnachricht vom Mikrocomputer 210 über den Serienkanal 5 ausgesandt worden ist.
Weil der Mikroprozessor 205 aufgerufen werden kann, um eine Reihe von Aufgaben gleichzeitig vorzunehmen, arbetet er in Abhängigkeit von einem Schedulerprogramm, das im ROM 206 gespeichert ist. Dieser Scheduler verwendet einen Satz von drei Datenstrukturen, eine Steuergerätbefehlswarteschlange 706, eine Programmierungsgerätwarteschlange 707 und eine Fern-E/A-Warteschlange 708. Diese Warteschlangen 706 bis 708 sind eine Liste vom Mikroprozessor 205 durchzuführender Aufgaben, und ein Warteschlangenzeiger 709 zeigt an, welche dieser Aufgaben gegenwärtig ausgeführt wird. 30
Betriebsweise
Der Betrieb oder die Operation des Steuerteils 3A des Prozessor-Bausteins 3 wird von einer Exekutivroutine 520 gesteuert, die im ROM 23 gespeichert ist. Im folgenden wird insbesondere auf FIG. 2 und 10 Bezug genommen. Nachdem das speicherprogrammierbare Steuergerät
mit Energie versorgt ist, wird ein Satz von Anweisungen ausgeführt, die in einem Verarbeitungs- oder Prozeßblock 521 dargestellt sind. Diese Anweisungen dienen zum Erstellen und Initialisieren der im RAM 35 gespeicherten Datenstrukturen. Befindet sich das System in der BLAUFII-Betriebsart (RUN), was in einem Entscheidungsblock 522 ermittelt wird, beginnt ein im Prozeßblock 523 dargestellter Vorabfrage- oder Vorabtastprozeß. Alle Programme vom Kontaktplantyp werden abgetastet, wobei all ihre Sprossen oder Querverbindungen auf "falsch" gesetzt werden, die Ausgabebildtabelle 500 wird sowohl in das Ortsgestell 1 als auch in den gemeinsamen RAM 125 des Orts-E/A-Teils 3B geschrieben und die Eingabebildtabelle 501 wird dadurch aufbereitet, daß der Eingabestatus sowohl vom Ortsgestell 1 als auch vom gemeinsamen RAM 125 ausgelesen wird. Dann werden die Unterbrechungen freigegeben, und es wird mit der Verarbeitung fortgefahren. Wie in einem Prozeßblock 524 angedeutet, wird als nächstes eine Strukturplaninterpretierroutine ausgeführt, die, wie es noch später beschrieben wird, eine Kontaktplanprogrammdatei zur Ausführung auswählt. Anschließend wird eine Kontaktplanprogramminterpretierroutine 525 ausgeführt, um den Lauf der ausgewählten Kontaktplanprogrammdatei vorzunehmen. Nach einer einzigen Abtastung durch das betriebsbereite Kontaktplanprogramm wird eine E/A-Abtastung durchgeführt, wie es in einem Prozeßblock 526 angedeutet ist.
Im folgenden wird insbesondere auf FIG. 3 und 14 verwiesen. Die E/A-Abtastung wird an bezeichneten E/A-Gestellen vorgenommen. Die Ausgabebildtabelle 500 wird direkt in das Orts-E/A-Gestell 1 eingeschrieben, und die Eingabebildtabelle 501 wird dadurch auf den neuesten Stand gebracht oder aktualisiert, daß das Orts-E/A-Gestell 1 direkt ausgelesen wird. Die übrigen drei Fern-E/A-Gestelle 11 werden allerdings dadurch aktualisiert,
daß Einschreib- und Auslesevorgänge bezüglich der E/A-Bildtabelle 126 im gemeinsamen RAM 125 vorgenommen werden. Die E/A-Gestellstatuswörter 610 werden zunächst daraufhin überprüft, um festzustellen, ob ein E/A-Gestell gesperrt oder gestört ist. Nachdem die Ausgänge eines Fern-E/A-Gestells 11 aktualisiert worden sind, wird sein lfNn-Bit im Statuswort 610 gesetzt. Nach Vervollständigung der E/A-Abtastung werden die Systemflaggen 611 im gemeinsamen RAM 125 überprüft, und, wie es aus FIG. 10 hervorgeht, kommt es bei einem Entscheidungsblock 527 zu einer Systemaufzweigung, wenn eine Betriebsartänderung stattgefunden hat. Andernfalls kehrt das System zur Strukturplaninterpretierroutine ; gemäß dem Prozeßblock 524 zurück, um das nächste, zum Lauf vorgesehene Kontaktplanprogramm auszuwählen.
Im folgenden soll im einzelnen dargelegt werden, in welcher Art und Weise der Strukturplaninterpreter und der Kontaktplanprogramminterpreter zusammenarbeiten, um die erfindungsgemäße Lehre in die Praxis umzusetzen.
Im folgenden wird insbesondere auch auf FIG. 11 und 12 verwiesen. Nach Eintritt in den Strukturplaninterpreter wird unter Hinweis auf einen Entscheidungsblock 531 ein Strukturplanrückkehrwert 530 (FIG. 9) überprüft. Dieser Wert wird durch eine "SCR"- oder "ENDE"-Anweisung bei der Beendigung jedes Kontaktplanprogramms gesetzt. Ist der Wert gleich B0«, bedeutet dies, daß das Kontaktplanprogramm seine beabsichtigte Funktion noch nicht vollendet hat und nochmals abgetastet oder laufen muß. In einem solchen Fall wird, wie es in einem Prozeßblock 532 angedeutet ist, die Aktivzustandsliste nicht geändert, sondern es wird ein Index zur Aktivzu-Standsliste 505 zum nächsten Descriptorzeiger inkrementiert. Wenn das Ende der Liste 505 erreicht worden ist, zweigt das System bei einem Entscheidungsblock 533 ab,
und in einem Prozeßblock 534 wird der Aktivzustandslistenindex zur Oberseite der Liste 505 zurückgesetzt.
Wie in einem Prozeßblock 535 angedeutet, werden die Datenstrukturen nach FIG. 12A bis 12C dazu benutzt, um das nächste auszuführende Kontaktplanprogramm zu lokalisieren. Der vom Aktivzustandslistenindex angegebene Descriptorzeiger wird zunächst dazu benutzt, um den "gegenwärtig aktiven" Descriptor 506 in der Strukturplandefinitionsprοgramnidatei 504 zu lokalisieren. Wie es aus FIG. 12B hervorgeht, zeigt das erste Wort im gegenwärtig aktiven Descriptor 506 wiederum die Dateinummer des Kontaktplanprogramms an, das jetzt laufen soll. Diese Programmdateinummer wird verwendet in Verbindung mit dem Dateiinhaltsverzeichnis (FIG. 6), um das Kontaktplanprogramm aufzufinden und seine Startadresse in den Kontaktplanprogrammzähler des 16-Bit-Mikroprozessors zu laden. Bei 536 weist der Strukturplaninterpreter einen Ausgang zum Kontaktplanprogramminterpreter 525 auf, wie es oben angedeutet ist, um mit der Ausführung des ausgewählten Kontaktplanprogramms zu beginnen.
Wie aus FIG. 11 und 12 ersichtlich, gibt das Kontaktplanprogramm, wenn es die ihm zugeordnete Funktion vollendet hat, einen anderen Wert als Null in den Kontaktplanrückkehrwert 530 (FIG. 9) ein. Wie in einem Prozeßblock 537 angedeutet, wird dann ein "Getan"-Bit (D) für den gegenwärtig aktiven Descriptorzeiger in die Aktivzustandsliste 505 gesetzt. Es erfolgt dann eine Reihe von Überprüfungen bezüglich des Code in einem "t"-Fela im ersten Wort des gegenwärtig aktiven Descriptors 506, um festzustellen, ob eine Zustandsänderung auftreten soll, und, wenn dies zutrifft, wohin die Zu-Standsänderung führen soll. Ist das 2-Bit-t-Feld gleich "00", was in einem Entscheidungsblock 538 überprüft
wird, erfolgt eine Zustandsänderung. Der erste Schritt bei der Durchführung der angegebenen Zustandsänderung besteht darin, den gegenwärtig aktiven Descriptorzeiger von der Aktivzustandsliste 505 zu entfernen, wie es aus einem Prozeßblock 539 hervorgeht. Neue Descriptorzeiger werden dann dem Ende der Aktivzustandsliste 505 hinzugefügt, wie es in einem Prozeßblock 540 angedeutet ist. Die Anzahl der hinzuzufügenden Descriptorzeiger wird vom Wert eines 3-Bit-lln"-Feldes im ersten Wort des gegenwärtig aktiven Descriptors 506 angegeben, und die Identität der hinzuzufügenden Descriptorzeiger wird durch Zielnummern angezeigt, die im gegenwärtig aktiven Descriptorblock 506 gespeichert sind. Ist beispielsweise η = 1, wird der Aktivzustandsliste 505 die erste Zielnummer hinzugefügt, wohingegen bei η = 5» die ersten fünf Zielnummern der Aktivzustandsliste 505 hinzugefügt werden. Durch diese Zustandsänderung können somit bis zu sieben separate Kontaktplanprοgramme gleichzeitig aktiviert werden. Nach der Durchführung dieser Änderungen kehrt der Strukturplaninterpreter zum Prozeßblock 532 zurück, um den nächsten Descriptor 506 zu aktivieren, wie es von der Aktivzustandsliste 505 angezeigt wird, und um sein Kontaktplanprogramm aufzufinden und auszuführen.
Steht im t-Feld des gegenwärtig aktiven Descriptors die Angabe "01", kommt es auch zu einer Zustandsänderung, wie es in einem Entscheidungsblock 541 angedeutet ist. Wie aus einem Prozeßblock 542 ersichtlich, wird der Descriptorzeiger für den gegenwärtigen Descriptor von der Aktivzustandsliste 505 entfernt, und am Ende der Aktivzustandsliste 505 wird ein anderer Descriptorzeiger hinzugefügt, wie es in einem Entscheidungsblock 543 dargestellt ist. In diesem Fall wird der Ersatzdescriptorzeiger durch den Rücksprungoder Rückkehrwert (r) und die Liste der Zielnummern im gegenwärtig aktiven Descriptor 506 bestimmt. Gibt
beispielsweise das Kontaktplanprogramm einen Wert r = 3 zurück, wird die dritte Zielnummer im gegenwärtigen Descriptor 506 in die Aktivzustandsliste 505 geladen. Der t-Code von "01" in einem Descriptor 506 ermöglicht es somit einem ausgewählten einer Vielzahl von Kontaktprogrammen zu laufen, und zwar nach Vollendung des Kontaktprogramms, welches in seinem eigenen Programmdateinummernfeld angezeigt wird. Die Auswahl geschieht durch den Rückkehrwert, der durch das Kontaktplanprogramm selbst erzeugt wird.
Beträgt der t-Code im gegenwärtig aktiven Descriptor gleich "10", wird, wie es ein Entscheidungsblock 5^4 angibt, eine "gleichzeitige Konvergenz" einer Vielzahl aktiver Kontaktplanprogramme angezeigt. Die Kontaktplanprogramme werden spezifiziert für eine gleichzeitige Konvergenz durch die ersten n-1 Zielnummern, die im gegenwärtigen Descriptor 506 gespeichert sind. Beträgt der Wert von η im gegenwärtigen Descriptor 506 beispielsweise gleich "4", tritt eine Zustandsänderung mit t = "10" so lange nicht auf, bis die von den ersten drei Zielnummern angegebenen Kontaktplanprogramme einen nicht Nullwert zurückgegeben haben. Wie es aus einem Entscheidungsblock 545 hervorgeht, kommt es nicht zu einer Zustandsänderung, wenn die Getan-Bits (D) in all den spezifizierten Aktivzustandslisteneingängen nicht gesetzt sind. Statt dessen kehrt der Strukturplaninterpreter lediglich zum Prozeßblock 532 zurück, um mit der Verarbeitung der Kontaktplanprogramme fortzufahren, die durch die Eingänge in der Aktivzustandsliste 505 angezeigt sind.
Sind die Getan-Bits für alle der n-1 Kontaktplanprogramme, die von den Descriptorzeigern in der Aktivzustandsliste 505 angezeigt werden, gesetzt, wird entsprechend einem Prozeßblock 546 der Descriptorzeiger
für den gegenwärtigen Descriptor von der Aktivzustandsliste 505 entfernt. Ferner werden auch die anderen n-1 Descriptorzeiger von der Aktivzustandsiiste 505 entfernt. Die n-te. Zielnummer im gegenwärtigen Descriptor 506 wird dann der Aktivzustandsliste 505 hinzugefügt, oder, um beim obigen Beispiel zu bleiben, die vierte Zielnummer. Dieser ZuStandsübergang geschieht in einem Prozeßblock 547, und der Strukturplaninterpreter geht dann in der Schleife zurück, um das nächste Kontaktplanprogramm zu verarbeiten, das von der Aktivzustandsliste 505 angezeigt wird.
In diesem Zusammenhang wird auf den Anhang D verwiesen, wo sich eine Auflistung der Strukturplaninterpretierroutine in Assemblersprache befindet.
Für die folgende Erläuterung werden insbesondere FIG. 2, 10 und 13 herangezogen. Beim Austritt oder Ausgang aus dem Strukturplaninterpreter 524 ist das zum Laufen gedachte Kontaktplanprogramm identifiziert worden, und zwar dadurch, daß seine Startadresse in den Kontaktplanprogrammzähler des 16-Bit-Mikroprozessors 20 geladen worden ist. Wie es in einem Prozeßblock 550 angedeutet wird, erfolgt nach dem Eintritt in den Kontaktplanprogramminterpreter 525 die Initialisierung des Sprossenzustandsregisters im Mikroprozessor 20. Der Kontaktplanprogrammzähler wird ebenfalls auf die erste Kontaktplanprogrammanweisung initialisiert, und das System tritt bei einem Prozeßblock 553 in eine Schleife ein, bei der der Kontaktplanprogrammzähler in den Kontaktplanprogrammzähler 40 des Bit-Prozessors 30 (FIG. 5A) eingeschrieben wird. Das Sprossenzustandsregister im 16-Bit-Mikroprozessor 20 wird ebenfalls in den booleschen Prozessor 445 (FIG. 5B) bei einem Prozeßblock eingeschrieben. Der 16-Bit-Mikroprozessor 20 bringt sich dann selbst in einen inaktiven Wartezustand, und zwar
dadurch, daß der Bit-Prozessor 30 bei einem Prozeßblock 555 in den Wachzustand überführt wird.
Wie bereits vorstehend erläutert, behält der Bit-Prozessor 30 die Führung oder Kontrolle und fährt mit der Ausführung der Kontaktplanprogrammanweisungen so lange fort, bis er entweder unterbrochen wird oder bis er auf eine Kontaktplanprogrammanweisung trifft, die er nicht ausführen kann. Im zuletzt genannten Fall wird der 16-Bit-Mikroprozessor 20 wachgerufen, und er übernimmt die Bearbeitung des Kontaktplanprogramminterpreters. Insbesondere werden im Prozeßblock 556 angegebene Anweisungen ausgeführt, um den Sprossenzustand des booleschen Prozessors 445 und den Inhalt des Kontaktplanprogrammzählers 40 im Bit-Prozessor 30 auszulesen. Das System ruft dann die angegebene Kontaktplanprogrammanweisung im Rahmen des Prozeßblocks 551 auf.
Wie ferner aus FIG, 13 ersichtlich, wird der Operationscode in der abgerufenen Kontaktplanprogrammanweisung auf die Startadresse des im ROM 23 (FIG. 2) gespeicherten, geeigneten Interpretierprogramms abgebildet, und zwar bei einem Prozeßblock 557. Der i6=Bit-KIkroprozessor 20 beginnt mit der Ausführung der Anweisung, und, wenn es sich bei der Kontaktplanprogrammanweisung um eine "ENDE"- oder nSCR"-Anweisung handelt, ist das Kontaktplanprogramm vollendet, und, wie es in Verbindung mit Entscheidungsblöcken 558 und 559 ersichtlich ist, wird die Führung oder Kontrolle zurück an das Exekutivprogramm (FIG. 10) gegeben. Andernfalls wird die Kontaktplananweisung, wie in einem Prozeßblock 560 dargestellt, von der geeigneten Interpretierroutine ausgeführt, und das System kehrt in der Schleife zurück zum Prozeßblock 553, um dort die Führung oder Kontrolle wieder dem Bit-Prozessor 30 zu übergeben und die nächste Kontaktplanprogrammanweisung auszuführen.
36 Ί 0433
Vor der Rückkehr zum Exekutivprogramm schreibt der Kontaktplanprogramminterpreter einen Rückkehrwert in die Statusdatendatei 502 (FIG. 9). Dies ist angedeutet in einem Prozeßblock 561. Die "ENDEII-Kontaktplananweisung schreibt eine "0" für den Rückkehrwert. Die MSCR"-Kontaktplananweisung enthält allerdings einen Operanden, der in die Statusdatendatei 502 eingeschrieben wird. Auf diese Weise kann das Anwendersteuerprogramm den Rückkehrwert durch Steuerung des Werts des Operanden der SCR-Anweisung bestimmen. Zusätzlich gibt der SCR-Anweisungsoperand auch an, welches der vier E/A-Gestelle abgetastet werden soll. Wie es in einem Prozeßblock 562 angedeutet ist, wird diese "Abtastliste11 einer UND-Verknüpfung mit den E/A-Gestellstatusdaten unterzogen und in die Statusdatendatei 502 derart eingeschrieben, daß während der nachfolgenden E/A-Abtastung (FIG. 10) nur solche E/A-Gestelle aktualisiert werden, die einer Aktualisierung bedürfen. Auf diese Weise wird die Gesamtabtastzeit vermindert und das Verhalten des speicherprogrammierbaren Steuergeräts im Hinblick auf Echtzeitvorgänge verbessert.
Der Kontaktplananweisungssatz, der vom Steuerteil 3A ausgeführt wird, ist Anweisungssätzen ähnlich, die in den US-PSn 4 266 281 und 4 442 504 beschrieben sind. Wie oben erläutert, führt der Bit-Prozessor 30 einige dieser Kontaktplananweisungen direkt aus, wohingegen die übrigen Kontaktplananweisungen dadurch ausgeführt werden, daß die im ROM 23 gespeicherten Maschinensprachinterpretierroutinen abgebildet werden (mapping).
Im Anhang C sind für ein Beispiel einer zu steuernden Maschine ein geeignetes Strukturplanprogramm und geeignete Kontaktplanprogramme zusammengestellt. Diese Programme werden unter Verwendung des Programmierungs-
geräts 6 hergestellt und zum Steuerteil 3A übertragen.
Unter Bezugnahme auf FIG. 2 wird ausgeführt, daß der Betrieb des Steuerteils 3A alle 10 ms durch das Kommunikationsteil 3C unterbrochen wird. Geschieht dies, wird die Kontrolle über die Busse an den 16-Bit-Mikroprozessor 20 abgegeben, und es wird eine 10-ms-Unterbrechungsbedienungsroutine ausgeführt, die in FIG. 16 dargestellt ist. Vie durch einen Prozeßblock 580 angedeutet, wird der Zustand der Register des Mikroprozessors im RAM 35 aufbewahrt, und ein Überwachungszeitgeber wird zurückgesetzt, wie in einem Prozeßblock 581 gezeigt.
Die von den Zeitgeberanweisungen benutzte Echtzeituhr wird dann nach einem Prozeßblock 582 aktualisiert, und der Steuerunterbrechungsbefehl 606 wird aus dem gemeinsamen RAM 125 (FIG. 14) ausgelesen, wie in einem Prozeßblock 583 dargestellt. Handelt es sich bei dem angezeigten Befehl um einen solchen, der unmittelbar ausgeführt werden muß, zweigt das System bei einem Entscheidur.gsblock 584 ab, und der Befehl wird gemäß einem Prozeßblock 585 ausgeführt. In jedem Falle erfolgt eine Wiederherstellung der Mikroprozessorregister in einem Prozeßblock 586, und das System kehrt zu seiner unterbrochenen Aufgabe zurück.
Mit besonderem Hinweis auf FIG. 3 und 4 wird ausgeführt, daß die Hauptfunktionen des Kommunikationsteils 3C des Prozessor-Bausteins 3 darin bestehen, eine E/A-Äbtastimg der Fern-E/A-Gestelle 11 über den E/A-Kanal vorzunehmen und die Befehle zu verarbeiten, die über den Serienkanal 5 empfangen oder ausgesendet werden. Der Mikroprozessor 205 übt diese Funktionen als Antwort auf ein im ROM 206 gespeichertes Schedulerprogramm und einen Satz von Unterbrechungsbedienungsroutinen aus, die
3310433
-54-ebenfalls im ROM 206 gespeichert sind.
Wie insbesondere aus FIG. 17 ersichtlich, erfolgt der Eintritt in den Scheduler mit dem Kochfahren der Versorgungsenergie, und im Prozeßblock 620 wird ein Satz von Anweisungen ausgeführt, um sovohl im geeinsamen RAM 125 als auch im RAM 211 Datenstrukturen zu initialisieren. Weiterhin werden Unterbrechungen freigegeben, und beim Prozeßblock 321 wird in eine Schleife eingetreten, und zwar zwecks Eingabe von Daten von jedem aktiven Fern-E/A-Gestell 11. Bei einem Prozeßblock wird die Gestellnummer inkrementiert, und nachdem das letzte E/A-Gestell überprüft worden ist, zweigt der Scheduler bei einem Entscheidungsblock 623 ab, und zwar mit dem Ziel der Überpfügung des "IS"-Bit im E/A-Gestellstatus 705 des RAM 211 (FIG. 15). Dieses Bit wird vom Mikrocomputer 210 auf Null gesetzt, wenn er die Eingabebildtabelle 241A mit dem gegenwärtigen oder laufenden Status der mit dem E/A-Gestell 11 verbundenen Eingabevorrichtungen aktualisiert hat, und nach entsprechender Überprüfung im Entscheidungsblock 624 wird das gegenwärtige Eingabebild vom RAM 211 in die entsprechenden Plätze der Eingabebildtabelle 126A des gemeinsamen RAM 125 (FIG* 14) transferiert. Dieser Transfer wird im Prozeßblock 625 vorgenommen, und das ID-Bit für das angezeigte E/A-Gestell 11 wird auf "1" gesetzt, bevor in der Schleife zurückgegangen wird, um die Eingänge vom nächsten E/A-Gestell 11 zu überprüfen. Die Eingabeabtastschleife 621 aktualisiert daher die Eingabebildtabelle 126A im gemeinsamen RAM 125 immer dann, wenn der Mikrocomputer 210 einen neuen Satz von Eingängen von jedem Fern-E/A-Gestell 11 einliest.
Nach Abtastung der Eingänge oder Eingaben zweigt der Scheduler bei einem Entscheidungsblock 623 zu einem Satz von Anweisungen ab, die in einem Prozeß-
BAD ORIGINAL
block 626 enthalten sind. Diese Anweisungen aktualisieren den E/A-Gestellstatus 610 im gemeinsamen RAM 125 (FIG. 14) mit dem gegenwärtigen oder laufenden Zustand, der vom E/A-Gestellstatus 705 im RAM 211 angezeigt wird. Wird beispielsweise während der jüngsten Eingabeabtastung der E/A-Gestell Nr. 2 eine E/AStörung festgestellt, wird dies durch das "F"~Bit für die E/A-Gestell Nr. 2 angezeigt. Es wird dann bei in eine Schleife eingetreten, in deren Verlauf das Ausgabebild vom gemeinsamen RAM 125 zum RAM 211 transferiert wird. Im einzelnen wird bei 628 die E/A-Gestell Nummer inkrementiert, und solange das letzte Gestell noch nicht überprüft worden ist, zweigt der Scheduler bei einem Entscheidungsblock 629 ab, um das "N"-Bit im E/A-Gestellstatus 610 des gemeinsamen RAM 125 zu prüfen. Ist dieses Bit auf "1" gesetzt, was in einem Entscheidungsblock 630 festgestellt wird, sind die Ausgänge für das angezeigte Gestell vom Steuerteil 3B jüngst aktualisiert worden. Diese aktualisierten Ausgänge oder Ausgaben werden von der Ausgabebildtabelle 126B des gemeinsamen RAM 125 zu dem entsprechenden Platz in der Ausgabebildtabelle 241 des RAM 211 transferiert, wie es durch einen Prozeßblock 631 dargestellt ist. Das "N"-Bit wird im gemeinsamen RAM 125 zurückgesetzt, und das "OD"-Bit für das angezeigte E/A-Gestell wird auf "1" im RAM 211 (FIG. 15) gesetzt, wie in einem Prozeßblock 632 dargestellt. Der Scheduler kehrt dann in der Schleife zurück zwecks Überprüfung des nächsten E/AGestells. Beim Austritt oder Ausgang aus der Schleife 627 bei einem Entscheidungsblock 629 werden alle vom Steuerteil 3A aktualisierte Ausgaben an den RAM 211 weitergeleitet, und zwar zwecks Übertragung zum geeigneten Fern-E/A-Gestell 11.
Immer noch unter Bezugnahme auf FIG. 14 wird dargelegt, daß nach der Aktualisierung der Eingaben und Ausgaben der Scheduler die Steuerbefehlswarteschlange
im RAM 211 überprüft, um festzustellen, ob irgendwelche Befehle vom Steuerteil 3A der Bearbeitung bedürfen. Trifft dies zu, wie es in einem Entscheidungsblock 635 erfaßt wird, wird der angezeigte Befehl gemäß einem Prozeßblock 636 ausgeführt, und dieser Befehl wird dann aus der Varteschlange 706 entfernt, wie es in einem Prozeßblock 637 angedeutet ist. Ein typischer Befehl kann beispielsweise darin bestehen, eine Antwortnachricht im Ausgabenachrichtenpuffer 607 des gemeinsamen RAM 125 (FIG. 14) zu einem der fünfzehn Puffer im RAM 211 (FIG. 15) zu transferieren.
Falls keine Steuergerätbefehle als Warteschlange aufgereiht sind, wird bei einem Entscheidungsblock die Programmierungsgerätwarteschlange 707 überprüft. Fall vom Programmierungsgerät 6 eine Nachricht empfangen worden ist, wird der geeignete Befehl gemäß einem Prozeßblock 641 ausgeführt, und der Befehl wird dann gemaß einem Prozeßblock 642 aus der Warteschlange 707 entfernt. Ein solcher Befehl kann beispielsweise darin bestehen, vom Programmierungsgerät 6 empfangene und in einem der Puffer 242 (FIG. 15) gespeicherte Daten zu interpretieren und einen Befehl zu erstellen, der über die Eingabenachrichtenpuffer 605 im gemeinsamen RAM 125 (FIG. 14) zum Steuerteil 3A weitergeleitet wird. Ein anderer Befehl vom Programmierungsgerät 6 kann ein Aufruf zur Änderung der Betriebsart des speicherprogrammierbaren Steuergeräts sein. Ein solcher Befehl wird dadurch ausgeführt, daß die geeignete Systemflagge 611 (d.h. R, T oder P) im gemeinsamen RAM 125 gesetzt wird.
Es ist ersichtlich, daß der Scheduler wie eine Informationsleitung arbeitet, die zwischen dem Steuerteil 3A und den Serienkanälen 5 und 10 verläuft. Vom
Mikroprozessor 205 wird auch ein Satz von Unterbrechungsroutinen ausgeführt, um dem Scheduler "bei der Durchführung seiner Aufgaben zu helfen.
Die erste dieser Unterbrechungsroutinen ist eine 10-ms-Unterbrechungsbedienungsroutine, die in FIG. 18 gezeigt ist. Auch unter Bezugnahme auf FIG. 4 wird ausgeführt, daß die CTC 208 einen Zeitgeber enthält, der alle 10 ms eine Unterbrechung erzeugt und der den Mikroprozessor 205 zur Ausführung der in FIG. 18 dargestellten Routine dirigiert. Wie in einem Prozeßblock 646 angegeben, werden die Register des Mikroprozessors im RAM 211 aufbewahrt, und es wird ein Unterbrechungsbefehl in den gemeinsamen RAM 125 eingeschrieben, wie es aus einem Prozeßblock 646 hervorgeht. Das Steuerteil 3A wird dann dadurch unterbrochen, daß eine Einschreibung in die Ausgangsverriegelung (FIG. 3) erfolgt, wie in einem Prozeßblock 647 angedeutet, und ein Überwachungszeitgeber wird bei einem Prozeßblock 648 zurückgesetzt. Die Register des Mikroprozessors werden dann wieder bei einem Prozeßblock hergestellt, und das System kehrt zu dem unterbrochenen Programir. zurück. Der Unterbrechungsbefehl 606 FIG. 14) enthält einen Code, der dem Steuerteil 3A die Funktion anzeigt, die es während der Bedienung der Unterbrechung ausführen soll, welche von dieser Routine alle 10 ms initiiert wird. Diese Funktionen enthalten:
Diagnostische oder Überprüfungs-(Watchdog) Fehler - unmittelbar
30 Überprüfung (Watchdog) zurücksetzen unmittelbar
Blocktransfer beendet
Nachricht bereit im Eingabepuffer 605
Kontakthistogrammdatenaufruf
Eine zweite Unterbrechung des Mikroprozessors 205 kann hervorgerufen werden durch das -Steuerteil 3A, wenn
dieses einschreibt in die Verriegelung 130 (FIG. 3). Tritt diese Unterbrechung auf, dirigiert die CTC 208 den Mikroprozessor 205 zu einer in FIG. 19 dargestellten Unterbrechungsbedienungsroutine. Der Mikroprozessor führt diese Routine dadurch aus, daß er zunächst die Mikroprozessorregister bewahrt, wie in einem Prozeßblock 655 angedeutet, und dann den Unterbrechungsbefehl 606 im gemeinsamen RAM 125 liest, wie aus dem Prozeßblock 656 ersichtlich. Dieser Unterbrechungsbefehl kann irgendeine der folgenden Funktionen enthalten:
Diagnostischer Fehler - unmittelbar Blocktransferaufruf - unmittelbar Ausgabenachrichtenpuffer fertig
Wird irgendeiner der unmittelbaren Befehle erfaßt, wie von einem Entscheidungsblock 657 festgestellt, wird der angezeigte Befehl bei einem Prozeßblock 658 ausgeführt. Andernfalls werden die Daten im Ausgabenachrichtenpuffer 607 als Befehl zur Steuergerätwarteschlange im RAM 211 (FIG. 15) transferiert. Dies wird mittels eines Prozeßblocks 659 erreicht, und nach Beendigung dieses Vorgangs werden die Mikroprozessorregister wieder hergestellt und zwar bei einem Prozeßblock 660, und das System kehrt von der Unterbrechung zurück. Das oben beschriebene Schedulerprogramm wird mit der Weiterverarbeitung des transferierten Steuergergtbefehls fortfahren, wenn dafür Zeit zur Verfügung steht.
Es kann noch eine weitere Unterbrechung des Mikro-Prozessors 205 durch den Mikrocomputer 210 (FIG. 4) initiiert werden. Geschieht dies, dirigiert die CTC 208 den Mikroprozessor 205 zu einer Unterbrechungsbedienungsroutine, die lediglich die Tatsache registriert, daß der Serienkanal 5 inaktiv ist. In Abhängigkeit von den Umständen kann dieser Vorfall als eine Störung interpretiert werden. Versucht beispielsweise das Steuer-
teil 3A eine Antwortnachricht an das Programmierungsgerät 6 auszusenden, und dieses ist abgetrennt worden, wird eine Störung angezeigt.
Wie oben angedeutet, ist der Mikrocomputer 210 so programmiert, daß er wie ein "intelligentes" Steuergerät mit Direktzugriffsspeicher arbeitet, das die Eingabe- und Ausgabeinformation handhabt, welche durch die beiden Serienkanäle 5 und 10 fließt. Der Mikrocomputer 210 wird in erster Linie von Unterbrechungen von der SCC 227 angesteuert, obgleich er auch vom Mikroprozessor 205 unterbrochen werden kann, wenn dieser einen Störungszustand diagnostiziert, der die Beendigung von allen weiteren Übertragungen fordert.
Obgleich der Mikroprozessor 210 in erster Linie von Unterbrechungen angesteuert wird, führt er auch ein in FIG. 20 dargestelltes Hauptprogramm aus. Beim anfänglichen Hochfahren der Versorgungsenergie wird ein Satz von Befehlen ausgeführt, die zum initialisieren von Datenstrukturen und zum Freigeben von Unterbrechungen dienen, wie bei einem Prozeßblock 670 angedeutet. Ss wird dann bei 671 in eine Schleife eingetreten, in deren Verlauf Überprüfungen vorgenommen werden, um zu bestimmen, ob ein E/A-Gestell vollständig abgetastet worden ist oder ob eine Nachricht über den Serienkanal 5 empfangen oder ausgesendet worden ist. Wie insbesondere aus FIG. 4, 15 und 20 ersichtlich, wird bei einem Entscheidungsblock 672 eine interne Flagge überprüft, um festzustellen, ob „ein E/A-Gestell abgetastet worden ist. Trifft dies zu, werden Zeiger gesetzt, und zwar mit dem Ziel, das nächste E/A-Gestell bei einem Prozeßblock 673 abzutasten, und gemäß einem Entscheidungsblock 674 wird dann überprüft, um festzustellen, ob das letzte E/A-Gestell abgetastet worden ist. Trifft dies nicht zu, zweigt das System zu einem Prozei3block 675 ab, um den E/A-Gestellstatus 705 aus dem
RAM 211 auszulesen und ihn zur Verwendung durch die E/A-Abtastunterbrechungsbedienungsroutine aufzubewahren. Andernfalls wird eine "E/A-Abtastung-Getann-Flagge beim Prozeßblock 676 gesetzt, und die Zeiger werden zurückgesetzt, zwecks Abtastung des ersten E/AGestells 11 beim Prozeßblock 677. Der E/A-Gestellstatus 705 wird aus dem RAM 211 ausgelesen, und die E/A-Abtastunterbrechungsbedienungsroutine wird zur Abtastung des ersten E/A-Gestells 11 gesetzt, wie in einem Prozeßblock 678 gezeigt. Wie durch einen Prozeßblock 679 angedeutet, wird dann eine Anzahl von diagnostischer Tests durchgeführt, bevor die "E/A-Abtastung-Getan"-Flagge zurückgesetzt und in der Schleife zurückgegangen wird, um die E/A-Gestelle erneut abzutasten.
Immer noch unter Bezugnahme auf FlG. 4, 15 und
wird ausgeführt, daß nach Überprüfung des Status der E/A-Gestellabtastung eine interne Flagge bei einem Entscheidungsblock 680 überprüft wird, um festzustellen, ob die SCC 277 die Aussendung oder den Empfang einer Nachricht vollendet hat. Trifft dies zu, wird eine interne Empfangen/Senden-Flagge beim Entscheidungsblock 681 überprüft, und falls eine Nachricht empfangen worden ist, wird bei einem Entscheidungsblock 682 eine Überprüfung dahingehend durchgeführt, ob ein Befehl oder eine Bestätigung empfangen worden ist. Ist ein Befehl empfangen worden, werden die "SA"- und "MA"-Flaggen in dem geeigneten Nachrichtenpuffer 242 zusammen mit einer internen "Bestätigungs"-Flagge gesetzt, wie in einem Prozeßblock 683 gezeigt. Andernfalls wird eine interne "Berechtigungs"(token)-Flagge bei einem Entscheidungsblock 684 überprüft, um festzustellen, ob dem Prozessor-Baustein 3 die Herrschaft über den Serienkanal 5 gegeben worden ist. Falls nicht, wird die Nachrichtenunterbrechungsbedienungsroutine gesetzt, so daß eine Nachricht am Serienkanal 5 empfangen werden kann, wie es in einem Prozeßblock 685 gezeigt ist. Ist dem
Prozessor-Baustein 3 die Herrschaft gewährt worden, wird ein Satz von Anweisungen, wie im Prozeßblock 686 angedeutet, ausgeführt, um irgendwelche Nachrichten in der Steuergerätbefehlswarteschlange 706 zu lokalisieren, die fertig zum Aussenden sind. Wird eine solche Nachricht gefunden, wird die Nachrichtenunterbrechungsbedienungsroutine gesetzt, um diese Nachricht auszusenden.
Ist eine Nachricht ausgesendet worden, was von einem Entscheidungsblock 681 festgestellt wird, wird bei einem Entscheidungsblock 687 die "Bestätigungs"-Flagge überprüft, um festzustellen, ob eine Bestätigung gerade übertragen worden ist.
Tiff"C dies zu, wird die Flagge zurückgesetzt, und
das System zweigt zu einem Entscheidungsblock 684 ab, um die nächste Nachricht auszusenden oder zu empfangen. Andernfalls ist ein Befehl an den Serienkanal 5 ausgesendet worden, und wie es in einem Prozeßblock 688 angedeutet ist, wird eine Nachrichtenunterbrechungsbedienungsrourine gesetzt, um auf die Bestätigung von der anderen Station an diesem Kanal zu warten (d.h. von dem Programmierungsgerät 6).
Im folgenden wird insbesondere auf FIG. 4, 15 und
21 Bezug genommen. Immer dann, wenn ein Zeichen über den Fern-E/A-Kanal 10 empfangen oder ausgesendet worden ist, unterbricht die SCC 227 den Mikrocomputer und dirigiert ihn zu einer E/A-Gestellunterbrechungsbedienurgsroutine. Während der Ausführung dieser Routine werden die Register des Mikrocomputers, wie aus einem Verarbeitungsblock 800 ersichtlich, bewahrt, und die Routine zweigt bei einem Entscheidungsblock 801 ab, und zwar in Abhängigkeit davon, ob ein Zeichen empfangen oder ausgesendet worden ist.
Ist ein Zeichen ausgesendet vorder , wird bei einem Entscheidungsblock 807 das "Ausgaben-Getan"-Bit (OD) im E/A-Gestellstatuswort 705 überprüft, um festzustellen, ob das letzte Byte der Ausgabedaten ausgesendet worden ist. Ist dies nicht der Fall, werden andere Bits im Statuswort 705 bei einem Entscheidungsblock 808 überprüft, um festzustellen, ob das E/A-Gestell aktiv ist. Wenn nicht, wird das OD-Bit bei einem Prozeßblock 809 gesetzt. Andernfalls wird bei einem Prozeßblock ein Byte aus der Ausgabebildtabelle 24"B ausgelesen und für Aussendungszwecke an die SCC 227 übermittelt, wie aus einem Prozeßblock 811 ersichtlich. Wenn das letzte Byte für das gegenwärtige E/A-Gestell ausgesendet worden ist, wie in einem Entscheidungsblo<k 812 entschieden, wird bei 813 das "OD" Bit im E/A-Gestellstatuswort 705 gesetzt, und die Routine kehrt zurück, nachdem bei 806 die Register des Mikrocomputers wiederhergestellt worden sind. Auf diese Weise wird die Ausgabebildtabelle 241B byteweise, d.h. ein Byte zu einer Zeit, an das gegenwärtige E/A-Gestell ausgesendet, bis alle Ausgaben im E/A-Gestell aktualisiert worden sind.
Für die folgende Erläuterung wird immer noch auf FIG. 21 und 15 Bezug genommen« Nachdem die Ausgaben aktualisiert worden sind, wie durch einen Entscheidungsblock 807 festgestellt, wird das »ID"-Bit im E/A-Gestellstatuswort 705 bei einem Entscheidungs": lock 815 überprüft. Ist dieses Bit zurückgesetzt, wird dadurch angezeigt, daß die Eingaben auf dem laufenden oder gegenwärtigen Stand sind und nicht aktualisiert zu werden brauchen. Das ID-Bit wird vom Mikroprozessor 205 gesetzt, wenn dieser das Schedulerprogramm (FIG. 17) ausführt, um die Eingabebildtabelle 241A zum gemeinsamen RAM (FIG. 3) zu transferieren. Besteht keine Veranlassung zur Aktualisierung der Eingaben, wird hei einem Prozeßblock 816 die »E/A-Gestell-Abgetastet "--Flagge gesetzt, und das System kehrt von der Unterbrechung zurück, nach-
BAD ORIGINAL
dem bei einem Prozeßblock 806 die Register wieder erneut eingespeichert oder hergestellt worden sind. Andernfalls wird eine Weck- oder Prompt-Nachricht zum gegenwärtigen oder laufenden E/A-Gestell übertragen, wie bei einem Prozeßblock 817 angedeutet, und diese Nachricht veranlaßt das E/A-Gestell mit dem Aussenden von Eingabedaten zu beginnen.
Ist ein Zeichen empfangen worden, was von einem Entscheidungsblock 801 festgestellt wird, wird es bei einem Prozeßblock 802 aus der SCC 227 ausgelesen und in den geeigneten Platz in der E/A-Bildtabelle 241A eingeschrieben, wie in einem Prozeßblock 803 gezeigt. Sobald das letzte Byte vom gegenwärtigen E/A-Gestell empfangen worden ist, was von einem Entscheidungsblock 804 festgestellt wird, werden bei einem Entscheidungsblock 805 eine ME/A-Gestell-Abgetastet"-Flagge und das ID-Bit im E/A-Gestellstatuswort 705 gesetzt. In beiden Fällen werden bei einem Entscheidungsblock 806 die Register wieder hergestellt, und das System kehrt von der Unterbrechung zurück.
Der Mikrocomputer 210 wird somit derart betrieben, daß er das Eingabebild 241A mit den Eingabestatusdaten von den Fern-Ε/A-Gestellen 11 kontinuierlich aktualisiert. In ähnlicher Weise wird er betrieben, um Daten von der Ausgabebildtabelle 241B an die E/A-Gestelle 11 kontinuierlich auszugeben und auf diese Weise die Stelloder Betätigungsvorrichtungen, die von dem speicherprogramtnierbaren Steuergerät, gesteuert werden, auf einem gewünschton Stand zu halten.
Jetz-: wird insbesondere auf FIG. 4, 15 und 20 Bezug genommen» Wird ein Datenbyte entweder über den Serienkanal 5 ausgesendet oder empfangen, unterbricht die SCC 227 den Mikrocomputer 210 und dirigiert ihn zu einer Serienkanalunterbrechungsbedienungsroutine. Während der
BAD ORIGINAL
Ausführung dieser Routine werden die Register des Mikrocomputers gemäß einem Prozeßblock 825 aufbewahrt, und bei einem Entscheidungsblock 826 wird eine Entscheidung darüber getroffen, ob ein Zeichen empfangen 5 oder ausgesendet worden ist.
Ist ein Zeichen empfangen worden, erfolgt bei einem Block 827 eine Entscheidung darüber, ob das Zeichen die Bestimmungsstationsnummer oder ein anderes Datenbyte in der Nachricht ist. Handelt es sich um die Bestimmungsstationsnummer und entspricht diese der Stationsnummereinstellung an einem Satz von DIP-Schaltern 828, die mit einem Eingangskanal des Mikrocomputers 210 (PIG. 4) verbunden sind, wird bei einem Prozeßblock 829 eine "Nachrieht-Empfangen"-Flagge zurückgesetzt, und das System kehrt von der Unterbrechung zurück, nachdem die Register des Mikrocomputers bei einem Prozeßblock 830 wieder hergestellt worden sind. Wird die nachfolgende "Ursprungs"-Stationsnummer empfangen, zweigt die Becienungsroutine bei einem Entscheidungsblock 827 ab, und bei einem Entscheidungsblock 831 wird eine Überprüfung dahingehend durchgeführt, ob der Nachrichtenpuffer 242 im RAM 211 für diese Station zur Verfügung steht. Dies wird erreicht durch Überprüfen des flSA"-Bit in dem geeigneten Nachrichtenpuffersteuerbyte, und falls ein "Besetzt-Zustand festgestellt wird, wird eine Station-Besetzt-Nachricht zurückgesandt an die Ursprungsstation, vie bei einem Prozeßblock 832 gezeigt. Andernfalls, wenn nachfolgende Datenbytes in der Nachricht empfangen werden, werden sie von der SCC 227 zu dem verfügbaren Nachrichtenpuffer 242 transferiert, wie in einem Prozeßblock 833 angedeutet. Falls die Nachricht nicht vollständig empfangen worden ist, was von einem Entscheidungsblock 834 festgestellt wird, werden die Register bei 830 wieder hergestellt, und das System kehrt zurück, um auf den Empfang des nächsten Byte in der Nachricht zu warten.
BAD ORIGINAL
Ist die gesamte Nachricht empfangen worden, was ein Entscheidungsblock 834 feststellt, wird bei 835 eine Bestätigungsnachricht zurück zur Ursprungsstation übermittelt. Die »Nachricht-Vollständig"-, »Nachricht-Empfangen"- und "Bestätigung-Ausgesendet"-Flaggen werden alle bei einem Prozeßblock 836 gesetzt, und dann wird bei einem Entscheidungsblock 837 überprüft, ob dem speicherprogrammierbaren Steuergerät die Netzwerkherrschaftsberechtigung bewilligt worden ist. Trifft dies zu, wird die nBerechtigungs"- oder "BeIegungs»-Flagge ("token" flag) bei 838 gesetzt. Im übrigen kehrt das System von der Unterbrechung über den Prozeßblock 830 zurück.
Immer noch unter Bezugnahme auf FIG. 4, 15 und wird ausgeführt, daß nach dem Aussenden eines Zeichens durch den Serienkanal 5 die Serienkanalunterbrechungsbedienungsroutine bei einem Entscheidungsblock 826 zu einem Prozeßblock 840 abzweigt. Die in einem Prozeßblock 840 angedeuteten Anweisungen dirigieren den Mikrocomputer 210 derart, daß er das nächste Byte von dem gegenwärtig aktiven Nachrichtenpuffer 242 liest und es in die SCC 227 einschreibt, und zwar zum Aussenden über den Serienkanal 5. Bei einem Entscheidungsblock 841 wird überprüft, ob das letzte Byte in der Nachricht ausgesendet worden ist. Trifft dies zu, wird bei einem Prozeßblock 842 die "Nachricht-Vollständig»-Flagge gesetzt und die "Nachricht-Empfängen"- und "Bestätigung-Ausge sendet "-Flaggen werden zurückgesetzt. Das System kehrt dann von der Unterbrechung über den Prozeßblock 830 zurück.
Es wurde ein bevorzugtes Ausführungsbeispiel der Erfindung beschrieben. Im Rahmen der erfindungsgemäßen Lehre sind viele Abwandlungen und Modifikationen möglich. So sind beispielsweise viele alternative Maßnahmen
BAD ORIGINAL
bekannt, um die E/A-Bildtabelle mit Daten von den E/A-Gestellen zu aktualisieren und um mit dem Programmierungsgerät zu kommunizieren.
Start-Adresse
Anhang A Steuerteil-Adreßplatz
Adresse
Größe
Element
OOOOO
10000
E8000
F2000
OFFFF 17FFF EFFFF FBFFF
64K 32K 32K 40K ROM 23 Bit-Prozessor Gemeinsame Busse 101, RAM 35
Start-Adresse
Kommunikationsteil-Adreßplatz Größe Element
End-Adresse
0000
4000
8000
3FFF 5FFF FFFF
16K
8K
32K ROM 206 RAM 211 Gemeinsame Busse 101,
Start- End-
Adresse Adresse
8000 FFFF
BFOO 3F08
DFOO DF07
EFOO EF3F
FOOO F7FF
Orts-E/A-Teil-Adreßplatz Größe Element
32K Anforderungsbusse 101, 102 Eingabemultiplexer 131 Ausgabeverriegelung 130 E/A-Bausteine 4
2K Gemeinsamer RAM 125
Anhang B Komponenten
Bezugszeichen
Beschreibung
16-Bit-Mikroprozessor 20 Prioritätscodierer 48
Decodierschaltung 26 RAM 35
ROM 23
RAM 125
Bidirektionale Tore 104, 106, 216, 228, 136
Tore 120, 103, 121, 105, 215, 236, 410, 411, 412, 424
1-aus-i6-Decodierer 135 Eingabemultiplexer 131 Ausgabeverriegelung 130 Mikroprozessor 205 ROM 206
CTC 208
MC68008 Mikroprozessor, hergestellt von Motorola Inc.
8-Leitung-aus-3-Leitung-Prioritätscodierer SN74LS148 hergestellt von Texas Instruments
20L10 und 20 χ 4 programmierbare Anordnungslogik, hergestellt von Monolithic Memories Inc.
8K χ 8 Direktzugriffsspeicher, Serien-Nr. HM6264LP hergestellt von Hitachi
32K χ 8 UV löschbarer PROM, Serien-Nr. 27256, hergestellt von Intel
2K χ 8 Direktzugriffsspeicher, Serien-Nr. 6116, hergestellt von Hitachi
Bidirektionale Bus-Sendeempfänger, Serien-Nr. 74LS245 hergestellt von Texas Instruments
3-Zustands-Octalpuffer und Leitungstreiber,
Serien-Nr. 74LS244 hergestellt von Texas Instruments
Zwei 3-aus-8-Decodierer, Serien-Nr. 74LS13S, hergestellt von Texas Instruments
Zwei 8-Bit-Multiplexer, Serien-Nr. 74LS251, hergestellt von Texas Instruments
Adressierbares S-Bit-Latch, Serien-Nr. 74LS259, hergestellt von Texas Instruments
8-Bit-Mikroprozessor, Serien-Nr. Z84C0, hergestellt von Zilog Inc.
16K χ 8 UV löschbarer PROM, Serien-Nr. 27128, hergestellt von Intel
Zähler/Zeitgeber-Schaltung, Serien-Nr. Z8430, hergestellt von Zilog Inc.
BAD ORIGINAL
Adreßverriegelung
Mikrocomputer 210
SCC 227
Kontaktplanprοgrammzähl er 40
Echtzeitzähler 426
Verriegelungen 420, 422 und 450
Tore 458 und 459 Verriegelung 440 Tore 457
3-auf-8-Decodierer 442 und 456
1-auf-8-Selektor 2-auf-4-Decodierer Octales D-Typ Transparentlatch, SN74LS373, hergestellt von Texas Instruments
EinzelChipmikrocomputer, Serien-Nr. Z8611, hergestellt von Zilog Inc.
Serielle Eingabe/Ausgabe-Steuerung, Serien-Nr. Z8030, hergestellt von Ziolg
Vier 4-Bit-Synchronzähler, Serien-Nr. 74LS161
Drei BCD-Zähler, Serien-Nr. 74LS192 und zwei Binärzähler, Serien-Nr. 74LS193
Octales D-Typ Transparentlatch, Serien-Nr. 74LS373
Tore mit 3-Zustands-Ausgängen, Serien-Nr. 74LS125
Octales D-Typ Flipflop, Serien-Nr. 74LS273
Octale Puffer und Leitungstreiber, Serien-Nr. 74LS240
Decodierer/Demultiplexer, Serien-Nr. 74LS138
Daten-Selektor/Multiplexer, Serien-Nr. 74LS151
Decodierer/Demultiplexer, Serien-Nr. 74LS139
Anhang C Strukturplanprogramm
Das in diesem Anhang beschriebene Strukturplanprogramm ist ein Beispiel für ein Programm, das unter Verwendung des Programmierungsgeräts 6 in das speicherprogrammierbare Steuergerät eingegeben werden kann. Dieses Programm wird in Verbindung mit einem Prozeß beschrieben, der in FIG. 23 bildlich dargestellt ist. Eine derartige bildliche Darstellung des von dem speicherprogrammierbaren Steuergerät gesteuerten Prozesses ist typisch für Darstellungen, wie sie von hochauflösenden FarbdarStellungsanschlußgeräten wiedergegeben werden, die unter der Bezeichnung "Advisor" von der Allen-Bradley Company, Inc. vertrieben werden. Bei dem beispielhaften Prozeß wird eine Trockensubstanz verwogen, mit einer Flüssigkeit und Wasser vereint, gemischt und als resultierendes Produkt abgegeben. Der Mischer kann auch mit Wasser ausgewaschen werden.
Eine Funktionsplandarstellung dieses Prozesses ist in FIG. 24 dargestellt. Jeder Block in diesem Plan repräsentiert einen Zustand oder einen Schritt, und jeder Block hat einen entsprechenden Descriptor 506, der in der Strukturplandefinition 504 im RAM 35 gespeichert ist. Die resultierende Strukturplandefinition 504 ist in FIG. 25 dargestellt. Es sei bemerkt, daß der Descirptor Nr. 1 eine gleichzeitige Divergenz ist, die veranlaßt, daß die beiden Descriptoren Nr. 3 und Nr. gleichzeitig aktiv werden, wenn das als Datei Nr. 34
30 gespeicherte Kontaktplanprogramm vollendet ist.
Jede Strukturplandefinition zeigt mit ihrer Programmdateinummer ein Kontaktplanprogramm an, das ausgeführt werden soll, wenn der Descriptor auf der Aktivzustandsliste 505 (FIG. 12A) aufgelistet ist. Das folgende sind graphische Darstellungen dieser
BAD ORIGINAL
beispielshaften Kontaktplanprogramme, wie sie auf dem Bildschirm 8 des angeschlossenen Programmierungsgeräts 6 erscheinen. Diese Kontaktplanprogramme sind ähnlich denjenigen, die von zahlreichen handelsüblichen speicherprogrammierbaren Steuergeräten verwendet werden, allerdings bis auf einen wesentlichen Unterschied. Dieser Unterschied ist die "Struktur-Rückkehr"-Anweisung ("STRUCTURE RETURN" instruction), die erforderlich ist, um geeignete Parameter an die Strukturplaninterpretierroutine zu leiten. Die Struktur-Rückkehr ist eine "Ausgabe"-Anweisung dergestalt, daß sie lediglich ausgeführt wird, wenn der Sprossenzustand (rung condition) "wahr" ist, nachdem die vorangegangenen Anweisungen auf ihrer Sprosse (rung) ausgeführt sind. Der Operand der Struktur-Rückkehr-Anweisung identifiziert den Rückkehrwert, der von der Strukturplaninterpretierroutine verwendet wird und der diejenigen E/A-Gestelle identifiziert, die von der E/A-Abtastroutine abgetastet werden müssen, und zwar im Anschluß nach jeder Abtastung
20 durch das Kontaktplanprogramm (FIG. 10).
In den folgenden Kontaktplänen hat das Zeichen "ff " die Bedeutung von Nr.
3 S^tQ
Kontaktplanprogrammdatei Nr.
Funktion : START ■
I LS #1
I LS #2
AL #1 I
AL #2 I
-(L)- +
Test, ob einer der Rohsubstanztrichter leer ist
LS #3 -] C-AL #4
-(L)-
TS #1 -] C-AL #3
-(L)- +
I PB #3
I AL #1 +—3 C-I AL #2
I AL #3
I AL #4
I PB #1 ♦ —] [-
AL #1 AL #2 AL #3 AL #4 -(U) (U) (U) (U)-
STRUKTURRÜCKKEHR —
Rückkehrwert * #0 Abzutast. Gestelle 0,1
I PB #2
STRUKTURRÜCKKEHR
Rückkehrwert β #1 Abzutast. Gestelle 0,1
STRUKTURRÜCKKEHR —
Rückkehrwert ■ #2 Abzutast. Gestelle 0,1
(ENDE)
/Wenn Mischer {nicht leer ist
oder Temp.- J Schalter ge- ^ schlossen ist oder keine Rohsubstanzen vorhanden sind, starte nicht den Zyklus
Wähle Produktzyklus aus
+ Wähle Waschzyklus aus
Kontaktplanprogranimdatei Nr.
Funktion: WIEGE TROCKENSUBSTANZEN
I V #1 V(#l^|
V #1 I
+- GEQ + (U)-- +
wenn Gew. >* 5 I .. I
+- STRUKTURRÜCKKEHR —+
Rückkehrwert * #i I Abzutast.Gestelle 0,1 I
I (ENDE)—+
3ÖIÜ433
Kontaktplanprogrammdatei Nr. 65
Funktion : WASCHE MISCHER
1 TON #1 -+ Fülle Mischer
5.0 sec
T #1 Zeitgabe V #3
■ TON #2 -+ Weiche Mischer 15.0 sec I ein
I T #2 Zeitgabe V #4
+—] [ ( )—+ Führe Abwasser
I T #1 getan T #2 getan
«.-.] ] [-- STRUKTURRÜCKKEHR +
I Rückkehrwert = #1
I Abzutast. Gestelle 0,1
(ENDE)—
mit Wasser
Kontaktplanprogrammdatei Nr. 24
Funktion : GIB TROCKENSUBSTANZEN EIN ,
+ TON #3 - +
I 5.0 sec I
I I
I G #1 I
+ ( )—+ Gib Zugaben in
I I Wiegevorrich-
I T #3 Zeitgebe I tung
+--]/[ STRUKTURRÜCKKEHR +
I Rückkehrwert = #1 I
I Abzutast. Gestelle o,l I
■(ENDE) —
Kontaktplanprogrammdatei Nr. 39
; Funktion : FÜHRE FLÜSSIGKEIT ZU
+ TON #4 -+ Gib Flüssig
I 8.0 sec I keit hinzu
I I
I T #4 Zeitgebe V #3 ! +..] [ ( )—+
I I
I T #4 getan I
+__] [ STRUKTURRÜCKKEHR +
I Rückkehrwert = #1 |
I Abzutast. Gestelle 0,1 |
I I
+ (ENDE)—+
Kontaktplanprogrammdatei Nr. 7 Funktion : MISCHE PRODUKT
TON #5 -+ Mischer läuft
45.0 see
T #5 Zeitgabe TS #1 MS #1
TS #1 MS #1 AL #3 +__] [ + (υ) (L)-
+— STRUKTURRÜCKKEHR —+
Rückkehrwert* #o Abzutast. Gestelle 0,1
T #5 getan MS #1 ..] [ + (υ) +
+-- STRUKTURRÜCKKEHR
Rückkehrwert= #1 Abzutast. Gestelle 0,1
(ENDE)—
für 45 see
Kontaktplanprogrammdatei Nr. 12 Funktion : ENTLEERE MISCHER
LS #3
V #4
LS #3
STRUKTURRÜCKKEHR
Rückkehrwert « #1 Abzutast. Gestelle 0,1
(ENDE)--
Anhang D
Strukturplaninterpreter
bc\r «turnoHfSC^flags
bne poweruostart
bclr «1oadtorun,SC-flags
bne co 1dst art
bra What^to^o
poweruDStart t
btst •SC.stertover,SC-ST
bne poweruPconti nue
coldstart s
movea.l «SC.state.Hst, aO
moveq,1 •15,dO
* Wurde Energie gerade hochgefahren? τ^ » Ja, springe £?
* Ändert sich Betriebsart von Laden auf Laufen? ϊ Ja, springe
ϊ Ja, springe γ»
; Lösche Zustandsliste t (-1 für dbf)
Joopa: cir.w CaOJt
dbf dO,1oopa
move,w *SC.f i rst ,PC-state-.Hst ; Setze erste Pass-Flagge und Descriptor Nr. O bclr «dosinofuncfSC.flags ? Ist dies ein Einzelfünktion-GPL-Aufruf? beg powerue.continue ϊ Nein, springe S i ngfunc i
move.w SC-s1ng,SC-state-Jist t Gib Funktionsdescriptomummer auf Liste Pοwerupconti nue!
move.l «SC.state.list,SC-running-state > Setze Aktivzeiger auf ersten Eingang move·1 Sc.running^stateial ; Bekomme Lauf-Zustand clr.w SC-RET-VAL < »Lösche Rückkehrwert
bra continue.on2
what-to-doS SC-runningstat er al »
move.1 «SC.fi rstjbit,(al) ;
bcir SC-RET-VAL 1
tst.w cont i nueon j
beg (al),Ol
9
move,w #SCHeSC-msk tdt 1
and.w *SCdone»(el) »
ori.w *l,dO J
move.w UP-AODP-OP
*
bsr #0,a0 *
ernpa,1 a.ddrerror »
beg (aO),dO »
Htove.w *SCDnum_fo1 1ow»dO
and. w #S»d 0
rol .w
;one o οίο,,οπβ
be«3 not hi ngt odo move,w (aO),dl and,w «SCD-path-type#dl beg doeiel ι CWDj(W *SCOdoone»dI i s.they.done
η seiect i on
bsr remove«, entry
CmP,w SC-RET-V^LtdO
bge VaI-Ok
move,w dO, SCRET-VAL
move.w SC-RET-VAL»d3
wi move.w O(eO) Crf31 » (al ) move,w O(aO)td31»(al) .bvt* fix
ori.w #SC.first,(al) bra continue«„on
al = Zeiger
Lösche erste Abtastflagge in Liste Ist diese Funktion vollständig?
Nein, springe
d1 = Descriptornummer (Funktionsnummer) Bewahre Descriptionsnummer Setze Getan-Bit
dO = Descriptordateinummer aO = Adresse dieses Descriptors
überprüfe Rückkehr einer gültigen Adresse Wenn Adresse nicht gültig, springe Bekomme erstes Wort vom Descriptor
idO ο Nummer folgender Zustände ;Ist nnn gültig d.h. nicht Null iNein, springe
yBekomme erstes Wort vom Descriptor
:d1 = Typ vom "Pfad" (tt) JIn-Line-Aufeinanderfolge? Ja, springe »Eine von η Selektionen?
τ Nein, springe
»Eine von η Selektionen, entferne diese Funktion τ Gibt es genug nnns
yJa, springe
«Mache Rückkehrwert zum Auswählen der letzten Funktion id3 = scr Rückkehrwert ;Verdopple für Wortindex jLade nächste Funktion an Ende von Liste
jSetze erste Pass-Flagge »Fahre fort
CO Ca)
1 simultannous diverge» or in-line sequence» or one of n converge
tst.w
ble
adda.1
re»ove_ent ry
dO
cont i nue.on
*2#eO ; Entferne diese Funktion t Sind da irgendwelche nnns?
J Nein, springe ι aO a Erste folgende Funktionsnummer
loopdx emea.l SC.stateM1 i st+32»al bit no.space
move.w (aO) + »(al)
subq.w *l»dO
bgt ιooüd
bra continue_on
!simultaneous converae iS-theydonet
moveft.l *SC.state«Hstr
clr.l dO
subq.w #l»dO
move.l SC.runningstftte»-I
adda.1 #2»aO
oopf: addo.w fl»df
CrnD . w (11 φ Ov
bit clear.em
wove.w «I5»d5
wove.w CaO)+fd6 O r i , w
Ist genug Platz für nnns?
Nein, springe Kopiere Descriptornummern auf Listeneingänge Setze Flaggen Sind noch irgendwelche nnn's zu bewegen?
Ja, springe Fahre fort
a4 β Adresse von Liste
d4 = Zähler nnn-1 zum Überprüfen ob getan Bewahre Adresse dieses Eingangs aO =s Adresse von erster folgender Funktion
Noch irgendetwas zu überprüfen? Nein, springe ... wir sind am Ende der nnn's und Die letzte Funktion sollte starten Lade Zahl mit Nummer von Eingängen in Liste Bekomme nnn-ten folgenden Zustand in d6 j Setze Getan- und GUltigkeits-Bit
(J"
\oop*:
1 oopi
dbeg
move
cmpi
bne
move.1
dbf
move
bpa
clearem;
loop):
1oopg:
not_r
skip:
uot irove.1 cir.w dbf
wove·1 bsr move·w
OPJ1W
move.1 move.l cmpa.1
(.1 move«w beg
move.w c 1 P .w cmpa.1 bie
d5»1oope a4,-(a7) #-l,d5 1 oopf <a7)+,al d4,loopi Ca7)*,al centinue.on
*2#dfl
(a7)+,al
-2fal)
OU0 1oopj
Ca7)*,al
remove^ent ry
(aO),(al)
«SC.fi rst,(al)
*SC_state.J *st#al
al $ a^
-running_91 ate r a
tT
s3>SC_runni ng_st et e (al)+»dO ski ρ dO, (β3) +
1 οορα : Suche Liste für diesen Eingang gerade getan
; Bleibe in Schleife, wenn nicht gefunden oder nicht am
: Bewahre Adresse dieses Eingangs Listenende
y Wenn gefunden
t Springe, versuche zu finden neues nnn in Liste
: Eingang nicht gefunden, lösche bewahrte Liste
7 Springe, wenn noch nicht gelöscht
7 Eingang nicht gefunden, lösche bewahrte Liste
ι Springe
movea.l SC-punning_st at er al
bra
continue«. on2 ι Korrigiere d4, -1 für dbf, -1 für ersten Eingang
i Rufe bewahrte Dinge zum Löschen
? Eingang zum Löschen ist vorhergehend
; Springe, wenn mehr zu löschen
Bekomme diesen Listeneingang
Entferne diese Funktion
Plaziere letzte Funktionsnummer auf Liste
Setze erste Anwender-Pass-Flagge
Starte auf Oberseite von Liste (al Quelladresse)
(a3 ist Bestimmungsadresse)
Ist dies das gerade laufende?
Nein, springe
Korrigiere Lauf-Zustand
Überprüfe Eingang
Wenn Null, kopiere nicht, springe
Kopiere
Lösche alte Stelle
Am Ende?
; Nein, springe zurück
$ Springe
movea.l SC_runningstater al
adda.l #2,al cont < nueon25
cmpa.l «SC.state.J i
bgt start_at_top
tst.w (al)
bn# foundnext
wovea.1 jSC.state.Jistfal
tst.w fat)
hen not hlngtodo
found_nextϊ
move.1 alfSCrunni ng.st ate
btst «Sr.fi rst.bi11 (al)
beg no set1st
bset *ScLpl_f1 ag,SC-STATUS
bra c\ T-PCf-VaI
no-.set-.l8t:
be Ip «SC.pl.fl ag,SC-STATUS
elr Pet_va1:
ClP.w SC-RET-VAL
ϊ Bekomme Adresse von laufendem Listeneingang
ι Inkrementiere auf nächsten Listeneingang
τ Ist Zeiger über Listenende hinaus?
» Ja, springe
τ Gibt es einen Eingang hier?
j Ja, springe
? Starte erneut auf Oberseite von Liste
ϊ Gibt es einen Eingang hier?
tNein, springe
τ Bewahre Adresse von nächstem laufendem Eingang
;Ist erstes Anwender-Pass-Bit gesetzt?
»Nein, springe
* Setze erstes Pass-Bit im Statusteil von d
:Springe
ϊSetze zurück erstes Pass-Bit im Statusteil
;ßetze zurück scr Rückkehrvrert
jewtputs:
j al.l = addfees in list of en« to remove
joutput:
1 al.l s address of next open spot
remv ϊ
bne subq,I rts remove., done:
clf.w
PtS
cmre.1 *SC„Punning_»tate»al
bne rei«v
subc|«l #2 » SC-Pu^n ΐ n<j.,.s t at β
C"ipa .
bge
remove,entry
(at j Ist dies der laufende Zustand?
Nein, springe
Zeige laufenden Zustand bei vorhergehendem Eingang
Sind wir am Listenende?
Ja, springe
Bewege nächste Stelle in diese Stelle co
War die nächste Stelle gelöscht? Nein, springe cn
Korrigiere Adresse -.-*
Getan ο
Lösche es aus
Getan

Claims (11)

PcrkstraSe ]3 Jb IU4JJ ^^ 6CG0 Frankfurt a. M. 1 ■* ALLEN-BRADLEY COMPANY. INC.. Milwaukee, Wisconsin, VStA £ Patentansprüche
1. Speicherprogrammierbares Steuergerät zum Betreiben einer Maschine zwecks Ausübung einer Vielzahl programmierter Funktionen, enthaltend:
einen Speicher zur Speicherung eines ein Kontaktplanprogramm enthaltenden Anwendersteuerprogramms und \
eine mit dem Speicher verbundene Prozessoreinrichtung, die zur Ausführung des Anwendersteuerprogramms und damit zur Ausübung der Funktionen betreibbar ist, * dadurch gekennzeichnet, '■*,·
daß das Anwendersteuerprogramm eine Vielzahl von χ Kontaktplanprogrammen aufweist, von denen jedes das programmierbare Steuergerät derart leitet, daß die betriebene Maschine eine spezielle Funktion vornimmt, t-, und zusätzlich zu der Vielzahl von Kontaktplanprogrammen ein Strukturplanprogramm im Speicher gespeichert ist, das die Sequenz bestimmt, in der die Speicherprogramme zur Steuerung einer mit dem programmierbaren Steuergerät verbundenen Maschine auszuführen sind, und daß die Prozessoreinrichtung enthält:
eine mit dem Speicher gekoppelte Einrichtung zum Interpretieren des Strukturplanprogramms zwecks Erstellung einer gespeicherten Aktivzustandsliste, welche diejenigen Kontaktplanprogramme anzeigt, die auszuführen sind, und
eine mit der gespeicherten Aktivzustandsliste und dem Speicher gekoppelte Einrichtung zum Ausführen der angezeigten Kontaktplanprogramme zwecks Vornahme der diesen Kontaktplanprogrammen zugeordneten speziellen Funktionen.
2. Steuergerät nach Anspruch 1, dadurch gekennzeichnet,
daß die Einrichtung zum Interpretieren des Strukturplanprogramms, nachdem die Einrichtung zur Ausführung der angezeigten Kontaktplanprogramme ein Kontaktplanprogramm ausgeführt hat, betreibbar ist, um zu ermitteln, ob das ausgeführte Kontaktplanprogramm von der gespeicherten Aktivzustandsliste entfernt werden soll und ob andere Kontaktplanprogramme der gespeicherten Aktivzustandsliste hinzugefügt werden sollen.
3. Steuergerät nach Anspruch 2, dadurch gekennzeichnet,
daß das gespeicherte Strukturplanprogramm eine Vielzahl von Strukturplandefinitionen aufweist und jede Strukturplandefinition eine Programmdateinummer enthält, die ein der Strukturplandefinition zugeordnetes Kontaktplanprogramm identifiziert, sowie eine Zielnummer enthält, die ein Kontaktplanprogramm identifiziert, welches auf die gespeicherte Aktivzustandsliste gelegt werden soll, wenn das zugeordnete Kontaktplanprogramm von der gespeicherten Aktivzustandsliste entfernt wird.
25
4. Steuergerät nach Anspruch 3»
dadurch gekennzeichnet, daß jede Strukturplandefinition eine Vielzahl von Zielnummern enthält, die eine entsprechende Vielzahl von Kontaktplanprogrammen identifizieren, und jede Strukturplandefinition einen Code enthält, der von der Einrichtung zum Interpretieren des Strukturplanprogramms benutzt wird, um aus der Vielzahl der Zielnummern eine Zielnummer auszuwählen, wenn das zugeordnete Kontaktplanprogramm von der gespeicherten Aktivzu-
35 Standsliste entfernt werden soll.
5. Verfahren in einem speicherprogrammierbaren Steuergerät mit einem Speicher zur Speicherung eines Anwendersteuerprogramms und mit einem Prozessor zur Ausführung des Anwendersteuerprogramms zwecks Leitung und Führung des Betriebs einer mit dem Steuergerät verbundenen Maschine durch eine Sequenz von Zuständen, gekennzeichnet durch:
Speicherung eines Strukturplanprogramms, das die Sequenz von Zuständen definiert, Speicherung einer Vielzahl von Kontaktplanprogrammen, von denen jedes einen Satz von Kontaktplanprogrammanweisungen enthält, die die Funktionen angeben, welche die Maschine ausführen soll, und von denen jedes einen Satz von Kontaktplanprogrammanweisungen enthält, die angeben, wenn die Maschine zu einem anderen ihrer Zustände wechseln soll, und
Verarbeitung des gespeicherten Strukturplanprogramms mit den folgenden Schritten:
(a) Auswahl eines gespeicherten Kontaktplanprogramms, das dem laufenden oder gegenwärtigen Zustand
der Maschine zugeordnet ist,
(b) Verarbeitung des ausgewählten Kontaktplanprogramms zum Betreiben, Betätigen bzw. Bedienen der Maschine,
(c) Abwählen des ausgewählten Kontaktplanprogramms, wenn während seiner Verarbeitung ein Wechsel oder eine Änderung des Zustands angezeigt wird, und (d) Wiederholung der Schritte (a), (b) und (c).
30
6. Verfahren nach Anspruch 5,
dadui^ch gekennzeichnet, daß die Verarbeitung des ausgewählten Kontaktplanprogramms die wiederholte Ausführung des ausgewählten Kontaktplanprogramms umfaßt, bis ein Zustandswechsel angezeigt wird und das Kontaktplanprogramm abgewählt wird.
^
7. Verfahren nach Anspruch 5 oder 6,
dadurch gekennzeichnet, daß die Verarbeitung des gespeicherten Strukturplans ferner umfaßt:
Speicherung einer Aktivzustandsliste, die den laufenden oder gegenwärtigen Zustand der Maschine anzeigt und die Indikatoren speichert, welche diejenigen gespeicherten Kontaktplanprogramme identifiziert, die dem gegenwärtigen Zustand der Maschine zugeordnet sind, und
Änderung der Aktivzustandsliste, wenn während der Verarbeitung eines ausgewählten Kontaktplanprogramms ein Zustandswechsel angezeigt wird,
* wobei das zu verarbeitende Kontaktplanprogramm aus
^ 15 denjenigen ausgewählt wird, die von der Aktivzustandsliste angezeigt werden, und dieses Programm dadurch abgewählt wird, daß sein Indikator aus der Aktivzustandsliste entfernt wird.
20
8. Verfahren nach Anspruch 7,
dadurch gekennzeichnet, daß eine Strukturplandefinition für jedes Kontaktplanprogramm gespeichert wird und jede Strukturplandefinition eine Dateinummer speichert, die das Kontaktplanprogramm identifiziert, welches ihr zugeordnet ist, > sowie eine Zielnummer speichert, die ein anderes Kon
taktplanprogramm angibt, das der Aktivzustandsliste hinzuzufügen ist, wenn das zugeordnete Kontaktplanprogramm abgewählt wird.
9. Speicherprogrammierbares Steuergerät, gekennzeichnet durch:
einen Speicher zur Speicherung einer Vielzahl von Kontaktplanprogrammanweisungen, die ein Kontaktplanprogramm enthalten, wobei jede der Kontaktplanprogrammanweisungen einen Operationscode aufweist,
einen mit dem Speicher über einen Adreßbus und einen Datenbus verbundenen Mikroprozessor, der zur Ausführung eines Kontaktplanprogramminterpretierprogramms betreibbar ist, das in dem Speicher gespeichert ist und den Mikroprozessor leitet und führt, um solche Kontaktplanprogrammanweisungen auszuführen, die Operationscodes in einem ersten Operationscodesatz haben, und um ein Transfersignal zu erzeugen, und
einen mit dem Mikroprozessor und dem Speicher über den Adreßbus und den Datenbus verbundenen Bit-Prozessor, der ansprechend auf die Erzeugung des Transfersignals betreibbar ist, um ein Sperrsignal bereitzustellen, das dem Mikroprozessor zugeführt wird und die Ausführung des Kontaktplanprogramminterpretierprogramms durch den Mikroprozessor anhält, welcher Bit-Prozessor enthält:
eine Einrichtung zum Abrufen von Kontaktplanprogrammanweisungen von dem Speicher,
eine Einrichtung zur Ausführung der abgerufenen Kontaktplanprogrammanweisungen, die Operationscodes in einem zweiten Operationscodesatz haben, und
eine Einrichtung, die ansprechend auf eine abgerufene Kontaktplanprogrammanweisung, die einen Operationscode in dem ersten Operationscodesatz aufweist, die Bereitstellung des Sperrsignals beendet und es auf diese Weise dem Mikroprozessor ermöglicht, mit der Ausführung des Kontaktplanprogramminterpretierprogramms fortzufahren.
ί
^
10. Steuergerät nach Anspruch 9, dadurch gekennzeichnet daß der Bit-Prozessor und der Mikroprozessor einen Kontaktplanprogrammzähler enthalten, der mit dem Datenbus und dem Adreßbus verbunden ist, und der Mikroprozessor ansprechend auf die Ausführung des Kontaktplanprogramminterpretierprogramms betreibbar ist, um den Inhalt seines Kontaktplanprogrammzählers zu dem Kontaktplanprogrammzähler des Bit-Prozessors vor der Erzeugung des Transfersignals zu übertragen, und daß der Mikroprozessor ansprechend auf die Ausführung des Kontaktplanprogramminterpretierprogramms im Anschluß an die Beendigung der Erzeugung des Sperrsignals betreibbar ist, um den Inhalt des Kontaktplanprogramm-Zählers des Bit-Prozessors zum Kontaktplanprogrammzähler des Mikroprozessors zu transferieren.
11. Steuergerät nach Anspruch 9 oder 10, dadurch gekennzeichnet, daß der Datenbus eine Vielzahl von Leitungen oder Adern aufweist und die Operationscodes in dem zweiten Operationscodesatz die Ausführung von einzelbitorientierten Operationen leiten und führen, und daß der Bit-Prozessor *, enthält:
κ 25 eine Bitauswahleinrichtung, die mit dem Datenbus verbunden ist und ansprechend auf einen Bitzeigercode in dem abgerufenen Kontaktplanprogrammanweisungsoperationscode betreibbar ist, um eine der Leitungen oder Adern im Datenbus auszuwählen, und einen booleschen Prozessor, der mit der Bitauswahleinrichtung verbunden ist und ansprechend auf den Operationscode in der abgerufenen Kontaktplanprogrammanweisung betreibbar ist, um unter Verwendung des Logiksignals an der ausgewählten Leitung oder Ader im Datenbus eine Logikoperation auszuführen oder an der ausgewählten Datenbusleitung oder Datenbusader ein Logikausgangssignal zu erzeugen.
DE3610433A 1985-03-28 1986-03-27 Verfahren zum Steuern einer Maschine mit einer speicherprogrammierbaren Steuerung mit Funktionsplaninterpreter Expired - Lifetime DE3610433C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/717,221 US4742443A (en) 1985-03-28 1985-03-28 Programmable controller with function chart interpreter

Publications (2)

Publication Number Publication Date
DE3610433A1 true DE3610433A1 (de) 1986-10-02
DE3610433C2 DE3610433C2 (de) 2002-06-20

Family

ID=24881185

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3610433A Expired - Lifetime DE3610433C2 (de) 1985-03-28 1986-03-27 Verfahren zum Steuern einer Maschine mit einer speicherprogrammierbaren Steuerung mit Funktionsplaninterpreter

Country Status (4)

Country Link
US (1) US4742443A (de)
CA (1) CA1242031A (de)
DE (1) DE3610433C2 (de)
GB (1) GB2177826B (de)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0304880A2 (de) * 1987-08-26 1989-03-01 Allen-Bradley Company, Inc. Programmierbare Steuerung mit parallelen Prozessoren
EP0311007A2 (de) * 1987-10-07 1989-04-12 Allen-Bradley Company, Inc. Speicherprogammierbare Steuerung mit mehreren Taskprozessoren
EP0331060A2 (de) * 1988-02-29 1989-09-06 Allen-Bradley Company, Inc. Speicherprogrammierbare Steuerung mit gespeichertem markierten Quellencode
FR2646254A1 (fr) * 1989-04-24 1990-10-26 Yokogawa Electric Corp Dispositif de commande programmable
EP0496097A2 (de) * 1990-12-26 1992-07-29 Allen-Bradley Company, Inc. Programmierbarer Steuerungsprozessor für gleichzeitig auszuführende Mehrfachbenutzersteuerungsprogramme

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941081A (en) * 1985-06-03 1990-07-10 Microfast Controls Corp. Interrupt zone in rung of ladder program in programmable controller
US5157595A (en) * 1985-07-19 1992-10-20 El Paso Technologies, Company Distributed logic control system and method
US5239628A (en) * 1985-11-13 1993-08-24 Sony Corporation System for asynchronously generating data block processing start signal upon the occurrence of processing end signal block start signal
CA1283738C (en) * 1985-11-13 1991-04-30 Atsushi Hasebe Data processor
US4839803A (en) * 1986-09-05 1989-06-13 Hitachi, Ltd. Planning support method and system
US4972365A (en) * 1987-05-01 1990-11-20 Allen-Bradley Company, Inc. Executing downloaded user programs in a programmable controller
US5072356A (en) * 1988-04-11 1991-12-10 Square D Company Ladder drum sequence controller
US5023770A (en) * 1988-04-11 1991-06-11 Square D Company High-speed press control system
JPH083731B2 (ja) * 1988-10-18 1996-01-17 株式会社日立製作所 プログラマブルコントローラ
US5068778A (en) * 1988-11-28 1991-11-26 Reliance Electric Industrial Company Industrial control system device
US5042002A (en) * 1989-03-31 1991-08-20 Allen-Bradley Company, Inc. Programmable controller with a directed sequencer
US5319783A (en) * 1989-03-31 1994-06-07 Allen-Bradley Company Inc. Programmable controller with an operator messaging function
US5005152A (en) * 1989-04-05 1991-04-02 Allen-Bradley Company Industrial controller with decompilable user program
EP0435215A1 (de) * 1989-12-25 1991-07-03 Mazda Motor Corporation Methode zur Simulation eines Programmes zur Folgesteuerung
US5581759A (en) * 1990-04-02 1996-12-03 Hitachi, Ltd. Apparatus and method for controlling a system process
JP2530380B2 (ja) * 1990-04-02 1996-09-04 株式会社日立製作所 プロセス制御方法及び制御用コントロ―ラ
US5168441A (en) * 1990-05-30 1992-12-01 Allen-Bradley Company, Inc. Methods for set up and programming of machine and process controllers
US5212631A (en) * 1990-08-31 1993-05-18 Allen-Bradley Company, Inc. Programmable controller processor module having multiple program instruction execution sections
CA2048944A1 (en) * 1990-08-31 1992-03-01 Otomar S. Schmidt Processor for a programmable controller
US5265005A (en) * 1990-08-31 1993-11-23 Allen-Bradley Company, Inc. Processor for a programmable controller
US5162986A (en) * 1990-10-19 1992-11-10 Allen-Bradley Company, Inc. Remote downloading and uploading of motion control program information to and from a motion control I/O module in a programmable controller
US5265004A (en) * 1991-10-15 1993-11-23 Allen-Bradley Company, Inc. Sequence controller with combinatorial Boolean logic
US5392424A (en) * 1992-06-11 1995-02-21 Allen-Bradley Company, Inc. Apparatus for detecting parity errors among asynchronous digital signals
KR950009687B1 (ko) * 1992-06-30 1995-08-26 삼성항공산업주식회사 프로그램어블 로직 콘트롤러용 고속 래더명령 처리장치
GB2268816B (en) * 1992-07-14 1996-01-17 Sony Broadcast & Communication Controlling equipment
US5473531A (en) * 1993-12-28 1995-12-05 At&T Corp. Finite state machine with minimized memory requirements
US5485620A (en) * 1994-02-25 1996-01-16 Automation System And Products, Inc. Integrated control system for industrial automation applications
US5619658A (en) * 1995-05-15 1997-04-08 Nvidia Corporation Method and apparatus for trapping unimplemented operations in input/output devices
US5896289A (en) * 1996-09-05 1999-04-20 Allen-Bradley Company, Llc Output weighted partitioning method for a control program in a highly distributed control system
US5796603A (en) * 1996-10-17 1998-08-18 Allen Bradley Company, Inc. Partitioning program for highly distributed control system to reduce network traffic
US5893105A (en) * 1996-11-12 1999-04-06 Micrografx, Inc. Executable flowchart
US6055632A (en) * 1997-09-25 2000-04-25 Allen-Bradley Company, Llc Method and apparatus for transferring firmware to a non-volatile memory of a programmable controller system
DE19983975B3 (de) * 1999-08-30 2006-05-18 Mitsubishi Denki K.K. Programmierbares Steuersystem und Rücksetz-Steuerverfahren für das programmierbare Steuersystem
US6640163B1 (en) * 2002-09-30 2003-10-28 Husco International, Inc. Operating system for a programmable controller of a hydraulic system
JP4766252B2 (ja) * 2006-04-28 2011-09-07 オムロン株式会社 プログラマブルコントローラおよび通信ユニット
JP6139386B2 (ja) 2013-11-27 2017-05-31 株式会社東芝 プログラマブルコントローラ
JP6517474B2 (ja) * 2014-05-12 2019-05-22 株式会社東芝 プログラマブルコントローラ、及び演算処理システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810104A (en) * 1972-07-31 1974-05-07 Allen Bradley Co Programmable magnetics for a numerical control system
US4162536A (en) * 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4038533A (en) * 1976-09-29 1977-07-26 Allen-Bradley Company Industrial control processor system
US4149235A (en) * 1976-12-27 1979-04-10 Mcdonnell Douglas Corporation Computer numerical control system for machine tool
CA1103364A (en) * 1977-04-25 1981-06-16 Raymond A. Grudowski Programmable controller with integral microprocessor
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0304880A2 (de) * 1987-08-26 1989-03-01 Allen-Bradley Company, Inc. Programmierbare Steuerung mit parallelen Prozessoren
EP0304880A3 (de) * 1987-08-26 1992-09-23 Allen-Bradley Company, Inc. Programmierbare Steuerung mit parallelen Prozessoren
EP0311007A2 (de) * 1987-10-07 1989-04-12 Allen-Bradley Company, Inc. Speicherprogammierbare Steuerung mit mehreren Taskprozessoren
EP0311007A3 (en) * 1987-10-07 1989-08-02 Allen-Bradley Company, Inc. Programmable controller with multiple task processors
EP0331060A2 (de) * 1988-02-29 1989-09-06 Allen-Bradley Company, Inc. Speicherprogrammierbare Steuerung mit gespeichertem markierten Quellencode
EP0331060A3 (en) * 1988-02-29 1990-09-12 Allen-Bradley Company Programmable controller with stored tokenized source code
FR2646254A1 (fr) * 1989-04-24 1990-10-26 Yokogawa Electric Corp Dispositif de commande programmable
EP0496097A2 (de) * 1990-12-26 1992-07-29 Allen-Bradley Company, Inc. Programmierbarer Steuerungsprozessor für gleichzeitig auszuführende Mehrfachbenutzersteuerungsprogramme
EP0496097A3 (en) * 1990-12-26 1992-09-23 Allen-Bradley Company, Inc. Programmable controller processor for concurrently executing multiple user control programs

Also Published As

Publication number Publication date
CA1242031A (en) 1988-09-13
GB2177826A (en) 1987-01-28
DE3610433C2 (de) 2002-06-20
GB2177826B (en) 1989-08-02
GB8606328D0 (en) 1986-04-23
US4742443A (en) 1988-05-03

Similar Documents

Publication Publication Date Title
DE3610433A1 (de) Speicherprogrammierbares steuergeraet mit funktionsplaninterpreter
DE2718051C3 (de) Datenverarbeitungsanlage mit Einrichtungen zur wechselnden Bearbeitung mehrerer Aufgaben
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE2306115C2 (de) Datenprozessor mit Mikroprogrammspeicherüberlagerung
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE2209282C3 (de) Datenverarbeitungsanlage
DE2411963B2 (de) Datenverarbeitungsanlage
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE3638572C2 (de)
DE69839194T2 (de) Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE2801563C2 (de)
DE2054068A1 (de) Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme
DE2714805A1 (de) Datenverarbeitungssystem
DE2521289A1 (de) Datenfeldprozessor
DE1274825B (de) Speicherprogrammiertes Datenverarbeitungssystem zur Verarbeitung von Programmen anderer Datenverarbeitungssysteme
DE2517276A1 (de) Datenverarbeitungssystem
DE2756762A1 (de) Verfahren und anordnung zum zugriff zu beliebigen bitfeldern im hauptspeicher einer datenverarbeitungsanlage
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE2019444A1 (de) Datenverarbeitungsanlage
DE2713253A1 (de) Programmlader fuer ein steuergeraet
DE2054835A1 (de) Prozessor fur ein Informationsver arbeitungssystem und ein Betriebsver fahren fur diesen Prozessor
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE4207158A1 (de) Speicher-zugriffssteuerung
DE60027357T2 (de) Eine Unterbrechungssteuerung und ein Mikrorechner, der diese Unterbrechungssteuerung beinhaltet

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8128 New person/name/address of the agent

Representative=s name: HOLTZ MARTIN LIPPERT, 60322 FRANKFURT

D2 Grant after examination
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: JUNG HML, 80799 MUENCHEN