Twincat 3 Regler

Fabi0815

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

ich versuche in Twincat 3 einen Regler zum laufen zu bringen.

Ich habe die Controller installiert, die Librarys eingefügt und die 7-Tage Testlizenz aktiviert.

Ich habe zum proberen jedem Input/Output eine simple variable zugewiesen und einen festen Wert vorgegeben.

Wie genau muss ich die Struktur handhaben? Bei anderen Reglern muss ich dort ja auch Standardwerte eingeben. z.B. kps etc.

Ich versuche bereits seit seit einigen Stunden das hinzubekommen.

2017-03-07 14_25_36-TwinCAT Projekt4 - Microsoft Visual Studio (Administrator).png

PROGRAM POU
VAR
FB_CTRL_2POINT_0: FB_CTRL_2POINT;
ab: ST_CTRL_2POINT_PARAMS;
a: LREAL:=120.0;
b: LREAL:=15.0;
c: BOOL:=FALSE;
d: BOOL:=FALSE;
e: E_CTRL_MODE:=2;
f: BOOL;
g: E_CTRL_STATE;
h: E_CTRL_ERRORCODES;
i: BOOL;
END_VAR


Wo liegt mein Fehler?

Gruß
 
Vielleicht ist es ja für mich zu früh am Morgen, aber könntest Du deine Fragen so formulieren das man was damit anfangen kann?

Welchen Controller hast du installiert? Welche Struktur willst du handhaben?

Meintest du die TF4100 Controller Toolbox von Beckhoff? Dazu gibt’s eine Doku mit Beispielprogramm die man sich runterladen kann. Hast du dir das mal angeschaut?

Hier ist der 2 Punkt Regler erklärt: https://infosys.beckhoff.de/content.../9007199500164491.html?id=2262919823860541934

Und hier das Beispiel zum Runterladen: https://infosys.beckhoff.de/content...27021598009733131.html?id=4735062684821846165

Und wo liegt jetzt dein Problem genau?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, der TF4100 Controller. Gibt's bezüglich der Regler noch einen anderen?

Ich möchte vorerst nur einmal den Regler ansteuern, deshalb auch die statische Vorgabe der Variablen.

Die Dokumentationen habe ich gelesen, wenn man es "Dokumentation" nennen kann.

Ich möchte einfach nur einen z.B. 2 Punkt Regler aufrufen und ihn seine arbeit verrichten lassen, um zu verstehen, wie er funktioniert, also welche Bedingungen gegeben sein müssen.

Kannst du mir erklären wie ich das machen muss, bzw was mein Fehler bisher ist?

gruß
 
Die Dokumentationen habe ich gelesen, wenn man es "Dokumentation" nennen kann.

Das ist ein 2-Punkt-Regler!! Was ist daran nicht zu verstehen? Da etwas statisch vor zugegeben um zu sehen wie er funktioniert ist seltsam, aber gut. Der Regler hat nur zwei Ausgangszustände, die anhand des Wertes der Eingangsgröße ermittelt werden. Das ganze mit einer Hysterese versehen, damit der Regler im Grenzgebiet nicht andauernd hin und her schaltet. Wenn du also einen statischen Wert vorgibst, dann bekommst du nur true oder false. Da wird auch nie was anderes bei rum kommen und da wirst du auch keinen Verlauf des Ausgangs sehen...

Um zu verstehen warum du im Errorstate bis, wäre es hilfreich wenn du uns auch den ErrorID mit reinstellst... Mit Kaffeesatz lesen würde ich mal behaupten, du hat keine vernünftigen Parameter eingeschrieben. Er erwartet die Taskzykluszeit, die Controlzykluszeit und die Hysterese-Range:

z.B. so: ab : ST_CTRL_2POINT_PARAMS := (tCtrlCycleTime:= T#1MS, tTaskCycleTime:= T#1MS, fHysteresisRange:= 4);
 
Zuletzt bearbeitet:
Das ist ein 2-Punkt-Regler!! Was ist daran nicht zu verstehen? Da etwas statisch vor zugegeben um zu sehen wie er funktioniert ist seltsam, aber gut. Der Regler hat nur zwei Ausgangszustände, die anhand des Wertes der Eingangsgröße ermittelt werden. Das ganze mit einer Hysterese versehen, damit der Regler im Grenzgebiet nicht andauernd hin und her schaltet. Wenn du also einen statischen Wert vorgibst, dann bekommst du nur true oder false. Da wird auch nie was anderes bei rum kommen und da wirst du auch keinen Verlauf des Ausgangs sehen...

Um zu verstehen warum du im Errorstate bis, wäre es hilfreich wenn du uns auch den ErrorID mit reinstellst... Mit Kaffeesatz lesen würde ich mal behaupten, du hat keine vernünftigen Parameter eingeschrieben. Er erwartet die Taskzykluszeit, die Controlzykluszeit und die Hysterese-Range:

z.B. so: ab : ST_CTRL_2POINT_PARAMS := (tCtrlCycleTime:= T#1MS, tTaskCycleTime:= T#1MS, fHysteresisRange:= 4);

Immer locker bleiben!

Ich weiß was ein Zweipunktregeler ist. Eigentlich geht es mir um den Temperatur Regler Baustein. Da ich jedoch bei dem 2 Punkt Regler auch den gleichen Fehler bekommen habe, wollte ich hier den "einfachen" regler nehmen.

Das ganze funktioniert. Mein Problem war die Zuweisung. Das habe ich versucht gehabt über eine Struktur. Wieso funktioniert das nicht? Muss ich das wirklich so angeben?

ab : ST_CTRL_2POINT_PARAMS := (tCtrlCycleTime:= T#1MS, tTaskCycleTime:= T#1MS, fHysteresisRange:= 4);

Gerade beim Temperaturregler sind das ja viel mehr Variablen. Zur besseren Übersicht würde ich das gern in einer Struktur aufrufen und zuweisen. wieso geht das nicht?
 
2017-03-09 07_43_03-TwinCAT Projekt7 - Microsoft Visual Studio (Administrator).png

Ich möchte zu beginn nun einfach mal den Regler "arbeiten" sehen. Sprich ich möchte einfach feste Werte vorgeben, und sehen wie die Stellgröße langsam nach oben geht, im Umkehrschluss möchte ich sehen, das die Stellgröße zurückgeht wenn ich den Istwert über den Sollwert setze.

Kann mir jemand dabei helfen?

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Fehlermeldung sagt, dass du die Abtastzeit des Reglers falsch eingestellt hast (tCtrlCycleTime).
Hast du allen Parametern in der Struktur
sControllerParameter Werte zugewiesen?
Hier das Beispiel von Beckhoff =LINK=
 
Habe jetzt extakt diese Einstellungen übernommen. Alarm ist weggegangen jedoch die errorid bleibt bestehen.

Was könnte das sein?
2017-03-09 09_24_39-TwinCAT Projekt7 - Microsoft Visual Studio (Administrator).jpg
 
Dein Screenshot ist nett aber fast alle relevanten Daten fehlen.
Somit sorry - aber die Glaskugel ist trüb.

Beispiel: Error Ausgang. Hier der Link auf die mögliche Enumeration. Und welche hast du nun?
https://infosys.beckhoff.de/content...ontroller_appendix.htm?id=3990579803582521956

Wenn, dann mach einen Online- Screeenshot bei der Definition des Bausteins, und vergiss nicht viele Unterstrukturen mit aufzuklappen.

Guga
 
Also nach ewig langem probieren bin ich nun drauf gekommen, dass der regler nur funktioniert, wenn er den Status TUNED aufweise und dann in active geschalten wird.

Ist das wirklich zwingend nötig? muss ich bei jedem Neustart der SPS die regler neu tunen?
 
Zurück
Oben