Merker FC übergreifend?

K3ul3

Level-1
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich habe eine Frage, die Ihr mir sicher easy beantwoerten könnt.

Und zwar, wenn ich zB. im FC 1 den Merker M1.6 verwende und diesen auch im FC 3 drinstehen habe, wird dann beim Programmablauf, wenn ich im OB1 alle FC´s calle, dieser Merker 1.6 sowohl im FC 1 und auch im FC 3 gleichzeitig ansprechen?

Gruß Jens
 
"gleichzeitig" nicht gerade, aber nacheinander in jedem Aufruf eines FCs, in dem Du den Merker verwendest.
Mein Tip am Rande: verwende niemals in FCs oder FBs Merker. Wenn Du in einem FC oder FB eine Variable benötigst, kannst Du dir dort eigene Variablen deklarieren.
Und ein FC, in dem Du Variablen abspeicherst, um sie im nächsten Zyklus (oder Aufruf) wieder auszulesen (im zuletzt abgespeicherten Zustand) ist falsch am Platze. In solchen Fällen solltest Du auf FBs zurückgreifen.
 
"gleichzeitig" nicht gerade, aber nacheinander in jedem Aufruf eines FCs, in dem Du den Merker verwendest.
Mein Tip am Rande: verwende niemals in FCs oder FBs Merker. Wenn Du in einem FC oder FB eine Variable benötigst, kannst Du dir dort eigene Variablen deklarieren.
Und ein FC, in dem Du Variablen abspeicherst, um sie im nächsten Zyklus (oder Aufruf) wieder auszulesen (im zuletzt abgespeicherten Zustand) ist falsch am Platze. In solchen Fällen solltest Du auf FBs zurückgreifen.

verzeih die dumme frage:
wozu sind merker eigentlich da?? wenn ich sie nicht in fc oder fb verwenden soll, soll ich sie in einem ob heranziehen, oder ist das merkerregister unnötig?
 
es ist eine saubere trennung von lokaler und globaler adressierung vorzunehmen. man kann genauso gut in einem FC global adressieren, zum beispiel um daraus unterbausteine aufzurufen. am wichtigsten ist die struktur!

ich glaub das meinte grubba - zumindest hoff ich es für ihn :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es ist eine saubere trennung von lokaler und globaler adressierung vorzunehmen. man kann genauso gut in einem FC global adressieren, zum beispiel um daraus unterbausteine aufzurufen. am wichtigsten ist die struktur!

ich glaub das meinte grubba - zumindest hoff ich es für ihn :rolleyes:

*ACK*trennung global lokal!!! jep! so hat er natürlich recht!
 
Entschuldigt bitte, aber was genau ist global und lokal auf einen FC bezogen?

Der Grund warum ich frage ob man einen Merker aus einem FC gleichzeitig auch für einen anderen FC ansteuern, bzw auslesen kann, ist der, da ich in einem speziellen Fall einen speziellen Merker für einen anderen FC als Startsignal brauche.

Ich programmiere ein mechatronisches System, welches aus einem Förderband, einem Greifer und einer Presse besteht.
Für jede Station möchte ich einen FC programmieren.
Um auszuschließen, dass meine Presse eine Endlosschleife abfährt, benötige ich den Merker aus dem FC für den Greifer, welcher genau dann Signal hat, wenn die Presse ihren Ablauf starten soll. Dh. ich möchte diesen Merker aus dem FC 2 als zusätzliche Startbedingung für den FC 1 einbeziehen.

Geht das wenn ich im OB1 sowohl Call Fc1 bis Call FC 3 mache?

Thx.
 
Merker sind bei der S7 (auch bei der S5) eine Systemresource und somit SPS-weit sichtbar und global. Es gibt nur einen M 1.6 und egal wo dieser verwendet wird, es wird immer auf denselben Operanden zugegriffen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den Begriff "gleichzeitig" gibt es bei einer SPS nicht.
Die SPS arbeitet Befehl für Befehl ab, Zeile für Zeile ...

Z.B.
SET
= M1.6 //M1.6 ist High

U M1.6
= A0.0

CLR
= M1.6 //M1.6 ist nun Low

U M1.6
= A0.1

Welchen Zustand denkst du nun, hat A0.0 bzw. A0.1?

Mfg
Manuel
 
Beide Low.

Ich bin, wie Ihr merkt Neuling in S7, hatte bis jetzt einen einwöchigen Kurs.
Ich überlege nur, ob das was ich mir vorstelle funktionieren kann.
Bei dem mechatronischen System, das ich programmiere, möchte ich zum Schluss alle 3 Stationen gleichzeitig ablaufen lassen, zusammenhängend.
Ich werde dann im OB1 den Befehl "Call FC1 bis Call FC3" aufrufen müssen. Mir ist schon klar, dass die SPS jede Programmzeile nacheinander abarbeitet. Wahrscheinlich sehr schnell.
Jedoch ist es doch abhängig, welche Bedingung welchen FC wann aufruft, in meinem Fall stellt ein FC eine Schrittkette dar, zB. einen Ablauf des Greifers.
Diese 3 Stationen sind aufeinander abgestimmt, wobei jede von der anderen Station beeinflusst wird. Also startet die jeweilige zutreffende bedingung einen FC.
Habe ich das richtig verstanden?!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

gleichzeitig gibts nicht:

Code:
OB1 1. Zeile: Call FC1
                    |
                     --> FC1 1. Zeile der FC wird abgearbeitet, bis zu letzten Zeile
                             |
                     <-----
OB1 2. Zeile: Call FC2
                    |
                     --> FC2 1. Zeile der FC...

usw usf
.
.
.
OB1 letzte Zeile:
springt zu OB1 1. Zeile
das ist dein "gleichzeitig"
also alles schön der Reihe nach, weil zyklischer Ablauf
 
@ Manuel: habe bis jetzt in FUP programmiert, nicht in AWL.
Da es ein Merker 1.6 ist, der sowohl auf den Ausgang A0.0 und A0.1 Einfluss nimmt, muss doch der erste abgearbeitete Ausgang von High auf Low wechseln oder nicht?

Jo Manfred, wie schnell wiederholt sich dieser zyklische Ablauf?
 
Nein. FUP ist übigens nur eine Darstellungsart. Intern arbeitet die SPS die AWL-Befehle sequentiell ab (wie es Manfred so schön dargestellt hat).
Versuche einmal folgendes in FUP:
Code:
UN M 1.0
= M 1.0
Im Status werden beide Verwendungen des selben Operanden einen anderen Zustand anzeigen (egal ob in AWL, KOP oder FUP).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@k3ul3:
Eigentlich ist zu dem Thema schon (fast) allles gesagt.
Vielleicht noch eins zur Verdeutlichung :

- Wenn du es auf die Spitze treibst sind in der S7 alle Variablen irgendwie global (im Grunde sogar die TEMP's wobei hier etwas andere Maßstäbe gelten).
Was ich damit sagen wollte ist, das es bei Baustein-übergreifenden Verwendungen von Merkern (oder auch Datenbits) m.E. darauf ankommt, dass du die ursprüngliche Funktion erhältst. Hast du z.B. einen M4.0 dessen Funktion ist "Sektion 1 in Grundstellung" dann wäre es schick, wenn er nur in Sektion 1 erzeugt wird (alles andere wäre unprofessionell) und am Allerbesten nur einmal. Du kannst ihn aber überall anders (wo benötigt und sinnvoll) abfragen - das ist nicht unüblich.

- was MSB dir mit seinem Beispiel verdeutlichen wollte ist die zyklische Programm-Bearbeitung. Das SPS-Programm wird Zeile für Zeile von Oben nach Unten abgearbeitet. Das heißt, dass wenn du einen Merker in Zeile 20 setzt und in Zeile 40 rücksetzt, dann ist er zwischen Zeile 20 und 40 aktiv und zwischen Zeile 40 bis 20 inaktiv und wird vom Programm dann auch so gehandelt ...

Gruß
LL
 
wie schnell wiederholt sich dieser zyklische Ablauf?
Das kommt darauf an.
Zuerst wird der Peripherieeingangsbereich in das Prozessabbild Eingänge übertragen,
dann wird der OB 1 ausgeführt,
dann wird das Prozessabbild Ausgänge an den Peripherieausgangsbereich übertragen.
Und wenn jetzt keine Mindestzykluszeit parametriert ist, geht es wieder von vorne los.
Im Idealfall erfolgt die Wiederholung so schnell die SPS kann und es der SPS-Programmierer durch sein Programm nicht verhindert hat ;-).
Zu beachten ist allerdings, dass diese Sequenz durch entsprechende Interrupts und Weckalarme unterbrochen (und somit verzögert) werden kann.
 
Zurück
Oben