Hallo zusammen,
erstmal vielen Dank an die Oscat-"Betreiber".
Die Bibliothek hat mir schon viel Zeit und Nerven erspart.
Aber nun zu meinen eigentlichen Problem.
Ich habe die Oscat Lin 3.32 im Einsatz.
Wenn ich CTRL_PID Baustein einfüge kann ich meine SPS (Advantech 5510EKW/TP) nicht mehr laden und es kommt zur folgenden Fehlermeldung:
Anweisung nicht implementiert oder falscher Datentyp an WN 72!
Fehler in POE 'FT_DERIV' bei Codeerzeugung aufgetreten!
Interner Fehler! Nicht alle POEs gesendet!
Beim Anlicken auf den Fehler führt mich das Programm an die folgende Codezeile (rot markiert)
(* read system time *)
T_PLC_US();
tx:= T_PLC_US.T_PLC_US;
(* init on firsat startup *)
IF NOT init THEN
init := TRUE;
ELSIF run AND tx - last > UDINT#0 THEN
out := (in - old) / UDINT_TO_REAL(tx - last) * 1000000.0 * K;
ELSE
out := 0.0;
END_IF;
old := in;
last := tx;
Was kann ich machen damit der Fehler nicht mehr kommt?
Beim Baustein CTRL_PI taucht übrigens kein Fehler auf.
Jetzt noch eine allgemeine Verständnisfrage zur Oscat-Lib.
Wenn ich auf den Baustein z.B. CTRL_PI klicke wird mir der Quellcode angezeigt, so wie es aussieht werden in diesem Baustein andere Bausteine aufgerufen und dann zugeordnet.
Aber ich blick nicht so ganz wie das ganze verschachtelt ist.
Code CTRL_PI:
DIFF := CTRL_IN(SET, ACT, SUP);--> hier wird der Baustein CTRL_IN aufgerufen, den ich wiederum in der Lib finde
pi(in := DIFF, kp := KP, ki := KI, lim_l := LL, lim_h := LH, rst := RST);----> aber welcher Baustein wird hier aufgerufen pi ?? finde ich nicht in der Lib
co(ci := pi.Y, OFFSET := OFS, man_in := M_I, lim_l := LL, lim_h := LH, manual := MAN); ----> aber welcher Baustein wird hier aufgerufen pi ?? finde ich nicht in der Lib
Y := co.Y;
LIM := co.LIM;
Ich hoffe Ihr könnt mir weterhelfen
Danke im voraus
Glüh