home

SCHLEICHER System Auswahl

Übersicht  P03

Themen auf dieser Seite:

Adressraum 

interne Bits

Datenformat Wort

CPU Maschine

 

Die Programmiersprache der P03

Für die PROMODUL-K hat es noch genügt, sich einen Schaltplan vorzustellen, und diesen dann in KOP umzusetzen. Prinzipiell gilt das auch für die Bitanweisungen der P03. Für die Wortanweisungen ist es aber empfehlenswert, sich die CPU eines Prozessors vorzustellen. Die wahre CPU einer P03 Steuerung ist ein Mikroprozessor der 80x86 Reihe. Das CPU Modell das der P03 Sprache zugrundeliegt ist eine vereinfachte Pseudomaschine. Ein Compiler der Programmiersoftware PRODOC5 verwandelt den Kontaktplan und die Wortbefehle in Anweisungen, die durch den Mikroprozessor der P03 CPU ausgeführt werden können.

PRODOC 5

Die PRODOC 5 ist die Software mit der eine P03 programmiert, parametriert und getestet wird. Die Software enthält ein sehr umfangreiches Hilfesystem. Ziel der Entwicklung war, den Anwender so selbstständig zu machen, dass er sich alle Informationen aus der Software holen kann.

Deshalb ziehen Sie zunächst das Hilfesystem der P03 zu Rate. Dieses steht Ihnen immer und überall zur Verfügung. Meine Webpage können Sie nur erreichen, wenn Sie Internetzugang haben.

Unter LINK finden Sie Hilfe zur Installation der Software, sowie die ersten Schritte bei der Anwendung.

In den folgenden Themen werde ich mich immer wieder auf PRODOC beziehen.

Compiler

Die P03 hat eine CPU mit einem Mikroprozessor der 8068 Reihe. Diese Prozessoren verstehen Anweisungen wie S  1000 oder LDR  2400 nicht. Es muß also das Quellprogramm auf eine dem Mikroprozessor verständliche Sprache gebracht werden.

Dazu gibt es prinzipiell zwei Verfahren: Interpretieren oder Kompilieren.

  • interpretieren: Das SPS Programm wird als Quelldatei in die SPS geladen. Die CPU der SPS schnappt sich aus dem Programmspeicher der SPS die nächste Anweisung, übersetzt (interpretiert) diese und führt sie sogleich aus.
  • Kompilieren: Das SPS Programm wird in einen durch den Mikroprozessor direkt ausführbaren Code übersetzt. Dieser Code (Objektcode) wird in die SPS übertragen. Die CPU führt dieses Programm aus.

Ein Vorteil der Interpretation besteht darin, dass jederzeit nachvollziehbar ist, was die SPS macht. Man braucht nur das Quellprogramm aus der SPS hochzuladen um zu erkennen, was läuft. Das ist vor allem bei Programmänderungen lange nach der Inbetriebnahme vorteilhaft, wenn das ursprüngliche Quellprogramm nichtmehr vorliegt.

Ein weiterer Vorteil besteht darin, daß das Programm in der SPS bei Laufzeit geändert werden kann. Eine Online-Änderung.

Nachteilhaft ist, dass der Interpreter jede Anweisung erst lesen, auf Plausibilität prüfen muß und dann erst ausführen kann. Das verbraucht Rechenzeit. Allerdings wird das durch immer leistungsfähigere Prozessoren wett gemacht.

Ein Vorteil der kompilierenden Programmausführung besteht darin, dass die CPU den Programmcode unmittelbar ausführen kann. Rechenzeiten für die die übersetzung des Quellcodes einschließlich der Plausibilitätsprüfungen entfallen. Die Programmausführung wird bedeutend schneller. Ausserdem kann der Compiler das Quellprogramm analysieren und die Ausführung weiterhin optimieren.

Ein Nachteil besteht darin, dass der Objetcode, das lauffähige Programm nichtmehr in ein SPS Quellprogramm rückübersetzt werden kann. Nun ist aber diese "Uploadfähigkeit" ein wichtiges Charakteristikum einer SPS. Um das zu ermöglichen werden in die P03 zwei Programme geladen:

Der ausführbare Objektcode und ein komprimiertes Quellprogramm.

Beim Hochladen des SPS Programms von der Steuerung in den PC wird nur der Quellcode geholt.

 

Der Speicherraum in der P03 ist begrenzt. Bei größeren Programmen kann es geschehen, dass der Programmspeicher nicht ausreicht, um sowohl den lauffähigen Objektcode und den komprimierten Quellcode in der SPS abzuspeichern. Für diesen Fall kann man auch den Objektcode allein, ohne Quellcode in den Programmspeicher der P03 zu laden. Dann kann allerdings das SPS Programm nichtmehr aus der Steuerung in das Programmiergerät hochgeladen werden. Für Programmänderungen ist man auf auf eine aktuelles Originalprogramm angewiesen.

 

Adressraum:

Wie bei den Systemen PDPS und P02 unterscheidet die P03 in Wort und Bitadressen, die nichts miteinander zu tun haben. Es sind also nicht, wie bei einem bekannten anderem System, die Bits Teile von Bytes, Worten und Doppelworten. Einzelbits oder auch Merker befinden sich im Bitadressraum. Worte, oder auch Wortmerker befinden sich im Wortadressraum. Für den wortweisen Zugriff auf auf eine Gruppe von Einzelbits (Bitmerkern) oder den bitweisen Zugriff auf Worte gibt es eigene Befehle.

Die Adressen der P03 werden im oktalen Zahlensystem angegeben.

Die Bereiche können über die Programmiersoftware PRODOC 5 vergeben werden:

 

Menüfolge bis Steuerungsparameter

 

Steuerungsparameter

 

Prinzipiell sind die Adressen wie folgt vergeben:

 

Bit

Wort

4400Q bis 5000Q

384  batteriegepufferte Bits (remanente Merker). Der Zustand dieser Bits (Merker) überlebt eine Unterbrechung der Versorgungsspannung, oder die Betätigung der Reset Taste. Die untere Grenze dieses Bereichs kann über die Menüzeile "gepufferte Merker" angepasst werden. Der Bereich reicht bis zum oberen Ende des Bitmerkerbereichs

50Q bis 4400Q

2.264 Bits ("Bitmerker"). Der Zustand dieser Bits wird beim Einschalten der Versorgungsspannung (oder nach Betätigung der Resettaste) auf Null gesetzt. D.h. Selbsthaltungen sind, wie bei einer Schützsteuerung, nach "Spannung EIN" zurückgesetzt. Die Obergrenze dieses Bereichs kann über die Menüzeile "Bitmerker ... bis Adresse" angepasst werden

0 bis 47Q

intern belegt; z.B. Blinkbits

1 bis 4000Q

2047 Worte, batteriegepuffert. Die Obergrenze kann durch die Menüzeile "Wortmerker ... bis Adresse" angepasst werden.

100Q bis 277Q

Teilbereich der Wortmerker mit 14-Bit Worten, batteriegepuffert. Diese Worte dienen als Zählzellen bei HRA und NRA Befehlen, z.B. für Zeiten und Zähler. Dabei werden die Zählflanken in den obersten Bits gespeichert. Siehe "Datenwort der P03". Die Untergrenze dieses Bereichs wird über die Menüzeile "14 Bit Wortmerker Basisadresse" eingestellt, die Obergrenze über die Menüzeile "14 Bit Wortmerker Anzahl". Die Anzahl der Wortmerker wird oktal vorgegeben. 100Q (oktal) entsprechen also 64D(dezimal) Worten

0

reserviert für CPU: Erweiterungsregister

 

Zurück zur Themenübersicht

Interne Bits

ADR.

Als Eingang programmiert z.B

   0007          0004  
---] [---     ---]/[---

Als Ausgang programmiert z.B

    0000  
---( A )

0

wird durch den Vergleichsbefehl (z.B. CDW) zusammen mit den Bits 1 und 2 gesetzt.

Bit 0 = 0: Der Inhalt des Akkumulators ist nicht kleiner als der Vergleichswert. Oder auch größer oder gleich dem Vergleichswert.

Bit 0 = 1: Der Inhalt des Akkumulators ist kleiner als der Vergleichswert.

Abschluß eines Netzwerks. Die nächste Anweisung steht immer am Anfang des nächsten Netzwerks

1

wird durch den Vergleichsbefehl (z.B. CDW) zusammen mit den Bits 0 und 2 gesetzt.

Bit 0 = 0: Der Inhalt des Akkumulators ist nicht gleich dem Vergleichswert.

Bit 0 = 1: Der Inhalt des Akkumulators ist gleich dem Vergleichswert.

Freigabe für Interrupt von einer Bitkarte

2

wird durch den Vergleichsbefehl (z.B. CDW) zusammen mit den Bits 0 und 1 gesetzt.

Bit 2 = 0: Der Inhalt des Akkumulators ist nicht größer als der Vergleichswert. Oder auch kleiner oder gleich dem Vergleichswert.

Bit 2 = 1: Der Inhalt des Akkumulators ist größer als der Vergleichswert.

Freigabe für Interrupt von einer Wortkarte

3

Vorzeichen (oberstes Bit des Datenwortes)

Bit 3 = 0: positive Zahl

Bit 3 = 1: negative Zahl

Reserve

4

Eingeprägte logische "0"

S 4  unterbricht den Strang (immer aus)

O 4 leitet den logischen Zustand weiter (immer ein)

Reserve

5

Überlauf nach Addition oder Subtraktion

Reserve

6

Blinkbit 10 Hz.

synchron zu HP1: dieses Bit bleibt während der ganzen Laufzeit von HP1 und den aufgerufenen Unterprogrammen stabil. Zustandswechsel erfolgt, falls nötig, am Anfag des nächsten Zyklus von HP1.

Reserve

7

Blinkbit 1 Hz.

synchron zu HP1: dieses Bit bleibt während der ganzen Laufzeit von HP1 und den aufgerufenen Unterprogrammen stabil. Zustandswechsel erfolgt, falls nötig, am Anfag des nächsten Zyklus von HP1.

Reserve

10

Busstörung; keine Störung: high; Störung: low. Der Störzustand bleibt gespeichert, auch wenn der Grund der Störung wieder abgefallen ist.

Reserve

11

Netzteilstörung

Reserve

12

Reserve

Ein Impuls auf diese Adresse versucht, das Störflipflop 10  (Busstörung) zurück zu setzen. Erfolglos, wenn der Störgrund für die Busstörung permanent ansteht.

13

Zustand des Betriebsbereit Relais

Schaltet Betriebsbereit-Relais ein, schaltet die Ausgangskarten frei, Schaltet die Betriebsanzeige LED auf grün.

14

Reserve

Reserve

15

Fehler bei relativem Speicherzugriff

versucht, Fehlerbit 15 (Relativfehler) zurückzusetzen

16

Buszugriff auf nicht vorhandenes Modul

versucht, Fehlerbit 16 (Karte fehlt) zurückzusetzen

17

Division oder BCD Wandlung fehlerfrei

 

20

Ergebnis bei vorzeichenrichtigem Vergleich: Akku kleiner als Operand (wird zusammen mit Bit 21 und Bit 22 gesetzt)

 

21

Ergebnis bei vorzeichenrichtigem Vergleich: Akku gleich wie Operand (wird zusammen mit Bit 20 und Bit 22 gesetzt)

 

22

Ergebnis bei vorzeichenrichtigem Vergleich: Akku größer als Operand (wird zusammen mit Bit 20 und Bit 21 gesetzt)

 

23

Interruptfrequenz zu hoch; HP1 läuft länger als programmierte Zykluszeit

 

24

Reserve

Reserve

25

Batteriefehler

 

26

10 Hz Takt synchron zu Quartz, Zustandwechsel währen der Laufzeit von HP1 und all seinen Unterprogrammen möglich

 

27

1 Hz Takt synchron zu Quartz, Zustandwechsel währen der Laufzeit von HP1 und all seinen Unterprogrammen möglich

 

30

Zustandsabfrage Akkumulator Bit 0

Bit 0 des Akkumulators setzen, wenn Zustand = 1

Bit 0 des Akkumulators löschen, wenn Zustand = 0

31

Zustandsabfrage Akkumulator Bit 1

Bit 1 des Akkumulators setzen, wenn Zustand = 1

Bit 1 des Akkumulators löschen, wenn Zustand = 0

32

Zustandsabfrage Akkumulator Bit 2

Bit 2 des Akkumulators setzen, wenn Zustand = 1

Bit 2 des Akkumulators löschen, wenn Zustand = 0

 

... etc.

... etc.

46

Zustandsabfrage Akkumulator Bit 14

Bit 14 des Akkumulators setzen, wenn Zustand = 1

Bit 14 des Akkumulators löschen, wenn Zustand = 0

47

Zustandsabfrage Akkumulator Bit 15

Bit 15 des Akkumulators setzen, wenn Zustand = 1

Bit 15 des Akkumulators löschen, wenn Zustand = 0

Zurück zur Themenübersicht

Ein-/Ausgänge

Ein- und Ausgänge werden über die Steckplatzliste der Programmiersoftware PRODOC 5 vereinbart:

 

 

Datenformat Wort:

Datenwort P03

 

Das Datenwort der P03 ist 16 Bit breit. Beim Datenwort für Zählbefehle dienen die obersten Bits zur Abspeicherung der Flanken. Das Datenwort für Zählbefehle ist 14 Bit breit

Zurück zur Themenübersicht

 

Die CPU der P03

Die CPU ist aus der Reihe INTEL 8086. Die Software emuliert eine weiterentwickelte PDPS CPU mit 16 Bit Datenformat.

 

Programmzähler

Für jede der vier Tasks gibt es einen Programmzähler, der Unterprogrammsprünge ausführen kann. Programmsprünge nach vorne oder nach hinten (goto) sind nicht programmierbar

Register

Datenregister: Das Datenregister entspricht dem Akkumulator eines Mikroprozessors. Er dient als Merkzelle für Zwichenergebnisse. Das Datenregister ist entsprechend dem Wortformat der P03 16 Bit breit.
Adressregister: Dieses Register entspricht dem Indexregister eines Mikroprozessors und dient zur Berechnung der Speicheradresse von relativ  adressierten Befehlen.
Hilfsregister: verlängert das Datenregister um ein 16 Bit Wort nach links für Doppelwortoperationen bei Schiebebefehlen, Multiplikationen und Divisionen. Das Hilfsregister wird über die Adresse 0 erreicht (LDA 0, LRA 0)
VKE oder Bit Akku: enthält das Zwischenergebnis (Verknüpfungsergebnis) von logischen Netzwerken des SPS Programms. Das VKE steuert auch die Ausführung der Wortanweisungen.

Bit Abeitsspeicher und E/A:

Die P03 hat voneinander getrennt einen Bitspeicherbereich und einen Wortspeicherbereich. Der Bit Arbeitsspeicher der P03 wird über Bitbefehle erreicht. Es gibt also keine Operandenkennung, die bezeichnet, ob es sich um eine Wort- oder Bitadresse handelt. 

 

Bitanweisungen geifen auf den Bitbereich zu, Wortanweisungen greifen auf den Wortbereich zu.

 

Die Bit Eingänge und Bit Ausgänge sind Teil des Bitspeicherbereichs der P03 ("memory mapped I/O").

Die Lage der Ein- und Ausgänge wird über die Steckplatzliste vorgegeben. Es gibt also keine Operandenkennung, die kennzeichnet, ob ein Bitbefehl mit einem Bit Eingang, einem Bit Ausgang oder eine Bit Merkeradresse handelt.

Beispiele (AWL):

S       100        ;"Schliesser" von einer Bitadresse; sie ist ein E/A, wenn diese in der Steckplatzliste als Ein- oder Ausgang definiert ist
S       3000       ;"Schliesser" von einer Bitadresse; sie ist ein E/A, wenn diese in der Steckplatzliste als Ein- oder Ausgang definiert ist.
A       1000       ;Zuweisung auf  eine Bitadresse; sie ist ein Ausgang, wenn diese in der Steckplatzliste als Ausgang definiert ist.
LRA   1000       ;Wortzugriff auf die Wortadresse 1000. Kein Einfluß auf den Bitspeicher
S       3000       ;"Zuweisung auf  eine Bitadresse; sie ist ein Ausgang, wenn diese in der Steckplatzliste als Ausgang definiert ist.

Es empfiehlt sich also, stets die Steckplatzliste vor Augen zu haben.

Zumeist werden die Eingänge ab Adresse 100 gelegt, die Ausgänge ab Adresse 1000.

Zurück zur Themenübersicht

 

Wort Arbeitsspeicher und Wort E/A

Die P03 hat voneinander getrennt einen Bitspeicherbereich und einen Wortspeicherbereich. Der Bit Arbeitsspeicher der P03 wird über Bitbefehle erreicht. Es gibt also keine Operandenkennung, die bezeichnet, ob es sich um eine Wort- oder Bitadresse handelt. 

 

Wortanweisungen geifen auf den Wortbereich zu, Bitanweisungen greifen auf den Bitbereich zu.

 

Die Anzahl der Wortmerker wird über das Menü "Steuerungsparameter" definiert.Über die Steckplatzliste werden die Wort Ein-/Ausgangskarten definiert. Auf diese wird jedoch mit speziellen Wortbefehlen zugegriffen

Beispiele (AWL):

LDA   2125       ;Zugriff auf die Wortspeicheradresse 2125.
HRA    200       ;Zählbefehl auf die Wortadresse 200. PRODOC überwacht, ob diese Adresse im 14 Bit Wortspeicherbereich liegt.
A         200       ;Bitbefehl mit Zuweisung auf  eine Bitadresse; kein Einfluß auf die Wortadresse 200.

 

Zurück zur Themenübersicht

 

Interaktion von Wort- und Bitanweisungen:

Netzwerke mit Bitanweisungen werden wie in der PROMODUL-K aufgebaut. Wortanweisungen können an beliebiger Stelle des Netzwerkes stehen.

 

Wortanweisungen werden dann ausgeführt wenn sie im aktiven Pfad eines Netzwerkes stehen

 


00160:|   0100      3025
      |---WWW-------] [H--|
                          |
00162:                    |   0101      0004
                          |---WWW-------]/[N--------------
                          |                              |
00164:                    |   0301      0102      0004   |
                          |---] [-------WWW-------]/[N----
                          |                              |
00167:                    |   1241      0103      0004   |  0104      1310
                          |---]/[-------WWW-------]/[H------WWW------( A )

 

Die Wortanweisung WWW  0100 wird immer ausgeführt
Die Wortanweisung WWW  0101 wird ausgeführt, wenn das Merkerbit 3025 EIN ist.
Die Wortanweisung WWW  0102 wird ausgeführt, wenn das Merkerbit 3025 EIN und der Eingang 301 EIN ist.
Die Wortanweisung WWW  0103 wird ausgeführt, wenn das Merkerbit 3025 EIN und der Ausgangsmerker 1241 AUS ist.
Die Wortanweisung WWW  0104 wird ausgeführt, wenn das Merkerbit 3025 EIN ist (der ÖN  0004 schaltet immer durch).

 

 
 

Münstertal, 09.08.2014