Step7 - Merker nur im ersten Zyklus setzen

blue dun

Level-1
Beiträge
56
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe mit Hilfe von Euch inzwischen einige Probleme lösen können - danke!
Es ist mir jedoch noch nicht gelungen, in Step7 einen Merker zu basteln, der nur im ersten Zyklus gesetzt ist, wie der Merker SM0.1 aus MicroWin. Irgendwo habe ich mal aufgeschnappt, man müsse einen OB dafür benutzen - allein das Wie ist mir noch verborgen geblieben.

Gruß

blue dun
 
Such mal nach Anlaufmerker

ansonsten einfügen OB100
im OB100
Code:
Set
=M100.0  // oder ein anderer

Am Ende des OB1 als letzten Befehl
Code:
CLR
=M100.0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Merker "ZYKLUS1"

Ich schreibe bei mir immer im 1. Netzwerk des OB1:
Code:
      L     #OB1_SCAN_1
      L     B#16#3          // Scan 2-n of OB1
      <>I   
      =     "ZYKLUS1"       // M0.2
So brauche ich keinen OB100 und kein Rücksetzen des Merkers.

Der Code funktioniert auch, falls die CPU Wiederanlauf oder Kaltstart
kann und dann nicht OB100, sondern OB101 bzw. OB102 aufruft.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm, was macht denn #OB1_SCAN_1?

Ist dies eine deklarierte Variable im OB1?

Ja, das ist eine Variable die der OB vom SPS Betriebssystem übergeben bekommt!

Und wenn da ein wert <> 3 drinnsteht, dann ist der zyklus kein freier Zyklus, sondern der letzte war kaltstart, neustart usw...

Steht in der Step 7 Hilfe zum OB1
 
Danke Jochen!

1) Demzufolge muss diese Variable #OB1_SCAN_1 wohl auch genau so heißen, oder?

2) Anstatt "Zyklus1" könnte man doch auch direkt den Merker schreiben?

Sorry, hab' grad kein STEP7 hier, so dass ich nicht in die Hilfe schauen kann. ;)
 
Danke Jochen!

1) Demzufolge muss diese Variable #OB1_SCAN_1 wohl auch genau so heißen, oder?

2) Anstatt "Zyklus1" könnte man doch auch direkt den Merker schreiben?

Sorry, hab' grad kein STEP7 hier, so dass ich nicht in die Hilfe schauen kann. ;)

Wenn du die OBs aus den Standart Librarys nimmst, heissen die Variablen so. Ich denke aber der name ist nicht wichtig, sondern die Adresse, also die position in der Liste!

Ja, Zyklus1 ist ja eine lokalvariable!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OB1_Scan_1, ist ein Byte von 20 Byte Standard-Lokaldaten im OB1,
ganz präzise das Lokalbyte 1, also LB1

Zyklus1 ist der Symbolische Name des Merkers, hier laut Kommentar vermutlich M0.2

Mfg
Manuel
 
Ja, es ist genauso wie MSB mittlerweile für mich beantwortet hat:
#OB1_SCAN_1 ist eine der Standard-Lokalvariablen des OB1, siehe Hilfe zum OB1
"Zyklus1" ist der symbolische Name meines globalen Merkers M0.2

Gruß
Harald
 
Anwendung Merker "ZYKLUS1"

Das würde aber bedeuten, dass das Ganze noch irgendwo aufgerufen werden muss, damit dann der Merker M0.2 übergeben werden kann, oder nicht?
Der Themenstarter blue dun möchte einen universell verwendbaren Merker haben
der nur im ersten Zyklus gesetzt ist, wie der Merker SM0.1 aus MicroWin.
Dieser Merker M0.2 "ZYKLUS1" wird im 1. Netzwerk des OB1 in jedem Zyklus zugewiesen, wobei er nur im 1. Zyklus TRUE wird.
Man kann ihn im gesamten Programm verwenden wie man will, z.B. irgendwo verknüpfen
Code:
      O     "Taster_Quit"
      O     "ZYKLUS1"
      R     "Merker_Störungshupe"

      U     "ZYKLUS1"
      S     "Schrittkette_InitStep"
oder einen Initialisierungsbaustein nur im 1. OB1-Zyklus aufrufen
Code:
      U     "ZYKLUS1"       // nur im 1. OB1-Zyklus TRUE
      CC    FC1             // Initialisierungsbaustein bedingt aufrufen
Im Initialisierungsbaustein lösche ich z.B. alle Tastenbits, die von einem Panel oder einer Visu kommen.

Diesen globalen Merker muß man nicht an Bausteine übergeben (kann aber).

Gruß
Harald
 
Frage:
Wird OB1_SCAN_1 auch nach ein Warmstart auf "1" gesetzt ?

Der Kommentar zu OB1_SCAN_1 sagt "1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)".

Ich will das ich eine 1st_scan bit habe der aktiv ist nach ein Warmstart (*).
Dazu verwende ich heute OB100, aber überlege ob OB1_SCAN_1 besser/einfacher wäre.

*: Grund ist, wenn ich ein Program komplett geladen habe, und ich diverse Initialwerten setzen will durch den "1st_scan" bit, wird ein Warmstart durchgeführt, kein Kaltstart.
 
Frage:
Wird OB1_SCAN_1 auch nach ein Warmstart auf "1" gesetzt ?
OB1_SCAN_1 kann folgende Werte haben (siehe Step7-OB1-Hilfe oder Referenzhandbuch S7-300/400 System- und Standardfunktionen):
• B#16#01: Abschluß des Neustarts (Warmstarts)
• B#16#02: Abschluß des Wiederanlaufs
• B#16#03: Abschluß des freien Zyklus
• B#16#04: Abschluß des Kaltstarts
• B#16#05: Erster OB1-Zyklus der neuen Master-CPU nach Master-Reserve-Umschaltung und STOP des bisherigen Masters

Bei den meisten S7-300 CPU kommen nur die Werte B#16#01 im ersten Zyklus und alle weiteren Zyklen B#16#03 vor.

Die anderen Werte kommen nur bei CPU vor, die die entsprechende Anlaufart unterstützen:
(siehe: Zielsystem > Baugruppenzustand > Leistungsdaten > Organisationsbausteine)
Wiederanlauf können nur S7-400 (nicht S7-300 und nicht S7-400H)
Kaltstart können nur CPU318-2 und S7-400 (und eventuell alte S7-300 ???)

Was ist der Unterschied zwischen Neustart (Warmstart), Kaltstart und Wiederanlauf bei einer S7-400 CPU?

Ich will das ich eine 1st_scan bit habe der aktiv ist nach ein Warmstart (*).
Dazu verwende ich heute OB100, aber überlege ob OB1_SCAN_1 besser/einfacher wäre.
Ich finde die Anwendung eines 1st_scan bit übersichtlicher, weil ich den direkt in einem Netzwerk verknüpfen kann.
Wenn aber sehr viel zu initialisieren ist, dann könnte der Einsatz des OB100 besser sein. Ich glaube, da läuft die
Zykluszeit-Überwachung noch nicht (finde aber jetzt keine Quelle dazu).

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aha.

Aus der Kommentar für OB1_SCAN_1 in der Standard Bibliotek: "1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)".

Aus der online Hilfe: "B#16#01: completion of a warm restart" und "B#16#04: completion of a cold restart".

:confused:

Aber ich vertraue dir mehr als der Siemens Kommentar.
Wenn ich es verstanden habe, dann gibt OB1_SCAN_1 mir denselbe Ergebnis als OB100, das ein Warmstart durchgeführt wurde.
 
Anlauf-Info in OB1_SCAN_1

Ja Jesper, der Kommentar direkt am OB1_SCAN_1 im OB1 ist falsch, richtig ist es so:
Code:
STOP->RUN
 |
 |
 +--> warm restart (Neustart/Warmstart) --> OB100 --> OB1: OB1_SCAN_1 = 1 --+
 |                                                                          |
 +-->  hot restart (Wiederanlauf)       --> OB101 --> OB1: OB1_SCAN_1 = 2 --+
 |                                                                          |
 +--> cold restart (Kaltstart)          --> OB102 --> OB1: OB1_SCAN_1 = 4 --+
                                                                            |
                  +--> main cycle (freier Zyklus) --> OB1: OB1_SCAN_1 = 3 --+
                  |                                                         |
                  +---<----<----<----<----<----<----<----<----<----<----<---+
So kann die Anlauf-Info in OB1_SCAN_1 mit PLCSIM getestet werden:
PLCSIM Anlauf.gif

Die Anlauf-Art "hot restart (Wiederanlauf)" muß in HW-Config der CPU eingestellt werden:
HW-Config CPU Wiederanlauf.gif

Dann kann mit dem PG die CPU gesteuert werden:
PG-Bedienung.gif

Gruß
Harald
 
So verstehe ich es auch.
Problem ist nur das OB101 und OB102 gibt es gar nicht bei S7-300.
Also, bei S7-300 wird nur ein Warmstart erkannt. Und ich verwende nur S7-300.

Ich verwende jetzt ein nicht-remanente Merker um ein Kaltstart zu erkennen.
 
Zurück
Oben