Schrittkette mit INT Variable?!

Banane71

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag!
Ich bin neu angemeldet in diesem Forum, habe aber schon seit langem hier mitgelesen und dadurch viel dazugelernt.

step7 Fup SCL Protool und Wincc flex sind meine Werkzeuge
Damit hab ich auch einiges erreicht, aber jetzt stellt sich mir die Frage, ob das alles so richtig war, welche Nachteile meine Programm-Technik aus Sicht von erfahrenen Leuten mitbringt, und ob man das nicht besser "bauen" kann.


Ein Mischer soll zuerst anhand des Gewichts und des Mischungsverhältnis errechnen, wieviel kg jeder Komponente im Mischer sind.
Dann soll errechnet werden wieviel kg jeder Komponente fehlen, um ein Endgewicht von z.B. 1000kg zu erreichen und dabei das Mischungsverhältnis einzuhalten.

Danach sollen die Komponenten nacheinander eingezogen werden, dann Mischzeit, dann Fertigmeldung.
erst wenn die Fertigmeldung erfolgte, darf der Inhalt weiterverarbeitet werden.

wie hab ich das gelöst:
FB 1 übernimmt die Entscheidungen Mischen/leeren/warten

FB2 für die Leerung
FB3 für das Anmischen

ich nehme eine Statusvariable (INT) für die Schrittkette.
die liegt in einem DB, damit ich die in der HMI verarbeiten kann.

die einzelnen Netzwerke in Fup funktionieren immer gleich:
Jedes Netzwerk hat links einen Vergleicher, ob der Status passt.
Wenn Ja, erfolgt die Abarbeitung
nach der Abarbeitung wird der Status auf den nächsten Schritt gebracht.
Also in etwa nach diesem Prinzip:

Status 0? Inhalte berechnen - Status 1 setzen!
status 1? Restmengen je Komponente errechnen - Status 2 setzen
status 2? Komponente 1 einziehen bis Gewicht erreicht- Status 3 setzen
status 3? Komponente 2 einziehen bis Gewicht erreicht- Status 4 setzen.
usw...

Ist solch eine "Schrittkette" praktikabel?

normalerweise liest man ja nur was über Schrittkettenmerker.
aber bei so vielen Schritten, käme da einiges zusammen.

ich hab etwa 40 Netzwerke für den gesamten Anmischvorgang :(


Vielen Dank für Eure Meinungen!

Marcus
 
Meiner Meinung nach ist das Praktikabel, da gibt unterschiedliche
Möglichkeiten. Entweder in AWL mit einen Sprungverteiler oder
in SCL mit einer CASE Anweisung.
 
Na, da fällt mir aber nen Berg vom Herzen, das kann ich euch sagen :)

ja, zwischen den Sprüngen sind auch Lücken und 0 dient auch nur der Initialisierung.
ich wollte nur keinen Roman verfassen da oben :D

gruß

Marcus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich programmiere diese Schrittketten übrigends meist rückwärts.
Also Schritt 1 letztes Netzwerk und der letzte Schritt als NW 1.
Somit ist sichergestellt, dass jeder Schritt mind. einen Zyklus aktiv ist.
 
Ich programmiere diese Schrittketten übrigends meist rückwärts.
Also Schritt 1 letztes Netzwerk und der letzte Schritt als NW 1.
Somit ist sichergestellt, dass jeder Schritt mind. einen Zyklus aktiv ist.

Was früher bei Merkerschrittketten in Step5 durchaus sinnvoll war. :)
Aber bei Case brauchst du das doch nicht, da wird in den Schritt mit Nummer X gesprungen, dann in dieser Case-Anweisung die neuer Schrittnummer engetragen, der Zyklus, läuft durch und am Case-Befehl wird dann wieder anhand der Nummer in Schritt X + Y gesprungen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der TE nutzt kein Case. Funktionell ist es eigentlich eine normale Merkerkette.

Es mit CASE zu machen währe aber der richtige Weg,
das mit den Vergleich habe ich auch erst gerade gelesen
und halte es für Blödsinn. Da kann er gleich bei der Merkerschrittkette
bleiben.
 
Naja, der Gedanke war, das man später bei ner Fehlersuche recht einfach in FUP sieht, was los ist.
AWL ist nun garnicht so mein Ding.
SCL ist gut und schön, aber meiner Erfahrung nach kommt jeder Elektriker mit FUP klar, mit SCL nur wenige.

Das Einfachste wäre ja gewesen, wenn man den ENO einer Funktion ganz einfach beeinflussen könnte.
Dann könnte man die einzelnen Schritte einfach verketten, fertig.
Beim Beobachten (Fehlersuche) sieht man dann genau, wie weit das Programm fortgeschritten ist.

Leider blieben alle Versuche, den ENO zu schalten erfolglos oder zu unsicher.


Zur Merkerkette:

wenn ich Komponente 2 einziehen will, muss Merker "Komponente 1 fertig" true sein.
gleichzeitig muss Merker "Komponente 2 fertig" False sein, sonst arbeitet der Abschnitt ja auch, wenn die Kmponente längst fertig ist.

folglich links außen ein UND Baustein mit zwei Eingängen, wovon einer negiert ist.

da erschien mir der Weg über den INT Vergleich einfacher, zumal ich bei auftretenden Fehlern jederzeit in einen anderen Bereich springen kann, und das eben in FUP, was jeder kennt.


lieg ich mit diesem Gedanken so falsch?

Marcus
 
Was an den Gedanken falsch ist, das es kein übliches Verfahren ist.
Merkerschrittketten, CASE und Sprungverteiler sind bekannte verfahren.

Wenn es dir auf Übersichtlichkeit ankommt und es sich nicht gerade um eine
1200er Steuerung handelt, nimm etwas Grafisches den Graph. Das lässt sich
mit TIA gut umsetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja so unüblich ist diese Art auch nicht.
Ich kenn sie schon seit langer Zeit.
Im Zusammenspiel mit HMI ist diese Art sehr gut und für Instandhalter sehr übersichtlich.
Gruß
Dieter
 
Also ich denke, ich werd es so lassen.
Es wären wie gesagt sehr viele Merker nötig, bei Merkerschrittkette.

Wobei es aber noch einfacher wäre für den Stördienst.
Scrollt man beim Beobachten durch die Netzwerke, sieht man ja direkt, welche Merker schon true sind.
oder anders: man ist zuweit unten, wenn die Merker False sind. :)

aber einen simplen Vergleicher kann glaub ich jeder Andere ebenfalls kapieren...

nochmal zu case:

das gibt's nur in SCL und AWL oder?

gruß Marcus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wie schon so oft hier im Forum angemerkt:
Die Schritte als Enum nutzen dann gibt's keine Probleme in den benötigten "Lücken" und ist superlesbar...
Ggf nur in ST/SCL
AWL habe ich k.A
LG Shrimps
 
Zurück
Oben