-> Hier kostenlos registrieren
Hallo zusammen,
ich hätte da mal ein Problem, bei dem ich Eure Hilfe bräuchte.
Ich bin gerade dabei, mich mit SCL auseinander zu setzen und möchte folgende Aufgabe realisieren:
Ich habe ein Modell einer Produktionsanlage, bei der 3 verschiedene Rohmaterialien in einen Behälter dosiert werden. Die dosierten Mengen werden über Impulszähler erfasst. Dies geschieht in einem FB, der eine Schrittkette enthält. Ich möchte nun die Verbrauchsmengen der Rohmaterialien in einem Array speichern. Dazu möchte ich an einem bestimmten Punkt der Schrittkette einen Merker setzen, der mir dann in meiner SCL-Funktion die Chargennummer um den Wert 1 erhöht. Ist die Dosierung abgeschlossen, wird ein weiterer Merker gesetzt und die Zählerstände werden ausgelesen und die Mengen berechnet.
Dies funktioniert soweit, außer das meine Chargennummer sich ständig erhöht, solange der entsprechende Schritt aktiv ist. Ich habe das folgendermaßen umgesetzt:
VAR
Verbrauch : ARRAY[1..10,1..4]OF INT;
Batch : INT; //Chargennummerierung
END_VAR
VAR_INPUT
Start_Dosierung : BOOL; //aus Schrittkette
END_VAR
IF Start_Dosierung = True THEN //Bei Chargenstart wird die Chargennummer, beginnend mit '1', festgelegt
IF Batch>=10 THEN
Batch:=1;
ELSE Batch:=Batch+1; //und um den Wert '1' erhöht.
END_IF;
END_IF;
Kann mir jemand sagen, warum sich der Wert zyklisch erhöht und nicht einmalig ? Wie kann man so etwas anders umsetzen ? Flankenauswertung ?
Danke schon mal für Eure Hilfe !
ich hätte da mal ein Problem, bei dem ich Eure Hilfe bräuchte.
Ich bin gerade dabei, mich mit SCL auseinander zu setzen und möchte folgende Aufgabe realisieren:
Ich habe ein Modell einer Produktionsanlage, bei der 3 verschiedene Rohmaterialien in einen Behälter dosiert werden. Die dosierten Mengen werden über Impulszähler erfasst. Dies geschieht in einem FB, der eine Schrittkette enthält. Ich möchte nun die Verbrauchsmengen der Rohmaterialien in einem Array speichern. Dazu möchte ich an einem bestimmten Punkt der Schrittkette einen Merker setzen, der mir dann in meiner SCL-Funktion die Chargennummer um den Wert 1 erhöht. Ist die Dosierung abgeschlossen, wird ein weiterer Merker gesetzt und die Zählerstände werden ausgelesen und die Mengen berechnet.
Dies funktioniert soweit, außer das meine Chargennummer sich ständig erhöht, solange der entsprechende Schritt aktiv ist. Ich habe das folgendermaßen umgesetzt:
VAR
Verbrauch : ARRAY[1..10,1..4]OF INT;
Batch : INT; //Chargennummerierung
END_VAR
VAR_INPUT
Start_Dosierung : BOOL; //aus Schrittkette
END_VAR
IF Start_Dosierung = True THEN //Bei Chargenstart wird die Chargennummer, beginnend mit '1', festgelegt
IF Batch>=10 THEN
Batch:=1;
ELSE Batch:=Batch+1; //und um den Wert '1' erhöht.
END_IF;
END_IF;
Kann mir jemand sagen, warum sich der Wert zyklisch erhöht und nicht einmalig ? Wie kann man so etwas anders umsetzen ? Flankenauswertung ?
Danke schon mal für Eure Hilfe !