Step 7 Übersicht tatsächlicher Speicherplätze und Adressierungen

quantum

Level-1
Beiträge
5
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich lerne mich momentan selbst in die gesamte SPS-Materie ein und finde keine Antwort auf Folgendes:

Anhand dieser Abbildung https://www.screencast.com/t/sB26nl8ZP möchte ich meine Frage erläutern.

1.

So wie ich es verstehe, gibt es 128 Bytes, die zur Verfügung stehen. Mir stellt sich die Frage, ob 128 Bytes jeweils für Speicherbereiche: Eingänge, Ausgänge, Merker zur Verfügung stehen oder ob sich diese 128 von diesen Speicherbereichen geteilt werden.

Ich habe ebenfalls widersprüchliche Beispiele gefunden, in denen einerseits erklärt wird, dass die Eingangsadresse E0.0 nicht gleichzeitig mit A0.0 verwendet werden kann, stattdessen müsste die erste Ausgangsadresse A4.0 lauten. Das würde die Vermutung unterstützen, dass ein gesamter und einmaliger Speicher existiert, der von Bit 0 bis ... durchnummeriert ist und von allen erdenklichen Adressierungen nicht überschnitten werden darf.

Ich habe ebenfalls ein Beispiel gesehen, in welchem gleichzeitig I0.0 und Q0.0 verwendet wurden. Das wäre der erste Widerspruch zu der Theorie eines Gesamtspeichers für alle Adressen.

Ebenfalls ist mir die Adressierung E0.1 mit anschließendem Merker M0.1 begegnet.

------------

2.

Abgesehen von dem obigen Abschnitt gibt es in dem gleichen Bild wie zuvor (https://www.screencast.com/t/sB26nl8ZP) noch weitere Adressen für Datenbausteine von 0 bis ... (wesentlich höhere Bytes, als für Eingänge, Ausgänge, Merker)

Auch hier wieder die Frage. Befinden sich die ersten 128 Bytes "im selben Topf" oder sind all diese Speicheradressen unabhängig voneinander, sobald der Speicherbereich (Eingänge, Ausgänge, Merker, Datenbausteine, Lokaldaten, ..) ein anderer ist?

------------

3.

Zuletzt noch die Frage zu den "Hardware-Eingängen und Hardware-Ausgängen". Ich Meine solche Ein- und Ausgänge, die beispielsweise mit Sensoren und Aktoren verdrahtet sind. Werden diese als Peripheriebereich Eingänge und Ausgänge bezeichnet? Falls nein, was ist was?
Falls doch, besitzen diese Hardware-Ein- und -Ausgänge weitere eigene Adressen oder sind diese Adressen die gleichen Eingänge und Ausgänge, wie die der Prozessbild-Eingänge und Prozessbild-Ausgänge.

------------

4.

Zusammenfassend: Teilen sich alle Adressen (als Bit/Byte Matrix betrachtet) einen überschneidenden Speicherplatz oder gibt es
gleiche Speicherplatz-Nummerierungen, also ?0.0 Adressen, wie E0.0, M0.0, DBB 0,...? Wenn diese alle verschieden sind, gibt es eine Unterscheidung zwischen den Hardware-Ein und -Ausgängen (Peripherie Ein- und Ausgänge ?) und Software-Ein und-Ausgänge (Prozessbild der Ein- und Ausgänge ?)
 
Hallo,

Zu 1.
nein die Adressen teilen sich den Speicherplatz nicht. E,A,M,L und DB sind eigene Speicherbereiche die eigentlich nix miteinander zu tun haben.
Man kann im selben Programm E0.0, A0.0 und M0.0 usw. verwenden

Zu 2.
Du kannst 63 Datenbausteine (und 63 Instanzdatenbaustein) anlegen wovon jeder 6140 Doppelworte lang sein kann

Zu 3.
Prozessabbild und Peripherie unterscheidet nur ob die Eingänge und Ausgänge vom OB1 (normaler Programmzyklus) gelesen bzw. geschrieben werden. Um alles was nicht im Prozessabbild liegt (das ist die Peripherie) muss man sich im Programm selbst um Aktualität kümmern. z.B. mit L PEW 120 T PAW 120
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm.. viele Fragen.

Grundsätzlich sind die Speicherbereiche...
  • Peripherie-Eingang (PEB, PEW, PED)
  • Peripherie-Ausgang (PAB, PAW, PAD)
  • Prozessabbild der Eingänge (E, EB, EW, ED)
  • Prozessabbild der Ausgänge (A, AB, AW, AD)
  • Merker (M, MB, MW, MD)
  • Datenbaustein (DBX, DBB, DBW, DBD)
  • Lokaldaten (L, LB, LW, LW)
...völlig voneinander getrennt bzw. können separat adressiert werden . Eine Verwendung von E0.0, A0.0, M0.0, L0.0 etc. ist problemlos möglich.

Die Größe des Peripherie-Eingangs- bzw. Ausgangsbereichs hängt von der CPU ab und ist im Datenblatt ersichtlich. Datenblatt...
Die gezeigte CPU stellt sowohl 8192Byte Peripherie-Eingangsbereich, als auch weitere 8192Byte für den Ausgangsbereich bereit.
Das ist der Speicherbereich über den, vereinfacht gesagt, deine Peripheriegeräte (Ein-/Ausgangskarten) mit der SPS kommunizieren.
Eine Eingangskarte stellt ihr Ergebnis (die Zustände der phys. Eingänge) dort im Eingangsbereich bereit.
Eine Ausgangskarte schaltet, anhand der der Vorgabe durch im PA-Bereich, die physikalischen Ausgänge.

Das Prozessabbild der Eingänge, die vor dir angesprochenen 128Byte (Standardeinstellung je nach CPU), ist lediglich eine Kopie des Peripherie-Eingangs-Bereiches erstellt vor Beginn des OB1-Programmzyklus.
Dabei wird einfach PEB0-127 auf EB0-127 kopiert. Der Sinn dahinter liegt darin die Eingangszustände während des OB1-Programmzyklus konstant zu halten um die Programmierung zu vereinfachen.
Die Eingangskarten liefern ihre Information azyklisch zu OB1 in den Peripheriebereich, die Zustände können sich also dort mitten im Zyklus ändern.
Um dem Vorzeubeugen macht man zu Beginn ein Abbild, welches während des Zyklus konstant bleibt und arbeitet dann einfach mit diesem. Daher "Prozessabbild der Eingänge"

Das Prozessabbild der Ausgänge ist das selbe nur anders rum. Am Ende des Zyklus werden die Ausgänge (A0.0) welche im OB1-Zyklus gesetzt wurden auf die Peripherie und damit auf die Karten übertragen.
Also AB0-AB127 auf PAB0-PAB127. Aus das dient hier nur um dafür zu sorgen dass die Ausgänge möglichst konsistent, nach einem kompletten Durchlauf des Anwenderprogramms, auf einmal, geschrieben werden.

Die Größe ist übrigens mittlerweile nicht mehr auf 128Byte festgenagelt. Bei aktuellen CPUs der 300/400-Generation kann mans in der HW-Konfiguration einstellen, bei der Generation 1200/1500 ist das Prozessabbild immer gleich groß wie der jeweilige Peripheriebereich.

Singalfluss:
Karte/Eingang -> PE -> E -> Programm
Programm -> A -> PA -> Karte/Ausgang

Zur Speicherarchitektur des CPU an sich kannst du dir mal das hier anschauen.
https://support.industry.siemens.com/cs/ww/de/view/7302326
 
Zuletzt bearbeitet:
Zurück
Oben