-> Hier kostenlos registrieren
Hallo zusammen,
bin neu und hoffe das passenden Unterforum erwischt zu haben. Des Weiteren kenne ich mich auch in Sachen SPS-Programmierung nur wenig aus, bin momentan jedoch gezwungen mich damit zu beschäftigen und hoffe daher auf euren Rat.
Folgende Aufgabenstellung.
Die Position eines Pneumatikzylinders soll mittels Proportionalventil und Wegmesssystem geregelt werden. Es sollen dann verscheidenen Positionen angefahren werden. An diesen Positionen wird dann ein weiterer Arbeitsablauf gestartet.
Ich habe hierzu einen Funktionsbaustein für einen PID-Regler geschrieben.
Ob die gewünschte Position erreicht wurde wird innerhalb des Bausteins einfach durch eine If-Anweisung abgefragt. Diese sieht (vereinfacht) wie folgt aus:
IF ABS(Soll-Ist) > Toleranzband THEN
Position_erreicht := FALSE;
ELSE
Position_erreicht :=TRUE;
END_IF;
Wird der Regler alleine betrieben funktioniert das Positionieren auch wie gewollt.
Ich habe nun das Problem die Weiterschaltbedingung, zum einleiten des nächsen Arbeitsschritt, zu definieren.
Benutze ich beispielsweise etwas in der Form: IF(Position_erreicht) Then XXXX
tritt die Problematik auf, dass im Falle eines Überschwingens o.Ä. Position_erreicht kurzzeitig TRUE wird und die nächste Aktion gestartet wird,
obwohl die Position noch nicht eingeregelt ist und der Zylinder somit noch verfährt / in Bewegung ist.
Hier wäre ich um jede Hilfe und Idee dankbar.
P.S.
Programmiert wird mittels IndraWorks Enginieering, welches m.W.n auf CODESYS V3 basiert.
Die Steruerung ist einen Rexroth IndraControl L25
bin neu und hoffe das passenden Unterforum erwischt zu haben. Des Weiteren kenne ich mich auch in Sachen SPS-Programmierung nur wenig aus, bin momentan jedoch gezwungen mich damit zu beschäftigen und hoffe daher auf euren Rat.
Folgende Aufgabenstellung.
Die Position eines Pneumatikzylinders soll mittels Proportionalventil und Wegmesssystem geregelt werden. Es sollen dann verscheidenen Positionen angefahren werden. An diesen Positionen wird dann ein weiterer Arbeitsablauf gestartet.
Ich habe hierzu einen Funktionsbaustein für einen PID-Regler geschrieben.
Ob die gewünschte Position erreicht wurde wird innerhalb des Bausteins einfach durch eine If-Anweisung abgefragt. Diese sieht (vereinfacht) wie folgt aus:
IF ABS(Soll-Ist) > Toleranzband THEN
Position_erreicht := FALSE;
ELSE
Position_erreicht :=TRUE;
END_IF;
Wird der Regler alleine betrieben funktioniert das Positionieren auch wie gewollt.
Ich habe nun das Problem die Weiterschaltbedingung, zum einleiten des nächsen Arbeitsschritt, zu definieren.
Benutze ich beispielsweise etwas in der Form: IF(Position_erreicht) Then XXXX
tritt die Problematik auf, dass im Falle eines Überschwingens o.Ä. Position_erreicht kurzzeitig TRUE wird und die nächste Aktion gestartet wird,
obwohl die Position noch nicht eingeregelt ist und der Zylinder somit noch verfährt / in Bewegung ist.
Hier wäre ich um jede Hilfe und Idee dankbar.
P.S.
Programmiert wird mittels IndraWorks Enginieering, welches m.W.n auf CODESYS V3 basiert.
Die Steruerung ist einen Rexroth IndraControl L25