suche Praktiker-Tip zu Multiinstanzen

michi

Member
Beiträge
24
Punkte Reaktionen
2
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo liebe Kollegen !!

Hardware:CPU 314C
Software : step7 5.3

Der Umstieg von Step5 auf Step7 hat sich bei mir schon wegen den
Multiinstanzen gelohnt. Die find ich toll. Nur wenn's ums debugen geht,
dann finde ich die Möglichkeiten die Step7 bietet mager bis schlecht.

Ich hab einen FB der bearbeitet ein Ventil und wird in einem anderen
FB als Multiinstanz 25 mal deklariert und aufgerufen. Dieser gemeinsame
FB ist gross insgesamt 9k Ladespeicher.

Frage: Was macht Ihr, wenn ihr in einer dieser Multiinstanzen
fehlersuchen muesst ???

Ich hab nur ein Breakpoint und im singelstepmode ist es ein
hartes Brot Fehler zu suchen.

Am besten, wenn man die Beobachtenfunktion auf eine bestimmte Multiinstanz laufen lassen könnte.

Gibt es vielleicht einen anderen Trick ???



schoenen Gruss Alle

Michael
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Zuviel Werbung?
->Hier kostenlos registrieren
Ich habe schlechte Erfahrungen mit den Multiinst. gemacht (unter 5.1).
Seit dem nutze ich die kaum noch. Wenn ich ein Problem gesucht habe, habe ich den Baustein mit einem DB aufgerufen.

pt
 
OP
M

michi

Member
Beiträge
24
Punkte Reaktionen
2
Danke

Hallo Martin,

dein tip war gut

.... hab bisher immer gedacht,
dass diese Funktion ... beobachten im Aufrufpfad...
nur für Nichtmultiinstanzen möglich ist .

Danke

Michael :p
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Hi,

also mit der Vorgehensweise kann ich z.B. den 3. Aufruf einer Multiinstanz beobachten?

Gehen Sie folgendermaßen vor:

Wählen Sie den Menübefehl "Test > Betrieb".
Stellen Sie den Betriebsmodus "Testbetrieb" ein.
Öffnen Sie den aufrufenden Baustein online und positionieren Sie den Cursor auf die gewünschte Aufrufanweisung (CALL-Zeile in AWL oder Box des Bausteins in KOP/FUP).
Wählen Sie über die rechte Maustaste den Kontexmenubefehl "Aufgerufenen Baustein > Beobachten mit Aufrufpfad".

@michie
Wenn bei Dir mal unerklärliche Abläufe in den MIs auftreten, lass es mich wissen. Bei mir ist das während einer Inbetriebnahme aufgetreten. Auf einmal funktionierten die Aufrufe nicht mehr und ich musste alles auf FB,DB Aufrufe ändern.

Gruß pt
 

Heinz

Well-known member
Beiträge
657
Punkte Reaktionen
11
Zuviel Werbung?
->Hier kostenlos registrieren
Multiinstanzen

Hallo,
wir hatten ein grosses Projekt ca. 1200 EA Punkte mit Step 7 V5.2 durchgeführt. Dabei sind auch Multiinstanzen zum Einsatz gekommen. Eine Multiinstanz hat Bausteine als Multiinstanz aufgerufen, die auch Multiinstanzen beinhaltet.

Dies war mit max. 4 Ebenen der Fall.
Zwischendurch traten nicht nachvollziehbare Fehler im Betrieb auf. Daher wurde das Prg so angepasst, dass die Multiinstanzen nur noch einfach aufgetraten und viele kleine Fehler waren behoben.

So dass ich die Multiinstanzen mit Bedacht einsetzte.
 

Mecki

Well-known member
Beiträge
66
Punkte Reaktionen
1
Hallo,

auch ich habe ein Problem mit Multiinstanzen und habe langsam keine Ahnung mehr, wieso es nicht funktioniert.
Bin auch momentan auf einer Baustelle und daher ist es da mit der Internetanbindung eher schlecht^^.

Zum Problem:

Um hydraulische Bewegungen zu fahren habe ich einen FB120 geschrieben. Nun erzeuge ich für jedes Hydraulische Ventil einen FB der dann z.b. FB15 heißt, oder FB18 ect. Im FB15 wird dann der FB120 aufgerufen, der Seite Daten im STAT-Bereich des FB15 ablegt.
FB15 und FB18 werden dann im OB1 aufgerufen. Soweit so gut.
Mein FB120 benötigt 3 Timer. Um nun nicht immer Timer vorgeben zu müssen habe ich einen Zähler programmiert mit ADD_I der dann auf >I abgefragt wird. Tatsache ist nun, dass diese "Timer" nur in den ersten 2 Aufrufen funktionieren und danach nicht mehr. Ich habe den FB120 mit Aufrufpfad beobachtet und obwohl alle Timerbedingungen da sind, zählt er nicht hoch!
Muss ich in Step7 v5.4 noch irgendwas einstellen? Komisch ist, dass ich die Bewegung selber fahren kann, aber die Komfortfunktionen, die der Kunde haben wollte, funktionieren nur bei den ersten beiden Aufrufen. (Kunde wollte die Selbsthaltung der Bewegung erst nach einer Sekunde Tasterbetätigung haben und ein gegentippen löst den Stopp der Bewegung aus).

Kann mir vlt. jmd. helfen? Ich fand am Anfang die Multiinstanzlösung genial, weil man nicht so viele DBs zum gleichen FB anlegen muss, sondern man immer eine numerische Zuordnung FB15 <-> DB15 u.s.w. hat.

Wäre echt Dankbar für Tipps.

Gruß
Mecki
 

bike

Well-known member
Beiträge
6.464
Punkte Reaktionen
794
Komisch ist diese Reaktion schon.
Wenn ich es richtig gelesen habe, funktioneren FB 15 und FB 16 und die nächsten nicht?

Hast du den InstanzDB mal neu generiert? ggF das Projekt einmal neu generieren.
Schau dir im InstanzDB einmal die entsprechenden Bedingungen und/oder die Zähler an.

Oder schau dir wie plc_tippser beschrieben hat den FB bei dem Aufruf an, der nicht funkioniert.

bike

p.s. Ich verwende MultiInstanzen nur wenn es absoult unumkömmlich ist, also meist nie.
 

Mecki

Well-known member
Beiträge
66
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Komisch ist diese Reaktion schon.
Wenn ich es richtig gelesen habe, funktioneren FB 15 und FB 16 und die nächsten nicht?

Richtig!

Hast du den InstanzDB mal neu generiert? ggF das Projekt einmal neu generieren.
Schau dir im InstanzDB einmal die entsprechenden Bedingungen und/oder die Zähler an.

Neu generiert habe ich die Instanz DBs, das Projekt noch nicht.
Hatte den Instanz DB geöffnet (online) man sieht, dass die Bits ect. alle richtig sind, so wie sie sein sollen, aber der Zählerstand (der ja den Timer ersetzt), funktioniert nicht, bzw. die Zählbedingung ist WAHR, aber gezählt wird nicht.

Oder schau dir wie plc_tippser beschrieben hat den FB bei dem Aufruf an, der nicht funkioniert.
Habe ich auch gemacht, kann aber keine Fehler erkennen.
Danke für deine Hilfe. Wir hatten im letzten Jahr eine Anlage mit ca. 150 hydraulischen Bewegungen bei denen wir auch Multiinstanzen verwendet haben und da funktioniert es einwandfrei. Dort werden im OB1 FCs aufgerufen, die dann wiederum die FBs aufrufen, vlt sollte ich es nochmal so probieren am Montag.
 

Markus

Administrator
Teammitglied
Beiträge
5.266
Punkte Reaktionen
1.301
also ich arbeite viel mit multiinstanzen, speziell wenn ich massenhaft kleine fb´s brauche. z.b. für ventile oder die iec timer.

@mecki
wenn du die logic in einem fb hast, dann mache die timer dovh mit sfb4 oder sfb5 - die kannst du in deinem fb als uliintanz aufrufen.

arbeitets du in dem fb mit den adressregistern? AR1 und AR2?
in multiinstanzähigen fbs muss immer das AR2 mit zu der adresse addiert werden, da ansonsten immer auf den ersten aufruf gezeigt wird.
AR2 enhält quasi den offset zu der stelle an der die multiinstanz im db liegt.
ohne AR2 werden deine pointer immer ab adresse 0.0 des db gerechnet, also da wo die erste instazn oder sonst was liegt...
 

Mecki

Well-known member
Beiträge
66
Punkte Reaktionen
1
Nein, mit den Adressregistern arbeite ich nicht.
Der Ventilbaustein hat eigentlich nur Eingänge für die Taster, die Initiatoren, 2 Zeitwerte als INT, um einmal vorgeben zu können wie lange die Laufzeitüberwachung sein soll (wichtig für Endlagenfehlererkennung) und eine Zeit die definiert, wie lange ein Taster gedrückt sein muss, bis die Selbsthaltung einsetzt. Und dann gibt es noch einige Parametriereingänge, sowie einen Anlaufmerkereingang, der beim Start der CPU für einen Zyklus auf 1 geht, um alle FFs auf einen definierten Anfangswert setzen zu können.

Ich kann ja mal den FB120 (also den Ventil FB) umschreiben und mal mit SFB4 u 5 arbeiten, vlt klappt es dann :)

Danke für eure antworten, falls noch jmd ne Idee hat, bin ich für weitere Vorschläge dankbar.
 
Oben