Winkelfunktionen

zloyduh

Level-1
Beiträge
226
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, habe ein Problem
Hardware: CPU 314C-2DP fw3.3.7 , SCL,

Es tritt ein seltsames Phänomen bei der Berechnung der Winkelfunktionen auf und zwar:
immer wenn ein Winkel = 0 eingegeben wird.

Ergebnis:= Daten/cos(Winkel_Bogenmaß);

Das berechnete Ergebnis ist immer Falsch und sehr hoch, unabhängig von den Eingabe-Parametern.
In der Simulation passt es..:confused:


Das Ergebnis wird als Zwischenergebnis in den TEMP-Bereich des FCs geschrieben.. und intern weiter verarbeitet.

Was kann das sein??:confused:
 
Hallo, habe ein Problem
Hardware: CPU 314C-2DP fw3.3.7 , SCL,

Es tritt ein seltsames Phänomen bei der Berechnung der Winkelfunktionen auf und zwar:
immer wenn ein Winkel = 0 eingegeben wird.

Ergebnis:= Daten/cos(Winkel_Bogenmaß);

Das berechnete Ergebnis ist immer Falsch und sehr hoch, unabhängig von den Eingabe-Parametern.
In der Simulation passt es..:confused:


Das Ergebnis wird als Zwischenergebnis in den TEMP-Bereich des FCs geschrieben.. und intern weiter verarbeitet.

Was kann das sein??:confused:

Ist der Wert wirklich sehr hoch oder eher sehr klein, z.Bsp. 1,745329e-41?
Schau dir mal deinen "Winkel_Bogenmaß" an. Wenn du den vorher berechnest, kommt vielleicht nicht genau 0 heraus, sondern ein Wert mit einer "hohen" negativen Potenz, also ein Wert gegen Null. Das Gleiche würde dann bei der Berechnung mit cos eintreten.
 
Code:
FUNCTION FC100 : INT


VAR_IN_OUT
    Ergebnis: REAL;
    Daten : REAL;
    Winkel_Bogenmass: REAL;


END_VAR


VAR_TEMP
    // temporäre Variablen


END_VAR


    // Anweisungsteil
    Ergebnis:= Daten/cos(Winkel_Bogenmass);
    
    
    ;
    FC100 := 100;
END_FUNCTION

Meine obige Vermutung (#1) trifft nicht zu.
Obiges Programm funktioniert, dabei habe ich MD an den INOUT beim Aufruf von FC100.
Wenn man für das Bogenmaß 0 eingibt, ist Ergebnis = Daten. Gleiches trifft bei sehr kleinen Werten für das Bogenmaß ein, wegen der eingeschränkten Genauigkeit von Real in der SPS.

PS: das 'ß' hat mein SCL-Compiler abgelehnt.:confused:

Argh. ich seh gerade, du hast geschrieben in der Simulation paßt es.
Rufst du da nur deinen Baustein auf? Das deutet dann auf die Vermutung von Blockmove hin!
 
hier ein Screenshot:
Berechnung_Ausz.png

Ich habe mehrere FC's die teilweise auch die gleiche Formel enthalten aber unterschidliche Parameter und Trotzdem kommt überall das gleiche ergebniss???
Also überall wo Cos(0)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hier ein Screenshot:
Anhang anzeigen 18127

Ich habe mehrere FC's die teilweise auch die gleiche Formel enthalten aber unterschidliche Parameter und Trotzdem kommt überall das gleiche ergebniss???
Also überall wo Cos(0)

Sieht aus wie TIA!!!
Kannst du bitte mal nach der Berechnung noch einmal das Ergebnis einer weiteren Variable zuweisen und an dieser Stelle noch einmal das Ergebnis zeigen. Vielleicht ist das nur ein Problem der Darstellung?
 
hier ein anderer Baustein: => gleiche ergebnisse
Unbenannt1.jpg
wie gesagt in der Simulation Funftionierts in der Steuerung nicht
 
Aus_Bsp.jpg ===>> Unbenannt.jpg

Hier kommt auch das gleiche Ergebniss raus obwohl es ein anderer FC und eine andere Formel ist:confused::confused:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah, ich verstehe. Das läßt durchaus einen Bug in der 314 vermuten. Oder der SCL-Compiler tut etwas, das die 314 nicht richtig interpretiert.
Hast du die Möglichkeit, den selben Code, vielleicht mein Mini-Testprogramm, mal mit Step7 und der CPU zu testen?
 
was kommt denn raus, wenn du ein einfach mal 3 zeilen awl eintippst.

L 0
COS
T mw200
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht veröffentlichst du mal das ganze Script ...
Du schreibst, dass du einen FC verwendest. Wenn du darin bedingt arbeitest kann es das Ergebnis auch schon erklären ...

Gruß
Larry
 
Hallo,
vielleicht veröffentlichst du mal das ganze Script ...
Du schreibst, dass du einen FC verwendest. Wenn du darin bedingt arbeitest kann es das Ergebnis auch schon erklären ...

Gruß
Larry

Genau deswegen sollte er mal das Miniprogramm von mir laufen lassen. Das spart uns das Durchforsten seines Codes.
 
also ich habe mein Programm in eine andere Steuerung mit der FW2.6 übertragen und da wird alles richtig berechnetl:confused::confused:

in der Steuerung mit der FW3.3.7 nicht..

es liegt scheinbar an der Steuerung oder evt. an meinem Programm::
TEMP Variablen???
Aber warum nur bei Cos()??
sin() und tan() Funktionen werden richtig berechnet

gibt es unterschiede zwischen FW2.6 und 3.3??
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit welchen TIA stand hast du deine Baustein erstellt, bei TIA ist es so, das es
dort gerade bei SCL einige Probleme gab oder vielleicht noch gibt.

Kannst du den nicht einmal mit Step 7 V5.5 testen.
 
um auszuschliessen, dass es am compiler liegt kannst du doch einfach was in awl schreiben.
so wie ich das verstanden habe tritt der fehler bei cos von 0 auf.

also einfach mal

L 0.0
cos
T MD200

in einem baustein eingeben und beobachten.
 
Habs getestet am Compiler liegt es scheinbar nicht.
Was mich wundert: wenn das Programm falsch wäre da müsste es auch bei den Maschinen davor nicht funktioniert haben. Es hat aber funktioniert. Habe das gleiche Programm in eine andere Steuerung übertragen => da geht’s


Das ist die erste Steuerung mit der FW3.3 und schon gibt’s Probleme…
 
Zurück
Oben