Regler

Zuviel Werbung?
-> Hier kostenlos registrieren
Habe den Arm endlich zum Bewegen gebracht, fehlt nur noch eine Ablaufsteuerung.

Thomas, neben dem "Häuschen" gibt es noch eine andere Schaltfläche. Da musste man auch den Handbetrieb deaktivieren.
 
Hallo,

es ist wieder ein Problem aufgetreten. Ich bin jetzt an der Ablaufsteuerung dran. Der Arm bewegt sich zwar zur gewünschten Sollposition, jedoch kommt es dann im Laufe der Programmierung vor, dass der Arm nicht mehr zur gewünschten Sollpostion fährt, sondern irgendwo so an der Grenze fährt oder machmal bewegt er sich gar nicht mehr, d.h. er regelt gar nicht mehr. Am Anfang, also wenn ich die CPU starte, läuft es. Hoffe nochmal um eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sag mal sehe ich das soweit korrekt das du versuchst mit dem Regler eine bestimmte Position anzufahren und dein Istwert der Wert vom Drehgeber ist? Wenn I_Sel und D_Sel beide mit false beschaltet sind hast du nur einen P_Regler, also eine bleibende Regeldifferenz... Mal ganz abgesehen davon das der FC5 im OB1 aufgerufen wird und somit die 3ms wohl nicht stimmen dürften...
 
Ja das ist exakt richtig, es ist ein P-Regler. Sollte ich vielleicht wegen der Regeldifferenz den I_Sel auf true setzen? FC5 soll doch im OB1 aufgerufen werden. Warum stimmen die 3ms nicht?
 
Weiss jetzt nicht welche CPU du benutzt aber normalerweise Regleraufruf im OB35 und dann die Zeit des OB35 nehmen (normalerweise 100ms). Wenn im OB1 aufgerufen dann wird die Zeit immer unterschiedlich sein von Aufruf zu Aufruf, spätestens wenn du dein Programm erweiterst. Beim P-Regler ist das Latte, wenn du aber I und / oder D-Anteil dazuschaltest stimmen die Anteile eben nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU weiß ich jetzt auch nicht, da ich momentan nicht im Labor bin.

"Wenn im OB1 aufgerufen dann wird die Zeit immer unterschiedlich sein von Aufruf zu Aufruf, spätestens wenn du dein Programm erweiterst" . Du hast es auf den Punkt gebracht.
Das heißt ich brauche den FC5 einfach im OB35 aufzurufen? Aber ist dieser OB35 nicht ein Weckalarm?
 
Genau das. Der wird dann in regelmäßigen Abständen aufgerufen. Deshalb am besten Regler immer direkt da rein, auch wenns nur ein P-Regler ist (irgendwann kommt bestimmt jemand auf die Idee I oder D Anteil einzuschalten ;-)....
 
Ok, danke. Eine letzte Frage hätte ich noch. Der Drehgeber soll, wenn ich die CPU starte, automatisch genullt werden. Dafür gibt es einen Sensor. Wenn dieser auf true gesetzt wird, soll das Software-Tor gestartet werden, sprich der Arm soll sich automatisch dahin bewegen. Wie könnte ich das realisieren? Bisher geht das nur im Handbetrieb.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genullt wird der Sensor dann genau wie im Handbetrieb. Das ganze kannst du dann im OB100(Neustart), OB101(Wiederanlauf) oder OB102(Kaltstart) realisieren. Diese OBs werden nur jeweils einmal bei dem entsprechendem Start aufgerufen...
 
Hallo nochmal,

kann mir jemand bitte sagen, warum mein P-Regler nicht regelt. Am Ausgang MD56 ändert sich die Zahl nicht und das müsste es, damit eine Regelung stattfinden kann. Ich erzähle noch mal etwas zum Regler: Seinen Istwert erhält er von einem inkrementellen Drehgeber. Am Anfang, wenn das Software-Tor null ist, fährt er zu einem induktiven Sensor, das am Boden befestigt ist. Wenn er da ist öffnet sich das Software-Tor. Das habe ich auch hinbekommen. Immer wenn er sich bewegen soll, wird für diesen Zeitraum eine Spannung an den Drehgeber gegeben. Jetzt möchte ich, dass er unter bestimmten Bedingungen zu einer Sollposition fährt. Dazu verwende ich eine Move-Box. Und genau da hakt es, weil der MD56 immer einen bestimmten Wert (8850.0) anzeigt.
Ich hoffe ihr könnt mir weiterhelfen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aus deinen Screenshots kann man nichts sehen, es werden nicht alle Onlinewerte angezeigt.

Was auch schlecht ist, ist den CONT_C am EN nur bedingt aufzurufen.
Mach dir für diese Funktion die du dort realisieren willst lieber einen Vorschaltbaustein für den CONT_C. Dieser hat als Ausgang zwei Signale für MAN und MAN_ON die dann auf den Regler gehen. Als Eingänge deine verschiedenen Bedingungen.
Beispielsweise:
- Wenn nicht Automatik: MAN_ON = true und MAN = 50.0
- Wenn Hand dann MAN_ON = true und MAN bei Hand_links auf 0.0 und bei Hand_rechts auf 100.0

So wie es aussieht sind bei dir die Funktionen in zig verschiedenen Bausteinen verstreut, darum kann man auch mit deinen Screenshots nicht viel anfangen weil da immer nur ein Teil zu sehen ist.
 
Danke für deine schnelle Antwort. Ehrlich gesagt habe ich nicht ganz verstanden, was du meintest. Hier sind ein paar Bilder. Bin schon seit Dezember an dieser Geschichte dran. Finde einfach keine Lösung.
 

Anhänge

  • FC_Referenzfahrt (FC7).pdf
    124,5 KB · Aufrufe: 8
  • FC_Regler (FC5)100113.pdf
    114,7 KB · Aufrufe: 5
  • Main (OB1).pdf
    122,2 KB · Aufrufe: 5
Der Bereich für deine Stellgröße geht bei deinen Werten von Lo-Limit=-5000 und Hi-Limit=+5000 aber nur von
-5000+13850=8850
bis
+5000+13850=18850

Ist das denn so richtig? Und wenn ja, warum nicht einfach Lo und Hi-Limit auf diese Werte setzen?

Ich mache es fast ausnahmslos so dass ich die Reglerstellgröße auf 0..100% einstelle, dann sind die Reglerparameter auch grob von einem Projekt auf ein anderes übertragbar.
Die Skalierung auf ein Ausgangssignal kommt erst später.
 
Da habe ich drei Werte stehen, je nachdem welche Bedingung erfüllt ist. Also 150, 1400 und 2100. Ich habe jetzt hinbekommen, dass er zu der Position 150 fährt, wenn eine bestimmte Bedingung erfüllt ist und egal wo er gerade ist. Jedoch bewegt er sich nicht zu den anderen Positionen.
 
Hallo,

kann mir jemand bitte sagen, wie ich den Zähler auf Null bringen kann. Ich gebe dem Arm zwar den Befehl, dass er zu einer bestimmten Position fahren soll, wo dann das Software-Tor auch dann aktiviert wird, jedoch wird der Zähler nicht auf null gesetzt. Ich muss an dieser Stelle immer die CPU ausschalten, damit dieser auch genullt wird. Wenn ich das habe, bin ich damit durch.
Für eure Hilfe wäre ich sehr dankbar.

Gruß
 
Zurück
Oben