Mehrere Ventile und Schritte

Saufautomat

Level-1
Beiträge
38
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich programmiere noch an meinem ersten Programm und allmählich bricht das Chaos über mich herein.

Ich habe eine Schrittkette mit fünf Schritten und drei motorgetriebene Ventile.

Es gibt einen FB in dem ich jeden einzelnen Ausgang ansteuere. So z.B.:
Zuweisung Bsp.PNG

Bei jedem Schritt überprüfe ich, ob die Ventile in der richtigen Position sind.

Jetzt ist schon absehbar, dass noch Ventile und Schritte dazukommen werden. Also wird das so nichts.

Wie macht man es denn am besten? Ich habe eine Idee aber frage lieber erst mal hier bevor ich das fünfte mal alles über den Haufen werfe:


Ich würde jetzt einen Datentyp "Ventile" erschaffen, in dem jedes Ventil als bool aufgeführt ist.
In einem Datenbaustein würde ich für jeden Schritt die Ventilpositionen hinterlegen.
Die aktuellen Ventilpositionen würde ich von den Eingängen einlesen und auch in einem Datentyp "Ventile" speichern.
DB1.PNG

Mit irgendeinem FB könnte ich dann bestimmt überprüfen, ob die akutellen Ventilpositionen den für den Schritt vorgegebenen entsprechen. Wie weiß ist noch nicht genau.

Das Vorgehen für die Ausgänge kann ich mir nur noch nicht so recht vorstellen:
Für jeden Ausgang bräuchte ich eine Funktion, der ich den aktuellen Schritt übergebe. Die Funktion müsste dann für den Schritt die richtige Ventilposition finden und ausgeben. Nur wie bekomme ich die Information aus dem DB? Muss ich hier vielleicht mit einem zweidimensionalen Array arbeiten?
 
Moin,

du könntest jedem Schritt eine Zahl zuweisen. S1=10, S2=20, S3=30.......... Die aktuelle Schrittzahl speicherst du in einem INT. Je nach Wert des INT kannst du Aktionen ausführen. Bei 10, 20, 30 kannst du noch 9 neue Schritte einfügen.

Grüße Detlef
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... und aus dem Chaos sprach eine Stimme zu mir, sei froh und lächle, es hätte schlimmer kommen können, und ich war froh und lächelte, und es kam schlimmer. 😏
 
... und aus dem Chaos sprach eine Stimme zu mir, sei froh und lächle, es hätte schlimmer kommen können, und ich war froh und lächelte, und es kam schlimmer. 
:ROFLMAO:

@det:
An so etwas habe ich gedacht aber wie man das umsetzt verstehe ich nicht. Dass meine Schrittkette einen INT ausgeben soll macht Sinn und bekomme ich bestimmt auch hin.
Ich könnte dem Datenblock Ventile auch noch einen INT "zugehörige Schrittnummer" anfügen.

Dann bräuchte ich aber einen FB, der anhand der aktuellen Schrittnummer aus dem Datenblock den zugehörigen Datentyp "Ventile" herauspickt. Aber wie geht das prinzipiell in FUP?
In einer Hochsprache würde ich ein Array haben, aus dem ich anhand der Schrittnummer und der Ventilnummer einfach meine gewünschte Ventilstellung auslesen kann. Bei FUP bin ich noch bei den Anfängen^^
 
Als Anstoss:

Datentyp: array[1..16] of bool

Dann kannst Du im Programm mit
Ventil_1[Schrittnummer]
darauf zugreifen.

Arrays funktionieren auch im FUP.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ganz händisch.
Papier, Tabelle malen. In den Zeilen die Schrittnummern, in den Spalten alle Ausgänge.
In die Felder Nullen oder Einsen eintragen. Je nachdem welcher Zustand gefordert ist.
Jetzt im Prog Schrittnr. und Eingänge für den jeweiligen Schritt abfragen. Bei true Ausgänge entsprechend deiner Tabelle schalten und neue Schrittzahl in den INT schieben.
So als grobe Struktur.

Grüße Detlef

ps: Die Wege nach Rom sind quasi unerschöpflich.🤔😁
 
Zuletzt bearbeitet:
Zurück
Oben