-> Hier kostenlos registrieren
Hallo,
ich habe ein Phänomen zum Haare ausreissen.
Ich wandle in einer SCL Funktion einen Sollwert in Inkremente um.
Rufe diesen FC in einem fcACHSE auf. Nach diesem Netzwerk ist der Aufruf des SERVO FC's an dem uebergebe ich den Sollwert in Inkremente
Wenn ich jetzt einen ganz bestimmten Sollwert auf die Funktion zum umrechnen gebe, setzt mir der SERVO FC den Istwert auf null?!?!
Ändere ich den Sollwert, so funktioniert dies einwandfrei! Wie kann dieser FC (zum Umrechnen) meinen anderen FC(Servo) beeinflussen? Ich habe das Problem auch schon soweit isoliert, das ich alles andere ausschließen kann.
anbei der Source vom FC:
FUNCTION FC205 : VOID
//Funktion zum Umrechnen von einer Sollposition in Hundertstel auf Inkremente
VAR_INPUT
inGetriebefaktor :REAL; //Getriebefaktor des Getriebes (zB. i=70)
inDMLinear :REAL; //Wirkdurchmesser
inINKpUmdr :REAL; //Inkremente pro Umdrehungen des Gebers
inSollPos INT;
END_VAR
VAR
Umfang :REAL; //Errechnen des Umfangs
PI :REAL;
mmProUmdr :REAL; //mm pro Umdrehung
rSollPos :REAL;
INKs :REAL;
END_VAR
VAR_OUTPUT
outErg INT;
END_VAR
BEGIN
PI := 3.141592 ;
IF inSollPos <> 0 THEN
Umfang:= (indmLinear * PI);
mmProUmdr:= (Umfang / inGetriebefaktor);
rSollPos := DINT_TO_REAL(inSollPos) / 100;
INKs:= (rSollPos / mmProUmdr) * inINKPUmdr;
outErg:= REAL_TO_DINT(INKs);
ELSE
outErg:=0;
END_IF;
END_FUNCTION
lg
Ernst
ich habe ein Phänomen zum Haare ausreissen.
Ich wandle in einer SCL Funktion einen Sollwert in Inkremente um.
Rufe diesen FC in einem fcACHSE auf. Nach diesem Netzwerk ist der Aufruf des SERVO FC's an dem uebergebe ich den Sollwert in Inkremente
Wenn ich jetzt einen ganz bestimmten Sollwert auf die Funktion zum umrechnen gebe, setzt mir der SERVO FC den Istwert auf null?!?!
Ändere ich den Sollwert, so funktioniert dies einwandfrei! Wie kann dieser FC (zum Umrechnen) meinen anderen FC(Servo) beeinflussen? Ich habe das Problem auch schon soweit isoliert, das ich alles andere ausschließen kann.
anbei der Source vom FC:
FUNCTION FC205 : VOID
//Funktion zum Umrechnen von einer Sollposition in Hundertstel auf Inkremente
VAR_INPUT
inGetriebefaktor :REAL; //Getriebefaktor des Getriebes (zB. i=70)
inDMLinear :REAL; //Wirkdurchmesser
inINKpUmdr :REAL; //Inkremente pro Umdrehungen des Gebers
inSollPos INT;
END_VAR
VAR
Umfang :REAL; //Errechnen des Umfangs
PI :REAL;
mmProUmdr :REAL; //mm pro Umdrehung
rSollPos :REAL;
INKs :REAL;
END_VAR
VAR_OUTPUT
outErg INT;
END_VAR
BEGIN
PI := 3.141592 ;
IF inSollPos <> 0 THEN
Umfang:= (indmLinear * PI);
mmProUmdr:= (Umfang / inGetriebefaktor);
rSollPos := DINT_TO_REAL(inSollPos) / 100;
INKs:= (rSollPos / mmProUmdr) * inINKPUmdr;
outErg:= REAL_TO_DINT(INKs);
ELSE
outErg:=0;
END_IF;
END_FUNCTION
lg
Ernst