Zeit Ablauf Verständnisproblem in SCL

Kumi

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

ganz kurz, ich bin noch extrem neu was SCL Programmierung bzw. allgemein Zeitkritische Programmierung angeht (Musste mir bislang da nie gedanken machen).
Ich habe ein Tanklager mit verschiedenen Komponenten, Tanknummer etc. und bekomme vom Batch eine Rezeptvorgabe wie die nächste Mischung auszusehen hat. Bevor dies passiert werden aber die vom Rezept übergebenen Daten Tanknummer/Komponente vom Routecontrol überprüft, ob denn auch wirklich die gewünschte Komponente im entsprechenden Tank ist.

Ich kriege eine Meldung zurück passt alles. Nun muss ich ein sogenanntes Event für jede Komponenten/Tank Zeile des Rezeptes an eine übergelagerte Datenbank senden. Also in dieser Art:

EV1 : Tank1 Komp1 Menge1
EV2 : Tank2 Komp2 Menge2

usw.

die Eventbausteine sind bereits vorhanden und müssen benutzt werden. Das entscheidene dabei, sie Arbeiten im 200ms OB , sonst funktiniert das ganze nicht.
Nun zu meiner Frage:
Ich möchte jetzt so einfach wie möglich sobald ich die Meldung alles OK bekomme die einzelnen EV´s senden.
Habe mir dazu folgende kleine Schleife in SCl Programmiert:

Code:
IF E_Start_EV = true THEN
     
       FOR e := 1 TO 8  DO
        
        Q_Start_Ev := 0;
        
        
            IF E_Proz[e] = 0 THEN
                EXIT;
            ELSE
                Q_Komp := E_Komp[e];
                Q_Tank := E_Tank[e];
                Q_Proz := E_Proz[e];
                Q_Start_Ev:= 1;
                
            END_IF;
            
       END_FOR;  
       
       Q_EV_Fertig := 1;
ELSE
 
 Q_EV_Fertig := 0;       
        
END_IF;

Mit Haltepunkten versehen Funktioniert das ganze auch sehr schön am Ausgang des CFC`s nur mein Bedenken bzw. ich bin mir eigentlich sicher ist, dass der Baustein viel zu schnell ist und schon alle Zustände ausgegeben hat bevor der dahinter liegende EV Baustein sie überhaupt bearbeiten konnte.
Also Quasi bei jede´r positives Flanke von Q_Start_Ev die drei Werte an den Ausgängen als EV senden.

Mhmm ich hoffe ich hab mich halbswegs verständlich ausgedrückt :)

Vielen Dank schonmal!
 
Ich vermute mal Q_Komp, Q_Tank etc. sind an der Schnittstelle des SCL-Bausteins als Ausgänge deklariert.

Demnach wird folgendes passieren:
Deine Schleife läuft durch, bevor der Baustein verlassen wird. An den Ausgängen wird also immer das ausgegeben, was mit dem Schleifenindex 8 an die Ausgänge angetragen wird. und zwar ganz egal welchen Zyklus der Baustein hat.
 
Hallo,

Bausteine werden prinzipiell erstmal in ner SPS nacheinander abgearbeitet, also so lange Dein Baustein läuft (dh. u.a. die Schleife) machen alle anderen Bausteine (die Event Bausteine) nix. Dabei spielt es keine Rolle, ob die Bausteine in Fup, AWL, SCL oder sonstwas geschrieben sind. Aber wichtig die Abarbeitungsreihenfolge beachten, sonst passieren manchmal nicht erwünschte Dinge.

Abweichend von diesem Prinzip kann die Abarbeitung eines Bausteins unterbrochen werden, z.B. durch höher priorisierte Zeit-OBs oder Fehler-OBs.
Ausserdem stellt sich immer mal wieder die Frage, wann ein externer Zugriff auf DBs (z.B. von der Visu) eigentlich erfolgt, parallel zum zyklischen SPS-Programm oder zwingend danach...

Jedenfalls ein nicht ganz triviales Thema...

Frohe Ostern.
 
Zurück
Oben