Step 7 Frage zur Übergabe von Werten

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich knoble grade und komme auf keine gute Lösung. Ich habe z.B. sieben Schrittketten, wobei immer nur eine davon angewählt ist.

In einem zentralen Baustein (FC) werden die Ausgänge der Schrittketten angesteuert. Damit das funktioniert müssen die Schrittwerte der jeweiligen Kette an diesen FC übergeben werden.

Wie schaffe ich es, dass immer nur die angwählte Schrittkette die vorgesehene Variable (z.B. MW200) benutzt, um darüber die Schrittnummer zu übertragen?
 
Hallo spirit!

Du weisst sicher welche der Schrittketten aktiv ist. Evtl. über ein gesetztes bit. Dann einfach die Schrittnummer verwenden dessen aktivbit gesetzt ist.
u Kette1_aktiv
spbn s2
l schrittnummer_kette1
t mw200
spa ende
s2:nop 0
u kette2_aktiv
spbn s3
l schrittnummer_kette2
t mw200
spa ende
.
.
.

end: nop 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke schon mal für diesen Vorschlag;

mein Problem ist jetzt nur noch - an die einzelnen Schrittketten-Nummern (z.B. schrittnummer_kette1) komme ich ja so nicht heran. Diese sind ja in der Schrittkette als IN_OUT_Variable deklariert.
 
Evtl. könntest Du eine zusätzliche Out-Variable "aktiv" in allen Schrittketten einfügen welche anzeigt dass die Schrittkette aktiv ist. Diese dann auf true setzen solange die Schrittkette bearbeitet wird.
Andere Möglichkeit: Welchen wert hat die Variable Schrittnummer wenn die Kette nicht aktiv ist? Falls Du hier einen Standartwert hast kannst Du ja prüfen ab der aktuelle Wert anders ist.
Wenn ja, dann den Wert zur weiteren Verwendung speichern und im Programm fortfahren...

Gruß
 
Danke schon mal für diesen Vorschlag;

mein Problem ist jetzt nur noch - an die einzelnen Schrittketten-Nummern (z.B. schrittnummer_kette1) komme ich ja so nicht heran. Diese sind ja in der Schrittkette als IN_OUT_Variable deklariert.

Aber eine IN/OUT kann doch beschalten werden.
Und diese Beschaltung z.B. MW 200 kannst du doch weiter verwenden.
Aber nur lesen nicht schreiben.

Sind deine Schrittketten Graph Ketten?


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber eine IN/OUT kann doch beschalten werden.
Und diese Beschaltung z.B. MW 200 kannst du doch weiter verwenden.
Aber nur lesen nicht schreiben.

Sind deine Schrittketten Graph Ketten?

bike

Nun, klar kann ich die IN/OUT mit MW200 beschalten. Aber das MW200 hängt ja dann sozusagen an allen Schrittketten...

Und wie kann ich das dann sondieren; dass eben nur die aktuell angewählte SK dieses MW benutzen kann?

Nein, die SK sind in SCL gemacht.

Vielen Dank!
 
Wie wäre es wenn du jeder Schrittkette ein eigenes MW gibst?
Solange die Schrittketten stehen ist der Init aktiv.
Dann suchst welches MW ungleich init ist und dann hast du die aktive Schrittkette.
Das wäre eine Krücke dies zu finden.
besser ist wenn du die Startvoraussetzung der aktiven Kette nimmst, dann das MW und gut ist es.


bike
 
Welchen Wert hat denn die Schrittkettennummer wenn die Schrittkette nicht läuft?
0?
Dann konntest Du eine Max-Auswahl der einzelnen Schrittkettennummern machen.

Aber was ich nicht verstehe: es gibt sieben Schrittketten, die im selber Schritt immer dasselbe machen?
Oder ist das eine Schrittkette, die sieben Instanzen hat, zB 7 gleiche Abfüllanlagen.

Du wirst ja wissen welche Schrittkette läuft, einfache einen kleinen FC schreiben mit 7 Bool und 7 Integer und in Abhängigkeit der laufenden SK das Integer am Ausgang schreiben.
Im Prinzip wie #2.

"schrittnummer_kette1" ist ja irgendeine Variable auf die man zugreifen kann wenns in einer Instanz liegt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry, wenn ich mich doof ausdrücke.

Nein, das Problem ist nicht, dass ich nicht weiß welche Schrittkette aktiv ist. Die wird über ein Display quasi angewählt.

In einem FB laufen drei Schrittketten. Von solchen FB's gibt es sieben an der Zahl. Dabei ist aber immer nur ein FB mit seinen drei Schrittketten aktiv.

Nun könnte ich schon jeder dieser drei Schrittketten pro FB jeweils ein MW zuweisen. Aber das wären ja dann 21 Merkerworte und ich wollte das ganze halt etwas eleganter lösen und mit nur drei Merkerworten auskommen.

1)
Aja stimmt, ich könnte natürlich über den Instanz-DB auf die Variablen in dem FB zugreifen, stimmts? Und dann es doch mit Lösung #2 versuchen...

2) Im Grunde könnte man ja auch jeden FB bedingt aufrufen, so dass nur immer einer aktiv ist. Habe nur mal gelesen, dass diese bedingten Aufrufe ungut sind. Stimmt das?
 
@Spirit:
Wenn du doch sowieso schon mit einem FB arbeitest ... wie wäre es dann, wenn die Schrittnummer Bestandteil der Instanz ist ? (So mache ich es für gewöhnlich).

Wenn du bei deiner Baustein-Verwendung eine "1 aus 7"-Geschichte machen willst, so geht das z.B. durch bedingtes Bearbeiten oder Anspringen bzw. Überspringen der Bausteine.
Ich bin allerdings kein Freund einer solchen bedingten Bearbeitung und würde es so machen, das der Baustein einen Enable-IN bekommt und dann intern selber entscheiden muss, was er damit amcht ...

Gruß
Larry
 
Zurück
Oben