Hilfe bei Halbautomatik

rene

Level-1
Beiträge
66
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen,
ich hab folgendes Problem:
Es soll eine Anlage im Autobetrieb- ähnlich einer Presse- einzelne Prüfstücke drücken oder zugkraft ausüben. dazu ist unten eine kraftmessdose angebracht. sie kann bis zu 30000 Newton messen.ein motor fährt an einer spindel rauf(zug) und runter(druck).

nun habe ich das problem das ich die programmierung nicht auf die reihe bekomme, da ich keinen regler-befehl vom chef- benutzen soll.

die anlage wird vom panel aus gesteuert, der handbetrieb läuft soweit.
meine überlegungen waren folgendes:


neu: L "Daten".Sollwert
L "Daten".Istwert
-R //Ergebnis Akku 1- Akku 2
T "Daten".AutoDifferenz1 //Zwischenspeicher
U "Auto Ziehen"
U "Auto Start"
O
U "Auto Drücken"
U "Auto Start"
L "Daten".AutoDifferenz1
L 5.000000e+003 //Diff.kleiner als 5000?
<R
SPBN ende
L "Daten".Istwert
L 1.000000e+002
+R
T #Stellwert
L #Stellwert
L "Daten".Istwert
<R
SPB neu
ende: NOP 0

das ist nur ein Netzwerk, die anderen sind genauso, nur mit anderen werten, so dass der motor langsamer und schneller fährt.
Sollte jemand mir bei der Lösung helfen können, wäre ich sehr dankbar...:)
 
Verstehe das nur in Teilen...
Was geht eigentlich nicht?
Was willst Du erreichen?
Was heisst "Regler-Befehl" vom Chef?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sorry,war vll. zu wenig beschrieben.

also der arbeiter x, soll im Autobetrieb am Panel einen Sollwert eingeben, und anhand dieses sollwertes, soll der Motor hoch oder runter fahren, so dass druck oder zug ausgeübt wird.

was ich will, ist das sps programm, weil meins glaub ich nicht funktioniert, und ich ehrlich gesagt gerade nicht weiß wieso...:???:

also regler soll nicht benutzt werden, da es probleme mit den schwingungen geben könnte
 
sorry,war vll. zu wenig beschrieben.

also der arbeiter x, soll im Autobetrieb am Panel einen Sollwert eingeben, und anhand dieses sollwertes, soll der Motor hoch oder runter fahren, so dass druck oder zug ausgeübt wird.

was ich will, ist das sps programm, weil meins glaub ich nicht funktioniert, und ich ehrlich gesagt gerade nicht weiß wieso...:???:

also regler soll nicht benutzt werden, da es probleme mit den schwingungen geben könnte


Und was meisnt du das nicht funktioniert

must du deinen motor nur digital ansteuern ( ein / aus )

oder analog ( über fu )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sorry,war vll. zu wenig beschrieben.

also der arbeiter x, soll im Autobetrieb am Panel einen Sollwert eingeben, und anhand dieses sollwertes, soll der Motor hoch oder runter fahren, so dass druck oder zug ausgeübt wird.

was ich will, ist das sps programm, weil meins glaub ich nicht funktioniert, und ich ehrlich gesagt gerade nicht weiß wieso...:???:

also regler soll nicht benutzt werden, da es probleme mit den schwingungen geben könnte


Ich sage unseren Kunden immer: wenn sie das was sie wollen verbal beschreiben können kann ich es programmieren. Also: was soll Dein Programm genau machen, wie hast Du es Dir vorgestellt.
 
Zuletzt bearbeitet:
Geht es um einen Weg, oder Druck??:confused:

Aaalso, wenn ich dich hier richtig verstehe:
Es geht um Druck.
Soll der Antrieb immer langsamer werden, desto näher er sich am Sollwert befindet??

Ob du einen Regler verwendest, oder "zu Fuß" programmierst, das Schwingen hängt nur von deinen "Regelparametern" ab.
In deinem Fall wären das die Konstanten im AWL-Code.
 
Geht es um einen Weg, oder Druck??:confused:

Aaalso, wenn ich dich hier richtig verstehe:
Es geht um Druck.
Soll der Antrieb immer langsamer werden, desto näher er sich am Sollwert befindet??

Ob du einen Regler verwendest, oder "zu Fuß" programmierst, das Schwingen hängt nur von deinen "Regelparametern" ab.
In deinem Fall wären das die Konstanten im AWL-Code.

Also das mit dem Schwingen will mir bei der Aufgabe auch nicht einleuchten. In einer meiner Maschinen wird mittels eines Schrittmotors eine Hülse in den Prüfling gedrückt um einen Hydraulischen Offset festzulegen. Da gibt es auch kein zurück die Hülse geht nur in eine Richtung.

Wir haben da eine Formel ermittelt wo wir die Geschwindigkeit reduzieren je näher man an den einzustellenden Druck kommt. Trail and Error war da am Schluss zielführend. Wichtig war das die Geschwindigkeit nicht beliebig klein werden darf/kann ;o)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
richtig, der motor soll langsamer werden, desto näher er den sollwert erreicht.
also wenn du diese formel preisgben würdest, wäre ich dir sehr dankbar:D
 
Ok, ich beginne ganz naiv mit einem P-Regler und Arbeitspunkt.

L Xw-Abweichung //bekannt als Regelabweichung
L Arbeitspunkt
+R
T y //=Stellgrösse
 
hmm, aber wenn du dir meinen awl code oben anguckst, ist es bei mir doch eigentlich genauso oder nicht?
ich vergleiche ja die differnz zwischen soll und istwert, hab somit die differnz, vergleiche sie und schiebe es in die stellgröße(arbeitspunkt)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, Du nimmst irgendwie den Istwert und zählst 100 dazu, natürlich bei irgendwelchen Bedingungen die ich jetzt nicht kenne.
- ist der Sollwert Null, dann ist es das gleiche....

warum funzt es dann nicht?
 
richtig, der motor soll langsamer werden, desto näher er den sollwert erreicht.
also wenn du diese formel preisgben würdest, wäre ich dir sehr dankbar:D

1. Komme ich gerade nicht an das Programm und somit auch nicht an die Formel ran.

2. Kann ich mich aber daran erinnern das wir die Geschwindigkeit quadratisch reduziert haben um am Schluss möglichst genau an den Punkt heran zu kommen.

Aber in groben Zügen hat das ungefähr so ausgesehen:

Code:
FUNCTION myControl : REAL
VAR_INPUT
    w            :REAL; (* Sollwert *)
    tolerance    :REAL; (* Toleranz +/- *)
    x            :REAL; (* Istwert *)
    rampStart    :REAL; (* Startpunkt wann die Rampe gestartet werden soll *)
    y_max        :REAL; (* Stellgrenze *)
    y_min        :REAL; (* Minimale Rest Geschwindigket *)
END_VAR
VAR
    w_pro        :REAL;
    x_pro        :REAL;
    e_pro        :REAL;
END_VAR
Code:
(* Eingangswerte in Prozente Skalieren *)
w_pro        := w * (100.0 / rampStart);
x_pro        := x * (100.0 / rampStart);
e_pro        := x_pro - w_pro;

(* Stellgröße ermitteln *)
myControl := ((EXPT(e_pro, 2) / 100.0) * (y_max / 100.0));

(* Stellgröße nicht größer y_max zulassen *)
IF (myControl > y_max) THEN
    myControl := y_max;
END_IF

(* Stellgröße nicht zu kein werden lassen *)
IF (myControl < y_min) THEN
    myControl := y_min;
END_IF

(* Zielerreicht *)
IF (ABS(x - w) < tolerance) THEN
    myControl := 0;
END_IF;

Das ist jetzt sicher nicht die Endgültige Lösung für Deine Aufgabe. Je nach Parametern und wie Du das mit der Stellgröße weiter verarbeiten tust kann auch das System ins Schwingen geraten.

Die Stellgröße kann hier auch negativ werden das lässt sich aber auch recht schnell ausschalten.

PS: Das ist natürlich jetzt kein AWL lässt sich aber auch recht leicht (von Hand) umsetzen.
 
Zurück
Oben