Merker

SPS-noob

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
in Sachen SPS bin ich der totale Noob und in der Schule haben wir gerade damit angefangen, nun soll ich für die Schule etwas zu dem Thema: Was sind Merker und was muß ich bei dem Umgang mit Merkern beachten

Möchte hier von Euch kein fertiges Referat oder sonstiges haben, sonder ich brauche ein paar Angaben aus denen ich einen Text machen kann.
z.B.: Wie ist der Merkerbereich aufgebaut und was muß ich bei dem Umgang mit Merkern beachten.

Zu diesen zwei Dingen habe ich im Netz nicht viel finden können.

Hoffe Ihr könnt mir da ein wenig weiterhelfen
 
Merker sind Variablen in der Größenordnung Bit.

Wie die Merkerbereiche genau aufgebaut sind hängt von der verwendeten Steuerung ab, speziell vom Hersteller. (Da du von Schule sprichst wird es wohl mal wieder Siemens sein... )

Bei Siemens wird nicht zwischen Merker und Wortbereich unterschieden, dies ist wichtig zu wissen um nicht ausversehen Merker mit Wortwerten zu überschreiben oder umgekehrt.

Der Merkerbereich erstreckt sich je nach Größe der Steuerung von M0.0 bis z.B. M65536.0

Dabei besteht ein Merker wie schon erwähnt immer aus einem Bit und ein Wort somit aus 16 Merkern.

Word 0 enthält M0.0, M0.1, M0.2 .... M0.7, M1.0, M1.1 ...M1.7
(Es wird immer nur Byteweise (8) gezählt, deswegen immer von 0-7)


Ich hoffe ich konnte etwas helfen und habe nicht noch mehr Verwirrung gestiftet :D
 
In Google hab ich auch schon gesucht, jedoch aber nichts genaues gefunden was ich im Umgang mit Merkern beachten muß.
Wie gesagt bin halt noch ein SPS Dummi :)

@eYe

Jo Siemens :) Wir haben dort die S7 300
 
Nimm Siemens mit Merkern und alles wird merkwürdig.

Wie schon von eYe erwähnt geht das ganze Byteweise. Also muss man beachten das es bei Word (2 Byte) oder gar Doppelword (4 Byte) Adressierungen zu Überschneidungen kommen kann.

In der Praxis wird oft mit geraden Adressen gearbeitet.

Dann ist es auch interessant zu wissen ob der verwendete Merkerbereich remanent ist oder nicht (also ob die Merker nach einem SPS Neustart noch wissen was vor dem Neustart los war).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
z.B.: Wie ist der Merkerbereich aufgebaut und was muß ich bei dem Umgang mit Merkern beachten.

Hallo,
auf den Merkerbereich in der SPS kannst du ziemlich wahlfrei zugreifen und ihn entsprechend benutzen. Merker stammen (sind ein Relikt) aus der Step5-Zeit. Der Sinn ist, wie der Name es schon sagt, sich etwas zu "merken". Das können binäre Zustände sein, genausogut aber auch Werte in der Größenordnung der verwendbaren Variablentypen.
Der Speicherbereich wird, wie schon von eYe beschrieben, adressiert.
Bits kann man setzen, rücksetzen oder zuweisen.
Werte kann man laden, transferieren und eben auf manifaltige Art verrechnen.
Adressen im Speicherbereich können sich (siehe auch Beitrag Zotos und eYe) überlappen. Hier ist also bei der Zuordnung etwas Sorgfalt gefragt ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
weil es zeitgemäßer ist funktionen zu schreiben, die instanzen statt einen festen merkerbereich benutzen - vorteil? system- und projektunabhängige wiederverwendbarkeit, da die adressierung beim einsatz festgelegt wird.

Ich persönlich mag das nicht. Genausowenig wie indirekte Adressierung.
Liegt aber vieleicht am Alter.
 
@Rudi:
Ich bin auch schon etwas älter - trotzdem programmiere ich sehr gerne gekapselt ...

@Rudi & 4L:
Diese Diskussion (mit der du natürlich Recht hast) hat in diesem Beitrag m.E. nichts zu suchen. Hier ging es doch um Merker.

nochmal @Rudi:
Statt Merkern kann man auch genausogut Datenbausteine verwenden. Ich würde tatsächlich behaupten, dass die "nur aus Kompatiblität" von der S5 zur S7 vererbt worden sind ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Rudi & 4L:
Diese Diskussion (mit der du natürlich Recht hast) hat in diesem Beitrag m.E. nichts zu suchen. Hier ging es doch um Merker.

tut mir leid LL aber ich glaube schon, dass diese diskussion hier etwas zu suchen hat. denn es macht deutlich, dass merker globale speicherteile sind, die man zwar innerhalb eines zyklusses mehrfach verwenden kann, die aber dadurch in gekapselten funktionen nichts zu suchen haben - ich würde bei der erklärung/beantwortung der frage schon darauf eingehen, dass merker bestandteil einer globalen funktion aber nicht (nie!!!) bestandteil einer gekapselten funktion sein sollten.
 
@Rudi:
Ich bin auch schon etwas älter - trotzdem programmiere ich sehr gerne gekapselt ...

Ich bilde mir ein ein Programm mit direkter Adressierung und ordentlicher Bezeichnung der Merker usw. ist für "Fremde" besser zu durchschauen.
Vorausgesetzt das ist gewollt.
Wie gesagt meine Anfänge liegen schon vor der S5 und damals war ich in der Instandhaltung. "Merker" lagen damals mit in dem Adressbereich der Ein- und Ausgänge.
Ich will natürlich nicht behaupten das ich unbedingt recht habe. Das ist nur meine persönliche Meinung und der Mensch ist ein Gewohnheitstier.

Grüsse Rudi
 
Ich bilde mir ein ein Programm mit direkter Adressierung und ordentlicher Bezeichnung der Merker usw. ist für "Fremde" besser zu durchschauen.

so fern man die mittel des beobachtens (ja, man kann gekapselte funktionen auch gekapselt, also den spezifischen aufruf, beobachten) beherscht (ich hatte dazu mal nen "test" durchgeführt: http://sps-forum.de/showthread.php?t=21494 ) ändert sich eigentlich nichts gegenüber einem global adressierten programm BIS AUF:

- es ist übersichtlicher
- schneller zu erstellen
- leichter zu warten
- und wesentlich kleiner

eine vernünftige schnittstellenbeschreibung setze ich dafür allerdings vorraus.

sorry larry, das mußte jetzt noch raus.
und rudi - niemand ist zu alt um mal was anderes auszuprobieren ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bilde mir ein ein Programm mit direkter Adressierung und ordentlicher Bezeichnung der Merker usw. ist für "Fremde" besser zu durchschauen.
...

Merker sind ja wie bereits erwähnt global und haben somit in gekapselten Bausteinen nichts verloren.
Aber auch für globale Informationen finde ich Datenbausteine deutlich besser. Da man damit eine Struktur aufbauen kann. Der Name des Datenbausteins gibt schon mal den Bereich an. Wenn man im Datenbaustein mit Struckturen und UDTs arbeitet kann man die Zugehörigkeit dieser Variable zum Anlagenteil besser darstellen.
Dazu kommt das man ganze Anlagenteile auch gut Kopieren kann. Ein weiterer Vorteil ist das ich von Datenbausteinen auch einen AG-Abzug machen kann und somit die Aktualwerte sichern kann.

Und das schreib ich als Datenbausteinhasser aber Siemens bietet halt nichts besseres.
 
@4L:
OK - ich geb zu, die jetzige Entwicklung dieses Thread hat schon sehr wohl etwas mit "Merkern" zu tun.

@Rudi:
Die Argumentation von 4L und Zotos ist für mich schlüssig. Beim Programmieren bin ich auch sehr gern ein Gewohnheitstier, dennoch habe ich sehr klare strukturelle Vorstellungen. Bei vielen meiner (vornehmlich neueren) Programmen ist es so, dass die Merker hier tatsächlich den Platz von echten Global-Variablen übernehmen. Speicherbits, die nicht direkt als Global anzusehen sind, die landen bei mir gern in DB's (hier am Liebsten I-DB's). Gleiches gilt für Werte und Parameter.

Gruß
LL
 
Hallo Leute,

ich hätte da auch noch ein, zwei Fragen zum Thema Merker. Ich schreibe nämlich gerade ein Programm, mit dem ich ein paar Daten aus der CPU auslesen kann. Ich hoffe ihr könnt mir da weiterhelfen.

1. Im Handbuch der CPU habe ich bei den Leistungsmerkmalen gelesen, dass die CPU 16384 Merker-Byte besitzt. Das kann ich aber nicht ganz nachvollziehen. Wenn ich mit meinem Programm den Merkerbereich auslesen möchte, komme ich nur bis 8192. Das 8192 die Hälfte von 16384 ist, das habe ich schon bemerkt. Aber ich versteh da den Zusammenhang nicht. Könnte mir den eventuell jemand von euch erklären?

2. Kann ich eigentlich die Größe des Speicherbereichs für die Merker auch irgendwie von der CPU auslesen, z.B. über eine SZL-ID? Oder gibts da nur die Variante, die ich jetzt habe: einfach probieren wie weit man kommt.


Bin schon gespannt auf eure Antworten und bedanke mich schon mal im Voraus.

Gruß KT82
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Simatic Manager -> Zielsystem -> Diagnose/Einstellungen -> Baugruppenzustand -> Registerkarte "Leistungsdaten"

Im unteren Bereich stehen die Anzahl an Merker von M0.0 - M255.7 (oder mehr)

Gruß wolder
 
Hallo,

ich nochmal. Mir sind noch zwei Fragen eingefallen.

3. Darf ich wirklich alle Merker-Bytes von außen beschreiben? Vom PC aus sende ich nämlich den Befehl, dass ich Merker-Bytes schreiben möchte. Wenn ich danach den gleichen Bereich wieder auslese, dann sehe ich, dass nicht alle Bytes so geschrieben werden, wie ich eigentlich gedacht hätte. Es handelt sich dabei im speziellen um die ersten beiden und das vierte Byte, immer jeweils von dem Bereich aus, von dem ich anfange zu schreiben. Ist das korrekt? Oder stimmt etwas mit meiner Schreibroutine nicht.

4. Hat eher indirekt mit mit Merkern zu tun. Hier habe ich gelesen das die Anzahl der Bytes, die pro Telegramm verschickt werden, von der PDU-Größe abhängen. Bei mir beträgt die wohl 240 Byte. Wenn ich es richtig verstanden habe, kann ich aufgrund des Overheads nur 222 Bytes Nutzdaten verschicken oder empfangen. Bei mir ist jetzt halt nur das komische, dass ich nur 220 Bytes lesen und nur 210 Bytes schreiben kann. Kann das sein? Oder ist das so eine Sache, die von der CPU selbst abhängt.


Ich hoffe, ihr könnt mir weiterhelfen.
 
Das mit den Leistungsdaten war ein guter Tipp. Zumindest weiß ich, dass die Grenze wohl wirklich bei 8192 liegt.

Habe jetzt auch rausgefunden, dass das auch über die SZL-ID abzufragen geht. Ich vermute SZL-ID 0x0D91. Ich muss nur noch rausfinden, was da jetzt alles ankommt, und an welcher Stelle die Informationen sind, die mich interessieren.
 
Zurück
Oben