Step 7 Was ist der Unterschied zwischen Datenbausteinen und Merkern?

James

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich habe gerade erst damit begonnen mich mit dem Thema SPS auseinanderzusetzten. Was genau ist der Unterschied zwischen einem Merker und einem Datenbaustein? Merker sowie Datenbausteine können Daten speichern, sodass man nachher wiederdarauf zurückgreifen kann. Wo liegt der Unterschied zwischen den beiden?
 
Datenbaustein speichert quasie Merker, Merkerwörter... Ein Merker Speichert nur 1 Signalzustand/Bit. Merkerbyte also 8Bit, Merkerword kann dann auch Analogwerte. Datenbaustein wird auch bei FB´s (Funktionsbaustein) gebraucht um die ganzen Zustände des Bausteins zu speichern und für weitere Verwendung zur Verfügung zu stellen. Geht sicher noch besser mit der Erklärung aber so mal die nicht Steuerungstechnik Erklärung. Hoffentlich auch dabei nichts falsches Geschrieben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Unterschied dürfte in erster Linie historisch sein.
Am Anfang hatten SPS sehr kleine schnelle Hauptspeicher, eine PS-3 von Moeller z.B. nur 36 Wörter.
Später kamen langsamere, aber größere Speicherbausteine dazu, so dass es unterschiedliche Speicherbereiche gab.
Andere Programmiersysteme haben den Unterschied aufgegeben, dort gibt es nur noch Variablen, aufgeteilt in remanent und nicht remanant sowie von außen adressierbar oder nicht.
Bei einer aktuellen 1500 sind Merker ein Kompatibilitätsrelikt. (Abgesehen von den Systemmerkern, aber auch das hätte man anders lösen können.)
 
Nochmaliger Versuch einer Erklärung!

Merker:
Merker stellen einen fixen Speicherbereich in der Steuerung dar und werden hauptsächlich zum Speichen von
Zwischenergebnissen verwendet. Auf Merker kann bitweise (M), byteweise (MB), wortweise (MW) oder
doppelwortweise (MD) zugegriffen werden, wobei die Unterteilung des Speichers fix ist.
Wie groß der Merker-Speicherbereich ist, hängt von der verwendeten CPU ab.

Datenbausteine:
Dieser Datenspeicher ist kein fix reservierter Speicher in der Steuerung, sondern wird vom Anwender (Programmierer) im
Arbeitsspeicher der Steuerung im Zuge der Programmierung seines Anwenderprogramms reserviert.
Dieser Speicher wird vom Programmierer wiederum in die verschiedensten Datentypen (Bit, Byte, Wort, Int ,..) unterteilt,
auf die er dann aus seinem Anwenderprogramm lesend oder schreibend zugreifen kann.
Auch hier gibt es je nach CPU grenzen hinsichtlich der Anzahl von Datenbausteinen, der maximalen Größe eines Datenbausteins und
der gesamten Speichermenge aller Datenbausteine. Dieser Bereich ist aber viel, viel größer als der Merkerbereich.
Es gibt dann noch die grobe Unterscheidung zwischen Global-Datenbausteinen oder Instanz-Datenbausteinern und
eine Vielzahl an Feinheiten, was aber den Rahmen hier sprengen würde.

Grundsätzlich gilt die Faustregel für beide Speicherbereiche: mehr CPU-Leistung -> mehr Speicher -> höherer Preis.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, vielen Dank für die Antwort!
Werden Merker z.B. nur in einzelnen Functions benutzt, um einen Wert kurz zwischenzuspeichern, auf den man nach ein paar Zeilen Code wieder darauf zugreift und weil es in Functions keinen Speicherbereich gibt und man deshalb Merker benutzt, um etwas innerhalb der Function zwischenspeichern zu können? Und Datenbausteine verwendet man eher in Funktionsbausteinen, wenn man auf das gespeicherte Ergebniss von einem anderen Baustein aus darauf zugreifen möchte?
 
Grundsätzlich sollte man Merker garnicht mehr verwenden. Siemens rät überall davon ab und hat die nur mehr als Kompatibilität gelassen. In Funktionen gibt es sehr wohl Speicher. Den temporären Speicher. Den muss man zwingend schreiben, bevor man ihn liest, da er sich nichts über einen Zyklus merkt. Perfekt für Zwischenergebnisse usw. In einem FB hat man zusätzlich noch den statischen Speicher. Der ist im Instanz-DB des FBs reserviert.
 
Zurück
Oben