Wie kann man einzelne Befehle im Programm überspringen wenn andere aktiv sind?

frigidolf

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

ich bin absoluter Neuling was SPS- Programmierung angeht und habe ein kleines Problem was die Programmierung angeht :)

Die Konfiguration habe ich (mit freundlicher Unterstützung einiger hier im Forum :) ) endlich hinbekommen.

Jetzt habe ich zu meinem Programm eine Frage.

Kurze Beschreibung:
1. Ich habe einen Zylinder (senkrecht hängend), der mittels Taster auf und ab bewegt werden können soll.
2. Des Weiteren soll er verfahren wenn an ihm gezogen, bzw. gedrückt wird (am Zylinder hängt zusätzlich eine Last).
3. Ansonsten soll immer die aktuelle Position gehalten werden.

Mein Problem:
Wie kann ich das so programmieren, das sich die drei Modi nicht in die Quere kommen? Muss ich dazu Merker einsetzen?
Mein Ziel ist es, dass immer nur ein Modus aktiv sein kann - entweder AUF/ AB per Taster, oder AUF/ Ab per Handkraft, oder eingeregelter Zustand (welcher natürlich durch die anderen zwei jeder Zeit beendet werden kann und wieder aktiv wird, sobald die ersten zwei inaktiv werden)


Mein Problem ist, wie ihr sicherlich seht, dass sich die einzelnen Modi "in die Quere kommen". Solange die Taster betätigt werden, sollen die anderen Modi nicht aktiv werden können. Wenn dích die Taster loslasse soll die aktuelle Position gehalten werden (REGLER Modus) und die Gewichtskraft ermittelt werden (um eine Gewichtsdifferenz beim "anlegen" einer zusätzlichen Handkraft ermitteln zu könne und dann entsprechend in den HANDKRAFTMODUS zu wechseln).

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt?
Ich habe bis jetzt an der Hochschule nur in FUP geschrieben und das waren auch eher simple Programme - es gab da glaube ich eine Möglichkeit, bestimmte Codes zu überspringen solange eine Bedingung erfüllt wurde. Wie sieht das in ST aus?

Auch für sonstige Anregungen bin ich dankbar!

Vielen Dank für eure Hilfe!

MfG
frigidolf
 
Zuletzt bearbeitet:
die beschreibing ist so gut das du die antwort schon selber ausdenken kanst.

also eine IF taste up then go up
IF taste down then go down
IF NOT(tasteup OR tastedown) OR kraft sensor THEN regler
end_IF

if kraftsensor then.....
mache hier dein
END_IF
 
Hallo,

handelt sich es hierbei um eine didaktische Arbeit oder soll das tatsächlich gebaut werden?
Soweit ich Deine Beschreibung verstehe, ist das so eine Art pneumatischer Kran, oder?
Was passiert beim Modus-Umschalten? Also wie stellst Du ein unkontrolliertes Absacken sicher?


zu Deinem Problem:
Was spricht dagegen, die einzelnen Modi in Funktionen zu packen und diese z.B. mit einem Dreh-Rastschalter aus- bzw. anzuwählen?

Gruß

Christian
 
Hallo

so etwas macht man in einer StateMachine:

case eActualMode of

HandKraftMode:

//do something

TasterMode:

// do something else

ReglerMode:

// do something else

end_case

Die einzlnen Modi (HandkrafMode, TasterMode, Reglermode) kannst du als Enum definieren oder als Konstanten.

Dann Programmierst du nur wann welcher Modus aktiviert wird und haust innerhalb der Modi die Logik rein (// do something)

Grüße

Dax
 
Zurück
Oben