-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - Christian_EWW

#1
In der SCALE_R aus der oscat_basic_333.lib ist seit einem Update seitens Beckhoff ein Problem aufgetreten.
TwinCAT 2.11.2234 hat ein Problem mit der Länge des Ausdruckes, wenn ein ARM-Prozessor ausgewählt wird.

Lösung:
IF I_LO = I_HI THEN
   SCALE_R := O_LO;
ELSE
   TEMP := LIMIT(I_LO, X, I_HI);
   SCALE_R := (O_HI - O_LO) / (I_HI - I_LO) * (TEMP - I_LO) + O_LO;
END_IF;


(* revision history
hm   18. may. 2008   rev 1.0
   original version

hm   13. nov. 2008   rev 1.1
   corrected formula for negative gradient

hm   11. jan 2011   rev 1.2
   avoid division by 0

Christian Kreuzer
03.März 2013 rev 1.3
   splitted formula to avoid error "expression to complex" at Beckhoff ARM devices
*)


Vielleicht kann diese Änderung in eine der nächsten Versionen eingearbeitet werden.
Danke,
Christian_EWW
#2
Hallo.

Ich hatte das Problem auch, es liegt am SCALE_R Baustein.
Wenn man ihn folgendermaßen ändert, läuft er problemlos.

IF I_LO = I_HI THEN
   SCALE_R := O_LO;
ELSE
   TEMP := LIMIT(I_LO, X, I_HI);
   SCALE_R := (O_HI - O_LO) / (I_HI - I_LO) * (TEMP - I_LO) + O_LO;
END_IF;


(* revision history
hm   18. may. 2008   rev 1.0
   original version

hm   13. nov. 2008   rev 1.1
   corrected formula for negative gradient

hm   11. jan 2011   rev 1.2
   avoid division by 0

Christian Kreuzer
03.März 2013 rev 1.3
   splitted formula to avoid error "expression to complex" at Beckhoff ARM devices
*)


TEMP ist von Typ REAL

Viel Spaß damit,
Christian_EWW