Wann wird ein Merker im SPS Zyklus gesetzt

Olbrich1983

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mal eine Frage zu Merkern, werden Merker erst im Prozessabbild der Ausgänge (PAA) also am Zyklusende gesetzt oder rückgesetzt oder geschieht dies direkt bei der Abarbeitung des Anwenderprogramms.
Es handelt sich um eine S7-314
 
Hallo,

das Thema ist zwar schon älter, aber meine Frage passt genau dazu.
Ich bin zur Zeit in einem Studium und hatte schon vor einiger Zeit Kontakt mit Step7. Seinerzeit habe ich gelernt, dass Merker sofort während der Programmabarbeitung beeinflusst werden und bin damit immer gut gefahren.

Heute im Studium erklärte der Dozent, dass Merker erst im PAA, also am Zyklusende beschrieben werden. Wir behandeln gerade Programmierung nach IEC 61131. Gibt es da Unterschiede an dieser Stelle?

Leider findet sich dazu fast nichts Konkretes, dafür aber einiges Widersprüchliches.

Ich wäre über Aufklärung und einige Quellen dankbar.

Danke und Gruß Matthias
 
.
Ein Merker wird sofort gesetzt, wenn du das in deinem Code so schreibst.

Wenn du "Setze M100.0" sagst, kannst du ihn in der nächsten Code-Zeile
bereits als "1" abfragen. Gilt ebenso für das Rücksetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@matthias43
Für die Frage spielt das PAA auch nicht die geringste Rolle.
Das ist eine Speicherstelle, welche natürlich sofort nach dem beschreiben den entsprechenden Wert hat.
Das PAA ist nur für die tatsächliche Ausgabe an die Hardware von Interesse.

Ich vermute mal stark, das du da eine Kleinigkeit überhört oder verwechselt hast.
Der Merker, also die Speicherstelle wird unmittelbar, also bereits in der nächsten Zeile den neuen Zustand aufweisen.
ABER, über die Kommunikation erhältst du aber immer den Zustand des Merkers, zu einem gewissen Zeitpunkt "Zykluskontrollpunkt",
also etwas was man prinzipiell durchaus mit einem Prozessabbild vergleichen könnte, typischerweise also das Zyklusende.

Mfg
Manuel
 
Hallo!

Danke für Eure Antworten.

Ich hatte heute nochmals mit dem Dozenten gesprochen. Sein Standpunkt ist folgender:

Merker werden nach IEC "hart" adressiert und stellen damit einen Hardwareausgang analog einem echten Ausgang dar. Zwar wird der Merker sofort beschrieben, aber die Ausgabe auf seine IEC-Adresse (hier %MX0.0.0) erfolgt erst zum Zyklusende.

Ist das tatsächlich so? Wo ist die Handhabung von Merkern definiert?

Kann leider keine Grafik mit der Aufgabenstellung anhängen, bin wohl noch zu neu hier.

Danke und Gruß Matthias
 
Merker werden nach IEC "hart" adressiert und stellen damit einen Hardwareausgang analog einem echten Ausgang dar. Zwar wird der Merker sofort beschrieben, aber die Ausgabe auf seine IEC-Adresse (hier %MX0.0.0) erfolgt erst zum Zyklusende.

Ist das tatsächlich so?

Hallo Matthias,
wenn das wirklich so wäre ... dann würde sehr viele meiner Programme nicht korrekt funktionieren ... Sorry.
Ein Merker (egal ob Bit, Byte, Wort oder DWord) wie auch das Pendant in einem Datenbaustein wird immer sofort (im Moment der Zuweisung) beschrieben und nicht erst am Zyklus-Ende.
Etwas anderes ist der Zugriff für eine Visualisierung - aber das ist hier (glaube ich) nicht das Thema ...

Gruß
Larry
 
Wenn man es genau betrachtet, wird sogar ein Ausgang (und Eingang wenn man diesesn setzt oder beschreibt) sofort gesetzt.
Nur die Aktualisierung der Hardware (Ausgangskarte) wird erst durch das PAA erfolgen ...
Du kannst im Netzwerk einen Ausgang setzen und im folgenden NW schon abfragen! Nur die Lanpe auf der Hardware geht halt erst nach dem PAA an ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Stimmt ... ich hatte einen Moment auch überlegt das zu Schreiben.
Das geht sogar (ist aber ganz ganz böser Programmierstil) mit dem Speicherbereich der Eingänge - auch der läßt sich im Programm wie Merker verwenden.

Gruß
Larry
 
Da kann ich meinen Vorrednern nur Recht geben. Merker können sofort nach zuweisung abgefragt werden.

@Boxy: Absolut richtig. Das PAA ist im Endeffekt nur zum steuern der Hardware, also Ausgänge setzen.

@Larry: War mir neu, sollte man am besten gar nicht wissen ums nicht zu benutzen :D

Musste da doch stark an ein paar Kollegen denken die noch aus der S5 Zeit kommen und wie wild Schmiermerker nutzen. Was da alles für ein Schund bei so einem Programm rauskommen würde will ich gar nicht wissen...
 
Da kann ich meinen Vorrednern nur Recht geben. Merker können sofort nach zuweisung abgefragt werden.
...
Musste da doch stark an ein paar Kollegen denken die noch aus der S5 Zeit kommen und wie wild Schmiermerker nutzen.

<schmunzel>

Wie Larry schon schrieb: E/A´s ist auch nur Speicher in der SPS.
Und Schmiermerker sind temporär mehrfach benutzter Speicher.

Zu der Zeit musste man sich aber noch ziemlich um ausreichende
Speicherkapazität bemühen, da hat man so ziemlich alles genutzt,
was die HW hergegeben hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

das Thema ist zwar schon älter, aber meine Frage passt genau dazu.
Ich bin zur Zeit in einem Studium und hatte schon vor einiger Zeit Kontakt mit Step7. Seinerzeit habe ich gelernt, dass Merker sofort während der Programmabarbeitung beeinflusst werden und bin damit immer gut gefahren.

Heute im Studium erklärte der Dozent, dass Merker erst im PAA, also am Zyklusende beschrieben werden. Wir behandeln gerade Programmierung nach IEC 61131. Gibt es da Unterschiede an dieser Stelle?

Leider findet sich dazu fast nichts Konkretes, dafür aber einiges Widersprüchliches.

Ich wäre über Aufklärung und einige Quellen dankbar.

Danke und Gruß Matthias
Der Dozent meinte bestimmt, daß das Prozeßabbild der Ausgänge am Zyklusende an die Hardwareausgänge übergebn wird.
 
Hallo!

Danke für Eure Antworten.

Ich hatte heute nochmals mit dem Dozenten gesprochen. Sein Standpunkt ist folgender:

Merker werden nach IEC "hart" adressiert und stellen damit einen Hardwareausgang analog einem echten Ausgang dar. Zwar wird der Merker sofort beschrieben, aber die Ausgabe auf seine IEC-Adresse (hier %MX0.0.0) erfolgt erst zum Zyklusende.

Ist das tatsächlich so? Wo ist die Handhabung von Merkern definiert?

Kann leider keine Grafik mit der Aufgabenstellung anhängen, bin wohl noch zu neu hier.

Danke und Gruß Matthias
Die Speicher Merker und Hardwareausgänge sind doch zwei verschiedene. Sonst wäre doch kein stabiler Zustand der Ausgänge möglich, noch nicht mal für einen Zyklus.
 
Musste da doch stark an ein paar Kollegen denken die noch aus der S5 Zeit kommen und wie wild Schmiermerker nutzen. Was da alles für ein Schund bei so einem Programm rauskommen würde will ich gar nicht wissen...
Ich habe sehr wohl gesehen, dass dieser Thread schon "etwas älter" ist und habe ihn heute erst entdeckt, weil er kürzlich erst wiederbelebt wurde.

Was soll schon Vernünftiges dabei heraus kommen, wenn man Merker so abfällig als SchmierMerker bezeichnet.
Da ist man auf eine negative Beurteilung ja schon so was von festgenagelt bzw. ist der gute Ruf schon derart ruiniert, dass man kaum eine Chance hat, sachlich zu erklären, worum es wirklich geht.
Wenn man SchmierMerker wild (= undiszipliniert und planlos) nutzt, dann besteht selbstverständlich die Gefahr, Schund zu programmieren.
Aber SchmierMerker waren nichts Chaotisches, sondern ein sehr klar strukturiertes und sorgsam angewendetes HilfsMittel, um die akute "MangelWirtschaft" bei S5 zu entschärfen.
Merker gab es viel zu wenige. Nämlich 256 * 8 Bit = 2048 Bit, die man einzeln aber auch gruppiert zu max. 256 Bytes à 8 Bit, max. 128 Worten à 16 Bit oder max. 64 DoppelWorten à 32 Bit verwenden/ansprechen konnte.
Die o.g. max. 128 Worte bzw. max 64 DoppelWorte sind insofern wörtlich zu verstehen, wenn man den MerkerBereich so in Raster einteilt, dass sich verschiedene Worte nicht gegenseitig überlagern und sich verschiedene DoppelWorte auch nicht gegenseitig überlagern.
Nahm man Überlagerungen (gemeint sind Doppel- oder MehrfachBelegungen desselben SpeicherBereichs) in Kauf, so konnte man max. 255 MerkerWorte und max. 253 MerkerDoppelWorte adressieren. Aber es sind noch etliche weitere gegenseitige Überlagerungen denkbar.
Gründe, Doppel- bzw. MehrfachBelegungen zu wollen, gab es aber nicht bzw. kenne ich keine - ausser beim Befehl B MW und bei den sogenannten SchmierMerkern, die nichts anderes sind, als temporäre bzw. lokale Merker, die man bei S5 allerdings selbst verwalten musste, weil sie nicht vom BetriebsSystem bereitgestellt wurden.
Stattdessen gibt es aber jede Menge Gründe, Doppel- bzw. MehrfachBelegungen zu vermeiden. Dazu war ein gründliches und gewissenhaftes Studium der QVL (QuerVerweisListe) und des BelegungsPlans erforderlich.
Ja, bei einigen S5-CPUs gab es als Maßnahme gegen die MangelWirtschaft "ParallelWelten" für die SpeicherBereiche der Merker und der DBs.
Das waren die sogenannten S-Merker und die DX-DatenBausteine.
Man hört immer wieder den Tipp, keine Merker zu verwenden, sondern stattdessen Variablen, die man in DatenBausteinen anlegt.
Das muss man aber nicht ausgerechnet auf die S5 beziehen. Die Adressierung war im Bereich DB bzw. DX komplizierter bis unmöglich beim Ansprechen von DatenBits und aufwändiger, wenn man häufig zwischen Daten in unterschiedlichen Bausteinen umschalten musste. Diesen MehrAufwand gab es im Bereich der Merker nicht, weshalb er durchaus gerne und sinnvoll genutzt wurde.
Für eine Byte-orientierte Adressierung bot sich die Benutzung des MerkerBereichs ebenfalls an, da der DB- bzw. DX-Bereich bei der S5 (fortschrittlicherweise schon ;o) Wort-orientiert war. Dieser "Fortschritt" wurde bei der S7 wieder "zurückgenommen" mit dem Vorteil, dass es hier in allen Bereichen einheitlich nur noch die byteweise Numerierung bei der Adressierung gibt (Ausnahme, die S5-Timer und -Zähler), allerdings ergänzt um weitere 3 Bit für die Adressierung von 8 einzelnen Bit je Byte. Dieses gutgemeinte, vereinheitlichte System bei Siemens SPS, das zudem versucht, die Bits aus der Welt der SPS in die Welt der HochSprachen zu überführen/zu retten, hat in der Praxis aber anscheinend viel KopfZerbrechen bereitet.

Da kann ich meinen Vorrednern nur Recht geben. Merker können sofort nach zuweisung abgefragt werden.
Ja, und aber wie! Das gilt doch für alle Variablen, dass sie durch die Zuweisung unverzüglich ihren ggfs neuen Inhalt erhalten und dass der neue Inhalt auch sofort abrufbar ist! Da wird nichts auf geheimnisvolle und unsichtbare Weise zwischengelagert!
Das, was wir im Programm als Eingänge oder Ausgänge ansprechen, sind doch normalerweise nicht direkt die HardwareEingänge und nicht direkt die HardwareAusgänge, sondern ihre ProzessAbbilder. Die wiederum sind ganz normale SpeicherBereiche. Na ja, ganz normal sind sie insofern nicht, als das BetriebsSystem zyklisch etwas mit ihnen macht. Das BS kopiert die Zustände der HW-Eingänge in das PAE (ProzessAbbild der Eingänge) und die Zustände des PAA (ProzessAbbild der Ausgänge) auf die HW-Ausgänge.
Man kann selbstverständlich Ausgänge beschreiben (z.B. setzen oder rücksetzen) und auch Eingänge. Die Ausgänge und die Eingänge kann man danach auch abfragen.
Um sich selbst und anderen das Leben nicht unnötig schwer zu machen, wird immer wieder geraten, die Ausgänge an nur 1 Stelle im Zyklus (nicht mehrfach im Zyklus) zu schreiben und die Eingänge gar nicht, denn die werden ja schon anderweitig vom BetriebsSystem geschrieben (s.o.).
Aber man kann es tun. Man sollte aber wissen, was man da tut und man sollte sich gut überlegen, ob es sinnvoll ist und welche unbeabsichtigte NebenWirkungen auftreten können.
Oben schrieb ich, dass man normalerweise die Hardware-Ein- und -Aus-gänge im Programm nicht direkt anspricht, sondern ihre ProzessAbbilder.
Man kann aber die "Peripherie" direkt, also unter Umgehung der ProzessAbbilder, ansprechen, wenn man es mal tun will oder muss.
Auch hier gilt natürlich: genau überlegen, was man damit erreicht/anrichtet/kaputtmacht.
 
Zurück
Oben