-> Hier kostenlos registrieren
In meinem Programm benutze ich einen Fallregister, in dem Befehle für Dosierbandwaage geschrieben und von einem Kommunikationsbaustein gelesen werden. Es gibt die Befehle mit der höheren Priorität (zBsp. "STOPP"), d.h. die müssen so schnell wie möglich gelesen werden bzw. auf der ersten Stelle geschrieben und dann zu erst gelesen werden. Aber ich will keinen Befehl überschreiben, sondern einfach einmal hoch schieben und dann Befehl auf der ersten Stelle rein schreiben.
Ich weiß nicht genau wie ich das machen soll ? Kann mir jemand ein Tipp geben ?
Hier ist Teil von dem Programm (in SCL):
Register_schreiben:
Schreibzeiger1:=Schreibzeiger;
IF Fuellstand = Registerlaenge - 1
THEN Voll := TRUE;
ELSE
Akt_Fuellstand:=Fuellstand;
IF Eingang.Befehl = Stopp THEN
Schreibzeiger := 0;
Register[Schreibzeiger].Befehl := Eingang.Befehl;
Fuellstand := Fuellstand + 1;
IF Schreibzeiger = Registerlaenge
THEN Schreibzeiger := 0;
ELSE Schreibzeiger := Schreibzeiger + 1;
END_IF;
Leer := False;
ELSE
Register[Schreibzeiger].Befehl := Eingang.Befehl;
Fuellstand := Fuellstand + 1;
IF Schreibzeiger = Registerlaenge
THEN Schreibzeiger := 0;
ELSE Schreibzeiger := Schreibzeiger + 1;
END_IF;
Leer := False;
END_IF;
END_IF;
END_IF;
Ich weiß nicht genau wie ich das machen soll ? Kann mir jemand ein Tipp geben ?
Hier ist Teil von dem Programm (in SCL):
Register_schreiben:
Schreibzeiger1:=Schreibzeiger;
IF Fuellstand = Registerlaenge - 1
THEN Voll := TRUE;
ELSE
Akt_Fuellstand:=Fuellstand;
IF Eingang.Befehl = Stopp THEN
Schreibzeiger := 0;
Register[Schreibzeiger].Befehl := Eingang.Befehl;
Fuellstand := Fuellstand + 1;
IF Schreibzeiger = Registerlaenge
THEN Schreibzeiger := 0;
ELSE Schreibzeiger := Schreibzeiger + 1;
END_IF;
Leer := False;
ELSE
Register[Schreibzeiger].Befehl := Eingang.Befehl;
Fuellstand := Fuellstand + 1;
IF Schreibzeiger = Registerlaenge
THEN Schreibzeiger := 0;
ELSE Schreibzeiger := Schreibzeiger + 1;
END_IF;
Leer := False;
END_IF;
END_IF;
END_IF;