DE3854594T2 - Programmierbare Steuerung mit parallelen Prozessoren. - Google Patents
Programmierbare Steuerung mit parallelen Prozessoren.Info
- Publication number
- DE3854594T2 DE3854594T2 DE3854594T DE3854594T DE3854594T2 DE 3854594 T2 DE3854594 T2 DE 3854594T2 DE 3854594 T DE3854594 T DE 3854594T DE 3854594 T DE3854594 T DE 3854594T DE 3854594 T2 DE3854594 T2 DE 3854594T2
- Authority
- DE
- Germany
- Prior art keywords
- module
- program
- execution
- data
- processor
- 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.)
- Expired - Lifetime
Links
- 230000006870 function Effects 0.000 claims description 116
- 230000015654 memory Effects 0.000 claims description 98
- 230000007704 transition Effects 0.000 claims description 66
- 230000004044 response Effects 0.000 claims description 12
- 230000000737 periodic effect Effects 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 239000004020 conductor Substances 0.000 claims 1
- 230000006854 communication Effects 0.000 description 53
- 238000004891 communication Methods 0.000 description 51
- 238000012546 transfer Methods 0.000 description 46
- 238000012545 processing Methods 0.000 description 41
- 238000000034 method Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 12
- 230000002457 bidirectional effect Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 101100524347 Xenopus laevis req-b gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/052—Linking several PLC's
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Description
- Die Erfindung findet Anwendung auf dem Gebiet der speicherprogrammierbaren Steuerungen, wie sie beispielsweise beschrieben sind in den US-Patentnummern 3 810 118, 3 942 158, 4 165 534 und 4 442 504.
- Speicherprogrammierbare Steuerungen sind typischerweise mit industriellen Anlagen verbunden, wie beispielsweise Fertigungsstraßen und Werkzeugmaschinen, und sie haben die Aufgabe, solche Anlagen oder Einrichtungen gemäß einem gespeicherten Programm sequentiell zu betreiben. Bei programmierbaren Steuerungen, wie sie beispielsweise in den oben angegebenen Patentschriften offenbart sind, ist das Steuerprogramm in einem Speicher abgelegt und, es enthält Anweisungen, die in schneller Folge aus gelesen und ausgeführt werden, um den Zustand ausgewählter Fühleinrichtungen oder Sensoren an der gesteuerten Anlage zu überprüfen oder ausgewählte Betätigungsvorrichtungen oder Aktoren an der gesteuerten Anlage in Abhängigkeit vom Zustand eines oder mehrerer der überprüften Sensoren ein- oder abzuschalten.
- Der Prozessor für solche Steuerungen ist derart ausgelegt, daß er für programmierbare Steuerungen typische Anweisungen, im folgenden kurz steuerungstypische Anweisungen genannt, sehr schnell ausführen kann. Bei speicherprogrammierbaren Steuerungen mittleren bis größeren Ausmaßes enthalten diese Anweisungen nicht nur solche, die die Handhabung von Einzelbiteingabe- und Einzelbitausgabedaten betreffen, sondern auch arithmetische Anweisungen, Dateihandhabungsanweisungen, Zeitgeber und Zähler betreffende Anweisungen, Sequenzer oder Abläufe betreffende Anweisungen und andere komplexere Anweisungen. Solche Anweisungen sind in der Industrie im wesentlichen genormt, und sie können direkt den Elementen eines sogenannten "Leiterdiagramms" (ladder diagram) oder Kontaktplanes zugeordnet werden, der von Steuerungs- und Regelungsingenieuren leicht verstanden wird. Programmiergeräte, wie sie beispielsweise in den US-Patentschriften Nr. 3 798 612 und 3 813 649 sowie 4 070 702 offenbart sind, dienen zur Unterstützung des Anwenders bei der Entwicklung und Editierung kontaktplanartiger Steuerprogramme, die aus solchen steuerungstypischen Anweisungen bestehen.
- Damit die programmierbare Steuerung sehr schnell auf Änderungen im Zustand von Sensoren am gesteuerten System ansprechen kann, ist es unabdingbar, daß die Steuerung das Steuerprogramm mit sehr hoher Geschwindigkeit wiederholt ausführt. Die Geschwindigkeit oder Rate, mit der eine programmierbare Steuerung die Anweisungen in ihrer Anweisungsmenge ausführen kann, als auch die Größe oder der Umfang des Steuerprogramms bilden die Hauptumstände, die die Geschwindigkeit bestimmen, mit der die programmierbare Steuerung wiederholt das Steuerprogramm ausführen oder "abtasten" kann.
- Während Kontaktplan-Steuerprogramme für Steuertasks oder Steueraufgaben eines relativ kleinen bis mittleren Umfangs leicht erzeugt und editiert werden können, werden diese Steuerprogramme bei größeren Steueraufgaben unübersichtlich und bezüglich ihrer Anwendung ineffizient. Größere Kontaktplan- Steuerprogramme sind schwierig zu verstehen und bei der Fehler- oder Störungssuche schwierig zu handhaben, und sie erfordern eine lange Ausführungszeit.
- Das aufgezeigte Problem ist angesprochen in der DE-A- 36 10 433, die der US-Patentanmeldung mit dem amtlichen Aktenzeichen Nr. 06/717 221, eingereicht am 28. März 1985 mit dem Titel "Speicherprogrammierbare Steuerung mit Funktionsplaninterpreter", entspricht. Die in dieser Druckschrift beschriebene Steuerung enthält einen Prozessor, welcher eine Vielzahl separater Kontaktplan-Steuerprogramme speichert, die über ein gespeichertes Funktionsplanprogramm in logischer Beziehung zueinander stehen, und der Prozessor ist zur Ausführung des gespeicherten Funktionsplanprogramms betreibbar, das angibt, welches der gespeicherten Steuerprogramme zu irgendeiner Zeit vom Prozessor wiederholt ausgeführt werden soll. Man hat entdeckt, daß große Steueraufgaben im allgemeinen in separate Steuerschritte aufgebrochen werden können, die sequentiell ausgeführt werden, wenn die gesteuerte Maschine oder der gesteuerte Prozeß durch seine Zustände voranschreitet. Jeder Steuerschritt ist durch ein separat ausführbares Kontaktplan-Steuerprogramm definiert, das leicht zu verstehen ist, und das mit einer sehr hohen Abtastrate ausgeführt werden kann. Die Sequenz, in der die separaten Steuerschritte ausgeführt werden, ist durch das Funktionsplanprogramm definiert, bei dem es sich um einen allgemeinen Ausdruck darüber handelt, wie die gesteuerte Maschine oder der gesteuerte Prozeß zu betreiben ist. Der Anwender kann deshalb mit Funktionsplankonstrukten die allgemeine Art und Weise definieren, in der die Maschine oder der Prozeß zu betreiben ist, und er kann dann den detaillierten Betrieb der Maschine oder des Prozesses in separaten, leicht zu handhabenden Kontaktplan-Steuerprogrammen definieren. Deskriptoren werden verwendet, um die Nummer der Datei eines Kontaktplan-Programmes, das ablaufen soll, einzubeziehen, wenn die entsprechende Deskriptor aktiv ist.
- Die bisherigen Anwendungen von Funktionsplan- und Kontaktplanprogrammen betrafen programmierbare Steuerungen, wie sie beispielsweise in der DE-A-36 10 433 offenbart sind, die lediglich einen einzigen Prozessor zur Ausführung der Programme haben. Bei den programmierbaren Steuerungen dieser Art sind Schwierigkeiten entstanden, wenn komplexe Routinen, die beispielsweise die Lösung einer Gleichung betrafen, ausgeführt werden sollten. Solche Rechenaufgaben nehmen sehr oft für relativ lange Zeitabschnitte den Prozessor vollkommen in Anspruch und verzögern deshalb die Ausführung anderer Sprossen (rungs) des Leiterdiagramm- oder Kontaktplan-Steuerprogramms. Dies kann dazu führen, daß gewisse Bereiche der gesteuerten Anlage von der speicherprogrammierbaren Steuerung nicht häufig genug überwacht oder überprüft werden.
- Ausgehend von der in der DE-A-36 10 433 offenbarten speicherprogrammierbaren Steuerung löst die im Anspruch 1 beanspruchte Erfindung das Problem, wie eine speicherprogrammierbare Steuerung auszulegen und zu konstruieren ist, damit die Ausführung eines Maschinenoperationsprogramms verbessert wird.
- Die programmierbare Steuerung führt ein einziges Maschinenoperationsprogramm aus, das es der Maschine ermöglicht, mehrere programmierte Funktionen vorzunehmen. Jeder Schritt der Maschinenoperation ist durch ein separates Anwendersteuerprogramm definiert. Die programmierbare Steuerung enthält eine Vielzahl einzelner Prozessormodule, von denen jedes in der Lage ist, gleichzeitig ein Anwendersteuerprogramm auszuführen. Eine vorgesehene Speichereinrichtung dient zum Ablegen der Steuerprogramme und von Daten, die die Sequenz angeben, in der die Steuerprogramme auszuführen sind. Die programmierbare Steuerung enthält auch ein oder mehrere Eingabe/Ausgabe-Module zum schnittstellenmäßigen Anschließen an Sensoren und Aktoren der gesteuerten Maschine. Diese E/A- Module können den schnittstellenmäßigen Anschluß der Steuerung an die Sensoren und Aktoren entweder direkt oder indirekt über Fern-E/A-Adapter vornehmen.
- Typischerweise ist der Betrieb der Steuerung durch einen vom Anwender bereitgestellten Funktionsplan und eine Reihe Steuerprogramme, wie beispielsweise Kontaktplanprogramme, definiert. Der Funktionsplan umreißt den vorzunehmenden Gesamtprozeß in einer Folge von Schritten. Der Funktionsplan ist aufgebrochen in eine Reihe Deskriptoren, von denen jeder Daten enthält, die einen auszuführenden Verarbeitungsschritt definieren, einen Übergangszustand, der bei Vollendung des Schritts auftritt, und einen Zeiger, der auf den nächsten Deskriptor in der Reihe zeigt. Die Deskriptoren des Funktionsplanes führen den Gesamtfluß der Programmausführung. Jedem Verarbeitungsschritt ist ein Modul der Prozessormodule zum Zwecke seiner Ausführung zugeordnet. Der Schritt ist ferner definiert durch ein Prozeßsteuerprogramm, bei dem es sich entweder um ein herkömmliches Kontaktplanprogramm oder ein in einer hohen Sprache dargestelltes Programm handelt. Bei dem bevorzugten Ausführungsbeispiel wird das Steuerprogramm nach seiner Kompilierung in einem lokalen Speicher des jeweiligen Prozessormoduls gespeichert, das zum Ausführen des Programms zugeordnet worden ist. Sobald ein Prozessormodul mit der Ausführung eines spezifischen Steuerprogramms beginnt, nimmt es diese Ausführung wiederholt so lange vor, bis der zugeordnete Übergangszustand auftritt. Zu diesem Zeitpunkt wird der nächste Deskriptorzeiger gelesen, um Information bezüglich des vorzunehmenden nächsten Schrittes zu erhalten.
- Die Erfindung sieht eine speicherprogrammierbare Steuerung mit einer Vielzahl Steuerprogrammprozessoren vor, so daß, wie es von einem Funktionsplanprogramm angegeben ist, eine Anzahl Anwendersteuerprogramme gleichzeitig ausgeführt werden kann, ohne daß diese Programme kaskadiert werden müssen. Da jedes Steuerprogramm von einem unabhängigen Prozessor ausgeführt wird, muß man bezüglich der Operationsgeschwindigkeit des Prozessors keine Kompromisse eingehen, und die Frequenz, mit der der Prozeß überwacht und die als Antwort vorgenommenen Aktionen vorgenommen werden, ist im wesentlichen genau so, als ob dies das einzige zum derzeitigen Zeitpunkt auszuführende Steuerprogramm wäre.
- In den Zeichnungen sind Ausführungsbeispiele der Erfindung dargestellt. Es zeigen:
- Fig. 1 eine perspektivische Ansicht einer speicherprogrammierbaren Steuerung, die von der Erfindung Gebrauch macht,
- Fig. 2 ein schematisches Blockschaltbild des in Fig. 1 dargestellten speicherprogrammierbaren Steuerungssystems,
- Fig. 3 ein schematisches Blockschaltbild der Systemsteuerung der speicherprogrammierbaren Steuerung nach Fig. 2,
- Fig. 4 ein schematisches Blockschaltbild eines Programmausführungsprozessors der in Fig. 2 dargestellten speicherprogrammierbaren Steuerung,
- Fig. 5 ein schematisches Blockschaltbild des Direktzugriffspeichers des in Fig. 4 dargestellten Programmausführungsprozessors,
- Fig. 6 ein schematisches Blockschaltbild des Fern- Eingabe/Ausgabe-Abtasters der in Fig. 2 dargestellten speicherprogrammierbaren Steuerung,
- Fig. 7 eine Darstellung der Datenstruktur des Systemsteuerungsspeichers,
- Fig. 8 eine Darstellung der Datenstruktur des E/A- Abtasterspeichers,
- Fig. 9 eine Darstellung der Datenstruktur des Programmausführungsprozessorspeichers,
- Fig. 10 eine Darstellung eines Beispiels eines Funktionsplanes,
- Fig. 11A, B und C Darstellungen der vom Funktionsplanprogramm nach Fig. 10 erzeugten Datenstrukturen von Deskriptordateien,
- Fig. 12A und B Eingaben in die Mailboxen von Fig. 14 für verschiedene Nachrichtenarten,
- Fig. 13 ein Flußdiagramm der Initialisierungsroutine der speicherprogrammierbaren Steuerung,
- Fig. 14 eine schematische Darstellung eines Abschnitts des System nach Fig. 1, der zum Beschreiben der Nachrichtenkommunikation zwischen Modulen der programmierbaren Steuerung dient,
- Fig. 15 ein Flußdiagramm der Programmschritte zum Auslösen des Aussendens einer Nachricht von einem Modul zu einem anderen in der speicherprogrammierbaren Steuerung, und
- Fig. 16, 17, 18 und 19 Flußdiagramme von Anteilen der Software zum Interpretieren von Funktionsplandaten und zum Ausführen von Anwendersteuerprogrammen.
- Wie aus Fig. 1 ersichtlich, ist eine speicherprogrammierbare Steuerung 10 nach der Erfindung in einem Gestell 12 untergebracht, das eine Reihe Schlitze aufweist, die eine Vielzahl Module mit gedruckten Schaltungsplatten aufnehmen. Diese Funktionsmodule sind an eine Mutterplatte angeschlossen, die sich längs der Rückoberfläche des Gestells 12 erstreckt und eine Rückebene 11 bildet. Die Rückebene 11 hat eine Vielzahl Modulverbinder, die über ein leitendes Muster auf der Rückebene miteinander verbunden sind. Die Rückebene 11 sieht eine Reihe Signalbusse vor, an die die Module angeschlossen sind. Das Gestell 12 enthält ein Energieversorgungsmodul 14, ein Systemsteuermodul 16, einige Programmausführungsmodule 18 und eine Vielzahl Fern-Eingabe/Ausgabe-Abtastmodule 20, obgleich nur ein einziges Abtastmodul erforderlich ist. Die übrigen Einschubplätze im Gestell 12 sind leer, und die entsprechenden Schlitze sind abgedeckt mit Leerplatten, die dann beim Einschieben von zusätzlichen Funktionsmodulen in diese Schlitze entfernt werden. Der konstruktive Aufbau des Gestells 12 ist in einer US-Patentanmeldung mit dem amtlichen Aktenzeichen Nr. 06/909 710, eingereicht am 22. September 1986 und übertragen auf den Inhaber der vorliegenden Erfindung, offenbart.
- Bis zu vier Fern-E/A-Abtastmodule 20 können schnittstellenmäßig über Serien-E/A-Datenverbindungen, wie die Verbindung 15, an externe Fern-E/A-Gestelle 17 angeschlossen sein. Jedes Fern-E/A-Gestell 17 enthält eine Vielzahl lokaler E/A-Module 19, die mit einzelnen Sensoren und Aktoren an der gesteuerten Anlage verbunden sind. Die lokalen E/A-Module 19 können mannigfache Ausführungsformen annehmen, und sie können beispielsweise enthalten Gleichstromeingänge oder -ausgänge, Wechselstromeingänge oder -ausgänge, analoge Eingänge oder Ausgänge, und offene Steuerschaltungen oder geschlossene Regelschaltungen im Falle von Positionier- oder Stellmodulen. Die E/A-Gestelle 17 und Verbindungsnetze 15 verwenden herkömmliche Schnittstellen- und Kommunikationstechnik. Die Fern-E/A-Gestelle 17 enthalten auch ein Adaptermodul 19', wie es beispielsweise beschrieben ist in der US-Patentschrift Nr. 4 413 319 und das dazu dient, die Übertragung von Daten zwischen den E/A-Modulen 19 und den Abtastmodulen 20 über das E/A-Netzwerk 15 zu steuern.
- Die Systemsteuerung 16 ist über ein Kabel 25 an ein Programmiergerät 24 angeschlossen, das dazu dient, die Anwenderprogramme in die speicherprogrammierbare Steuerung zu laden und den Betrieb der Steuerung zu konfigurieren und seine Arbeitsweise zu überwachen. Das Gerät 24 ist ein Personalcomputer, der derart programmiert ist, daß der Anwender auf dem Programmiergerät Steuerprogramme entwickeln kann. Diese Steuerprogramme können beispielsweise verbesserte Versionen von herkömmlichen Funktionsplanprogrammen sein, die die Sequenz bestimmen, in der die Kontaktplansteuerprogramme auszuführen sind. Die verschiedenen Programme werden dann in die speicherprogrammierbare Steuerung heruntergeladen. Sobald die Programme in die programmierbare Steuerung 10 geladen worden sind und der Betrieb der Steuerung fehler- und störungsfrei vonstatten geht, kann das Programmiergerät 24 von der Systemsteuerung 16 abgetrennt werden, sofern keine weitere Überwachung erforderlich ist. Die Systemsteuerung 16 kann ferner über ein Kabel 26 an ein lokales Bereichsnetzwerk oder lokales Netz 28 angeschlossen sein, über das die Steuerung Daten und Programmanweisungen empfangen und Statusinformation und Berichtsdaten an einen Hostcomputer abgeben kann. Dadurch ist es möglich, daß ein zentraler Hostcomputer oder ein zentrales Anschlußgerät den Betrieb einer Vielzahl programmierbarer Steuerungen auf einer Fertigungsetage programmieren und kontrollieren kann.
- Verschiedene Schritte eines Funktionsplanprogramms sind verschiedenen Programmausführungsmodulen 18 zugeordnet. Das Anwendersteuerprogramm jedes Schritts ist im lokalen Speicher des entsprechenden Programmausführungsmoduls 18 gespeichert. Bei dem Anwendersteuerprogramm kann es sich beispielsweise um ein herkömmliches Leiterdiagramm- oder Kontaktplanprogramm handeln. Einige Anwendersteuerprogramme können gleichzeitig auf verschiedenen Programmausführungsmodulen ausgeführt werden. Zu anderen Zeiten kann eine "Hintergrundtask" auf einem Programmausführungsmodul 13 ausgeführt werden, wohingegen ein anderes Modul 18 ein Anwendersteuerprogramm ausführt.
- Während des Ausführungsverlaufes eines Anwendersteuerprogramms liest das Programmausführungsmodul 18 Eingabestatusdaten von Eingabebildtabellen in einem oder mehreren E/A-Abtastmodulen 20. Entsprechend den Programmanweisungen schreibt das Programmausführungsmodul auch Ausgabestatusdaten in die Ausgabebildtabelle im E/A-Abtastmodul 20, das das jeweilige Ausgabegerät bedient. Zugriff zu den E/A-Tabellen erlangt man über die Gestellrückebene 11.
- Hat ein Programmausführungsmodul einen Funktionsplanschritt vollendet, sendet es einen Befehl an das Programmausführungsmodul 18 aus, das den nächsten auszuführenden Schritt enthält. Der Befehl identifiziert den nächsten Schritt und weist das Programmausführungsmodul 18 an, mit seiner Ausführung zu beginnen.
- Zum Transferieren der Daten und Befehle zwischen den Modulen der programmierbaren Steuerung sind die Module entsprechend der Darstellung nach Fig. 1 miteinander verbunden.
- Jeder der in Fig. 2 dargestellten Blöcke enthält einen Hinweis auf eine andere Figur der Zeichnungen, die dann Einzelheiten der durch den Block dargestellten Einheit repräsentiert. Jedes der Module ist an die Gestellrückebene 11 angeschlossen, die voneinander separate Busse aufweist, nämlich einen Steuerbus 21, einen Datenbus 22 und einen Adreßbus 23. Der Steuerbus 21 besteht aus einer Anzahl separater Leitungen, mit denen ein Modul in Verbindung treten kann, und zwar in Abhängigkeit von Steuersignalen, die für den betreffenden Typ von Modul benötigt werden. Der Datenbus 22 hat eine Breite von 32 Bits, und der Adreßbus 23 ist 27 Bits breit.
- Bei dem bevorzugten Ausführungsbeispiel enthält jedes Systemsteuermodul 16, Programmausführungsprozessormodul 18 und Fern-E/A-Abtastmodul 20 eine austauschbare Tochterplatte die einen lokalen Speicher für Daten und Operationsanweisungen für das betreffende Modul aufweist. Die Tochterplatte hat auch eine Batterie, um die Speicherfähigkeit aufrecht zu erhalten, falls die Energie von der Steuerung abgeschaltet wird oder ausfällt. Der Speicher 134 in jedem Fern-E/A- Abtastmodul enthält eine E/A-Bildtabelle, die den Zustand jedes Sensors und den gewünschten Zustand jedes Aktors anzeigt, welche an das Abtastmodul 20 angeschlossen sind. Der Systemsteuerungsspeicher 69 enthält verschiedene Segmente, die Daten bezüglich des Systemstatus und der Systemkonfiguration als auch Information bezüglich spezieller Systemoperationen speichern. Jedes der Prozessormodule 18 hat einen Direktzugriffsspeicher 106, der die Funktionsplandaten, Anwendersteuerprogramme und ihre Operationsvariablen speichert.
- Jedes der Funktionsmodule der programmierbaren Steuerung 10 wird nachstehend im einzelnen beschrieben.
- Wie bereits erwähnt, sieht das Systemsteuermodul 16 eine Kommunikationsschnittstelle für die programmierbare Steuerung bezüglich externer Anschlüsse und Geräte sowie lokaler Netze vor. Die Systemsteuerung 16 führt auch Systemorganisationsfunktionen aus und sieht in diesem Zusammenhang beispielsweise eine Anzeige des Systemstatus vor und überwacht den Zugriff zur Rückebene 11.
- Während des normalen Betriebs der programmierbaren Steuerung übernimmt die Systemsteuerung die Kommunikation mit den externen Geräten, die mit ihr verbunden sind, wie beispielsweise das lokale Netz 28 und das Programmiergerät 24. Eine der wesentlichen Aufgaben ist die Kommunikation mit dem Programmiergerät 24, um die Bereitstellung von Information zu gestatten, die es der Bedienung erlaubt, den Systembetrieb zu überwachen und fehlerhafte oder gestörte Sensoren oder Aktoren zu erkennen. Eine andere von der Systemsteuerung überwachte Aufgabe ist der Austausch von Daten mit einem Hostcomputer oder einer programmierbaren Partnersteuerung über das lokale Netz 28. Auf diese Weise wird es dem Hostcomputer ermöglicht, statistische Daten von einer oder einer Anzahl programmierbarer Steuerungen während ihres Betriebs zu sammeln. Zusätzlich zu diesen Funktionen besteht eine andere Funktion der Systemsteuerung 16 darin, alle Programmänderungen zu empfangen und dafür Sorge zu tragen, daß das Programm in dem entsprechenden Programmausführungsmodul 18 aktualisiert wird. Dies schließt das Hinzufügen, Weglassen und Ändern verschiedener Sprossen im Leiter- oder Kontaktplanprogramm ein.
- Die in Fig. 3 schematisch dargestellte Systemsteuerung ist mit den Rückebenebussen 21 bis 23 verbunden und ist in drei Abschnitte unterteilt, die in der Zeichnung jeweils durch gestrichelte Linien voneinander getrennt sind und einer Rückebeneschnittstelle-Verarbeitungs- und Kommunikationsoperation zugeordnet sind. Der Rückebeneschnittstellenabschnitt überwacht den Rückebenezugriff für alle Gestellmodule und verbindet schnittstellenmäßig das Steuerungsmodul 16 mit der Rückebene 11. Der Prozessorabschnitt führt ein Überwachungsprogramm für die Steuerung 10 durch. Der Kommunikationsabschnitt ist in erster Linie verantwortlich für die Kommunikation zwischen dem externen Gerät 24 und dem lokalen Netz, wie beispielsweise dem LAN 28. Der Prozessorabschnitt und der Kommunikationsabschnitt enthalten jeweils eine Gruppe interner Busse, und zwar Kommunikationsabschnittsbusse 31 bis 33 bzw. Prozessorabschnittsbusse 61 bis 63.
- Verschiedene Schaltungen, die mit den Kommunikationsabschnittsbussen verbunden sind, steuern das schnittstellenmäßige Anschalten der Systemsteuerung 16 mit dem Programmiergerät 24 und dem lokalen Netz 28. Die Kommunikationsabschnittsbusse enthalten den Steuerbus 31, der aus einer Anzahl einzelner Steuerleitungen besteht, die zwischen verschiedenen Komponenten im Kommunikationsabschnitt verlaufen, einen acht Bitbreitendatenbus 32 und einen 16 Bit breiten Adreßbus 33. Der Kommunikationsabschnitt ist rund um einen Mikroprozessor 30 aufgebaut, bei dein es sich um einen Prozessor vom Modell Z80, hergestellt von Zilog, Incorporated, handeln kann. Der Mikroprozessor 30 führt in Maschinensprache dargestellte Anweisungen aus, die in einem Festwertspeicher (ROM) 34 abgelegt sind. Die Anweisungen werden vom ROM geholt, decodiert und dann vom Mikroprozessor 30 ausgeführt, um die Kommunikationsfunktionen durchzuführen. Das diese Funktionen steuernde Programm ist mit einem Programm ähnlich, wie es in herkömmlichen programmierbaren Steuerungen verwendet wird.
- Eine herkömmliche Adreßdecodierschaltung 36 empfängt jede vom Mikroprozessor 30 herausgegebene Adresse und decodiert sie, um den geeigneten Satz von Signalen an den Steuerleitungen 31 zu erzeugen. Übt der Mikroprozessor 30 beispielsweise einen Zugriff auf den ROM 34 aus, erkennt die Adreßdecodierschaltung 36, daß die vom Mikroprozessor 30 am Bus 33 ausgesandte Adresse in den Adreßbereich fällt, der sich im ROM befindet. Sobald sie erkannt hat, auf welche Vorrichtung oder Komponente im Kommunikationsabschnitt zugegriffen werden soll, erzeugt die Adreßdecodierschaltung 36 Steuersignale für diese Komponente, um den Zugriff auszuführen.
- Zwei Serien-Eingabe/Ausgabe-Vorrichtungen, nämlich ein Universalasynchronempfängersender (UART) 46 und eine Serien-Eingabe/Ausgabe-Steuerung (SIO) 48 sind ebenfalls an die drei Kommunikationsabschnittsbusse 31 bis 33 angeschlossen. Der UART 46 kann irgendeine von mehreren handelsüblichen integrierten Schaltungsanordnungen sein. Der UART 46 überführt die parallelen Daten, die auf dem Kommunikationsdatenbus 32 auftreten, in geeignet formatierte Seriensignale, die einem Eingabe/Ausgabe-Leitungstreiber/Empfänger 50 zugeführt werden. Der Leitungstreiber 50 liefert Ausgangssignale, in Entsprechung zu irgendeinen mehrerer Seriensignalstandards wie dem Standard RS232, RS432 oder RS422. Die Serien-E/A-Kommunikationssteuerung (SIO) 48 kann irgendeine zahlreicher handelsüblicher integrierter Schaltungen sein, die zwei synchrone Serienkommunikationskanäle bedienen kann. Die SIO 48 verbindet den Kommunikationsabschnitt der Systemsteuerung 16 mit lokalen Netzen, die an die Leitungstreiber 52 und 54 angeschlossen sind, wie beispielsweise das in Fig. 1 dargestellte Netz 28. Das in Fig. 1 dargestellte Programmiergerät 24 ist an einen dieser Leitungstreiber 52 oder 54 angeschlossen.
- Der Kommunikationsabschnitt enthält auch einen Direktzugriffsspeicher (RAM) 38 zum Zwischenspeichern von Daten, die von verschiedenen externen Geräten, die mit der Systemsteuerung verbunden sind, empfangen werden oder an diese aus gesendet werden. Der Zugriff zum RAM 38 erfolgt über den Adreßbus 33, so daß über den Bus 32 Daten in den Speicher geschrieben oder aus ihm ausgelesen werden können, und zwar in Abhängigkeit von Freigabesignalen am Steuerbus 31. Der RAM 38 enthält eine Paritätsschaltung, die jedes im RAM gerade gespeicherte digitale Byte analysiert und unter Verwendung herkömmlicher Technik ein Paritätsbit erzeugt. Dieses Paritätsbit wird verwendet, um die Integrität von Daten zu überprüfen, die aus dem RAM 38 ausgelesen werden. Eine Schaltung (DMA) 42 zum direkten Speicherzugriff ist vorgesehen, um einen schnellen Datenaustausch zwischen der SIO 48 und dem RAM 38 während des Kommunikationsprozesses vorzusehen. Die DMA-Schaltung 42 gestattet der SIO 48 den Zugriff zum RAM 38, um darin empfangene Daten zu speichern oder daraus auszusendende Daten auszulesen, und zwar über die jeweiligen externen Kommunikationskanäle.
- Der Zugriff zu den Kommunikationsabschnittsbussen 31 bis 33 wird von einer Arbitrationsschaltung 40 gesteuert, die zur Konfliktlösung dient, wenn mehrere Vorrichtungen den Zugriff zu diesen Bussen gleichzeitig anfordern. Die Arbitrationsschaltung 40 bestimmt, welche Vorrichtung oder welche Komponente des Kommunikationsabschnitts den Zugriff zu den gemeinsam benutzten Bussen 31 bis 33 erlangt. Eine den Zugriff zu den Bussen suchende Vorrichtung sendet an die Arbitrationsschaltung 40 über eine Leitung des Steuerbusses 31 ein Anforderungssignal aus, und die Arbitrationsschaltung gewährt die Anforderung einer Vorrichtung zu einer Zeit dadurch, daß sie an einer anderen Steuerleitung für die betreffende Vorrichtung ein Zugriffssignal erzeugt.
- Eine Zähler/Zeitgeber-Schaltung (CTC) 44 ist an die Kommunikationsabschnittsbusse 31 bis 33 und an einen Unterbrechungsanschluß am Mikroprozessor 30 angeschlossen, um Unterbrechungsanforderungen von den anderen Komponenten des Kommunikationsabschnitts zu verarbeiten. Die CTC 44 ist auch als Zeitgeber konfiguriert, um in vorgegebenen periodischen Abständen, beispielsweise alle 10 ms, eine Unterbrechungsanforderung an den Mikroprozessor 30 zu erzeugen, so daß verschiedene Routinen unabhängig von der Task oder Aufgabe, die gerade vom Mikroprozessor 30 wahrgenommen wird, periodisch ausgeführt werden können. Aufgrund einer Unterbrechungsanforderung von der OTC 44 liest der Mikroprozessor 30 einen Vektor aus der CTC 44, der den Mikroprozessor zu der geeigneten Unterbrechungsserviceroutine, die im ROM 34 abgelegt ist, dirigiert, beispielsweise zum Vornehmen einer Daten-E/A-Anforderung entweder von dem UART 46 oder der SIO 48.
- Immer noch bezugnehmend auf Fig. 3 ist ersichtlich, daß der Prozessorabschnitt von einer Gruppe von Bussen zusammengehalten ist, die einen Steuerbus 61 mit Steuerleitungen, einen 16-Bit-Datenbus 62 und einen 23-Bit-Adreßbus 63 umfassen. Der Zugriff zu diesen Bussen wird gesteuert von einer Arbitrationsschaltung 64, die der Arbitrationsschaltung 40 für die Kommunikationsabschnittsbusse ähnlich ist. Zwei Gruppen Datengatter 56 und 58 sind zwischen den Kommunikationsabschnittsbussen 32 und 33 und den Prozessorabschnittsbussen 62 und 63 des Systemsteuermoduls 16 angeordnet. Die erste Gruppe Gatter 56 sieht eine 8-Bit-Bidirektionalverbindung zwischen dem Kommunikationsabschnittsdatenbus 32 und dem Prozessorabschnittsdatenbus 62 vor. Die zweite Gruppe Datengatter 58 verbindet die beiden Adreßbusse 33 und 63 miteinander. Die Datengatter 56 bestehen aus zwei Sätzen acht einzelner Tristate-Datengatter, wobei jeder Satz den Datenfluß in einer Richtung zwischen den beiden Bussen 32 und 62 übernimmt. Es sind lediglich die unteren acht Leitungen des Prozessordatenbusses 62 mit dem 8-Bit-Kommunikationsabschnittdatenbus 32 verbunden. Da eine Adressierung lediglich vom Prozessorabschnitt zum Kommunikationsabschnitt erfolgt, bestehen die Adreßgatter 58 aus einem Satz 16 Tristate-Signalgatter, die die 16 Kommunikationsadreßbusleitungen 33 mit den unteren 16 Adreßleitungen im Prozessorabschnitt verbinden. Eine Zwischenbussteuerschaltung 60 ist mit den Steuerleitungen 61 und 31 des Prozessorabschnitts bzw. Kommunikationsabschnitts verbunden, und aufgrund von Zugriffanforderungssignalen der Arbitrationsschaltungen 40 und 64 gibt die Zwischenbussteuerschaltung 60 die Daten- und Adreßpuffer 56 und 58 frei.
- Der Prozessorabschnitt ist um einen 16-Bit-Mikroprozessor 66 herum aufgebaut, bei dem es sich um einen Mikroprozessor vom Modell 68010 hergestellt von Motorola Inc. handeln kann, der in einem Festwertspeicher (ROM) 68 abgelegte Programmcodes ausführt. Der 68010-Mikroprozessor ist im wesentlichen eine Speichertabelleneinrichtung, und dieser Mikroprozessor hat daher keine direkt an ihn angeschlossene Eingabe/Ausgabe-Leitungen. Der Zugriff dieses Prozessors zu anderen Komponenten am Prozessorabschnittsbus muß daher durch die Ausgabe von Adressen am Adreßbus 63 erfolgen. Die vom Mikroprozessor 66 ausgegebenen Adressen werden in einer Adreßdecodierschaltung 70 decodiert, um geeignete Steuersignale für die zugegriffene Komponente zu erzeugen. Der Prozessoradreßdecoder 70 funktioniert im wesentlichen in der gleichen Weise wie die Kommunikationsabschnittsadreßdecodierschaltung 36. Der Prozessorabschnitt enthält auch einen Unterbrechungsprozessor 72, der Unterbrechungen zum Mikroprozessor 66 steuert und geeignete Anweisungsadreßvektoren vorsieht.
- Eine Datentransferbestätigungs- und Busfehlerschaltung (DTACK/BERR) 74 ist ebenfalls an den Prozessorabschnittsteuerbus 61 angeschlossen. Die DTACK/BERR-Schaltung 74 spricht auf Signale von verschiedenen Komponenten im Prozessorabschnitt an, um die Vollendung eines Datentransfers zu bestätigen und im Falle einer nicht geeigneten Adressierung oder eines fehlerhaften Datentransfers Busfehlersignale aus zugeben. Diese Signale wirken auf den Mikroprozessor 66 ein, der dann eine Korrekturaktion unternimmt. Der Prozessorabschnitt enthält auch eine Taktschaltung 89, die den Hauptsystemtaktgeber und eine Echtzeituhr enthält. Eine Systemstatusschaltung 88 empfängt Eingangssignale, die auf den Status des gesamten Systems 10 bezogen sind, und liefert eine Anzeige über diesen Status.
- Der Hauptdirektzugriffsspeicher (RAM) 69 für die Systemsteuerung 16 ist ebenfalls an die Prozessorabschnittsbusse 61 bis 63 angeschlossen. Der RAM 69 ist ein statischer Speicher mit 393216 (384K) Speicherplätzen, von denen jeder eine Breite von 16 Bit hat, und er dient als Systemspeicher für die gesamte Steuerung 10. Der Systemspeicher 69 kann direkt über die Rückebene 11 durch andere Module im System zugegriffen werden, und zwar ohne Eingriff der zentralen Verarbeitungseinheit 66 in der Systemsteuerung.
- Fig. 7 veranschaulicht die Datenstrukturen innerhalb des Hauptsystemspeichers 69, der im Systemsteuerungsmodul 16 enthalten ist. Der Systemspeicher 69 speichert separate Datendateien, die Daten zum Ausführen spezifischer Funktionen während des Betriebs der programmierbaren Steuerung enthalten. Die Datenstrukturen enthalten verschiedenartige Formen von Daten, wie beispielsweise ganze Zahlen, Gleitkommazahlen, ASCII-Zeichen und verschiedene Steuerstrukturen. Die erste Datei 200 ist ein Verzeichnis der anderen in dem Systemsteuerungsspeicher 69 gespeicherten Dateien. Der restliche Speicherraum ist unterteilt in eine Systemstatusdatei 201, eine Systemdatentabelle 202 und ein Gruppe Systemunterstützungsdateien 203.
- Die Systemstatusdatei 201 enthält Daten, die die Konfiguration der gesamten speicherprogrammierbaren Steuerung 10 betreffen. In dieser Datei ist Information enthalten, die verschiedenartige anwenderauswählbare Merkmale der programmierbaren Steuerung identifiziert, die vom Systemoperator freigegeben worden sind. Die Echtzeituhrdaten betreffen die Tageszeit, den Monat, den Tag und das Jahr und sind ebenfalls in diesem Abschnitt des Systemspeichers enthalten. Digitale Wörter, die das Auftreten und den Typ verschiedenartiger Systemstörungen und Fehler anzeigen, und Zeiger, die auf die auszuführenden Programmanweisungen zeigen, wenn die Störungen oder die Fehler auftreten, sind in einer anderen Unterdatei dieses Abschnitts gespeichert. Ein Abschnitt der Systemstatusdatei 201 führt auch die Anzahl und den Typ aller aktiver Module im System auf als auch die relative Modulnummer und Adreßzeiger, die zum Zugriff zu jedem Modul erforderlich sind. Sind im Gestell 12 beispielsweise mehr als ein Programmprozessormodul 18 oder mehr als ein Fern- E/A-Abtastmodul 20 vorhanden, muß der Anwender über ein Daumenrad am Modul eine eindeutige Zahl dem Modul zuordnen, um die verschiedenen Module dieses Typs voneinander zu unterscheiden. Die Daumenradeinstellung wird von der Systemsteuerung während des anfänglichen Anlaufes des Systems gelesen und in diesem Abschnitt der Systemstatusdatei 201 gespeichert.
- Die Systemdatentabelle 102 enthält Daten, die von mehr als einem Modul gemeinsam verwendet werden. Hierbei kann es sich beispielsweise handeln um die Ergebnisse verschiedener Berechnungen von einem Programmprozessormodul 18, die in diesem Abschnitt des Systemspeichers in einer solchen Weise gespeichert werden können, daß andere Programmprozessormodule zu diesen Daten leicht Zugriff erlangen können. Der Speicherraum in der Systemdatentabelle 202 ist in einer solchen Weise zugeordnet, daß über die verschiedenen externen Kommunikationsverbindungen des Kommunikationsabschnitts der Steuerung empfangene oder darüber ausgesendete Daten gespeichert werden können. Andere Module im Steuerungssystem 10 sind direkt in der Lage, zu diesen Speicherplätzen Zugriff zu erlangen.
- Die Systemdatentabelle 202 enthält auch die Werte von verschiedenen Systemzählern und Variablen, die entweder von der Systemsteuerung 16 verwendet werden oder die von einer Anzahl anderer Module verwendet werden, wie beispielsweise von den Programmprozessormodulen 18 oder den E/A-Abtastmodulen 20. Die letzte Unterdatei in der Systemdatentabelle 201 ist ein Raum oder Platz, der anwenderdefinierten Daten für verschiedene Programme zugeordnet ist, die der Anwender in die programmierbare Steuerung geladen hat.
- Der letzte Abschnitt 203 des Hauptsystemsteuerungsspeichers 69 ist den Systemunterstützungsdateien gewidmet. Diese Dateien enthalten die Quellprogramminformation für das Funktionsplanprogramm. Die programmierbare Steuerung 10 führt das Funktionsplanprogramm nicht direkt aus. Der Funktionsplan wird allerdings, wie es später noch beschrieben wird, während des Programmierschrittes verwendet, um Daten zu erzeugen, die zum direkten Betrieb der Programmausführungsmodule 18 benutzt werden. Um die nachfolgende Editierung dieser Programme zu gestatten, muß eine Quellversion des Funktionsplanes zur Darstellung auf dem Programmiergerät zur Verfügung stehen. Wie es ebenfalls später noch beschrieben wird, enthalten die Unterstützungsdateien 203 Simultanzähler zur Ausführung verschiedener Zweige des Funktionsplanes. Obgleich der lokale Speicher in jedem Modul Daten enthält, die seinen Status oder Zustand betreffen, haben in manchen Fällen diese Speicher keine Batterie, um die Speicherung aufrecht zu erhalten. Um eine solche flüchtige Information im Anschluß an einen Energiezusammenbruch aufrecht zu erhalten, ist die Statusinformation für diese Module in einer Unterdatei des Abschnitts 203 des Systemspeichers 69 repliziert.
- In diesem Abschnitt 203 sind außerdem Kommunikationsparameter zum Konfigurieren des UART 46 und der SIO 48 im Kommunikationsabschnitt der Systemsteuerung 16 gespeichert. Neben anderen Dingen enthalten diese Parameter Baudraten-, Wortgrößen- und Steuerbits für das serielle Datensignalformat. So sind beispielsweise in diesem Abschnitt des Systemspeichers Parameter zur Kommunikation mit dem Anwenderprogrammiergerät 24 gespeichert. Ferner, wie es bereits erwähnt wurde, können einige programmierbare Steuerungen über das lokale Netz 28 zusammengeschaltet werden, so daß in jeder Steuerung Parameter vorgesehen sein müssen, die den Steuerungen Anweisungen geben, wie sie über das Netz zu kommunizieren haben.
- Wie aus Fig. 3 ersichtlich, ist der Prozessorabschnitt der Systemsteuerung 16 schnittstellenmäßig mit den Rückebenebussen des Gestells 12 über eine Vielzahl Komponenten verbunden, die an beide Busgruppen angeschlossen sind. Insbesondere ist der Rückebenedatenbus 22 mit dem Prozessordatenbus 62 über einen Satz bidirektionaler Datenübertragungsgatter 78 angeschlossen, und der Rückebeneadreßbus 23 ist mit dem Prozessoradreßbus 63 über einen weiteren Satz bidirektionaler Gatter 76 verbunden. Wenn die Systemsteuerung 16 den Versuch unternimmt, die Steuerung über die Rückebene 11 der programmierbaren Steuerung 10 zu erlangen, spricht eine Mastermodussteuerschaltung 81 auf Signale an den Steuerleitungen des Prozessorbusses 61 an und liefert die geeigneten Steuersignale über den Rückebenesteuerbus 21 zum Zugriff auf andere Module im Gestell 12.
- Wenn ein anderer Modul im Gestell 12 den Zugriff zur Systemsteuerung 16 sucht, um beispielsweise den Inhalt des Haupt-RAM 69 zu lesen, wird die Systemsteuerung der Steuerung der Rückebene 11 durch das andere Modul untergeordnet. In diesem Fall spricht eine Slavemodussteuerschaltung 82 in der Systemsteuerung 16 auf die Adresse der Systemsteuerung an, die auf dem Rückebeneadreßbus 23 erscheint, und spricht ferner auf Steuersignale an den Steuerleitungen des Rückebenebusses 21 an, die von dem anderen Modul kommen. Als Antwort darauf gibt die Slavemodussteuerschaltung 82 Signale an die Übertragungsgatter 76 und 78 ab, wodurch der andere Rückebenemodul befähigt wird, den Zugriff zur Systemsteuerung 16 zu erlangen. In diesem zuletzt geschilderten Zustand befindet sich die Mastermodussteuerschaltung 81 im Ruhezustand. Die beiden Busgatter 76 und 78 erhalten Freigabesteuersignale von der Master- oder Slavemodussteuerschaltung 81 oder 82 über die Leitungen des Steuerbusses 61 in Abhängigkeit vom Modus der Rückebenekommunikation.
- Eine Rückebenearbitrationsschaltung 84 überwacht den Zugriff zur Rückebene 11 und löst miteinander konkurrierende Zugriffsanforderungen von Modulen im System auf. Bei herkömmlichen programmierbaren Steuerungen wurde die Priorität zum Zugriff auf die Rückebenebusse aufgrund des Schlitzes im Gestell 12, in den der anfordernde Modul eingeschoben war, bestimmt. Forderten beispielsweise zwei oder noch mehr Module gleichzeitig den Zugriff zur Rückebene an, erhielt das Modul im äußersten linken Schlitz den Zugriff. Da die hier beschriebene programmierbare Steuerung einige Prozessormodule 18 enthält, ist die Rückebeneaktivität größer. Die Festlegung der Priorität zum Zugriff auf die Rückebene 11 ausschließlich auf der Grundlage der Schlitzreihenfolge könnte deshalb dazu führen, daß die am weitesten rechts liegenden Schlitze innerhalb eines vernünftigen Zeitraumes keinen Zugriff bekommen. Die hier benutzte Rückebenearbitrationsschaltung 84 verwendet ein rotierendes Prioritätssystem zur Bestimmung, welches von mehreren Modulen, die gleichzeitig den Zugriff zur Rückebene suchen, den Zugriff gewährt bekommt. Bei diesem rotierenden Prioritätssystem verschiebt sich die Reihenfolge der Priorität immer dann, wenn ein Modul die Steuerung auf die Rückebene 11 abgibt.
- Ein schematisches Schaltbild der Arbitrationsschaltung 34 ist in Fig. 20 gezeigt. Eine von acht Rückebeneanforderungsleitungen BR0 bis BR7 hat ihren Ursprung bei jedem der acht Schlitze des Gestells 12. Die Anforderungsleitungen BR0 bis BR7 sind Teil des Rückebenesteuerbusses 21. Die acht Rückebeneanforderungsleitungen sind mit den Eingängen eines 8-Bit-Anforderungslatch 170 und eines NAND-Glieds 171 mit acht Eingängen verbunden. Wenn ein Modul im Gestell den Zugriff zur Rückebene 11 anfordert, legt es einen niedrigen Logikpegel an die ihm zugeordnete Rückebeneanforderungsleitung BR0 bis BR7. Dieser niedrige Pegel erzeugt einen hohen Ausgang am NAND-Glied 171. Eine Rückebenebewilligung-Bestätigungsleitung BGACK ist Teil der Rückebenesteuerleitungen 21, und sie ist verbunden mit jedem Modul 16 bis 20 und der Arbitrationsschaltung 84. Ist die Rückebene 11 verfügbar, tritt an der Rückebenebewilligung- Bestätigungsleitung BGACX ein hoher Logikpegel auf.
- Die beiden Signale hohen Pegels vom NAND-Glied 171 und der BGACK-Leitung erzeugen einen niedrigen Ausgang an einem NAND-Glied 172. Der Ausgang des NAND-Glieds 172 wird einem Freigabeanschluß EN des Anforderungslatch 170 zugeführt, wodurch das Latch veranlaßt wird, die Signale an jeder der acht Rückebeneanforderungsleitungen BR0 bis BR7 zu speichern. Die im Latch gehaltenen Rückebeneanforderungssignale REQ0 bis REQ7 werden acht Schlitzprioritätsschaltungen 181 bis 188 zugeführt. Jede Prioritätsschaltung entspricht einem der acht Gestellschlitze und bestimmt, ob der ihr zugeordnete Schlitz Zugriff zur Rückebene haben sollte. Diese Bestimmung erfolgt auf der Grundlage, welche Modulschlitze (Moduleinschuböffnungen) gerade einen Rückebenezugriff anfordern, und auf der Grundlage der gerade wirksamen Prioritätsreihenfolge.
- Die acht Prioritätsreihenfolgen sind in einer in Fig. 29 dargestellten Matrix erläutert. Jede Spalte der Matrix stellt eine Prioritätsreihenfolge mit dem relativen Prioritätswert jedes Schlitzes dar, und zwar eine absteigende Prioritätsreihenfolge in jeder Spalte. So hat beispielsweise in der ersten Prioritätsreihenfolge (Spalte 0) das Modul im Schlitz O die höchste Priorität bezüglich des Zugriffes auf die Rückebene. Die Priorität nimmt dann mit ansteigender Schlitznummer in der Schlitznummerreihenfolge ab, so daß das letzte Modul im Schlitz 7 die niedrigste Priorität hat. In der nächsten Prioritätsreihenfolge (Spalte 1) sind alle Module mit Ausnahme des im Schlitz O befindlichen Moduls in Richtung höherer Priorität verschoben, wobei jetzt das Modul im Schlitz 1 die höchste Priorität wild das Modul im Schlitz O die niedrigste Priorität hat. Die beschriebene Prioritätsverschiebung der Module findet ihren Fortgang in den nachfolgenden Prioritätsreihenfolgen bis in der am weitesten rechts befindlichen Spalte (Spalte 7) schließlich das im Schlitz 7 befindliche Modul die höchste Priorität hat. Durch aufeinanderfolgendes Wirksamwerdenlassen der aufgezeigten Prioritätsreihenfolge zu jeweils einer Zeit, erhält jedes Modul im Gestell periodisch das höchste Prioritätsniveau.
- Welche der Prioritätsreihenfolgen gerade wirksam ist, wird durch den Ausgang eines 3-Bit-Prioritätszählers 173 festgelegt. Der Zähler 173 wird durch jede Anstiegsflanke des Signals an der BGACK-Leitung inkrementiert. Ist der Ausgang des Prioritätszählers gleich sieben, setzt die nächste Anstiegsflanke des BGACK-Signals den Zähler auf Null zurück. Die drei Ausgabebitleitungen des Prioritätszählers 173 sind über den Rückebenesteuerbus 21 mit allen Schlitzprioritätsschaltungen 181 bis 188 verbunden.
- Einzelheiten jeder Schlitzprioritätsschaltung 181 bis 188 sind in den Fig. 21 bis 28 gezeigt. Jede Prioritätsschaltung 181 bis 188 enthält eine Kette aus sechs UND- Gliedern, die mit sieben Leitungen der Ausgangsleitungen REQ0 bis REQ7 des Anforderungslatch 170 verbunden sind. Die Ausgänge der sechs UND-Glieder sind mit verschiedenen Eingängen eines 8-auf-1-Multiplexers MUX verbunden. Welche sieben Leitungen der Anforderungslatch-Ausgangsleitungen REQ0 bis REQ7 mit den UND-Gliedern verbunden sind und wie die Ausgänge der UND-Glieder mit dem Multiplexer verbunden sind, hängt von der Prioritätsreihenfolge für jeden Prioritätszählwert ab.
- Zum besseren Verständnis der Arbeitsweise der Prioritätsschaltungen 181 bis 138 wird die Schaltung 181 für den Schlitz O genauer beschrieben. Wie es aus Fig. 21 hervorgeht, ist die Ausgangsleitung REQ7 des Anforderungslatch 170 mit einem Eingang 17 eines 8-auf-1-Multiplexers (MUX) 197 verbunden. Die Ausgangsleitung REQ7 ist auch mit dem A-Eingang eines ersten UND-Glieds 191 verbunden, dessen B-Eingang mit der Ausgangsleitung REQ7 des Anforderungslatch 170 verbunden ist. Der Ausgang des ersten UND-Glieds 191 ist an den Eingang I6 des Multiplexers 197 angeschlossen und ferner mit dem A-Eingang eines zweiten UND-Glieds 192 verbunden. Der B-Eingang des zweiten UND-Glieds 192 ist an die Anforderungslatchausgangsleitung REQ7 angeschlossen. Der Ausgang des zweiten UND-Glieds 192 führt zum Multiplexereingang I5 sowie zum A-Eingang eines dritten UND-Glieds 193. Der B-Eingang des dritten UND-Glieds 193 ist mit der Ausgangsleitung REQ4 des Anforderungslatch 170 verbunden. Der Eingang 14 des Multiplexers 197 ist - an den Ausgang des dritten UND-Glieds 193 angeschlossen, dessen Ausgang ferner mit dem A-Eingang des vierten UND-Glieds 194 verbunden ist. Der B-Eingang des vierten UND-Glieds 194 ist mit der Ausgabeleitung REQ3 des Anforderungslatch 170 verbunden. Der Ausgang des vierten UND-Glieds 194 ist mit dem Multiplexereingang I3 und mit dem A-Eingang eines fünften UND-Glieds 195 verbunden. Die Ausgangsleitung REQ2 des Anforderungslatch 170 ist an den B-Eingang des fünften UND-Glieds 195 angeschlossen. Der Ausgang des fünften UND-Glieds 195 ist mit dem A- Eingang eines sechsten UND-Glieds 196 und mit dem Eingang 12 des Multiplexers 197 verbunden. Der B-Eingang des sechsten UND-Glieds 196 ist an die Anforderungslatchausgangsleitung REQ1 angeschlossen. Der Ausgang des sechsten UND-Glieds 196 ist mit dem Multiplexereingang I1 verbunden, und der Multiplexereingang I0 ist auf ein Potential hohen Logikpegels Vdd festgelegt.
- Die drei Ausgangsleitungen vom Prioritätszähler 173 (Fig. 20) sind so angeschlossen, daß sie Eingänge des Multiplexers 197 auswählen. Die Signalwerte der ausgewählten Eingänge legen fest, welcher der acht Multiplexersignaleingänge I0 bis I7 mit dem Ausgang verbunden wird. Mit jeder Inkrementierung des Prioritätszählers 193 wird der Multiplexerausgang mit einem anderen Punkt der UND- Gliedkette verbunden, wodurch die relative Priorität des entsprechenden Gestellschlitzes verändert wird. Dieselbe Änderung der relativen Priorität tritt gleichzeitig in den anderen Prioritätsschaltungen auf.
- Immer noch unter Bezugnahme auf Fig. 20 und 21 sei unterstellt, daß der Zählerausgang anfangs Null sei. Der Multiplexer 197 in der Prioritätsschaltung 181 für den Schlitz O verbindet dann den ersten Eingang I0 mit seinem Ausgang. Da dieser Eingang an Vdd angeschlossen ist, nimmt der Ausgang des Multiplexers 197 einen hohen Wert an. Dieser Ausgang wird einem drei Eingänge aufweisenden NAND- Glied 199 zugeführt. Fordert das im Schlitz O befindliche Modul einen Zugriff zur Rückebene 11 an, wird das niedrige Busanforderungssignal (BR0) an der Leitung REQ0 umgesetzt in ein Signal hohen Pegels durch einen Umkehrer 198 und einem anderen Eingang des NAND-Glieds 199 zugeführt.
- Das NAND-Glied 199 erhält auch ein niveaumäßig hohes Freigabesignal vom Knoten 180 in Fig. 20. Dieses Freigabesignal wird erzeugt von einer Verzögerungsschaltung 177, Umkehrgliedern 189 und 179 und einem NAND-Glied 178 mit einem niedrigen Ausgang am UND-Glied 172 und einem hochpegeligen Signal an der BGACK-Leitung. Der Ausgang des UND- Glieds 172 wird um 70 ns verzögert, um es dem Ausgang von den Multiplexern in den Prioritätsschaltungen 181 bis 188 zu gestatten, gültig zu werden. Ist der Ausgang der Verzögerungsschaltung 177 niedrig und das Signal an der BGACK- Leitung hoch, wird dem NAND-Glied, wie beispielsweise dem Glied 199, ein hochpegeliges Prioritätsausgabe-Freigabesignal zugeführt, und zwar in jeder der Schlitzprioritätsschaltungen. Unter Bezugnahme auf die besondere, in Fig. 21 dargestellte Prioritätsschaltung für den Schlitz O sind alle drei Eingänge zum NAND-Glied 199 hoch, wenn es das Modul höchster Priorität ist, das den Zugriff zur Rückebene anfordert, und die Rückebene verfügbar ist. In diesem Fall erzeugt das NAND-Glied 199 ein niedrigpegeliges Rückebenebewilligungssignal BG0. Das BG0-Signal gelangt über eine Rückebenesteuerleitung 21 zum Modul im Schlitz O, um anzuzeigen, daß es die Steuerung über die Rückebene 11 hat. Zu diesem Zeitpunkt empfangen die Module in den anderen Schlitzen hochpegelige Signale an ihren Rückebenebewilligungsleitungen BG1 bis 3G7 von ihren zugehörigen Prioritätsschaltungen 182 bis 187.
- Beim Empfang des niedrigen BG0-Signals erzeugt das Modul im Schlitz O ein niedriges Signal an der Rückebenebewilligung-Bestätigungsleitung BGACK. Dieses Signal gelangt zum NAND-Glied 178, das am Knoten 180 ein Signal niedrigen Pegels erzeugt, wodurch das niedrigpegelige BG0-Signal entfernt wird.
- Wenn das Modul im Schlitz O die Verwendung der Rückebene 11 beendet, nimmt es das niedrigpegelige Signal von der BGACK-Leitung weg. Die resultierende Anstiegsflanke des Signals an der BGACK-Leitung inkrementiert den Zähler 173 auf einen Wert von Eins. Dies führt dazu, daß die in der zweiten Spalte von Fig. 29 gezeigte Prioritätsreihenfolge implementiert wird. Der Abschnitt der in Fig. 20 dargestellten Arbitrationsschaltung funktioniert noch in der oben beschriebenen Weise, wenn ein oder mehrere Module jetzt den Zugriff zur Rückebene 11 anfordern. Insbesondere werden die neuen Rückebeneanforderungen im Anforderungslatch 170 zwischengespeichert, und der aktive niedrige Rückebenebewilligungsausgang von einer der Schlitzprioritätsschaltungen 181 bis 188 wird 70 ns danach freigegeben.
- Die Arbeitsweise der Prioritätsschaltungen 181 bis 188 ist allerdings unterschiedlich. Der Ausgang des Prioritätszählers 173, jetzt eine digitale Eins, veranlaßt den Multiplexer MUX in jeder Prioritätsschaltung, seinen zweiten Eingang 11 mit seinem Ausgang zu verbinden. Dies führt dazu, daß ein anderer Punkt der Kette der UND-Glieder mit dem ausgangsseitigen NAND-Glied 199 jeder Schaltung verbunden wird.
- Bezüglich der Prioritätsschaltung 181 für den ersten Schlitz sei ausgeführt, daß die Module in den Schlitzen 1 bis 7 jetzt eine höhere Priorität haben. Eine Rückebeneanforderung irgendeines dieser Module an den Leitungen BR1 bis BR7 erzeugt ein niedriges Signal an der entsprechenden Ausgangsleitung REQ1 bis REQ7 des Anforderungslatch 170. Ein niedriger Pegel an irgendeiner dieser Leitungen wird über die Kette der UND-Glieder 191 bis 196 übermittelt und erzeugt ein Signal niedrigen Pegels am zweiten Eingang I1 des MWX 197. Dieser niedrige Pegel gelangt zu einem Eingang des ausgangsseitigen NAND-Glieds 199 und erzeugt ein BG0-Signal hohen Pegels unabhängig vom Pegel an der Leitung REQ0. irgendeine Anforderung von einem der anderen Module erhält daher die Priorität über eine Anforderung vom Modul im Schlitz O. Wenn allerdings keines der anderen Module einen Zugriff zur Rückebene 11 anfordert, ist der Ausgang des MUX 197 hoch. Wenn somit jetzt das Modul im Schlitz O den Zugriff zur Rückebene 11 sucht, erzeugt sein niedrigpegeliges Signal an der Leitung REQ0 ein aktives niedriges BG0-Signal am Ausgang des NAND- Glieds 199.
- Mit jeder nachfolgenden Inkrementierung des Zählers 173 wählt der MUX 197 eine mit einer höheren Nummer versehene Eingangsleitung 10 bis 17 aus. Dadurch wird ein verschiedener Punkt von der Kette der UND-Glieder 191 bis 196 zum NAND-Glied 199 verbunden und die Anzahl der Anforderungssignale an den Leitungen REQ1 bis REQ7, die eine Rückebeneanforderung an der Leitung REQ0 vom ersten Modul im Schlitz O sperren können, vermindert. Die Verbindungen zu den UND-Gliederketten in den anderen Prioritätsschaltungen 182 bis 188 werden in ähnlicher Weise durch die verschiedenen Zählerwerte verändert. Die Arbitrationsschaltung 84 im Systemsteuerungsmodul 16 ändert daher die Reihenfolge der Zugriffspriorität jedesmal, wenn die Rückebene 11 verfügbar wird.
- Wie oben angemerkt, führt das Systemsteuerungsmodul 16 Programme aus, die die Initialisierung des Systems und die Kommunikation mit externen Computern steuern. Es führt nicht die Anwendersteuerprogramme aus.
- Die Programmausführungsprozessormodule 18 speichern spezielle Anwendersteuerprogramme, wie Kontaktplanprogramme, und führen sie aus. Eines dieser Module ist schematisch in Fig. 4 dargestellt. Während dieser Ausführung lesen die Module 18 den Zustand der Sensoren von der Eingabebildtabelle im Speicher 134 der verschiedenen E/A-Abtastmodule 20 und schreiben Ausgabedaten von ihrem Speicher in die Ausgabebildtabellen in den E/A-Abtastmodulen. Daten werden auch von dem Systemspeicher 69 in der Systemsteuerung 16 erhalten.
- Um diese Aufgaben auszuführen hat jedes Prozessormodul 18 eine Gruppe interner Busse 91 bis 93, die mit der Rückebene 11 verbunden sind. Insbesondere hat das Prozessormodul 18 einen internen 32-Bit-Datenbus 92, eine Gruppe Steuerleitungen 91 und einen 16-Bit-Adreßbus 93. Diese Busse sind mit dem Daten- und Adreßbus der Rückebene 11 über jeweilige Sätze bidirektionaler Tristate-Übertragungsgatter 94 und 96 verbunden. Der Betrieb dieser Gatter 94 und 96 wird geleitet von einer Zwischenbussteuerschaltung 95, die mit den Rückebenesteuerleitungen 21 und den Modulsteuerleitungen 91 verbunden ist. Es sei bemerkt, daß der interne Datenbus 92 als auch der Rückebenedatenbus 22 eine Breite von jeweils 32 Bits haben. Es können deshalb 32- Bit-Daten vom Prozessormodul 18 über die Rückebene als ein 32-Bit-Wort gesendet werden, wenn das Empfangsmodul einen Datenbus mit einer Breite von 32 Bits hat. Bei einigen Verarbeitungsfunktionen arbeitet das Modul 18 mit 16-Bit- Daten, und in diesem Falle werden 16-Bit-Wörter der Rückebene 11 zugeführt.
- Die übrigen Komponenten des Prozessormoduls 18 sind mit den internen Bussen 91 bis 93 verbunden. Diese internen Busse werden von einem Mikroprozessor 98 angesteuert, bei dem es sich um einen 32-Bit-Mikroprozessor handeln kann, der als 68020 Mikroprozessor von Motorola, Inc. im Handel erhältlich ist. Der Mikroprozessor 98 hat einen Unterbrechungsport, der mit einer Unterbrechungsschnittstellenschaltung 99 verbunden ist. Diese Schnittstellenschaltung erhält Signale von vier externen Unterbrechungsleitungen, die mit Anschlüssen an der Vorderseite des Prozessormoduls 18 verbunden sind. Diese externen Unterbrechungsleitungen gestatten es Vorrichtungen, die Ereignisse hoher Priorität abfühlen, daß sie direkt mit dem Prozessormodul schnittstellenmäßig verbunden werden können, um eine schnelle Antwort sicherzustellen. Drei andere Unterbrechungsleitungen der Schnittstellenschaltung 99 sind an Schaltungen im Prozessormodul 18 angeschlossen. Ein Signal an irgendeiner dieser externen oder internen Unterbrechungsleitungen verursacht, daß der Mikroprozessor 98 seine normale Programmausführung sofort unterbricht und eine Routine ausführt, die der Unterbrechungsleitung entspricht. Der Anwender kann die Routinen für die externen Unterbrechungen programmieren, jedoch werden die internen Unterbrechungen durch zugeordnete Unterbrechungsserviceroutinen bedient.
- Das Verarbeitungsvermögen des Prozessormoduls 18 wird unterstützt durch einen Gleitkomma-Koprozessor 100 und einen Bit-Koprozessor 102. Der Gleitkomma-Koprozessor 100 ist im Handel verfügbar von Motorola, Inc. als 68881 Prozessor, und er ist speziell ausgelegt, um mit dem 68020 Mikroprozessor 98 zusammenzuarbeiten. Der Bit-Koprozessor 102 ist eine kundenspezifische integrierte Schaltung zum Ausführen Boolescher Logikoperationen an einzelnen Bits der Datenwörter. Bit-Koprozessoren wurden in programmierbaren Steuerungen in der Vergangenheit verwendet, um eine Menge Kontaktplananweisungen auszuführen, und zwar unter Verwendung einer verdrahteten Logik, wie sie beschrieben ist in einer gleichzeitig anhängenden US-Patentanmeldung mit dem amtlichen Aktenzeichen Nr. 717 221, eingereicht am 28. März 1985 mit dem Titel "Programmierbare Steuerung mit Funktionsplaninterpreter".
- Die drei Prozessoren 98, 100 und 102 arbeiten im Tandem, um spezifische Typen von Anweisungen einschließlich des Steuerprogramms auszuführen. Der Mikroprozessor 98 kann mit der Ausführung des Steuerprogramms beginnen, und wenn er eine arithmetische Gleitkommafunktion entdeckt, wird der Gleitkomma-Koprozessor 100 freigegeben und der Mikroprozessor 98 überträgt an ihn die internen Busse 91 bis 93. Der Gleitkomma-Koprozessor 100 übernimmt die Verarbeitungsfunktion so lange, bis die arithmetische Operation vollendet ist. Dann übernimmt wieder der Mikroprozessor 98 die Programmausführung. Macht das Steuerprogramm eine Bitverarbeitung erforderlich (d. h. es enthält eine Anweisung für den Bit-Koprozessor 102), gibt der Mikroprozessor 98 sofort die Steuerung an den Bit-Koprozessor 102 dadurch ab, daß die Adresse der Steuerprogrammanweisung in einen Programmzähler im Bit-Koprozessor 102 eingeschrieben wird. Der Bit-Koprozessor 102 schaltet dann den Mikroprozessor 98 von den internen Bussen 91 bis 93 ab und führt die nachfolgenden Steuerprogrammanweisungen so lange aus, bis eine Stoppanweisung entdeckt wird. Der Mikroprozessor 98 wird jetzt über den Steuerbus 91 durch den Bit-Koprozessor 102 signalisiert, um die Steuerung der Busse zu übernehmen und das Steuerprogramm auszuführen. Etwa 85 bis 90% eines typischen Steuerprogramms nach Kontaktplanart kann vom Bit-Koprozessor 102 ausgeführt werden. Die Operation des kundenspezifischen Booleschen Logik-Bit-Koprozessors 102 in Verbindung mit einem Mikroprozessor ist erschöpfend in der oben angegebenen anhängigen US-Patentanmeldung mit dem amtlichen Aktenzeichen Nr. 717 221 beschrieben.
- Das Prozessormodul 18 enthält eine Datengrößenbestätigungs-Schaltung (DASACK) 108. Diese DASACK-Schaltung liefert einen 2-Bit-Code an zwei der Steuerbusleitungen, der die "Breite" der Daten auf dem Datenbus 92 angibt. Wie es noch im einzelnen beschrieben wird, kann es sich bei diesen Daten um lange Wörter bestehend aus 32 Bits, reguläre 16-Bit- Wörter oder um einzelne 8-Bit-Bytes handeln. Diese Datengrößeninformation wird von verschiedenen Modulkomponenten bei der Datenverarbeitung verwendet.
- Die letzte Komponente des Prozessormoduls 18 ist eine Steuer- und Statusschaltung 110, die den Status des Prozessormoduls überwacht und geeignete Steuersignale an verschiedene Leitungen des Steuerbusses 91 liefert, um verschiedene Komponenten in herkömmlicher Weise freizugeben.
- Sowohl ein Festwertspeicher (ROM) 104 als auch ein Direktzugriffsspeicher (RAM) 106 sind mit allen drei internen Bussen 91 bis 93 im Prozessormodul 18 verbunden. Der ROM 104 enthält 16-Bit-Speicherplätze für Anweisungen und Konstanten für die drei Prozessoren 98, 100 und 102. der RAM 106 sieht Speicherplatz für die Operanden und Ergebnisse der verschiedenen Berechnungen vor, die vom Prozessormodul 18 ausgeführt werden. Die vom Modul 18 auszuführenden Steuerprogramme sind ebenfalls im RAM 106 abgelegt.
- Die Einzelheiten des RAM-Speichers 106 sind in Fig. 5 dargestellt. Der Direktzugriffsspeicher 106 ist unterteilt in eine untere und eine obere Bank 112 und 114. Jede Bank enthält eine Anzahl Speicherplätze, beispielsweise 196608 (192K) Speicheradressen. Der Speicherplatz in jeder Bank hat eine Breite von 16 Bits und beide Bänke können gleichzeitig freigegeben werden, um Speicherplatz für 32-Bit- Datenwörter vorzusehen. Die es oben bemerkt worden ist, können die vom Prozessormodul 18 zu verarbeitenden Daten eine Breite von 16 oder 32 Bits haben. Um bei der Verarbeitung von 16-Bit-Wörtern die Speicherkapazität zu optimieren, ist ein Übertragungsgattermultiplexer in den Direktzugriffsspeicher 106 einbezogen, wodurch es gestattet wird, daß separate 16-Bit-Wörter sowohl in der oberen als auch in der unteren Speicherbank gespeichert werden können. Der Multiplexer besteht insbesondere aus drei Gruppen bidirektionaler Tristate-Übertragungsgatter 116 bis 118, von denen jedes eine bidirektionale Steuerung von 16 Datenleitungen vorsieht. Die erste Gruppe Übertragungsgatter 116 verbindet die 16 niedrigstwertigen Bits (Bits 0 bis 15) des Datenbusses 92 mit den Datenanschlüssen der unteren Speicherbank 112. In ähnlicher Weise verbindet die dritte Gruppe Übertragungsgatter 118 die 16 höchstwertigen Bits (Bits 16 bis 31) des Datenbusses 92 mit den Datenanschlüssen der oberen Speicherbank 114. Die zweite Gruppe Übertragungsgatter 117 sieht eine Querverbindung vor, über die die 16 niedrigstwertigen Bits des Datenbusses mit den Datenanschlüssen der oberen Speicherbank 114 verbunden werden. Die drei Gruppen Übertragungsgatter erhalten Steuersignale von der DASACK 108 über den Steuerbus 91, wodurch die verschiedenen Übertragungsgattergruppen freigegeben werden, und zwar in Abhängigkeit von der Breite und Adresse des über den Datenbus 92 übertragenen Wortes. Alle Adreßbusleitungen 93 führen zu der Datenbank 112 und 114.
- Werden 32 Bits an Daten über den Datenbus 92 übertragen, gibt die DASACK 108 die erste und dritte Gruppe Übertragungsgatter 116 und 118 frei. Dadurch werden die 16 niedrigstwertigen Bits in der unteren Speicherbank 112 und die 16 höchstwertigen Bits von Daten in der oberen Speicherbank 114 gespeichert. Wenn ein 16-Bit-Wort auf den Datenbus 92 ausgesendet wird, kann es entweder in der Speicherbank 112 oder in der Speicherbank 114 gespeichert werden. Soll es in der unteren Speicherbank 112 gespeichert werden, gibt die DASACK 108 nur die erste Gruppe Übertragungsgatter 116 frei, so daß die Daten zu dieser Speicherbank gelangen können. Um die Speicherfähigkeit für 16-Bit-Wörter zu maximieren, können die separaten Daten auch unter derselben Adresse in der oberen Speicherbank 114 gespeichert werden, in welchem Falle die DASACK 108 lediglich die zweite Gruppe Übertragungsgatter 117 freigibt, die die 16 niedrigstwertigen Bits von Daten mit der oberen Speicherbank 114 verbinden. Wenn 16 Bits von Daten verarbeitet werden sollen, wird die dritte Gruppe Übertragungsgatter 118 niemals freigegeben.
- Fig. 9 zeigt die Datenstruktur des RAM-Speichers 106 für jedes Programmausführungsprozessormodul 18. Der Speicher 106 enthält einen Abschnitt 310, der die Statusinformation bezüglich der Moduloperation enthält. Jedes Programmausführungsprozessormodul 18 enthält auch seine eigene Datentabelle 312, die im RAM 106 abgelegt ist. Die Datentabelle 312 enthält Speicherplätze für verschiedene Zähler, Taktgeber und Zwischenberechnungswerte.
- Der größte Anteil des RAM-Speichers 106 ist der Speicherung der Steuerprogramme gewidmet. Der tatsächliche Programminhalt enthält, wie es später im einzelnen noch beschrieben wird, kompilierte Steuerprogramme, unabhängige Hintergrundtasks und verschiedene Unterbrechungsroutinen, die von den Prozessormodulen 18 verarbeitet werden müssen. Um die Steuerprogramme in geeigneter Weise durchzuführen, sind im Programmbereich 313 auch Unterstützungsdateien vorhanden, die Funktionsplandaten, sogenannte "Deskriptoren", enthalten.
- In einer Betriebsart des Programmausführungsprozessormoduls 18, die hier "Synchronmodus" genannt wird, kopiert das Prozessormodul 18 periodisch die gesamte Eingabebildtabelle vom E/A-Abtastmodul 20 in seinen eigenen Speicher 106. Raum für dieses Kopieren der E/A-Bildtabelle ist im Speicherabschnitt 314 vorgesehen.
- Wie oben angemerkt, sammeln die E/A-Abtastmodule Eingabesensordaten zur Verwendung durch die Programmausführungsprozessormodule 18. Wie es aus Fig. 1, 2 und 6 ersichtlich ist, verbindet ein Fern-E/A-Abtastmodul 20 die programmierbare Steuerung 10 mit einem oder mehreren Fern-Eingabe/Ausgabe-Gestellen 17, die einzelne E/A- Module 19 enthalten, die die Sensoren oder Eingabevorrichtungen und die Aktoren oder Ausgabevorrichtungen schnittstellenmäßig mit der programmierbaren Steuerung 10 verbinden. Jedes Abtastmodul 20 fordert periodisch Eingabedaten an, die den Status der mit den Fern-E/A-Gestellen 10 verbundenen Eingabevorrichtungen betreffen und speichert diese Daten in der Eingabebildtabelle des Moduls in einer solchen Weise, daß sie von anderen Modulen gelesen werden kann, beispielsweise von den Prozessormodulen 18. Das Abtastmodul 20 enthält auch eine Bildtabelle der Ausgabedaten, die sie von anderen Modulen der Steuerung erhält, beispielsweise von den Prozessormodulen 18. In regelmäßigen Zeitabständen werden die aktualisierten Ausgabedaten in der Ausgabebildtabelle des Abtastmoduls zu den jeweiligen Fern- Eingabe/Ausgabe-Gestellen 17 übertragen, um die verschiedenen, mit diesen Gestellen verbundenen Aktoren zu betätigen.
- Aus Fig. 6 geht hervor, daß jedes Fern-E/A-Abtastmodul 20 an die drei Rückebenebusse 21 bis 23 angeschlossen ist. Das E/A-Abtastmodul 20 enthält drei Gruppen interner Busse: Speicherzugriffsbusse 121 bis 123, Mikroprozessorbusse 131 bis 133 und E/A-Busse 141 bis 143. Die drei Speicherbusse 121 bis 123 sind über eine Gruppe Adreßbusgatter 124 und eine Gruppe Datenbusgatter 126 mit der Rückebene 11 verbunden. Diese beiden Gruppen Übertragungsgatter werden gesteuert von einer Zwischenbussteuerschaltung 128, die über den Speichersteuerbus 121 Signale an die Gatter 124 und 126 aussendet. Ein lokaler Direktzugriffsspeicher, der hier Haupt-RAM 134 genannt wird, ist mit den drei Speicherbussen 121 bis 123 verbunden. Dieser Speicher speichert die Eingabebildtabelle mit den Sensordaten, die von den Fern-E/A- Gestellen 17 über den E/A-Abtaster 20 eingegeben worden sind, und er speichert auch die Ausgabebildtabelle mit den Ausgabedaten, die an die Fern-E/A-Gestelle 17 ausgegeben werden.
- Fig. 8 zeigt im einzelnen die Datenstrukturen, die im Haupt-RAM 134 jedes E/A-Abtastmoduls 20 gespeichert sind. Diese Datenstrukturen enthalten eine E/A-Bildtabelle für die Fernsensoren und Fernaktoren, die vom Modul bedient werden. Die Eingabebildtabelle 210 stellt die Sensordaten dar und besteht aus drei separaten Abschnitten 212 bis 214. Der erste Abschnitt 212 ist das Abbild des tatsächlichen Zustands der-verschiedenen Sensoren. Die Information, welche Eingaben betrifft, die in den Ein-Zustand gezwungen worden sind, ist im zweiten Abschnitt 213 der Eingabebildtabelle 210 enthalten. Wie bei herkömmlichen programmierbaren Steuerungen kann der Anwender den Status eines vorgegebenen Sensors dahingehend zwingen, daß er unabhängig vom tatsächlichen Zustand entweder als im Ein- oder Aus-Zustand befindlich erscheint. Auf diese Weise ist es beispielsweise möglich, fehlerhafte oder gestörte Sensoren zu umgehen. In den Ein-Zustand gezwungene Sensoren sind durch eine binäre Eins gekennzeichnet, und zwar in einer Adresse für eine solche Eingabe.
- Die Sensoren, die in den Aus-Zustand gezwungen worden sind, sind im dritten Abschnitt 214 der Eingabebildtabelle 210 angegeben. Für diese Sensoren wird eine logische Null gespeichert. Obgleich es dem Anwender per Definition gestattet ist, Daten in die erzwungenen Datentabellen 213 und 214 einzuschreiben, ist der Anwender daran gehindert, in die tatsächliche Eingabebildtabelle 212 Daten einzuschreiben. Während des Betriebs der programmierbaren Steuerung können die Anwenderprogramme entweder die tatsächlichen Eingabebilddaten aus dem Abschnitt 212 oder die erzwungenen Abbilder der Sensoren lesen. Wird das erzwungene Bild gelesen, führt das Abtastmodul 20 eine logische ODER-Verknüpfung mit dem tatsächlichen Sensoreingabezustand und dem im Abschnitt 213 gespeicherten erzwungenen Ein-Zustand vor, und dieses Ergebnis wird dann mit dem in den Aus-Zustand erzwungenen Datum für diesen Sensor aus dem Abschnitt 214 einer UND-Verknüpfung unterzogen.
- Die Ausgabebildtabelle 211, die ebenfalls im Haupt-RAM 134 gespeichert ist, enthält die Ausgabebilddatentabelle 215, die den Zustand der Aktoren oder Ausgabevorrichtungen angibt, die mit den Fern-E/A-Gestellen 17 verbunden sind, welche das E/A-Abtastmodul 20 bedient. Typischerweise werden diese Ausgabedaten dadurch festgelegt, daß das Anwendersteuerprogramm im Prozessormodul 18 ausgeführt wird. Ein zweiter Abschnitt 216 stellt die in den Ein-Zustand erzwungenen Ausgabedaten dar, und in einem dritten Abschnitt 217 der Ausgabetabelle 211 sind die in den Aus-Zustand erzwungenen Ausgabedaten enthalten. Auf diese Weise ist es dem Anwender möglich, einen vorgegebenen Aktor stets im Ein- oder Aus-Zustand erscheinen zu lassen, und zwar unabhängig vom Ergebnis der Ausführung des Anwendersteuerprogramms. Dies ist beispielsweise sinnvoll, wenn ein Abschnitt der gesteuerten Anlage wegen Wartung ausgeschaltet werden muß und deshalb vom Anwendersteuerprogramm nicht betrieben werden sollte. Das Steuerprogramm kann jede Ausgabetabelle 215 bis 217 individuell lesen. Wenn die erzwungenen Ausgabezustände gesperrt sind, werden die den Fern-E/A-Gestellen 17 zugesandten Daten zum Aktivieren oder Deaktivieren der verschiedenen gesteuerten Vorrichtungen der Ausgabebildtabelle 215 entnommen. Sind die erzwungenen Ausgabezustände freigegeben, dann handelt es sich bei den an die Fern-E/A-Gestelle 17 ausgegebenen Daten um eine logische Kombination der drei Ausgabetabellen 215 bis 217, wobei Boolesche Logikverknüpfungen eingesetzt werden, die identisch sind mit der Kombination, die in Verbindung mit den drei Eingabetabellen 212 bis 214 oben beschrieben worden ist.
- Wie es aus Fig. 8 ersichtlich ist, enthält die Datenstruktur im Haupt-RAM 134 des E/A-Abtastmoduls 20 auch einen Block 218, der Daten betreffend den Status des Kommunikationsadapters in jedem der Fern-E/A-Gestelle 17 enthält, die vom Modul 20 bedient werden. Diese Daten werden während des Transfers von Information über die E/A-Verbindungen 15 mit den Fern-E/A-Gestellen verwendet.
- Obgleich der Zustand der meisten Sensoren und Aktoren durch ein einziges binäres Bit dargestellt werden kann, produzieren oder benötigen gewisse Vorrichtungen, wie beispielsweise Positionssensoren und analoge Vorrichtungen, Information, die sich aus einer Vielzahl digitaler Wörter zusammensetzt. Diese Daten können in Form eines großen Datenblocks zwischen dem Fern-E/A-Gestell 17 und dem E/A-Abtastmodul 20 übertragen werden. Der Speicherabschnitt 219 im Haupt-RAM 134 enthält Information, die zur Steuerung solcher Transfers von Datenblocks erforderlich ist, und ein Partnerabschnitt 220 sieht einen Speicherbereich zum Abspeichern des tatsächlichen Datenblocks vor. Bezüglich einer Einzelbeschreibung dieses Blocktransfers wird Bezug genommen auf das US-Patent Nr. 4 413 319 mit dem Titel "Programmierbare Steuerung zur Ausführung eines Blocktransfers mit Fern-E/A-Schnittstellengestellen".
- Unter Bezugnahme auf Fig. 6 sei erläutert, daß die Zwischenbussteuerschaltung 128 auch Steuersignale an die E/A-Datenarbitrationsschaltung 130 aussendet, die miteinander konkurrierende Anforderungen zum Zugriff zu den Speicherbussen 121 bis 123 von der Rückebene 11 und den Mikroprozessorbussen 131 bis 133 auflöst. Zwei Gruppen Übertragungsgatter, und zwar Adreßgatter 136 und bidirektionale Datengatter 138, verbinden die Speicherbusse 121 bis 123 mit den Mikroprozessorbussen 131 bis 133 und empfangen Steuersignale von der E/A-Datenarbitrationsschaltung 130 über den Speichersteuerbus 121. Der Betrieb des Fern-E/A-Abtasters 20 wird gesteuert von einem 8-Bit- Mikroprozessor 140, der an die drei Mikroprozessorbusse 131 bis 133 angeschlossen ist. Bei dem Mikroprozessor 140 kann es sich um einen handelsüblichen Mikroprozessor vom Typ Zilog, Inc. wie den Z80 handeln, und dieser Mikroprozessor ist die einzige Baueinheit, die direkt mit den Mikroprozessorbussen 131 bis 133 verbunden ist. Dies ist anders bei den Gruppen Übertragungsgatter 136, 138, 144 und 146 sowie der E/A-Datenarbitrationsschaltung 130.
- Eine Gruppe Adreßgatter 144 verbindet den Mikroprozessoradreßbus 133 mit dem E/A-Adreßbus 143, und eine Gruppe bidirektionaler Gatter 146 verbindet die Datenbusse 132 und 142. Beide Gruppen Tristate-Gatter 144 und 146 erhalten Steuersignale von der E/A-Datenarbitrationsschaltung 130 über den Mikroprozessorsteuerbus 131. Der Mikroprozessorsteuerbus 133 ist direkt mit dem E/A-Steuerbus 141 verbunden.
- Die E/A-Steuerbusse 141 bis 143 verbinden die Vorrichtungen, die schnittstellenmäßig an das E/A-Abtastmodul 20 angeschlossen sind, mit den Fern-E/A-Gestellen 17. Diese enthalten eine Serien-E/A-Schnittstellenschaltung (SIO) 148, die zwei synchrone Serien-E/A-Kanäle 150 und 151 vorsieht, von denen jeder seine eigene Kabeltreiber/Empfänger-Schaltung 152 bzw. 153 hat. Eine Zähler/Zeitgeber-Schaltung (CTC) 154 und eine Direktspeicherzugriffsteuerung (DMA- Steuerung) 156 sind ebenfalls mit den E/A-Bussen 141 bis 143 verbunden. Der E/A-Busabschnitt des Abtasters 20 enthält auch einen Direktzugriffsspeicher, der als E/A-RAM 158 angegeben ist und zur Zwischenspeicherung von Eingabe- und Ausgabedaten dient, die über die E/A-Serienverbindungen 15 übertragen werden. Ein Festwertspeicher (ROM) 160 ist ebenfalls an die E/A-Busse 141 bis 143 angeschlossen und enthält die Programme, die vom Mikroprozessor 140 ausgeführt werden, um die Funktionen des Abtastmoduls 20 durchzuführen. Eine Adreßdecodierschaltung 162 ist außerdem an die Adreß- und Steuerbusse im E/A-Abschnitt des Abtastmoduls 20 angeschlossen, um die Adressen zu interpretieren, die vom Mikroprozessor 140 erzeugt werden, und um geeignete Freigabe- und Steuersignale an den Leitungen der Steuerbusse 131 und 141 zu erzeugen.
- Die Arbeitsweise der Fern-E/A-Abtastmodule 20 ist in einem nachfolgenden Abschnitt betreffend Datenakquisition und -transfer beschrieben.
- Die neuartige Architektur der vorliegenden speicherprogrammierbaren Steuerung 10 bedingt, daß sie in einer einzigartigen Weise funktioniert. Die Bereiche, in denen das vorliegende System anders als herkömmliche programmierbare Steuerungen arbeitet, umfassen die Systeminitialisierung, die E/A-Datenakquisition sowie den E/A-Datentransfer und die Zwischenmodulkommunikation. Der wesentlichste Unterschied bezüglich der vorliegenden Steuerung liegt jedoch in der Formulierung und Ausführung der Anwendersteuerprogramme. Jede dieser einzigartigen Funktionen wird nachstehend im einzelnen beschrieben.
- Während des Einschaltens der Systemenergieversorgung überwacht die Systemsteuerung 16 die Konfiguration des Systems und verschiedene andere Aufgaben oder Tasks, wie es aus einem in Fig. 13 dargestellten Flußdiagramm hervorgeht. Die erste Phase 450 der Energieeinschaltung tritt unmittelbar im Anschluß an die Beendigung des Systemrücksetzsignals auf. Während dieses Intervalls ist es keinem Modul erlaubt, an der Rückebene 11 zu sein, und die verschiedenen Module führen lokale Tests an ihren eigenen Speichern und anderen Subsystemen aus. Nachdem jedes Modul seine Arbeiten beendet hat, gibt es eine gemeinsame Bereitleitung des Rückebenesteuerbusses 21 frei. Sobald auch das letzte Modul seine internen Tests vollendet hat, ist das Signal an der Bereitleitung wahr. Dadurch wird der Systemsteuerung 16 signalisiert, einen Übergang in die nächste Systemenergieeinschaltphase vorzunehmen.
- Während der zweiten Phase 451 zieht die Systemsteuerung 16 die Rückebene 11 heran und fordert jedes Modul in den Schlitzen des Gestells 12 auf, sich zu identifizieren und der Systemsteuerung 16' verschiedene Informationen betreffend das Modul zuzusenden, wie der Modultyp sowie Adressen für verschiedene Unterbrechungen und Datenzeiger, die im Systemspeicher 69 gespeichert sind. Aufgrund der von jedem Modul empfangenen Information verifiziert die Systemsteuerung 16, daß das System in geeigneter Weise konfiguriert ist. Sind beispielsweise mehr als ein Programmausführungsprozessormodul 18 im System vorhanden, verifiziert die Systemsteuerung 16, daß jedes dieser Module eine eindeutige Moduldaumenradbezeichnung hat und daß nicht zwei von ihnen dieselbe Bezeichnung haben.
- In der nachfolgenden Phase 452 speichert das Systemsteuerungsmodul 16 die Rückebenekommunikationsparameter in vorab zugeordneten Speicherplätzen in jedem Modul. Diese Parameter geben den Modulen Befehle dahingehend, wie über die Rückebene zu kommunizieren ist. Sobald ein Modul weiß, wie es über die Rückebene 11 zu kommunizieren hat, lädt es seine Speicheradreßzeiger in Speicherplätze im Systemspeicher 69 der Systemsteuerung 16. Diese Adreßzeiger werden von anderen Modulen verwendet, um Zugriff zu den Daten in dem Modul zu erlangen, oder um an es Befehle auszugeben. So lädt beispielsweise jedes Modul die Adressen seiner Unterbrechungen in den Systemstatusabschnitt 201 des Systemspeichers (Fig. 7). Im Verlaufe dieser Phase können die verschiedenen Funktionsmodule nur mit der Systemsteuerung 16 kommunizieren, aber nicht mit irgendeinem anderen Modultyp. Die nächste in Fig. 13 dargestellte Phase 453 der Systeminitialisierung gestattet es den Modulen, miteinander zu sprechen und irgendwelche erforderlichen Daten auszutauschen. Nach Beendigung dieser Phase macht die programmierbare Steuerung 10 bei einem Schritt 454 einen normalen Übergang in den anwenderdefinierten Startmodus, typischerweise entweder "Programmieren" oder "Laufen".
- Das System hat drei Hauptbetriebsmoden: Programmierung, Programmlauf und Störung oder Fehler, wie es von dem Systemsteuerungsmodul 16 festgelegt wird. Jede dieser Moden oder Betriebsarten ist in eine Anzahl interner Moden unterteilt. Der Laufmodus hat beispielsweise einen internen anfänglichen Eingabe-Vorabtast-Modus, der vor der Programmausführung veranlaßt, daß jedes der Fern-E/A-Abtastmodule 20 Daten von dem jeweils zugeordneten E/A-Gestell 17 sammelt und eine anfängliche Eingabebildtabelle 210 erzeugt.
- Im Anschluß an diese Eingabevorabtastung schließt sich eine Programmvorabtastung an, während der eines oder mehrere Anwendersteuerprogramme einmal abgetastet werden, um eine anfängliche Ausgabebildtabelle 211 zu erzeugen. Sobald diese beiden Vorabtastmoden beendet und die Eingabe- und Ausgabebildtabelle 210 und 211 erzeugt worden sind, werden die verschiedenen Ausgaben freigegeben, und der Laufmodus beginnt mit der formellen Ausführung des Anwendersteuerprogramms.
- Um die Formulierung und Ausführung des Anwendersteuerprogramms zu erläutern, muß man verstehen, wie Daten und Befehle innerhalb der programmierbaren Steuerung 10 transferiert werden.
- Es wird wieder insbesondere auf Fig. 1, 2 und 6 Bezug genommen. Jedes E/A-Modul 20 sammelt periodisch Eingabedaten von Sensoren, die mit jedem der Ferngestelle 17 der speicherprogrammierbaren Steuerung verbunden sind. Diese Datenakquisition ist mit den E/A-Abtastungen vergleichbar, die herkömmliche programmierbare Steuerungen vornehmen, wie sie beispielsweise in der US-Patentschrift Nr. 4 442 504 beschrieben sind. Während sich das System im Laufmodus befindet, fordert jedes E/A-Abtastmodul 20 jedes Gestell 17 auf, Daten betreffend den Statur der mit dem Ferngestell verbundenen Sensoren auszusenden.
- Unter Bezugnahme auf Fig. 6 sei ausgeführt, daß das Sammeln von Daten von den Fern-E/A-Gestellen 17 vom Mikroprozessor 140 dadurch vorgenommen wird, daß der E/A-Datenarbitrationsschaltung 130 befohlen wird, die Übertragungsgatter 144 und 146 freizugeben bzw. durchzuschalten. Dadurch werden die Mikroprozessorbusse 131 bis 133 mit den E/A-Bussen 141 bis 143 verbunden. Nachdem die Verbindung der Busse vervollständigt ist, sendet der Mikroprozessor 140 sequentiell Befehle an die Fern-E/A-Gestelle über die SIO 148 und die Leitungstreiber 152 und 153 aus. Aufgrund dieser Befehle übertragen die Ferngestelle 17 ihre Sensoreingabedaten zu-dem E/A-Abtastmodul 20. Die empfangenen Eingabedaten werden zwischenzeitlich im E/A-RAM 158 gespeichert. Das Kommunikationsprotokoll, das zum Sammeln von Daten von den Fern-E/A-Gestellen 17 verwendet wird, ist demjenigen ähnlich, das in herkömmlichen programmierbaren Steuerungen verwendet wird.
- In regelmäßigen Zeitintervallen werden die gesammelten Eingabedaten von dem E/A-RAM 158 zu der Eingabebildtabelle im Haupt-RAM 134 des Moduls transferiert. Dieser Transfer wird dadurch ausgeführt, daß der Mikroprozessor 140 die E/A-Datenarbitrationsschaltung 130 auffordert, die Speicherzugriffbusse 121 bis 123, die Mikroprozessorbusse 131 bis 133 und die E/A-Busse 141 bis 143 miteinander zu verbinden. Ist die Rückebene 11 mit den Speicherzugriffbussen 121 bis 123 nicht verbunden, gibt die E/A-Datenarbitrationsschaltung 130 Steuersignale über die Steuerbusse 121 bis 131 an die Übertragungsgatter 136, 138, 144 und 146 heraus. Infolge dieser Steuersignale verbinden die Übertragungsgatter die drei Gruppen interner Busse. Die E/A-Datenarbitrationsschaltung 130 sendet dann ein Bestätigungssignal an den Mikroprozessor 140, das anzeigt, daß die Verbindung hergestellt worden ist. Nach Empfang des Bestätigungssignals transferiert der Mikroprozessor 140 die Daten zwischen dem E/A-RAM 158 und dem Haupt-RAM 134. Die Eingabedaten werden in der Eingabebildtabelle 212 (Fig. 8) des Haupt-RAM 134 gespeichert. Ist der Transfer beendet, erfolgt durch den Mikroprozessor 140 eine Signalisierung an die E/A-Datenarbitrationsschaltung 130, die Verbindung der internen Busse aufzugeben.
- Zu anderen periodischen Zeitintervallen sendet das Fern-E/A-Abtastmodul 20 Ausgabezustandsdaten an die Fern- E/A-Gestelle 17 aus. Dieser Vorgang ist ähnlich zu demjenigen, der unmittelbar zuvor bezüglich der Eingabestatusdaten beschrieben worden ist. Der Mikroprozessor 140 fordert auf, die internen Modulbusse 121 bis 123, 131 bis 133 und 141 bis 143 miteinander zu verbinden. Sobald diese Verbindung gemacht worden ist, werden die Ausgabebildtabellendaten im Haupt-RAM 134 zum E/A-RAM 158 transferiert. Anschließend wird diese Busverbindung getrennt. Die Ausgabedaten im E/A-RAM 158 werden systematisch an die Fern-E/A-Gestelle 17 über die Serienverbindungen 15 ausgegeben, um die Betätigungsvorrichtungen oder Aktoren an der gesteuerten Anlage entweder zu aktivieren oder zu deaktivieren.
- Wie bereits oben ausgeführt, wird der E/A-RAM 158 verwendet, um die über die Serienverbindungen 15 auszusendenden oder empfangenen Daten zu speichern. Während des Kommunikationsvorgangs hat der Mikroprozessor 140 keinen Zugriff zu der im Haupt-RAM 134 gespeicherten Haupt-E/A- Bildtabelle. Diese Befreiung des Haupt-RAM 134 von Kommunikationsaufgaben als auch die separate interne Buskonfiguration des E/A-Moduls gestatten es anderen Modulen an der Rückebene 11, wie beispielsweise der Systemsteuerung 16 und den Prozessormodulen 18, einen direkten Zugriff zu den E/A-Bildtabellendaten in dem Haupt-RAM 134 zu erlangen. Dieser direkte Zugriff von der Rückebene aus verwickelt nicht den Mikroprozessor 140, der deshalb gleichzeitig die Kommunikation mit den Fern-E/A-Gestellen 17 steuern kann.
- Wünscht die Systemsteuerung 16 oder eines der Prozessormodule 18 den Status einer gegebenen Eingabevorrichtung zu lesen, fordert das betreffende Modul den Zugriff zu den Rückebenebussen 21 bis 23 an, um das E/A-Abtastmodul 20 abzufragen, das die Eingabedaten von dem besonderen Sensor oder der besonderen Eingabevorrichtung erhält. Nach der Zugriffsbewilligung zur Rückebene 11 adressiert das Prozessormodul 18 oder die Systemsteuerung 16 das passende E/A-Abtastmodul 20 Aufgrund dieser Adressierung empfängt die Zwischenbuszugriffssteuerung 128 in dem betreffenden E/A-Abtastmodul 20 ein Zugriffsanforderungssignal über eine Leitung des Steuerbusses 21 der Rückebene 11. Die Zwischenbuszugriffssteuerung signalisiert dann der E/A- Datenarbitrationsschaltung 130, daß eine Zugriffsanforderung für den Haupt-RAM 134 von dem anderen Modul empfangen worden ist. Zu einer geeigneten Zeit, wenn die internen Speicherbusse 121 bis 123 zur Verbindung mit den Rückebenebussen 21 bis 23 zur Verfügung stehen, signalisiert dann die E/A-Datenarbitrationsschaltung 130 der Zwischenbuszugriffssteuerung 128, daß sie die Rückebene und die Speicherbusse über die Übertragungsgatter 124 und 126 miteinander verbinden kann. Die Vollendung dieser Verbindung wird dann durch die Zwischenbussteuerschaltung 128 an das anfordernde Modul über eine Leitung des Rückebenesteuerbusses 21 bestätigt. Das andere Modul liest dann oder schreibt Daten in die E/A-Datenbitstabelle im Haupt-RAM 134. Die Datenübertragung kann ein einziges Datenwort oder einen Block von Wörtern ausmachen. Das anfordernde Modul behält die Steuerung über die Rückebene 11 so lange, bis alle angeforderten Daten vom E/A-Abtaster 20 an es übertragen worden sind. Ist der Zugriff beendet, erfolgt eine entsprechende Signalisierung durch die Zwischenbussteuerschaltung 128 über den Rückebenesteuerbus 21 und die Verbindung zur Rückebene 11 wird aufgetrennt.
- Es ist somit ersichtlich, daß die Konfiguration des E/A-Abtastmoduls 20 anderen Modulen, die an die Rückebene angeschlossen sind, direkten Zugriff zu dem Haupt- RAM 134 des E/A-Abtasters gestattet, ohne daß der Mikroprozessor 140 des Abtasters tätig werden muß. Deshalb kann sich auch der Mikroprozessor anderen Aufgaben zuwenden, wie der Steuerung des Aufsammelns von Sensordaten und des Aussendens von Ausgabebefehlen an die Anlagenaktoren.
- Der Zugriff zu den E/A-Bildtabellendaten durch jeden Programmausführungsprozessor 18 kann bedarfsabhängig oder periodisch erfolgen, wobei dann ein Abbild der gesamten E/A-Datentabelle von den Prozessoren aus den Abtastmodulen 20 gelesen werden können. In der bedarfsabhängigen Betriebsart, wenn also das vom Prozessormodul 18 ausgeführte Anwendersteuerprogramm die Begutachtung eines Sensorstatus anfordert, erlangt das Prozessormodul 18 Zugriff zu den Rückebenebussen 21 bis 23 und fordert Daten für den betreffenden Sensor über den zugehörigen E/A-Abtaster 20 an. Diese Betriebsart wird mit "asynchron" bezeichnet, da der Zugriff zu dem E/A-Abtastmodul 20 nur im Bedarfsfall und nicht auf einer periodischen Grundlage erfolgt, die mit der Aufführung des Anwenderprogramms synchronisiert wäre.
- Alternativ kann der Zugriff auf die Sensoreingabedaten der E/A-Abtastmodule 20 synchron oder periodisch erfolgen. Zu einem vorgegebenen Zeitpunkt innerhalb der Ausführung des Anwendersteuerprogramms durch einen der Programmausführungsprozessoren 18 wird in diesem Fall die Eingabebildtabelle 210 aus jedem E/A-Abtaster 20 ausgelesen und in den lokalen Speicher 106 im Prozessormodul 18 als Kopie abgespeichert. So könnte beispielsweise das Prozessormodul 18 unmittelbar vor dem Beginn des Durchlaufes durch das Anwendersteuerprogramm Zugriff zu der Rückebene 11 erlangen und jedes der E/A-Abtastmodule 20 abfragen, um alle Abtastereingabebildtabellen 210 in den Prozessormodulspeicher 106 zu kopieren. Dadurch wird sichergestellt, daß die während des nachfolgenden Laufes durch das Anwenderprogramm verwendeten Eingabedaten konstant bleiben und daß jede Sprosse unter Verwendung desselben Sensorstatus bewertet wird. Welche dieser beiden Betriebsarten nun verwendet wird, ist dem Anwender bzw. Programmierer überlassen und hängt von den Eigenschaften des besonderen Funktionsplanes und den auszuführenden Anwendersteuerprogrammen ab. Falls vom Anwender nicht anders spezifiziert, arbeitet das System vorzugsweise in der asynchronen Betriebsart.
- Es wird jetzt insbesondere auf Fig. 2 und 8 Bezug genommen. Die Ausgabebildtabelle 211 in jedem E/A-Abtastmodul 20 wird unmittelbar bei einer Änderung des Status eines Aktors aktualisiert, der mit einem der Fern-E/A- Gestelle dieses Moduls verbunden ist. Insbesondere wenn das Anwenderprogramm nach einer Änderung im Status eines gesteuerten Aktors ruft, erlangt der Programmausführungsprozessor 18 Zugriff zum E/A-Abtastmodul 20, wie es zuvor beschrieben worden ist, und liest aus dem E/A-Abtaster- RAM 134 das Ausgabebildtabellenwort aus, das das zu ändernde Bit oder die zu ändernden Bits enthält. Sobald das Prozessormodul 18 eine Kopie des Ausgabebildtabellenwortes empfängt, verändert es den entsprechenden Abschnitt und schreibt das geänderte Wort zurück in die Ausgabebildtabelle 211 desselben Abtastmoduls 20. Während dieses Lese- und Schreibvorganges mit dem RAM 134 des E/A-Abtastmoduls behält das Programmausführungsprozessormodul 18 die Steuerung über die Rückebenebusse 21 bis 23, so daß kein anderes Modul die Ausgabebildtabelle dieses Abtastmoduls 20 lesen oder ändern kann, während das Prozessormodul 18 seine Ausgabefunktion ausführt. Dadurch wird sichergestellt, daß die Ausgabebildtabelle 211 nicht geändert wird oder daß ein anderes Ausführungsmodul überholte Daten verwendet. Es liegt allerdings am Anwender, über die Steuerprogramme sicherzustellen, daß eine gegebene gesteuerte Vorrichtung zu irgendeinem Zeitpunkt lediglich von einem einzigen Prozessormodul 18 aktiviert oder deaktiviert wird.
- Hat ein Modul seine Steuerung über die Rückebene 11 aufgegeben, kann ein anderes Modul im System Zugriff zur Rückebene erlangen. Suchen mehr als ein Modul gleichzeitig den Zugriff, löst die Rückebenearbitrationsschaltung 84 in der Systemsteuerung 16 den Konflikt. Die Arbitrationsschaltung 84 implementiert das rotierende Prioritätsprinzip, das oben beschrieben wurde, wobei die höchste Priorität zum Rückebenenzugriff von einem Modul zum nächsten Modul wandert, und zwar in der Reihenfolge der Nummern der Gestellschlitze. Das Modul in dem am weitesten links befindlichen Gestellschlitz hat anfangs die höchste Priorität, und in Richtung nach rechts nimmt die Priorität von Schlitz zu Schlitz ab. Wenn zu diesem Zeitpunkt zwischen den Modulen im zweiten, vierten und sechsten Schlitz ein Konflikt existiert, erhält das Modul im zweiten Schlitz den Zugriff. Wurde einem Modul der Zugriff bewilligt, verschiebt sich die Priorität um einen Modulschlitz nach rechts. Somit hat jetzt das zweite Modul die höchste und das Modul im ersten Schlitz die niedrigste Priorität.
- Wenn nun die Module im ersten, dritten und achten Schlitz gleichzeitig den Zugriff zur Rückebene 11 suchen, erhält das dritte Modul den Zugriff, da es von den drei angesprochenen Modulen die höchste Priorität hat. Anschließend hat das achte Modul den Zugriff, und schließlich erhält das erste Modul den Zugriff zur Rückebene 11. Die Prioritätsverschiebung erfolgt immer, wenn irgendeines der Module den Zugriff zur Rückebene 11 erlangt. Nachdem das Modul im letzten Schlitz das prioritätshöchste Modul gewesen ist, rotiert die höchste Priorität zurück zum Modul im ersten Schlitz, der am weitesten links liegt.
- Der Systemsteuerungsspeicher 69 kann auch direkt von anderen Modulen an der Rückebene 11 adressiert werden, so daß diese Zugriff zu den Systemdaten erlangen können. Während der Ausführung des Anwendersteuerprogramms beziehen sich die von der Systemsteuerung 16 durchgeführten Hauptfunktionen auf die Handhabung und Ausführung von Kommunikationen auf dem lokalen Netz 28 und mit dem Programmiergerät 24.
- Ein Modul, das Daten vom Systemsteuerungsmodul 16 oder einem E/A-Abtastmodul 20 anfordert, ist in der Lage, den Zugriff zum Haupt-RAM in diesen Modulen direkt über die Rückebene 11 zu erlangen. Wenn allerdings ein Modul den Wunsch hat, einen Block von Daten oder einen Befehl an ein anderes Modul im Gestell 12 auszusenden, muß man eine andere Technik für die Kommunikation zwischen den beiden Modulen verwenden.
- Wie oben angedeutet, können E/A-Daten von einem Modul an der Rückebene 11 direkt zu einem anderen Modul transferiert werden. Dieser direkte Transfer ist möglich, wenn die Daten von ganz spezifischen Speicherdatenstrukturen in dem anderen Modul, wie beispielsweise E/A-Bildtabellen, gelesen oder darin eingeschrieben werden. In dem hier betrachteten Multiprozessorsystem werden jedoch zwischen den Modulen oft andere Formen von Nachrichten übertragen, die nicht zu vordefinierten Datenstrukturen gehören. Für solche Nachrichten ist ein einem allgemeinerem Zweck dienlicher Zwischenmodulkommunikationsprozeß erforderlich. Dieser Prozeß wird hier "Senden von Post" genannt.
- Innerhalb jedes Moduls, das in der Lage ist, Post zu empfangen, ist eine Gruppe Mailboxen vorgesehen, wie es in Fig. 14 dargestellt ist. Die Gruppe enthält Abschnitte für "Prioritätspost" und "normale Post". Jeder Abschnitt hat 16 Mailboxen, von denen jede einen 2-Wort-Speicherplatz hat. Diese 16 Mailboxen gestatten den Austausch von Nachrichten mit Modulen in den acht Schlitzen des Hauptgestells 12 der programmierbaren Steuerung und mit acht Modulen in einem Hilfsgestell (nicht gezeigt). Jede der Mailboxen in jedem Abschnitt entspricht einem der Schlitze in den beiden Gestellen. Während des Konfigurationsvorganges schreibt jedes Modul die Adresse der Oberseite seiner Mailboxgruppe in den Bereich der Systemstatusdatei 201 (Fig. 7), die Daten für dieses Modul enthält. Die Adresse der Mailboxunterbrechung jedes Moduls wird ebenfalls in dem Systemstatusabschnitt 201 des Hauptsystemspeichers 69 gespeichert.
- Eine "Prioritätspost"-Nachricht stellt einen dringenden Befehl dar, den das Empfangsmodul sofort auszuführen hat. Der Befehl ist entweder auszuführen innerhalb der Posthandhabungstask, die den Empfang des Befehls erfaßt, oder er wird zur Verarbeitung zu einer Bestimmungstask weitergeleitet. Die Prioritätspost-Nachricht besteht aus zwei 16-Bit-Wörtern, wie es in Fig. 12A gezeigt ist. Das erste Bit des ersten Worts ist eine Null, das die Nachricht als Prioritätspost kennzeichnet. Das nächste 7-Bit-Feld (GMD) des ersten Wortes enthält die codierte Form des auszuführenden Befehls, der aus der nachstehenden Liste ausgewählt wird:
- Befehlscode Befehlsbeschreibung
- 1H Mailboxbefehlbestätigung
- 2H Funktionskartenschrittausführungsbeginn
- 3H Unterbrechungsroutineausführungsbeginn
- 4H Systemmodusänderung
- 5H Energieeinschaltphasenänderung
- 6H Energieeinschaltungsende
- 7H Aktivsystemhaltoperation.
- Die restlichen Bits des ersten Wortes werden nicht von jedem Befehl verwendet. Das zweite Wort enthält einen Zeiger auf einen Platz im lokalen Empfangsmodulspeicher, der Daten für die Ausführung des Befehls enthält. So kann beispielsweise ein Programmausführungsprozessormodul 18 eine Prioritätspost-Nachricht aus senden, um ein anderes derartiges Modul dahingehend zu informieren, daß es mit der Ausführung eines speziellen Anwenderprogramms für einen vorgegebenen Funktionsplanschritt beginnen soll. In diesem Fall handelt es sich bei dem Befehl (CMD) im ersten Wort um einen 2H-Befehl, der dem Empfangsmodul sagt, daß es mit einem neuen Funktionsplanschritt beginnen soll. Das zweite Wort ist ein Versatzzeiger für die Tabelle mit der Adresse im Empfangsmodulspeicher, wo Information über den Schritt und sein Steuerprogramm abgespeichert sind. Diese Information wird an das Funktionsplaninterpreterprogamm im Empfangsmodul weitergeleitet.
- Unter Bezugnahme auf Fig. 12A und 14 sei ausgeführt, daß zum Aussenden von Post das Ursprungs- oder Quellenmodul 230 zuerst die 2-Wort-Nachricht in seinem Speicher formuliert. Der Transfer der Nachricht wird gesteuert von einer Mail- oder Posthandhabungstask innerhalb des Moduls. Dazu wird auch auf das Flußdiagramm nach Fig. 15 verwiesen. Der Prioritätsposttransferprozeß wird eingeleitet durch das Quellenmodul 230, das über die Rückebene 11 den Zugriff zum Haupt-RAM 69 der Systemsteuerung erlangt, um die Adressen der Postunterbrechung zu erhalten und die Oberseite der Mailboxgruppe 230 im Empfangsmodul 232, und zwar bei einem Schritt 460. Diese Adressen sind in dem Systemstatusabschnitt 201 des Haupt-RAM 69 der Systemsteuerung (Fig. 7) gespeichert. Das Quellenmodul 230 kennt den Index der Oberseite der Mailboxgruppe 233, um Zugriff zu seinem Mailboxschlitz im Empfangsmodul zu erlangen. Die Posthandlingtask im Quellenmodul 230 sucht dann erneut Zugriff zur Rückebene 11 bei einem Schritt 461. Wenn bei einem Schritt 462 der Zugriff zur Rückebene 11 gewährt wird, überprüft das Quellenmodul 230 das erste Wort seiner Prioritätsmailbox im Empfangsmodulspeicher 234 bei einem Schritt 463. Ist das erste Wort der Mailbox nicht gleich Null, was bedeutet, daß eine vorangegangene Nachricht noch in der Mailbox ist, wartet das Quellenmodul eine gewisse Zeit und unternimmt dann einen erneuten Versuch. Enthält das erste Mailboxwort ausschließlich Nullen, schreibt das Quellenmodul 230 die 2-Wort-Nachricht mit dem Befehl und dem Adressenversatzzeiger in seinen Schlitz in der Empfangsmailboxliste bei einem Schritt 464 und sendet dann ein Unterbrechungswort an die Mailboxunterbrechungsadresse des Empfangsmoduls bei einem Schritt 465 aus.
- Als Antwort auf die Unterbrechung liest die Posthandhabungstask im Empfangsmodul 232 den Prioritätsposteintrag. Ist der Eintrag ein Befehl zum Starten eines neuen Funktionsplanschrittes, erfolgt ein Eintritt in die Warteschlange für das Funktionsplaninterpreterprogramm. Eine Bestätigung wird dann zurückgeschickt an das Quellenmodul 230 mittels eines Eintrags in seine Mailboxliste und einer Unterbrechung. Zu dieser Zeit lädt auch das Empfangsmodul den Mailboxschlitz des Quellenmoduls mit Nullen, um den Empfang einer anderen Nachricht vorzubereiten.
- Zum Transfer von mehr als zwei Datenwörtern wird typischerweise die "normale Post" verwendet, obgleich man die oben beschriebenen Befehlsnachrichten auch an diese Mailboxschlitze senden kann. Die normale Post wird beispielsweise während der Systemeinschaltung benutzt, um an jedes Modul Konfigurationsdaten zu senden. Sie wird darüber hinaus während normaler Operationen benutzt, um Nachrichten, die keine unmittelbare Antwort oder Aktion erfordern, auszusenden. Unter Bezugnahme auf Fig. 14 sei erläutert, daß ein Quellenmodul 230, wenn es einige Datenwörter zu transferieren hat, die Daten in einen Block 236 in seinem lokalen Speicher 238 assembliert. Es speichert dann in einem anderen Block des Speichers 240 alle Parameter, die für das Ziel- oder Bestimmungsmodul notwendig sind, um den Zugriff zu den Daten im Quellenmodulspeicher zu erlangen und den Zugriff zum Quellenmodul 230 zu bestätigen. Diese Parameter haben ein vordefiniertes Format, das ähnlich zu demjenigen ist, das in herkömmlichen programmierbaren Steuerungen verwendet wird, und diese Parameter enthalten die Adresse der Datennachricht, ihre Länge, die Bestimmungsmodultask, die die Daten verwendet, und andere zum Transfer der Daten erforderliche Information.
- Die 2-Wort-Nachricht wird im Quellenmodulspeicher 238 formuliert. Das Format der Nachricht ist in Fig. 12B dargestellt. Das erste Bit des ersten Wortes ist eine Eins, die die Nachricht als normale Post kennzeichnet. Die nächsten drei Bits sind alle jeweils Null, womit eine Nachricht vom Datenblocktyp im Gegensatz zu einem Befehl gekennzeichnet wird. Die übrigen 12 Bits des ersten Wortes und alle 16 Bits des zweiten Wortes enthalten die Anfangsadresse der Transferparameter im Quellenmodul.
- Das Quellenmodul 230 teilt dann seiner Posthandhabungstask mit, die normale Postnachricht auszusenden. Wie bei der Prioritätspost erlangt die Posthandhabungstask Zugriff zur Rückebene 11 und überprüft ihren normalen Mailboxschlitz im Empfangsmodulspeicher, um sicherzustellen, daß er leer ist. Besteht das erste Wort des Mailboxschlitzes im Bestimmungs- oder Zielmodul nur aus Nullen, wird die 2-Wort-Normalnachricht in den Schlitz geschrieben. Sobald der Mailboxschlitz im Empfangsmodul geladen ist, wird das Unterbrechungswort an die Empfangsmodulpostunterbrechungsadresse ausgesendet.
- Sobald das Empfangsmodul 232 unterbrochen ist, tastet es seine Mailboxen nach Nachrichten ab. Im Gegensatz zur Prioritätspost verarbeitet das Empfangsmodul 232 nicht unmittelbar die normale Post, sondern gibt den Posteingang oder Posteintrag in eine Warteschlange zur Handhabung, wenn die Zeit es zuläßt. Die Handhabung der normalen Post ist eine prioritätsmäßig niedrigere Task im Vergleich zur Ausführung des Anwendersteuerprogramms. Hat das Empfangsmodul 232 Zeit zur Verfügung, erlangt es über die Rückebene 11 Zugriff zum Quellenmodulspeicher 238 und liest die Information im Parameterblock 240. Das Empfangsmodul verwendet dann diese Parameter, um über den oben beschriebenen Datenakquisitionsprozeß den Nachrichtendatenblock 236 in seinen lokalen Speicher 234 zu kopieren. Im Anschluß an das Kopieren der Daten sendet das Empfangsmodul 232 über die normale Post eine Bestätigung an das Quellenmodul 230 aus und setzt den normalen Mailboxschlitz auf Nullen. Die Daten können dann vom Empfangsmodul 232 verarbeitet werden.
- Nachdem man versteht, wie Daten und Befehle zwischen Modulen übertragen werden, kann jetzt die Ausführung der verschiedenen Arten von Programmen beschrieben werden.
- Die programmierbare Steuerung kann einige allgemeine Arten von Programmen ausführen, wie beispielsweise Maschinenoperationsprogramme, unabhängige Hintergrundprogramme, Unterbrechungssubroutinen und Störungs- oder Fehlersubroutinen. Die Maschinenoperationsprogramme werden vom Anwender der programmierbaren Steuerung entwickelt, um sie auf eine besondere Maschine oder einen besonderen Prozeß des Anwenders anzuwenden. Für sehr komplexe Prozesse ist das Maschinenoperationsprogramm durch einen sequentiellen Funktionsplan definiert, der jeden Hauptschritt des Prozesses aufzeigt. Ein separates Anwendersteuerprogramm wird entwickelt, um die Funktionen jedes Schrittes durchzuführen. Diese Anwendersteuerprogramme können in einer Leiterdiagrammsprache (Ladder-Diagramm-Sprache) oder Kontaktplansprache geschrieben werden, oder aber auch in einer anderen höheren Sprache, die vom Programmieranschlußgerät unterstützt ist. Da das bevorzugte Ausführungsbeispiel kompilierte Versionen der Anwendersteuerprogramme ausführt, kann man Assembliersprachen und höhere Sprachen, wie beispielsweise BASIC, verwenden, um den Quellcode für das Anwendersteuerprogramm zu erzeugen. Die Anwendersteuerprogramme sind zur Ausführung verschiedenen Prozessormodulen 18 zugeordnet. Die hier vorliegende programmierbare Steuerung Koordination dieser parallelen Verarbeitung in Übereinstimmung mit dem einzigen Maschinenoperationsprogramm vor.
- Die unabhängigen Hintergrundtasks sind Anwenderprogramme, die bezüglich der Ausführung den Steuerprogrammen untergeordnet sind und die für längere nicht zeitkritische Operationen benutzt werden können, wie beispielsweise zur Datenakquisition von anderen Computern, oder zur Erzeugung von Berichten. Unterbrechungsroutinen gestatten die Ausführung von Operationen höherer Priorität beim Auftreten eines vorgegebenen Ereignisses, wohingegen Störungs- oder Fehlerroutinen einen geeigneten Wiederanlauf von einem erfaßten Fehlerzustand aus entweder in der programmierbaren Steuerung 10 oder in der gesteuerten Anlage gestatten.
- Jedes Prozessormodul 18 hat sein eigenes Operationssystem, das vollkommen unabhängig von den anderen Modulen 18 im System läuft und das nicht beeinträchtigt wird durch Verarbeitungsvorgänge von diesen anderen Modulen. Routinen am selben Prozessormodul 18 teilen die Betriebs- oder Hilfsmittel dieses Moduls, wobei das Operationssystem entscheidet, wie viel Verarbeitungszeit jeder der gleichzeitig laufenden Routinen zugeordnet wird.
- Um eine ordnungsgemäße Ausführung der verschiedenen Arten von Programmen durch ein Prozessormodul zu gewährleisten, wird ein Prioritätssystem erstellt. Die höchste Priorität haben verschiedene Unterbrechungsroutinen, die so zeitkritisch sind, daß ihre Ausführung niemals unterbrochen werden darf. Das nächste Prioritätsniveau enthält alle anderen Unterbrechungen, die normalerweise bis zu ihrer Vollendung laufen, es sei denn, daß eine Toppprioritätsunterbrechung oder eine Störung oder ein Fehler auftritt.
- Die Unterbrechungsroutinen enthalten Prozessoreingabeunterbrechungen und auswählbare zeitgesteuerte Unterbrechungen. Prozessoreingabeunterbrechungen werden durch eine extern erzeugte Eingabe in Gang gesetzt und für Hochprioritätsroutinen verwendet, die nur beim Auftreten einer speziellen Eingabebedingung ausgeführt werden sollen. Zur Anpassung an die Prozessoreingabeunterbrechungen hat jedes Prozessormodul 18 eine Unterbrechungsschnittstelle 99 (Fig. 4), die Unterbrechungssignale von externen Geräten erhält und sie handhabt. Auswählbare zeitgesteuerte Unterbrechungsroutinen werden in regelmäßigen spezifizierten Zeitabständen von der Echtzeituhr des Systems in Gang gesetzt. Jeder Unterbrechung ist eine Priorität zugeordnet, und wenn mehr als eine Unterbrechung anhängig sind, wird diejenige mit der höheren Priorität als erste ausgeführt.
- Die Ausführung der verschiedenen anderen Programmarten wird durch Gruppieren der Programme vorgenommen und durch Zuordnen eines Anteils der Verarbeitungszeit an jede Gruppe. Ein vorgegebenes Ausmaß der Ausführungszeit kann der Anwender während der Systemkonfiguration zur Durchführung von nicht zeitkritischen Operationen angeben. Dazu zählen beispielsweise Hintergrundtasks, die Handhabung normaler Zwischenmodulnachrichten, Kommunikation mit anderen Computern und verschiedenartige Taks. Solche Operationen niederer Priorität werden kollektiv "Hintergrundtasks" genannt, wobei allerdings anzumerken ist, daß diese Hintergrundtasks nur eine Art dieser Operationen zu sein brauchen. Typischerweise kann der Anwender 20, 30, 40 oder 50% der Verarbeitungszeit jedes Prozessormoduls 18 zur Handhabung solcher Tasks auswählen. Das Operationssystem teilt die verschiedenen Operationen dieser Art während der ihnen zugeordneten Zeit in Zeitscheiben auf. Wenn die zugeordnete Zeit abgelaufen ist, wird die Verarbeitung dieser Tasks unterbunden, bis ein weiteres Intervall für ihre Verarbeitung auftritt. Führt das Prozessormodul gerade kein Steuerprogramm aus, steht die gesamte Verarbeitungszeit für die Hintergrundtasks zur Verfügung, falls dies notwendig sein sollte.
- Die restliche Verarbeitungszeit ist der Ausführung des Maschinenoperationsprogramms zugeordnet. Da diese Task normalerweise zeitkritisch ist, ist das Zeitausmaß für die Hintergrundtaskverarbeitung im allgemeinen eine Funktion davon, wieviel Zeit für das Maschinenoperationsprogramm übrig bleiben muß. Das Maschinenoperationsprogramm läuft so lange weiter, bis eine zeitgesteuerte Unterbrechung den Start eines Hintergrundtaskintervalls signalisiert.
- Die vorliegende programmierbare Steuerung sieht ein verbessertes System zum Ausführen eines Maschinenoperationssteuerprogramms vor. Deshalb wird die Ausführung eines solchen Programms im einzelnen beschrieben. Ein Funktionsplanprogramm definiert den gesamten Steuerungsprozeß als eine Reihenfolge von Schritten und liefert den Mechanismus zum Koordinieren der gleichzeitigen Ausführung der verschiedenen Teile eines einzigen Maschinenoperationsprogramms parallel durch mehrere Programmausführungsprozessormodule. Vereinbarungsgemäß folgt jedem Schritt eine Übergangsbedingung, die angibt, ob der Schritt vollendet ist. Ein separates Anwendersteuerprogramm, beispielsweise ein Kontaktplanprogramm, wird für jeden Schritt und Übergang des Funktionsplanes aufgestellt.
- Das Maschinenoperationsprogramm wird auf dem intelligenten Anschlußgerät 24 oder auf einem Personalcomputer oder einem Hostcomputer geschrieben, wobei diese Computer über das lokale Netz 28 angeschlossen sein können. Diese Geräte enthalten die notwendige Software, so daß der Programmierer den Funktionsplan und die Anwendersteuerprogramme verfassen kann. Das Anschlußgerät oder die Programmiercomputer können ebenfalls jeweils das Anwendersteuerprogramm in Anweisungen kompilieren, die in der Maschinensprache dargestellt und zur direkten Ausführung durch eines der Prozessormodule 18 bestimmt sind. Benutzt man für das Steuerprogramm ein Kontaktplanprogramm, ist die Technik zum Erstellen des Programms die gleiche wie bei herkömmlichen programmierbaren Steuerungen. Der einzige Unterschied ist die Kompilierung des kompletten Programms.
- Das Verfassen oder Erstellen des Funktionsplanes ist bei der vorliegenden programmierbaren Steuerung anders als bei herkömmlichen Steuerungen. Der Funktionsplan wird auf dem Schirm des Programmiergeräts 24 oder eines Computers graphisch konstruiert. Die dafür erforderliche Software und Technik sind vergleichbar mit denjenigen Mitteln, die bei herkömmlichen programmierbaren Steuerungen eingesetzt worden sind. Anders als bei herkömmlichen Steuerungen produziert jedoch der Funktionsplan keinen ausführbaren Code, sondern eine Gruppe von Dateien, die man sich als Direktive vorzustellen hat, welche der programmierbaren Steuerung die Anweisung geben, welches Anwendersteuerprogramm auszuführen ist, wann dies zu tun ist und welches Prozessormodul dazu zu verwenden ist.
- Ein Beispiel eines Funktionsplanes ist in Fig. 10 dargestellt. Jede Verarbeitungsstufe des Funktionsplanes ist durch ein rechteckiges Kästchen gekennzeichnet, beispielsweise durch das Kästchen 403, und jeder Übergang von einem Schritt zu einem anderen ist durch eine horizontale Linie gekennzeichnet, beispielsweise durch die Linie 402. Das rechteckige Doppelkästchen 400 kennzeichnet den Anfangsschritt des Funktionsplanes. Wie bei Funktionsplänen für herkömmliche programmierbare Steuerungen enthält der Schritt 400 den Namen einer Datei im Speicher (beispielsweise DATEI 1), die das für diesen Schritt auszuführende Anwendersteuerprogramm enthält. Anders als bei herkömmlichen Funktionsplänen enthält das Kästchen 400 auch eine Angabe (P1, P2 usw.) des Prozessormoduls 18, das für diesen besonderen Funktionsplanschritt das Anwendersteuerprogramm ausführen soll. Die hier beschriebene programmierbare Steuerung 10 hat zwei Prozessormodule 18, von denen das eine mit P1 und das andere mit P2 bezeichnet ist, obgleich noch zusätzliche Prozessormodule im Gestell 12 vorgesehen werden können. Das Anwendersteuerprogramm für den Schritt 400 soll beispielsweise vom ersten Prozessormodul P1 ausgeführt werden, wobei dann dieses Prozessormodul das Steuerprogramm wiederholt so lange ausführt, bis eine programmierte Bedingung erfüllt ist bzw. auftritt. Diese Bedingung ist durch einen Übergang (beispielsweise bei 402) unmittelbar unter dem Kästchen (400) im Funktionsplan dargestellt. Typischerweise ist der Übergang 402 durch ein Einzelsprossenkontaktplanprogramm definiert, das auf dem selben Prozessormodul wie der zugeordnete Schritt ausgeführt wird, beispielsweise durch P1. Wird die Sprosse als wahr befunden, wird die Ausführung des Anwendersteuerprogramms für den Schritt 400 beendet, und die Programmausführung schreitet zum nächsten Funktionsplanschritt 403 voran. Der in Fig. 10 dargestellte Abschnitt des Funktionsplanes, der den Schritt 400, den Übergang 402 und den Schritt 403 enthält, nennt man typischerweise ein "Sequenz"-Konstrukt, und zwar deswegen, weil jeder Schritt sequentiell dem anderen folgt.
- Der nachfolgende Schritt 403 hat drei separate Programm- Zweige, von denen lediglich einer zur Ausführung ausgewählt wird, was von der entsprechenden Übergangsbedingung abhängt. Die Auswahl eines von mehreren Abzweigen wird "Selektions"- Konstrukt genannt. Der erste Zweig enthält einen Anfangsübergang 404, der durch das in der Datei 12 enthaltene Anwendersteuerprogramm definiert ist, und einen Verarbeitungsschritt 407, der durch das in der Datei 3 enthaltene Anwendersteuerprogramm definiert ist. Dem Schritt 407 folgt eine Beendigungsübergangsbedingung 410, die in der Datei 15 enthalten ist. In ähnlicher Weise enthält der mittlere Zweig einen Anfangsübergang 405, einen Verarbeitungsschritt 408 und einen nachfolgenden Beendigungsübergang 411. Der dritte und letzte Zweig des Selektionskonstrukts besteht aus einem Anfangsübergang 406, einem Hauptverarbeitungsschritt 409 und einem Beendigungsübergang 412. Dem Übergang 412 folgt eine GOTO-Anweisung, die bei ihrer Ausführung veranlaßt, daß das Programm zu einem Punkt springt, wo die angegebene Bezeichnung auftritt. In diesem Fall springt das Programm zu der Bezeichnung "BRAD" vor dem Schritt 419 am Boden des Funktionsplanes. Alle Anfangszweigübergangsdateien 12, 13 und 14 sind gespeichert und werden ausgeführt vom selben Prozessormodul (P1) wie der vorausgegangene Funktionsplanschritt (403). Da nur einer der drei Zweige des Selektionskonstrukts ausgeführt wird, kann zu ihrer Verarbeitung ein einziges Prozessormodul 18 bereitgestellt werden, in diesem Fall das erste Prozessormodul P1. Die verschiedenen Zweige können aber auch prinzipiell zur Ausführung verschiedenen Prozessormodulen 18 zugeordnet werden.
- Bei Beendigung des vorangegangenen Funktionsplanschrittes 403, der dem Selektionskonstrukt vorausgeht, werden die Bedingungen der Anfangsübergänge 404 bis 406 in jedem Zweig sequentiell überprüft. Der erste Anfangsübergang, der als wahr ermittelt wird, bestimmt, welcher der Zweige anschließend ausgeführt wird. Wenn die durch das Anwendersteuerprogramm in der Datei 13 definierte Bedingung betreffend den Übergang 405 als erste wahr wird, dann wird lediglich der mittlere Zweig mit dem Schritt 408 ausgeführt. Die Vollendung des Steuerprogramms für den Schritt 408 wird durch den Endeübergang 411 in der Datei 16 angezeigt. Wenn dieser Übergang wahr wird, transferiert das Programm zum Schritt 413, der in der Datei 6 enthalten ist, wobei dieser Schritt 413 dann vom zweiten Prozessor P2 ausgeführt wird.
- Sobald der Schritt 413 vollendet ist, wie es durch einen Übergang 414 angegeben wird, tritt der Funktionsplan in ein "Simultan"-Konstrukt ein. Ein Simultankonstrukt enthält eine Vielzahl Funktionsplanzweige, von denen jeder wenigstens einen Schritt aufweist. Wie bereits der Konstruktname andeutet, sollen die Zweige gleichzeitig ausgeführt werden. Im vorliegenden Fall sollen drei Prozessorschritte 415 bis 417 gemeinsam ausgeführt werden. Der erste Schritt 415 enthält das in der Datei 7 gespeicherte Anwendersteuerprogramm, das vom ersten Prozessormodul P1 auszuführen ist. Das Programm für den zweiten Zweigschritt 416 ist in der Datei 8 abgespeichert und soll ebenfalls vom ersten Ausführungsmodul P1 ausgeführt werden, wohingegen der dritte Zweigschritt 417, der durch ein Steuerprogramm in der Datei 9 dargestellt ist, dem zweiten Prozessor P2 zugeordnet ist. Da die Dateien 7 und 8 beide zur Ausführung dem ersten Prozessormodul P1 zugeordnet sind, werden die Anwendersteuerprogramme in jeder dieser Dateien miteinander verkettet (d. h. aneinandergereiht, um sequentiell zu laufen). Diese Verkettung ist derjenigen ähnlich, wie sie bereits in vorhandenen programmierbaren Steuerungen praktiziert wird. Bei herkömmlichen programmierbaren Steuerungen müßten allerdings alle Simultankonstruktdateien verkettet oder aufgereiht werden, einschließlich der Datei 9. Bei dem hier beschriebenen System ist jedoch die Datei 9 zur Ausführung dem zweiten Prozessormodul P2 zugeordnet, wohingegen die beiden Dateien 7 und 8 vom ersten Prozessor P1 auszuführen sind. Hätte die programmierbare Steuerung 10 drei separate Prozessormodule 18, könnte der Funktionsplanschritt in allen drei Zweigen jeweils von einem anderen Prozessormodul ausgeführt werden.
- Der Simultankonstruktanteil des Funktionsplanes nach Fig. 10 könnte beispielsweise einen Fertigungsprozeß steuern, bei dem das Anwendersteuerprogramm in der Datei 7 den Fertigungsprozeß dergestalt steuert, daß verschiedene Sensoren gelesen und als Antwort darauf verschiedene Vorrichtungen an der Fertigungsanlage aktiviert oder deaktiviert werden. Die Datei 8 könnte ein Steuerprogramm enthalten, das am Anschlußgerät 24 den Status des Prozesses darstellt, der vom Programm in der Datei 7 gesteuert wird. Das Anwendersteuerprogramm in der Datei 9 könnte andere Sensoren überwachen und einen Alarm auslösen, falls irgendwelche dieser Sensoren das Auftreten vorgegebener Fertigungsfehler anzeigen.
- Der Übergang aus dem Simultankonstruktabschnitt erfolgt hier in Form eines "Konvergenz"-Konstrukt. Dieses Konstrukt enthält einen einzigen Übergangsschritt 418, bei dem das Anwendersteuerprogramm in der Datei 19 auf dem zweiten Prozessormodul P2 ausgeführt wird, und zwar im Anschluß jeweils an die Abtastung des Anwendersteuerprogramms in der Datei 9. Ist der Übergang 418 wahr, ist die Ausführung aller Zweige des Simultankonstrukt am Ende ihrer derzeitigen Programmabtastung zu Ende. Wie es oben unter Bezugnahme auf die Datenstruktur der Systemsteuerung 16 in Fig. 7 erläutert wurde, enthält die Systemunterstützungsdatei 203 einen Speicherbereich für die Schrittzähler der Simultanabschnitte des Funktionsplanes.
- Einer dieser Zähler wird beim Eintritt in den Simultanabschnitt mit der Anzahl der Simultanverarbeitungsschritte im Konstrukt geladen. Ist die Übergangsbedingung 418 erfüllt, wird dieser Zähler dekrementiert, wenn jeder der Schritte 415 bis 417 seine Programmabtastung vollendet hat, und kommt dann zu einem Stopp. Hat der Zähler Null erreicht, sind alle Simultanschritte vollendet, und es kann der Übergang zu den nächsten Schritten 419 und 421 im Anschluß an das Konvergenzkonstrukt erfolgen.
- In herkömmlichen Systemen mußten die drei Funktionsplanschritte 415 bis 417 (Fig. 10), die gleichzeitig ausgeführt werden sollen, zur Ausführung durch einen einzigen Prozessor verkettet, also nacheinander in Form einer Kette ausgeführt werden, und die Ausführung eines gegebenen Anwendersteuerprogramms fand nur einmal beim Durchlaufen aller drei Programme statt. Unter Bezugnahme auf das hier vorliegende Beispiel und unter der Annahme, daß das Steuerprogramm in der Datei 9 eine Alarmfunktion ist, wurde dieses Programm erst nach Vollendung der Abtastung der Anwendersteuerprogramme in den Dateien 7 und 8 abgetastet. Demgegenüber wird bei dem hier beschriebenen Mehrprozessorsystem, das eine echte parallele Verarbeitung vorsieht, das Anwendersteuerprogramin für die Alarmfunktion wiederholt von seinem eigenen Prozessormodul P2 ausgeführt, ohne daß dadurch andere Anwendersteuerprogramme beeinträchtigt oder damit in Kette anzuordnen wären. Dadurch können die zeitkritischen Bedingungen häufiger überwacht werden, als es in einem Einzelprozessorsystem möglich ist.
- Die graphische Darstellung des Funktionsplanes an sich wird von der programmierbaren Steuerung nicht ausgeführt. Sie wird allerdings von der Programmieranschlußgerätsoftware herangezogen, um für jeden der Prozessormodule 18 eine Gruppe Datendateien zu assemblieren. Insbesondere wird der Funktionsplan auf eine Reihe Deskriptordateien reduziert, die die Operationen eines Abschnitts des Funktionsplanes beschreiben. Jeder Deskriptor enthält Daten, die das Anwendersteuerprogramm für einen Schritt im Funktionsplan identifizieren, Daten, die den Ende- oder Beendigungsübergang identifizieren, und Daten, die den Deskriptor identifizieren (oder sein Prozessormodul), gemäß dem der nächste Abschnitt des Funktionsplanes ausgeführt werden soll. Diese Deskriptordateien sind im Prozessormodul 18 gespeichert und im Funktionsplan angegeben. Die Funktionsplaninterpretersoftware in jedem Prozessormodul 18 verwendet die jeweiligen Deskriptordateien, um die Ausführung jedes Anwenderprogramms zu steuern.
- Beispielsweise wird auch unter Bezugnahme auf den beispielhaften Funktionsplan nach Fig. 10 eine Masterdeskriptordateitabelle von dem Programmiergerät 24 erzeugt, wie sie im Fig. 11A dargestellt ist. Die Deskriptoren fallen in vier unterschiedliche Kategorien, die jeweils dem Funktionsplankonstrukt entsprechen, (d. h. Sequenz-, Selektions-, Simultan- und Konvergenzkonstrukt), das den Deskriptor erzeugte. Unter Bezugnahme auf Fig. 10 und 11A stellt der erste Deskriptor 430 den Sequenzabschnitt des Funktionsplanes dar und sein Inhalt ist auf der rechten Seite von Fig. 11A gezeigt. Das erste Wort des Deskriptors enthält einige Bits, T, die den Typ der Deskriptordatei angeben, in diesem Fall einen Sequenztyp. Der restliche Abschnitt des ersten Wortes identifiziert die Nummer der Datei, die das Anwendersteuerprogramm enthält, das für den entsprechenden Funktionsplanschritt auszuführen ist. Bei dem betrachteten Beispiel gibt der Funktionsplanschritt 400 das in der Datei 1 enthaltene Anwendersteuerprogramm an, das vom ersten Prozessormodul P1 auszuführen ist. Der erste Deskriptor 430 enthält auch die Nummer der Übergangsdatei, die die aufzutretende Bedingung spezifiziert, bevor das Anwendersteuerprogramm sein Ende finden soll. Die Datei 11 ist die Übergangsdateinummer im ersten Deskriptor 430, wie es beim Punkt 402 im Funktionsplan spezifiziert wird. Der Deskriptor 430 identifiziert auch die nächste Deskriptordatei, die bei Vollendung der derzeitigen Deskriptordatei zu verwenden ist, und das Prozessormodul 18, in welchem sie gespeichert ist. Bei dem betrachteten Beispiel bezeichnet der erste Deskriptor 430 den "Deskriptor 2" als die nächste Deskriptordatei, die der Ausführung durch das erste Prozessormodul P1 zugeordnet ist.
- Die zweite Deskriptordatei 432 in Fig. 11A wird aus dem Selektionskonstrukt des Funktionsplanes in Fig. 10 erzeugt. Das erste Wort im zweiten Deskriptor 432 gibt an, daß es vom Selektionstyp ist und daß die Dateinummer 2 das Anwendersteuerprogramm für diesen Schritt enthält. Der Rest des Deskriptors 2 enthält eine Anordnung von Übergängen und ihre entsprechende nächste Deskriptordateinummer und den Prozessor. Wie es beispielsweise aus dem Funktionsplan nach Fig. 10 hervorgeht, gibt das erste Element der Anordnung die Übergangsdatei 12 an, und der nächste Deskriptor ist der Deskriptor 3. Das zweite Element der Anordnung gibt die Übergangsdatei 13 und den Deskriptor 4 an. Der letzte Eintrag in der Anordnung gibt die Übergangsdatei 14 an, der der nächste Deskriptor 5 folgt.
- Die Deskriptoren für die drei Selektionszweige (Deskriptoren 3, 4 und 5) sind vom Sequenztyp und haben das gleiche Formal wie der erste Deskriptor 430. In den beiden Deskriptoren 3 und 4 ist der sechste Deskriptor als die nächste Deskriptordateinummer angegeben. Die nächste Deskriptordateinummer im Deskriptor 5 für den dritten Selektionszweig ist allerdings der zehnte Deskriptor für den Schritt 419, und zwar wegen der GOTO-Anweisung im Funktionsplan.
- Der nächste Deskriptortyp ist dargestellt durch den sechsten Deskriptor 434 in Fig. 11A, der hervorgegangen ist aus dem Simultankonstrukt des Funktiansplanes nach Fig. 10. Der sechste Deskriptor 434 enthält Information betreffend seinen Typ, die Steuerprogrammdateinummer und eine auszuführende einzige Übergangsbedingungsdatei. Dieser Deskriptor 434 enthält auch eine Anordnung der nächsten Deskriptordateien, die die Deskriptoren für jeden der Simultankonstruktzweige angeben, in diesem Beispiel die Zweigschritte 415 bis 417. Jeder dieser nächsten Deskriptoren wird ausgeführt von dem von ihm bezeichneten Prozessormodul 18, wenn die Übergangsbedingung auftritt.
- Die Datei mit dem letzten Deskriptortyp ist ein Konvergenzdeskriptor, der die Ausführung aller gleichzeitig auszuführenden Zweige steuert, beispielsweise der Schritte 415 bis 417 im Funktionsplan nach Fig. 10. Ein Konvergenzdeskriptor wird für jeden Zweig erzeugt. Die Zweigschritte 415, 416 und 417 sind dargestellt durch die Deskriptoren 7, 8 und 9 in Fig. 11A. Alle Konvergenzdeskriptordateien, wie es die Deskriptoren 435 und 436 zeigen, enthalten ein Wort mit einigen Bits (T), das den Deskriptortyp und die Nummer der Datei angibt, die das Anwendersteuerprogramm für diesen Funktionsplanschritt enthält. Jede Konvergenzdeskriptordatei enthält auch einen Zeiger auf die simultane Zähleradresse in der Systemunterstützungsdatei 203 im Speicher des Systemsteuerungsmoduls 16. Wie es im Verlaufe der Beschreibung der Funktionsplaninterpretersoftware bezüglich des Konvergenzabschnitts augenscheinlich ist, wird der Simultanzähler verwendet, um die Vollendung der Ausführung in allen Simultanzweigen festzustellen. Alle Konvergenzzweigdeskriptordateien enthalten auch die Nummer der als nächstes auszuführenden Deskriptordatei und das Prozessormodul, das sie enthält. Die Konvergenzdeskriptordatei für den rechts außen liegenden Zweig, bei diesem Beispiel der neunte Konvergenzdeskriptor 436, identifiziert auch die Datei, die den Übergangszustand enthält, bei dessen Auftreten die Simultanausführung beendet ist.
- Sobald alle der einzelnen Deskriptoren vom Programmieranschlußgerät 24 assembliert sind, werden sie in Übereinstimmung mit dem besonderen Prozessormodul P1 oder P2, das ihrer Interpretation zugeordnet ist, in Gruppen sortiert. Die verschiedenen Anwendersteuerprogramme, die in den Deskriptoren spezifiziert sind, werden in ähnlicher Weise vom Prozessormodul sortiert. Die Deskriptordaten und Anwenderprogrammdateien werden dann vom Programmiergerät 24 in das geeignete Prozessormodul 18 der programmierbaren Steuerung 10 transferiert. Die Funktionsplandeskriptoren 1 bis 5, 7 und 10 und die Anwendersteuerprogramme in den Dateien 1 bis 5, 7, 10 bis 17 und 20 werden dann beispielsweise in eine einzige Datenstruktur assembliert, wie es aus Fig. 113 hervorgeht. Diese Datenstruktur wird in den Programmspeicherbereich 313 des ersten Programmausführungsprozessormoduls P1 heruntergeladen. Die Deskriptoren und die Anwendersteuerprogrammdateien für die restlichen Schritte und Übergänge werden in eine andere Datenstruktur assembliert, und zwar für das zweite Datenprozessormodul P2, wie es aus Fig. 11C hervorgeht.
- Sobald die sortierten Dateien in die jeweiligen Prozessormodule 18 heruntergeladen worden sind, wird die programmierbare Steuerung 10 in den "Lauf"-Modus gebracht. Jedes Prozessormodul 18 enthält ein Funktionsplaninterpreterprogramm, das die in seinem RAM 106 gespeicherten Deskriptoren interpretiert und die von den Deskriptoren aufgerufenen Anwendersteuerprogramme ausführt. Ist die Ausführung eines Maschinenoperationsschrittes beendet, beispielsweise bei Erfüllung einer Übergangsbedingung, kann das Interpreterprogramm mit der Interpretation der nächsten Deskriptordatei beginnen oder einem anderen Prozessormodul 18, das den nächsten Deskriptor enthält, mitteilen, mit der Interpretation des Deskriptors zu beginnen. Wie es von den Deskriptoren angefordert wird, können ein oder mehrere Prozessormodule verschiedene Abschnitte des Maschinenoperationsprogramms gleichzeitig ausführen.
- Fig. 16 bis 19 zeigen
- Flußdiagramme des Programms, das jedes Prozessormodul 18 (Fig. 4) befähigt, die verschiedenen Typen oder Arten von Deskriptoren zu interpretieren und zu verarbeiten. Die Verarbeitung beginnt bei einem Schritt 590 im obersten Teil von Fig. 16 mit der Maßnahme, daß der Mikroprozessor 98 eine Liste aktiver Deskriptordateinummern überprüft, die im RAM 106 gespeichert sind. Diese Aktivliste enthält eine Bezeichnung jeder Deskriptordatei, die gerade vom Prozessormodul 18 interpretiert wird. Sind keine Deskriptoren aufgelistet, geht das Prozessormodul bei einem Schritt 609 in einen Ruhezustand über, in welchem es so lange bleibt, bis es einen Verarbeitungsbefehl erhält. Enthält die Liste einen Eintrag, wird bei einem Schritt 592 der oberste Deskriptor von der Aktivliste genommen und die übrigen Einträge, wenn welche vorhanden sind, werden in der Liste nach oben geschoben. Der Mikroprozessor 98 überprüft dann die Bits, die den Typ des Deskriptors angeben. Aufgrund des Deskriptortyps zweigt das Programm bei einem Schritt 600 zu einem von vier Abschnitten ab, und zwar in Abhängigkeit davon, ob es sich bei dem Deskriptor um einen Deskriptor vom Selektionstyp, Simultantyp, Sequenztyp oder Konvergenztyp handelt. Wie es noch herausgearbeitet werden wird, gibt es einige Typen von Konvergenzdeskriptoren, die bei einem Schritt 607 überprüft werden, bevor eine weitere Verzweigung zu spezifischen Routinen für den jeweiligen Konvergenztyp erfolgt.
- Der restliche Abschnitt von Fig. 16 ist ein Flußdiagramm zum Ausführen einer Deskriptordatei vom Sequenztyp, die unter Bezugnahme auf die erste Deskriptordatei 430 in Fig. 11A beschrieben wird. Diese Abzweigroutine beginnt bei einem Schritt 601 damit, daß das Prozessormodul P1 einen Ausführungslauf durch das Anwendersteuerprogramm ausführt, das in der Schrittdateinummer innerhalb des Deskriptors spezifiziert ist. Nach der Vollendung eines Laufes durch das Anwendersteuerprogramm wird bei einem Entscheidungsblock 602 diejenige Datei ausgeführt, die die in der Deskriptordatei angegebene Übergangsbedingung enthält. Ist die Bedingung nicht aufgetreten, wird der Deskriptor zurückgegeben zum Boden oder der Unterseite der Aktivliste im Prozessor-RAM 106, und zwar bei einem Schritt 606. Das Programm kehrt dann zum Schritt 590 zurück, um den nächsten Deskriptor von der Aktivliste zu holen. Wenn lediglich ein Deskriptor in der Aktivliste enthalten ist, wird dasselbe Anwendersteuerprograinin umgehend erneut ausgeführt. Diese Schleifenverarbeitung dauert so lange an, bis die Übergangsbedingung aufgetreten ist. In diesem Fall interpretiert dann bei einem Schritt 603 der Mikroprozessor 98 die Information im ersten Deskriptor 430, der die nächste Deskriptordatei betrifft, um festzustellen, welcher Programmausführungsprozessor 18 den nächsten zu interpretierenden Deskriptor enthält. Falls dasselbe Prozessormodul (P1) den nächsten Deskriptor ausführen soll, wird bei einem Programmschritt 604 diese Deskriptordatei vom RAM 106 geholt und bei einem Schritt 605 in die Aktivliste gegeben. Das Programm kehrt dann zum Schritt 590 zurück, bei dem der Mikroprozessor die Aktivliste überprüft, um den nächsten Deskriptor zur Verarbeitung zu erhalten.
- Ist die nächste Deskriptordatei im Speicher eines anderen Prozessormoduls 18 enthalten, wird bei einem Schritt 608 ein Befehl zu diesem Prozessormodul über Prioritätspost ausgesandt, wie es oben beschrieben worden ist. Der Befehl gibt dem anderen Prozessormodul die Anweisung, mit dem Interpretieren des nächsten Deskriptors zu beginnen. Sobald die Information betreffend den nächsten Deskriptor zum anderen Prozessormodul 18 übertragen und bestätigt worden ist, geht bei einem Schritt 609 das zuvor aktive Prozessormodul 18 in einen Ruhezustand über, es sei denn, daß weitere Deskriptoren in der Aktivliste vorhanden sind. Im Ruhezustand kann ein Prozessormodul 18 Hintergrundtasks oder andere Tasks niedriger Priorität ausführen, wie es noch beschrieben wird.
- Bei dem in Fig. 10 dargestellten beispielhaften Funktionsplan wird das Selektionskonstrukt als nächstes vom ersten Prozessormodul P1 verarbeitet. Da der zweite Deskriptor 432 vom Selektionstyp ist, zweigt das Programm zu der in Fig. 17 dargestellten Routine ab. Bei einem ersten Schritt 610 der Routine stellt der Mikroprozessor 98, auch unter Bezugnahme auf die Schemadarstellung des Prozessormoduls in Fig. 4, fest, wie hoch die Anzahl der Elemente in der Anordnung der Übergangsbedingungsdateien ist. Eine Anordnungszeigeradresse im RAM 106 wird bei einem Schritt 611 auf das erste Element in der Übergangsbedingungsanordnung gesetzt. Das von der Schrittdateinummer im Deskriptor 432 bezeichnete Anwendersteuerprogramm wird dann vom Prozessormodul P2 bei einem Schritt 612 ausgeführt.
- Nach Durchführung einer Abtastung durch das Anwendersteuerprogramm wird die in der Datei befindliche Übergangsbedingung überprüft, die vom ersten Element in der Anordnung spezifiziert wird, wobei die Überprüfung bei einem Schritt 613 vom Mikroprozessor 98 erfolgt, um festzustellen, ob die Bedingung erfüllt ist. Ist die Bedingung noch nicht eingetreten, wird die im Anordnungszeiger enthaltene Adresse bei einem Entscheidingsblock 614 überprüft, um festzustellen, ob er zu der Adresse im RAM 106 zeigt, die das letzte Element der Anordnung enthält. Da es sich nicht um das letzte Element handelt, wird der Anordnungszeiger bei einem Schritt 615 inkrementiert, und das Programm kehrt zum Entscheidungsblock 613 zurück. Beim Entscheidungsblock 613 wird die Übergangsbedingung überprüft, die das nächste Anordnungselement angibt. Unter der Annahme, daß keine der in der Anordnung spezifizierten Übergangsbedingungen eingetreten ist, wird mit der Schleifenverarbeitung so lange fortgefahren, bis die letzte Übergangsbedingung in der Anordnung überprüft worden ist. Die Ausführung des Entscheidungsblocks 614 zeigt jetzt an, daß der Anordnungszeiger auf die Adresse des letzten Anordnungselements zeigt, und das Programm schreitet zu einem Schritt 621 voran, bei dem der Deskriptor zurückgegeben wird zur Unterseite der Aktivliste. Die Prozessormodulprogrammausführung kehrt dann zum Schritt 590 (Fig. 16) zurück, um den Deskriptor auf der Oberseite der Aktivliste zu verarbeiten.
- Mit der Ausführung des Anwendersteuerprogramms für den ausgewählten Deskriptor wird so lange fortgefahren, bis eine der Übergangsbedingungen in der Deskriptoranordnung aufgetreten ist. Wird das Erfüllen der Übergangsbedingung beim Schritt 613 festgestellt, zweigt das Programm zu einem Schritt 616 ab.
- Beim Schritt 616 liest der Mikroprozessor 98 das Anordnungsfeld, auf das der Anordnungszeiger zeigt. Dieses Feld spezifiziert die Dateinummer und den Platz des nächsten zu verarbeitenden Deskriptors. Bei einem Schritt 617 wird die nächste Deskriptorspezifikation ausgewertet. Ist der nächste Deskriptor im selben Prozessormodul 18 wie der derzeitige Deskriptor gespeichert, liest der Mikroprozessor 98 die Destriptordatei aus seinem RAM 106 bei einem Prozeßblock 618. Bei einem Schritt 620 fügt das Programm den neuen Deskriptor der Aktivliste hinzu und kehrt dann zum Schritt 590 in Fig. 16 zurück, um die nächste Deskriptordatei zu verarbeiten.
- Ist der nächste Deskriptor im RAM eines anderen Prozessormoduls 18 zum Zwecke des Ausführens des Deskriptors gespeichert, zweigt das Programm beim Entscheidungsblock 617 zu einem Schritt 619 ab, bei dem dann das derzeitige Prozessormodul P1 mit Prioritätspost eine Befehlsnachricht an das andere Prozessormodul 18 ausgibt, um dieses Modul aus dem Ruhezustand aufzuwecken und es zu veranlassen, mit der Verarbeitung des nächsten Deskriptors zu beginnen. Diese Nachricht gibt die Dateinummer an, die den nächsten Deskriptor enthält. Nach Empfang der Bestätigung der Befehlsnachricht tritt das derzeitige Prozessormodul P1, wenn die Aktivliste leer ist, bei einem Schritt 609 in einen Ruhezustand so lange ein, bis es von einem anderen Modul 18 darüber unterrichtet wird, die Verarbeitung eines anderen Deskriptors aufzunehmen.
- Unter Bezugnahme auf den beispielshaften Funktionsplan nach Fig. 10 ist jeder der Selektionszweige durch einen separaten Deskriptor vom sequentiellen Typ dargestellt, und zwar den dritten, vierten und fünften Deskriptor in Fig. 11A. Der Übergarig auf den nächsten Schritt 413 ist ein Standardübergang vom sequentiellen Typ, ungeachtet dessen, welcher der Selektionszweige ausgewählt worden ist. War der Schritt 408 zur Ausführung ausgewählt, wird das in der Datei 4 enthaltene Anwendersteuerprogramm wiederholt so lange ausgeführt, bis die Übergangsbedingung 411 in der Datei 16 auftritt. Die Programmausführung schreitet dann zum Funktionsplanschritt 413 voran. Dieser Transfer wird vom ersten Prozessormodul P1 vorgenommen, das an das zweite Prozessormodul P2 eine Prioritätspostnachricht aussendet, die ihm die Anweisung bit, mit der Ausführung des sechsten Deskriptors 434 (Fig. 11A) zu beginnen.
- Das zweite Prozessormodul P2 enthält eine Kopie des Funktionsplaninterpreterprogramms in seinem lokalen RAM 106. Beim Empfang der Befehlsnachricht vom ersten Prozessormodul P1 fügt der zweite Prozessor P2 den sechsten Deskriptor 434 seiner Aktivliste hinzu. War das zweite Prozessormodul P2 im Ruhezustand, wird es aufgeweckt und tritt bei einem Schritt 590 (Fig. 16) in sein Interpreterprogramm ein. Wenn das zweite Prozessormodul P2 mit der Ausführung des sechsten Deskriptors 434 beginnt, bestimmt sein Funktionsplaninterpreterprogramm bei einem Schritt 600 (Fig. 16), daß dieser Deskriptor vom Simultankonstrukttyp ist, und das Programm transferiert zu derjenigen Routine, die im Flußdiagramm von Fig. 18 dargestellt ist. Beim ersten Programmschritt 630 der Interpretation des Simultandeskriptors wird die Anzahl der Elemente in der Anordnung des nächsten Deskriptors festgestellt, wodurch die Anzahl der auszuführenden Simultanfunktionsplanschritte angegeben wird. Der Inhalt der Anordnungszeigeradresse im RAM 106 wird dann auf die Adresse des ersten Elements bei einem Prozeßblock 631 gesetzt. Das in der Datei 6 enthaltene Anwendersteuerprogramm wird dann vom zweiten Prozessormodul P2 bei einem Schritt 632 ausgeführt. Mit der Vervollständigung einer Abtastung des Anwendersteuerprogramms wird bei einem Entscheidungsblock 633 das Auftreten der Übergangsbedingung 414 in der Datendatei 18 überprüft. Ist die Bedingung nicht erfüllt, wird der Deskriptor zur Unterseite der Aktivliste bei einem Schritt 638 zurückgegeben, so daß das Anwendersteuerprogramm erneut ausgeführt wird.
- Ist die Übergangsbedingung 414 aufgetreten, wird die Verarbeitung transferiert, um mit der Ausführung verschiedener Funktionsplanzweige zu beginnen. Das erste Element in der Anordnung des nächsten Deskriptors, und zwar des Diskriptors 434, wird vom RAM 106 durch den Mikroprozessor 98 bei einem Prozeßblock 634 gelesen, und das Prozessormodul 18 für diesen nächsten Deskriptor wird dann bei einem Block 635 festgelegt. Ist das Modul dasselbe wie das derzeitige Modul, wird bei einem Schritt 636 die nächste Deskriptordatei vom RAM 106 gelesen, und bei einem Schritt 637 wird diese Deskriptordatei der Aktivdeskriptorliste des Prozessormoduls mit irgendwelchen anderen Anwendersteuerprogrammen hinzugefügt, um simultan von diesem Prozessormodul ausgeführt zu werden.
- Falls einer der nächsten Deskriptoren auf einem anderen Prozessormodul (beispielsweise P1) auszuführen ist, zweigt das Deskriptorinterpreterprogramm vom Entscheidungsblock 635 zu einem Schritt 639 ab, bei dem das derzeitige Prozessormodul P2 einen Befehls als Prioritätspostnachricht zu diesem anderen Modul aussendet. Dieser Befehl weist das andere Prozessormodul an, mit der Interpretation der in ihm gespeicherten Deskriptordatei zu beginnen. Das Programm kehrt dann über einen Knoten 640 zum Entscheidungsblock 641 zurück, bei dem der Mikroprozessor 98 im ersten Prozessormodul P1 feststellt, ob das letzte Anordnungselement verarbeitet worden ist. Sind weitere Elemente vorhanden, wird der Inhalt der Anordnungszeigeradresse vom Mikroprozessor 98 bei einem Schritt 642 inkrementiert, und die nächste Deskriptordateinummer wird von der Anordnung bei einem Schritt 634 gelesen.
- Dieser Prozeß der Rewertung jedes der nächsten Diskriptoren wird für jedes Element in der Anordnung fortgeführt. Sobald das letzte Element durch das derzeit operative Prozessormodul P2 bei einem Block 641 verarbeitet worden ist, kehrt das Programm zum Schritt 590 zurück, um die Aktivdeskriptorliste nach mehr Arbeit zu überprüfen.
- In dem beispielhaften Funktionsplan nach Fig. 10 enden die drei Simultanzweige der Schritte 415 bis 417 in einem Konvergenzkonstrukt. Das Konvergenzkonstrukt enthält eine einzige Übergangsbedingung 418 mit deren Erfüllung die Ausführung aller drei Zweige endet. Jeder Zweig ist dargestellt durch einen separaten Deskriptor (Deskriptoren 7 bis 9), die im RAM 106 des Prozessormoduls P1 oder P2 gespeichert sind, und zwar in Abhängigkeit davon, welches Modul der Anwender zur Durchführung des betreffenden Schrittes des Funktionsplanes angibt. Die Deskriptoren 7 und 8 sind im Prozessormodul P1 zum Zwecke der Ausführung gespeichert, und dem neunten Deskriptor ist der zweite Prozessor P2 zugeordnet. Einer der Deskriptoren, in diesem Beispiel der neunte Deskriptor 436 (Fig. 11A), enthält die Übergangsbedingung und die nächste Deskriptordateinummer.
- Vor der Erläuterung der Simultanoperation durch das erste Prozessormodul P1, wird der Betrieb des zweiten Prozessormoduls P2 zunächst beschrieben. Der neunte Deskriptor 436 ist im zweiten Prozessormodul P2 gespeichert. Die Interpretation des neunten Deskriptors 436 beginnt bei einem Schritt 600 in Fig. 16, wobei der Mikroprozessor 98 des Prozessormoduls den Deskriptor von der Aktivliste liest und seinen Typ auswertet. Bei einem Deskriptor vom Konvergenztyp schreitet das Programm zu einem Schritt 607 voran, wo in Abhängigkeit von dem besonderen Konvergenztyp des Deskriptors eine Verzweigung stattfindet, wie es der Mikroprozessor 98 bestimmt. In diesem Fall enthält der Konvergenzdeskriptor die Übergangsbedingungsdateinummer, und das Programm schreitet zu einem Knoten D der Routine voran, wie es Fig. 19 zeigt. Die Konvergenzdeskriptorinterpreterroutine beginnt bei einem Block 660, bei dem der Mikroprozessor 98 einen Zeiger auf die Adresse des Simultanzählers setzt, der in der Systemunterstützungsdatei 203 des Haupt-RAM 69 (Fig. 7) der Systemsteuerung enthalten ist. Beim ersten Durchgang durch die Konvergenzroutine eines gegebenen Deskriptors lädt der Deskriptor 98 bei einem Schritt 661 die' Simultanzähleradresse auf die Anzahl der auszuführenden Simultanzweige, im vorliegenden Fall drei. Das zweite Prozessormodul P2 beginnt dann mit der Ausführung des Anwendersteuerprogramms der Datei 9 bei einem Prozeßblock 662. Bei Vollendung eines Durchlaufes durch das Anwendersteuerprogramm führt der Mikroprozessor 98 das Programm in der Übergangsbedingungsdatei aus, die in der neunten Deskriptordatei 436 spezifiziert ist. Ist diese Übergangsbedingung nicht erfüllt, was bei einem Schritt 663 untersucht wird, gibt das Programm den Deskriptor bei einem Schritt 683 zur Aktivliste zurück und geht dann auf den Schritt 590 (Fig. 16) über.
- Ist andererseits die Übergangsbedingung erfüllt, setzt das zweite Prozessormodul P2 bei einem Schritt 664 ein Kennzeichen im RAM 69 der Systemsteuerung, das das Ende der Simultanausführung anzeigt. Während das zweite Prozessormodul P2 Zugriff zum RAM 69 der Systemsteuerung hat, dekrementiert es bei einem Schritt 665 den Simultanzähler, um anzuzeigen, daß die Verarbeitung seines Simultanzweiges vollendet worden ist. Als nächstes wird bei einem Schritt 666 der Zähler vom zweiten Prozessormodul P2 überprüft, um festzustellen, ob der Zähler Null geworden ist. Ist der Zählwert gleich Null, kehrt das Programm zum Schritt 590 (Fig. 16) zurück, um nachzusehen, ob andere Deskriptoren im Prozeß übrig sind. Sind keine Deskriptoren für das zweite Prozessormodul P2 übrig, tritt es beim Schritt 609 in den Ruhezustand ein.
- Ist die gesamte Simultanausführung vollendet, überprüft das zweite Prozessormodul P2 bei einem Schritt 667, welches Prozessormodul den nächsten Deskriptor auszuführen hat. Soll das zweite Prozessormodul P2 mit der Ausführung der nächsten Deskriptordatei beginnen, liest sein Mikroprozessor 98 bei einem Prozeßblock 668 den nächsten Deskriptor und fügt ihn der Aktivliste bei einem Schritt 670 hinzu. Das Programm kehrt dann zum Schritt 590 beim Anfang der Routine in Fig. 16 zurück, wo es dann den nächsten Deskriptor ausführt. Ist der nächste Deskriptor von einem anderen Prozessormodul (beispielsweise dem Modul P1) zu handhaben, zweigt die Routine zu einem Schritt 669 ab. Das zweite Modul P2 sendet dann eine Prioritätspostnachricht an das andere Modul P1 aus, um es zu informieren, mit der Ausführung des nächsten Deskriptors zu beginnen. Das zweite Prozessormodul P2 tritt dann beim Schritt 609 in den Ruhezustand ein.
- Wie zuvor erwähnt, gibt es einige Typen Konvergenzdeskriptoren. Die Deskriptoren für den Zweig, die die Funktionsplanschritte 415 und 416 (Fig. 10) enthalten, weisen keine Information bezüglich der Übergangsbedingung auf (siehe achter Deskriptor 435 in Fig. 11A). Diese Deskriptoren sind im ersten Prozessormodul P1 gespeichert, und werden von ihm interpretiert. Wenn diese Deskriptoren vom Prozessormodul 98 bei einem Schritt 607 in Fig. 16 ausgewertet werden, zweigt das Interpreterprogramm im jeweiligen Prozessormodul 18 zum Knoten E der Routine ab, wie es Fig. 19 zeigt. In dieser Routine wird bei einem Block 680 ein Adreßzeiger gesetzt, und zwar auf die Simultanzähleradresse im Haupt-RAM 69 der Systemsteuerung. Das Anwendersteuerprogramm wird dann bei einem Schritt 681 vom Mikroprozessor 98 ausgeführt. Nach jeder Steuerprogrammabtastung wird bei einem Schritt 682 die Endkennzeichenadresse im Haupt-RAM 69 der Systemsteuerung überprüft, um festzustellen, ob oder ob nicht dieses Kennzeichen gesetzt worden ist, wodurch angezeigt wird, daß die Anwendersteuerprogrammverarbeitung zu beenden ist. Ist das Kennzeichen nicht gesetzt, wird der Deskriptor zur Aktivliste des Prozessors bei einem Schritt 638 zurückgegeben. Ist das Kennzeichen gesetzt, wird der Simultanzähler bei einem Schritt 665 zweimal dekrementiert, um anzuzeigen, daß die Ausführung der Dateien 7 und 3 durch das Prozessormodul 21 beendet ist. Das erste Prozessormodul P1 überprüft dann beim Schritt 666 den Simultanzähler und schreitet dann voran, wie es zuvor unter Bezugnahme auf die Schritte 6666 bis 670 beschrieben worden ist.
- Wie oben angemerkt, kann der Anwender auch zusätzlich zum Funktionsplan und den Anwendersteuerprogrammen "Hintergrund tasks" zur Verarbeitung durch ein spezifisches Prozessormodul 18 definieren. Diese Programme werden zur Durchführung längerer, nicht zeitkritischer Tasks verwendet, ohne daß es dabei zu nachteiligen Verzögerungen im Betrieb des Funktionsplansteuerprogramms kommt. Anwenderdefinierte Hintergrundtasks beinhalten die Erzeugung von Berichten und die Ausführung gewisser untergeordneter Steuertasks. Berichtsdaten betreffend die Leistung und das Betriebsverhalten der gesteuerten Anlage können zur Übertragung über das lokale Netz 28 zu einem Hostcomputer aufbereitet werden. Diese Berichte sind nicht so dringend, daß die Steuerung der Anlage unterbunden werden müßte, während sie aufbereitet und ausgesendet werden. Die Hintergrundsteuertasks werden auch für längere Berechnungen verwendet, die ähnlich mit denjenigen sind, die bei der Ausführung des Hauptfunktionsplanprogramms aufgefunden werden, die jedoch keine Echtzeitsteuerung benötigen.
- Ein Hintergrundtaskprogramm kann von einem Anwendersteuerprogramm, einer Unterbrechungsroutine, wie beispielsweise eine auswählbare zeitgesteuerte Unterbrechung, oder einem anderen Hintergrundprogramm aufgerufen werden. Ein gewisser Prozentsatz der Verarbeitungszeit jedes Prozessormoduls 18 ist der Ausführung solcher Hintergrundtasks zugeordnet. Dieser Prozentsatz wird vom Anwender so gesetzt, daß die Ausführung der Hintergrundtasks die Ausführung des Maschinenoperationsprogramms nicht beträchtlich beeinflußt. Die Verarbeitung des Anwendersteuerprogramms wird periodisch von der Echtzeituhr unterbrochen, und die Hintergrundtasks werden für eine vorgegebene Zeitspanne ausgeführt. Ist das Ende der Hintergrundtaskausführungszeitspanne gekommen, bevor das Hintergrundprogramm vollendet ist, wird die Ausführung der Hintergrundtask unterbrochen und dann während der nächsten Hintergrundtaskzeitspanne wieder aufgenommen. Wenn ein Anwendersteuerprogramm auf dem Prozessormodul 18 gerade nicht läuft, kann die Hintergrundtask nahezu kontinuierlich durchgeführt werden. Beim Normalbetrieb laufen die Hintergrundtasks intermittierend bis zu ihrem Ende, jedoch kann ihre Ausführung vom Anwendersteuerprogramm oder beim Auftreten eines Fehlerzustands abgebrochen werden. Da das vorliegende programmierbare Steuerungssystem eine Vielzahl Prozessormodule 18 hat, ist kein einziger Prozessor fortwährend dem Lauf des Anwendersteuerprogramms zugeordnet. ,Dies führt dazu, daß die Prozessormodule Zeit zur Durchführung von Hintergrundtasks haben, ohne daß diese Tasks die Steuerung der Fertigungsanlage nachteilig beeinträchtigen. Dies ist ein weiterer Vorteil des vorliegenden parallelen Verarbeitungskonzepts angewendet auf programmierbare Steuerungen.
- Die vorliegende programmierbare Steuerung 10 sieht auch einen zwei Betriebsarten umfassenden Wiederherstellungs- oder Wiederaufnahmemechanismus bei einem Energieausfall vor. Dieser Wiederherstellungsmechanismus wird immer dann aktiviert, wenn während der Ausführung des Maschinenoperationsprogramms die Energieversorgung verlorengeht, beispielsweise bei einem Ausfall des elektrischen Netzes. Der Anwender kann bei der Systemkonfiguration auswählen, ob bei der Wiederherstellung der Energie im Anschluß an einen solchen Ausfall das Programm von Anfang an neu gestartet wird, also der anfängliche Funktionsplanschritt ausgeführt wird, oder ob die Ausführung mit dem Start desjenigen Anwendersteuerprogramms wieder aufgenommen werden soll, das beim Energieausfall gerade ausgeführt wurde. Die vom Anwender getroffene Wahl bezüglich der Wiederherstellungsbetriebsart wird in der Systemstatusdatei 201 des Haupt- RAM 69 der Systemsteuerung gespeichert.
- Unter Bezugnahme auf Fig. 3 erfaßt die Systemstatusschaltung 88 den Beginn eines Energieausfalls und unterbricht den Prozessorabschnitt des Mikroprozessors 66. Dadurch wird der Mikroprozessor veranlaßt, eine Unterbrechungssubroutine auszuführen, die den Zustand aller Prozessormodulausführungen in einem nicht flüchtigen Speicher abspeichert. Diese Zustandsdaten umfassen die Dateinummern der gerade ausgeführten Deskriptoren als auch die Deskriptoren auf der Aktivdeskriptorliste jedes Prozessormoduls. Information bezüglich irgendwelcher Hintergrundtasks, die gerade ausgeführt werden, wird ebenfalls aufbewahrt.
- Ist die Versorgungsenergie wieder vorhanden, gibt die Systemsteuerung im Falle der Wiederaufnahmebetriebsart jedem Prozessormodul die Anweisung, mit der Ausführung der Deskriptordateinummer zu beginnen, die abgespeichert wurde, als die Energie ausfiel. Wie eingangs bemerkt, haben die Hauptmodule im System interne Batterien, die die Speicher unterhalten, wenn die Energie ausfällt. Deshalb bleiben die Programme und die E/A-Tabellen in den Speichern der Module während des Energieaus falls erhalten.
Claims (11)
1. Speicherprogrammierbare Steuerung (10) zum Betreiben
einer Maschine zwecks Ausführung einer Vielzahl von
Programmfunktionen unter Verwendung von Deskriptoren, wobei
die speicherprogrammierbare Steuerung eine Rückebene (11)
mit Leiterbahnen (21, 22, 23) für Datensignale, Adreßsignale
und Steuersignale sowie eine mit der Rückebene verbundene
E/A-Schnittstelle (20) zum Anschließen der programmierbaren
Steuerung an Eingabe- und Ausgabe-Vorrichtungen an der
Maschine aufweist,
gekennzeichnet durch
eine Vielzahl von Prozessoren (18), die mit der
Rückebene verbunden sind und von denen jeder Prozessor in der
Lage ist, ein anderes Anwendersteuerprogramm gleichzeitig
auszuführen, und jeder einen Speicher (106) aufweist, der
Anwendersteuerprogramme zur Ausführung durch den
betreffenden Prozessor und Anwenderprogrammausführungssequenzdaten
(313) speichert, die eine Vielzahl von Deskriptoren (430,
432, 434, 436) aufweisen, wobei jeder Deskriptor ein
Anwendersteuerprogramm, eine Übergangsbedingung, die
auftritt, wenn die Ausführung des identifizierten
Steuerprogramms enden sollte, sowie das nächste auszuführende
Anwendersteuerprogramm und den Prozessor zum Ausführen des
nächsten Anwendersteuerprogramms identifiziert, und wobei
jeder der Prozessoren (18) eine Einrichtung (94, 95, 96)
zum Aussenden von Programmausführungsbefehlen an andere
Prozessoren hat; und
eine Einrichtung (84) zum Steuern des Zugriffs zu dem
Rückebene-Bus durch die Vielzahl von Prozessoren (18) und
die E/A-Schnittstelle (20).
2. Speicherprogrammierbare Steuerung nach Anspruch 1, bei
der die Programmausführungssequenzdaten (313) ferner eine
Bezeichnung (400) von einem der Anwendersteuerprogramme
enthalten, das beim Start der Programmausführung anfänglich
auszuführen ist.
3. Speicherprogrammierbare Steuerung nach Anspruch 1,
ferner enthaltend eine Einrichtung (201) zum Aufbewahren
von Programmausführungsstatusdaten für jeden Prozessor beim
Auftreten eines elektrischen Energieausfalls, so daß
Programme, die beim Auftreten des Energieausfalls gerade
ausgeführt worden sind, mit der Ausführung fortfahren können,
wenn die elektrische Energie wieder vorhanden ist.
4. Speicherprogrammierbare Steuerung nach Anspruch 1, bei
der wenigstens einer der Prozessoren (18) eine Einrichtung
(99) zum Unterbrechen der Programmausführung durch den
betreffenden Prozessor in Abhängigkeit von einem
Unterbrechungssignal von einem bezüglich der programmierbaren
Steuerung externen Gerät enthält.
5. Speicherprogrammierbare Steuerung nach Anspruch 4, bei
der wenigstens einer der Prozessoren (18) ferner eine
Einrichtung (98) zum Ausführen einer
Unterbrechungsprogrammroutine nach der Programmunterbrechung durch die
Unterbrechungseinrichtung enthält.
6. Speicherprogrammierbare Steuerung nach Anspruch 1, bei
der jeder der Prozessoren (18) einen Mechanismus (590 bis
684) zum Interpretieren der Deskriptoren enthält.
7. Speicherprogrammierbare Steuerung nach Anspruch 1, bei
der jeder der Prozessoren (18) eine Einrichtung (213, 214)
zum Zwingen der Übergangsbedingungen entweder auf wahr oder
auf falsch unabhängig vom tatsächlichen Zustand der
Bedingung enthält.
8. Speicherprogrammierbare Steuerung nach Anspruch 1, bei
der jeder der Prozessoren (18) ferner eine für den Anwender
gedachte Einrichtung zum Zuordnen eines vorgegebenen Anteils
an Prozessorprogrammausführungszeit an eine periodische
Ausführung von anderen Programmen enthält, die keine
Anwendersteuerprogramme sind.
9. Speicherprogrammierbare Steuerung nach Anspruch 8, bei
der die Zuordnungseinrichtung eine Einrichtung zum
periodischen Unterbrechen der Ausführung des Anwendersteuerprogramms
enthält, um die Ausführung der anderen Steuerprogramme zu
gestatten.
10. Speicherprogrammierbare Steuerung nach Anspruch 9, bei
der die Zuordnungseinrichtung ferner eine Einrichtung zum
Anhalten der Ausführung der anderen Programme und zum
Zurückkehren zu der Ausführung des Anwendersteuerprogramms
im Anschluß an einen vorbestimmten Zeitabschnitt enthält.
11. Speicherprogrammierbare Steuerung nach Anspruch 9, bei
der ein Prozessor eine Einrichtung zum Aussetzen der
Ausführung der anderen Programme, sofern diese Ausführung bei
Ablauf des vorbestimmten Zeitabschnitts noch nicht beendet
ist, und zur Wiederaufnahme der ausgesetzten Ausführung bei
einer anderen Steuerprogrammausführungsunterbrechung
enthält.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/089,587 US4858101A (en) | 1987-08-26 | 1987-08-26 | Programmable controller with parallel processors |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3854594D1 DE3854594D1 (de) | 1995-11-23 |
DE3854594T2 true DE3854594T2 (de) | 1996-06-13 |
Family
ID=22218468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3854594T Expired - Lifetime DE3854594T2 (de) | 1987-08-26 | 1988-08-24 | Programmierbare Steuerung mit parallelen Prozessoren. |
Country Status (4)
Country | Link |
---|---|
US (1) | US4858101A (de) |
EP (1) | EP0304880B1 (de) |
CA (1) | CA1284370C (de) |
DE (1) | DE3854594T2 (de) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157595A (en) | 1985-07-19 | 1992-10-20 | El Paso Technologies, Company | Distributed logic control system and method |
US5193189A (en) * | 1987-10-07 | 1993-03-09 | Allen-Bradley Company, Inc. | Programmable controller with multiple priority level task processing |
US4937777A (en) * | 1987-10-07 | 1990-06-26 | Allen-Bradley Company, Inc. | Programmable controller with multiple task processors |
US5170339A (en) * | 1988-01-29 | 1992-12-08 | Fanuc Ltd. | Control system for programmable control device |
FR2634915B1 (fr) * | 1988-07-29 | 1990-10-19 | Somfy | Installation de commande de plusieurs recepteurs electriques susceptibles d'occuper au moins deux etats |
JPH083731B2 (ja) * | 1988-10-18 | 1996-01-17 | 株式会社日立製作所 | プログラマブルコントローラ |
JPH02128267A (ja) * | 1988-11-09 | 1990-05-16 | Fujitsu Ltd | 共有メモリによる通信方式 |
US5068778A (en) * | 1988-11-28 | 1991-11-26 | Reliance Electric Industrial Company | Industrial control system device |
US5251150A (en) * | 1989-01-13 | 1993-10-05 | Tektronix, Inc. | Sub-modular development system for modular computer-based instruments |
JP2694993B2 (ja) * | 1989-02-22 | 1997-12-24 | 株式会社日立製作所 | 電力用信号処理システムおよびディジタル保護リレー装置 |
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 |
GB2232514B (en) * | 1989-04-24 | 1993-09-01 | Yokogawa Electric Corp | Programmable controller |
US5331538A (en) * | 1989-10-23 | 1994-07-19 | Pitney Bowes Inc. | Mail processing system controller |
US5261036A (en) * | 1989-10-24 | 1993-11-09 | Mitsubishi Denki K.K. | Programmable controller with fuzzy control function, fuzzy control process and fuzzy control monitoring process |
EP0435215A1 (de) * | 1989-12-25 | 1991-07-03 | Mazda Motor Corporation | Methode zur Simulation eines Programmes zur Folgesteuerung |
US5485590A (en) * | 1990-01-08 | 1996-01-16 | Allen-Bradley Company, Inc. | Programmable controller communication interface module which is configurable by a removable memory cartridge |
CA2034878C (en) * | 1990-03-08 | 2002-04-02 | Craig S. Hyatt | Programmable controller communication module |
JP2654707B2 (ja) * | 1990-03-24 | 1997-09-17 | トヨタ自動車株式会社 | 複数pcの並列制御装置 |
JP2526709B2 (ja) * | 1990-05-08 | 1996-08-21 | 三菱電機株式会社 | プログラマブルコントロ―ラおよびプログラマブルコントロ―ラのsfcプログラム実行方法 |
US5185708A (en) * | 1990-06-18 | 1993-02-09 | Ge Fanuc Automation North America, Inc. | Method for collecting data by a manufacturing process manager from a plurality of programmable logic controllers |
US5122948A (en) * | 1990-06-28 | 1992-06-16 | Allen-Bradley Company, Inc. | Remote terminal industrial control communication system |
US5161222A (en) * | 1990-08-20 | 1992-11-03 | Human Microprocessing, Inc. | Software engine having an adaptable driver for interpreting variables produced by a plurality of sensors |
US5265005A (en) * | 1990-08-31 | 1993-11-23 | Allen-Bradley Company, Inc. | Processor for a programmable controller |
US5212631A (en) * | 1990-08-31 | 1993-05-18 | Allen-Bradley Company, Inc. | Programmable controller processor module having multiple program instruction execution sections |
EP0474436B1 (de) * | 1990-08-31 | 1999-11-03 | Texas Instruments Incorporated | Verfahren zur Kommunikation zwischen Prozessoren eines Mehrprozessorsystems |
US5278773A (en) * | 1990-09-10 | 1994-01-11 | Zond Systems Inc. | Control systems for controlling a wind turbine |
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 |
US5222017A (en) * | 1990-11-23 | 1993-06-22 | The University Of British Columbia | Control system to synchronize slave computers |
JPH05341819A (ja) * | 1991-02-05 | 1993-12-24 | Mitsubishi Electric Corp | Sfcプログラムのデバッグ装置及びデバッグ方法 |
DE59107764D1 (de) * | 1991-02-22 | 1996-06-05 | Siemens Ag | Speicherprogrammierbare Steuerung |
US5297257A (en) * | 1991-04-15 | 1994-03-22 | Allen-Bradley Company, Inc. | Distributing a real-time control program to a plurality of input/output nodes |
EP0525214B1 (de) * | 1991-06-28 | 1995-04-26 | Siemens Aktiengesellschaft | Verfahren zum Betreiben eines Automatisierungsgeräts |
US5432911A (en) * | 1991-07-15 | 1995-07-11 | Matsushita Electric Works, Ltd. | Controllers request access within one bus cycle causing hardware-wait to stall second controller when first controller is accessing and second controller is still requesting access |
US5327570A (en) * | 1991-07-22 | 1994-07-05 | International Business Machines Corporation | Multiprocessor system having local write cache within each data processor node |
EP0531103B1 (de) * | 1991-09-03 | 1996-08-14 | Shibuya Kogyo Co., Ltd | Vorrichtung zur automatischen Änderung eines Systems zur Behandlung von Gegenständen |
FR2682202B1 (fr) * | 1991-10-03 | 1994-03-11 | Sextant Avionique | Procede et dispositif pour la gestion temps reel d'un systeme comprenant au moins un processeur apte a gerer plusieurs fonctions. |
US5265004A (en) * | 1991-10-15 | 1993-11-23 | Allen-Bradley Company, Inc. | Sequence controller with combinatorial Boolean logic |
US5428769A (en) * | 1992-03-31 | 1995-06-27 | The Dow Chemical Company | Process control interface system having triply redundant remote field units |
US5392424A (en) * | 1992-06-11 | 1995-02-21 | Allen-Bradley Company, Inc. | Apparatus for detecting parity errors among asynchronous digital signals |
US5313386A (en) * | 1992-06-11 | 1994-05-17 | Allen-Bradley Company, Inc. | Programmable controller with backup capability |
US5309176A (en) * | 1992-08-25 | 1994-05-03 | Sci Systems, Inc. | Airline ticket printer with stepper motor for selectively engaging print head and platen |
DE4229931C2 (de) * | 1992-09-08 | 1997-01-23 | Daimler Benz Ag | Verfahren zur Programmierung eines busfähigen elektronischen Kfz-Steuergerätes |
US5295059A (en) * | 1992-09-09 | 1994-03-15 | Allen-Bradley Company, Inc. | Programmable controller with ladder diagram macro instructions |
US6029199A (en) * | 1992-10-23 | 2000-02-22 | International Business Machines Corporation | Computing system having a system supervisor and a collection of computing subunits each of which has a subunit supervisor |
US5428526A (en) * | 1993-02-03 | 1995-06-27 | Flood; Mark A. | Programmable controller with time periodic communication |
US5455914A (en) * | 1993-07-23 | 1995-10-03 | Unisys Corporation | Tie-breaking control circuit for bus modules which share command execution |
US6179762B1 (en) * | 1994-07-22 | 2001-01-30 | Ranpak Corp. | Cushioning conversion machine |
US5862401A (en) * | 1994-10-11 | 1999-01-19 | Crown International, Inc. | Programmable central intelligence controller and distributed intelligence network for analog/digital control systems |
DE19543373B4 (de) * | 1995-11-21 | 2004-07-08 | Siemens Ag | Verfahren zur Erzeugung von Aktuatorsignalen |
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 |
US5908483A (en) * | 1996-10-30 | 1999-06-01 | Lynch Machinery, Inc. | Apparatus and process for molding of glass |
FR2760547B1 (fr) * | 1997-03-07 | 1999-05-21 | Patrick Lanquetin | Equipement informatique forme d'une pluralite de modules interconnectes et procede pour l'optimisation de telles ressources informatiques |
JPH117315A (ja) * | 1997-04-21 | 1999-01-12 | Toshiba Corp | 監視・制御システム及びその処理内容を記録した媒体 |
US6247168B1 (en) * | 1997-04-29 | 2001-06-12 | Rockwell Technologies, Llc | Embedded non-volatile programming tool |
US5997166A (en) * | 1997-06-18 | 1999-12-07 | Allen-Bradley Company, Llc | Redundant industrial controller storing module and chassis level redundancy status |
US6327634B1 (en) * | 1998-08-25 | 2001-12-04 | Xilinx, Inc. | System and method for compressing and decompressing configuration data for an FPGA |
USD427533S (en) * | 1999-10-20 | 2000-07-04 | Power Measurement Ltd. | Electric meter external I/O enclosure |
SE523162C2 (sv) * | 2000-01-25 | 2004-03-30 | Aneo Ab | Arrangemang för att kunna tilldela en levande varelse ett anestesialt tillstånd |
DE10017708B4 (de) * | 2000-04-04 | 2008-02-14 | Technische Universität Dresden | Verfahren zum Steuern von Mechanismen und technischen Systemen, Einrichtung und Steuerungssoftware |
US7000191B2 (en) | 2000-08-07 | 2006-02-14 | Siemens Aktiengesellschaft | Flowchart programming for industrial controllers, in particular motion controllers |
JP2002236658A (ja) * | 2001-02-13 | 2002-08-23 | Ricoh Co Ltd | 調停装置 |
GB2379293B (en) | 2001-08-31 | 2005-07-06 | Discreet Logic Inc | Processing Data in an Application comprising a plurality of Application Modules |
GB2379292B (en) | 2001-08-31 | 2005-09-28 | Discreet Logic Inc | Processing data in an application including a plurality of application modules |
GB2379294B (en) | 2001-08-31 | 2005-06-01 | Discreet Logic Inc | Caching data |
US7487316B1 (en) * | 2001-09-17 | 2009-02-03 | Rockwell Automation Technologies, Inc. | Archive and restore system and methodology for on-line edits utilizing non-volatile buffering |
US7017373B2 (en) * | 2002-09-03 | 2006-03-28 | Owens-Brockway Glass Container Inc. | Glassware forming machine control system |
TWI233542B (en) * | 2003-07-18 | 2005-06-01 | Delta Electronics Inc | Auxiliary memory device for automation controller |
WO2005101142A1 (en) * | 2004-04-15 | 2005-10-27 | Lazer Safe Pty Ltd | A system and method for improved speed architecture |
JP4337056B2 (ja) * | 2005-09-12 | 2009-09-30 | ソニー株式会社 | 通信装置、通信状態検出方法及び通信状態検出プログラム |
US7881812B2 (en) * | 2005-09-29 | 2011-02-01 | Rockwell Automation Technologies, Inc. | Editing and configuring device |
US7660638B2 (en) * | 2005-09-30 | 2010-02-09 | Rockwell Automation Technologies, Inc. | Business process execution engine |
JP4507125B2 (ja) * | 2007-09-10 | 2010-07-21 | 三菱電機株式会社 | プログラマブルコントローラ |
CN102540952B (zh) * | 2010-12-09 | 2015-05-20 | 通用电气公司 | 可编程控制器以及操作方法 |
CN102098380A (zh) * | 2010-12-22 | 2011-06-15 | 中兴通讯股份有限公司 | 在移动终端中自定义快捷方式的方法和装置 |
EP2764455B1 (de) | 2011-10-05 | 2022-04-20 | Opteon Corporation | System und verfahren zur überwachung und/oder steuerung dynamischer umgebungen |
FR3010540B1 (fr) * | 2013-09-10 | 2015-08-14 | Schneider Electric Ind Sas | Systeme d'automatisme comprenant plusieurs controleurs logiques programmables connectes sur un reseau de communication |
US9792190B2 (en) * | 2015-06-26 | 2017-10-17 | Intel Corporation | High performance persistent memory |
JP7042138B2 (ja) * | 2018-03-30 | 2022-03-25 | 日立Astemo株式会社 | 処理装置 |
JP7415345B2 (ja) * | 2019-07-03 | 2024-01-17 | オムロン株式会社 | 制御システム、サポート装置および設定プログラム |
CN113345142A (zh) * | 2021-06-19 | 2021-09-03 | 广东海洋大学 | 一种用于船舶控制装置的船用主令控制器 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3364472A (en) * | 1964-03-06 | 1968-01-16 | Westinghouse Electric Corp | Computation unit |
US4648064A (en) * | 1976-01-02 | 1987-03-03 | Morley Richard E | Parallel process controller |
US4128876A (en) * | 1977-04-28 | 1978-12-05 | International Business Machines Corporation | Synchronous microcode generated interface for system of microcoded data processors |
US4293924A (en) * | 1979-05-30 | 1981-10-06 | Allen-Bradley Company | Programmable controller with high density intelligent I/O interface |
US4302820A (en) * | 1979-08-20 | 1981-11-24 | Allen-Bradley Company | Dual language programmable controller |
US4338675A (en) * | 1980-02-13 | 1982-07-06 | Intel Corporation | Numeric data processor |
US4413319A (en) * | 1981-03-09 | 1983-11-01 | Allen-Bradley Company | Programmable controller for executing block transfer with remote I/O interface racks |
US4442504A (en) * | 1981-03-09 | 1984-04-10 | Allen-Bradley Company | Modular programmable controller |
JPS5868109A (ja) * | 1981-10-17 | 1983-04-22 | Toshiba Mach Co Ltd | 機能拡張性を有するプログラマブルシ−ケンスコントロ−ラ |
US4504927A (en) * | 1982-09-08 | 1985-03-12 | Allen-Bradley Company | Programmable controller with expandable I/O interface circuitry |
DE3236302A1 (de) * | 1982-09-30 | 1984-04-05 | Siemens AG, 1000 Berlin und 8000 München | Speicherprogrammierbare steuerung |
US4641269A (en) * | 1983-01-26 | 1987-02-03 | Emhart Industries, Inc. | Programmable control system for glassware forming machines |
JPS59154564A (ja) * | 1983-02-24 | 1984-09-03 | Hitachi Ltd | プログラマブルコントロ−ラ |
JPS59175948A (ja) * | 1983-03-23 | 1984-10-05 | Toyoda Mach Works Ltd | トランスフアマシン用加工制御装置 |
US4716541A (en) * | 1984-08-02 | 1987-12-29 | Quatse Jesse T | Boolean processor for a progammable controller |
US4742443A (en) * | 1985-03-28 | 1988-05-03 | Allen-Bradley Company | Programmable controller with function chart interpreter |
US4685947A (en) * | 1985-09-12 | 1987-08-11 | Emhart Industries, Inc. | Glassware forming apparatus with distributed control and method of operation |
-
1987
- 1987-08-26 US US07/089,587 patent/US4858101A/en not_active Expired - Lifetime
-
1988
- 1988-08-24 DE DE3854594T patent/DE3854594T2/de not_active Expired - Lifetime
- 1988-08-24 EP EP88113732A patent/EP0304880B1/de not_active Expired - Lifetime
- 1988-08-25 CA CA000575727A patent/CA1284370C/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE3854594D1 (de) | 1995-11-23 |
CA1284370C (en) | 1991-05-21 |
EP0304880A2 (de) | 1989-03-01 |
US4858101A (en) | 1989-08-15 |
EP0304880A3 (de) | 1992-09-23 |
EP0304880B1 (de) | 1995-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3854594T2 (de) | Programmierbare Steuerung mit parallelen Prozessoren. | |
DE4135749B4 (de) | Prozessormodul für eine programmierbare Steuerung mit einer intelligenten Funktionsmodulschnittstelle | |
DE3851928T2 (de) | Steuerung von asynchron arbeitenden Peripheriegeräten. | |
DE69023018T2 (de) | Prozessor-Unterbrechungssteuerung. | |
DE68927626T2 (de) | Hierarchisches Mehrfachbus-Computersystem | |
DE2856483C2 (de) | ||
DE68928772T2 (de) | Datenverarbeitungssystem mit sich um Zugriff auf verteilte Betriebsmittel bewerbenden Einheiten und mit auf den Status der verteilten Betriebsmittel reagierender Schiedsrichtereinheit | |
DE3650036T2 (de) | Mehrfachport-Diensterweiterungsadapter für Übertragungssteuerung. | |
DE69414609T2 (de) | Informationsanzeigesystem zur aktiven redundanten rechnergestützten prozesssteuerung | |
DE69320122T2 (de) | Speicherprogrammierbare Steuerung mit Leiterdiagramm-Makroinstrucktionen | |
DE69622776T2 (de) | Von Multitasking gebrauch machendes Sortieren | |
EP0107026B1 (de) | Speicherprogrammierbare Steuerung | |
DE2755952C2 (de) | ||
DE69129645T2 (de) | Verfahren und Anordnung zur Unterstützung der Anzeige und Entfernung von Fenstern | |
DE3686335T2 (de) | Verbindungsanlage fuer eine programmierbare steuerung. | |
DE69122142T2 (de) | Steuerungsanlage für ein Mehrprozessorsystem | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE3508291A1 (de) | Realzeit-datenverarbeitungssystem | |
EP0577919A1 (de) | Zugriffssteuerung für gekoppelte maskenprogrammierte Mikrocontroller | |
DE69222468T2 (de) | Vorrichtung zur Steigerung der Leistung eines einer Multiprozessorstruktur mit einer möglicherweise hohen Anzahl von Prozessoren zugeordneten Echtzeitsteuerprogrammkerns | |
DE3727017A1 (de) | Synchronisiervorrichtung fuer prozessoren | |
DE2935101C2 (de) | ||
DE69032495T2 (de) | Vorrichtung zur Bereitstellung einer universellen Schnittstelle für ein Prozesssteuerungssystem | |
DE68926266T2 (de) | Datenprozessor mit der Fähigkeit, Unterbrechungen mit hoher Geschwindigkeit zu verarbeiten | |
DE102006052757A1 (de) | Automatisierungsgerät mit einer Verarbeitungseinheit und Verwendung einer Verarbeitungseinheit in einem Automatisierungsgerät |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: JUNG HML, 80799 MUENCHEN |