Schrittkette in Methode

Bensen83

Well-known member
Beiträge
777
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo, ich habe folgende Frage.
Wenn Ich möchte eine Methode aufrufen, welche mir dann einen Antrieb in einen bestimmten Modus versetzt und wenn der Modus erreicht ist, das Startseite setzt. Aber ich Rufe die Methode ja nur einmal auf, das wird so nicht realisierbar sein. Oder?
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Hallo,
ich weiß nicht so genau, was du nun wieder vorhast - aber genau das sollte eine Methode (vorausgesetzt sie ist richtig programmiert) können ... Warum denn nicht ?

Was meinst du mit "das Startseite setzt" ?

Gruß
Larry
 
OP
B

Bensen83

Well-known member
Beiträge
777
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Ok hier ne Beschreibung

Ich Sage Motor.positivstart()
Nun wird der Antrieb über Bus in den Modus positiv verfahren gesetzt, wenn dieser Modus vom Antriebstatus zurückgemeldet wird, soll das Startbit gesetzt werden.
Aber das kann ja schon mal ein bis paar Zyklen dauern. Ich Rufe aber doch die Methode nur einmal auf, oder? Wie geht das dann?
 

mkd

Well-known member
Beiträge
197
Punkte Reaktionen
30
Du denkst, wie immer, zu kompliziert.
Warum baust du keine Methode "Schrittkette" die du zyklisch aufrufst?

Du hast pro Schritt ein Ausgangsbit und ein Eingangsbit als Weiterschaltbedingung.
Viell. auch noch die Schrittnummer als INOUT oder OUT UINT.
Jetzt noch ein Reset, Start und Freigabe IN.

Du gibst deiner Methode alle nötigen Parameter mit auf den Weg und kannst so deinen Schrittkettenbaustein bzw. Methode belibig oft in deinem Programm verwenden.
Der Phantasie sind dann keine Grenzen gesetzt. Du kanmst Schritte überspringen, Schrittketten nacheinander "schalten" usw.

Ausserdem kannst du immer sehen in welchem Schritt deine Kette gerade hängt.

Gruß
Daniel
 
OP
B

Bensen83

Well-known member
Beiträge
777
Punkte Reaktionen
3
Aha

Ich dachte der Sinn von Methoden sei es die nur einmal aufzurufen, oder habe ich das falsch verstanden?
 

mkd

Well-known member
Beiträge
197
Punkte Reaktionen
30
Zuviel Werbung?
->Hier kostenlos registrieren
Du hast doch eine SPS ?

Und da ist es der Sinn, das Programme zyklisch ausgeführt werden.
Auch ein Mikrocontroller läuft in einer Hauptschleife und wartet dort auf Benutzereingaben etc.
Wie will die Software der Kaffeemaschine sonst mitbekommen, dass der Anwender eine Tasse Kaffee haben möchte. Das kann heute oder auch in drei Wochen der Fall sein.

Eine Schrittkette wird doch von unterschiedlichsten Signalen weitergeschaltet. Diese Signale können in einem Zyklus zur Verfügung stehen ( z.B. Auswertung von Daten ) oder erst nachneiner undefinierten Anzahl von von Zyklen ( z.B. warten darauf das ein Servo oder Zylinder in Position ist ).

Tu dir, und anderen die mal in den "Genuss" kommen, den Gefallen und rufe deine Schrittkettenmethoden in Zyklisch auf.
Es bilft auch, wenn du den Schrittkettenaufruf in FUB realisierst. So erkennt man sofort, wo es hängt.

Wie hast du denn bisher Schrittketten realisiert?

Daniel
 
OP
B

Bensen83

Well-known member
Beiträge
777
Punkte Reaktionen
3
Mir geht's garnicht um Schrittketten. Das die zyklisch aufgerufen werden ist mir schon klar.
Mache die in einem PrG mit Case.

Mir geht es darum dass ist bspw. Ventil.vor() Aufrufe und die Funktion grad noch verriegelt ist. Also müsste ich die ja solange aufrufen bis die nicht mehr verriegelt ist. Im günstigsten fall eben nur einmal ;-)
 

mkd

Well-known member
Beiträge
197
Punkte Reaktionen
30
Und warum willst du deine Ventil Methode nicht zyklisch aufrufen ???
Was ist, wenn der Zylinder klemmt oder aus anderen Gründen seinen Endschalter nicht erreicht!
Oder, wie du schon erwähnt hast, eine Verriegelung greift?

Sei mir nicht böse, aber ich glaube, du solltest dir mal SPS Programme von Profis anschauen und dir abgucken wie die das so machen.

Daniel
 

MasterOhh

Well-known member
Beiträge
1.582
Punkte Reaktionen
397
Zuviel Werbung?
->Hier kostenlos registrieren
Die Methode musst du so lange aufrufen, bis das was sie machen soll auch erledigt ist.
Eine SPS arbeitet das Programm nunmal immer zyklisch ab und kann/darf auch nicht Blockiert werden.
Das heißt, deine Methoden müssen ihren Zustand (wenigsten ein Busy Signal) zurück geben. Nach einer fallenden Flanke von Busy brauchst du dann die Methode nicht weiter aufrufen, da sie ja dann augenscheinlich fertig ist.

Einmalige Aufrufe gehen eigentlich nur, wenn du z.B. einfach nur Signale rausschickst und nicht im selben Baustein auf eine Rückmeldung wartest. Ansonsten muss der Aufruf min über 2 Zyklen erfolgen.
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
@Benson:
Entschuldige bitte ... mal abgesehen von der SPS-Programmierung - du hattest mir vor einiger Zeit mal in einem anderen Thread geantwortet, dass du der OOP fähig und erfahren bist.
Dann solltest du doch auch wissen, wie Methoden und Properties (mal unabhängig vom Entwicklungssystem) funktionieren ...

Gruß
Larry
 
OP
B

Bensen83

Well-known member
Beiträge
777
Punkte Reaktionen
3
Ok

Also zu der Sache sps Programme von Profis ansehen. ... Ich habe schon viele komplexe Programme geschrieben. Das das zyklisch läuft ist mit klar. Hatte ansatt ner Methode eben immer nur ein Bit gesetzt, welches dann eine zyklische id Abfrage erfüllt, also den Code ausführt solange die Variable True ist. Wäre ja in dem fall solange die Methode aufgerufen wird. Ich Sage ja garnicht das ich die nicht zyklisch aufrufen mag, sondern hatte nur gefragt.
Unterschied zu einer Aktion ist dann nur, dass die Methode auch noch interne Variablen haben kann und übergabewerte? Oder?


Ps. Hatte das Thema noch mal gewählt, weil mir immer noch nicht so ganz klar ist,
Was mir OOP bei ner SPS bringt? Doch nur besser gekapselte programmabschnitte, oder welchen Vorteil sollte es mir noch bringen?
 
Zuletzt bearbeitet:

IBFS

Well-known member
Beiträge
4.057
Punkte Reaktionen
886
Zuviel Werbung?
->Hier kostenlos registrieren
Ps. Hatte das Thema noch mal gewählt, weil mir immer noch nicht so ganz klar ist,
Was mir OOP bei ner SPS bringt? Doch nur besser gekapselte programmabschnitte, oder welchen Vorteil sollte es mir noch bringen?

Dann hättest du hier weiter schreiben können:

http://www.sps-forum.de/showthread.php/57911-Wann-benutze-ich-Methoden-bzw.-Aktionen-und-wann-nicht

Langsam wird es ein Trauerspiel, das du trotz der Hilfen vielen User nicht wirklich weiterzukommen scheinst.

Frank
 
Oben