TIA Real_to_Dint Problem

Lukas_Ink

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte eine eingegebene Gradzahl in Schritte für einen Stepper umrechnen.
in skalierung_2 steht noch was drin, aber aus dem Umwandeln kommt nichts raus :(
die Zahl wird maximal 25600 also sollte sie ins Dint passen


#skalierung_2:=("Stepper_Soll_Pos" * #skalierung_1);
#Soll_Pos := REAL_TO_DINT(IN := #skalierung_2);
 
Ax k7YEcReqaAAAAAElFTkSuQmCC
var_def.png
 
in skalierung_2 steht noch was drin
Das macht nichts. Es ist egal was vor dem zuweisen/überschreiben drin steht.

aber aus dem Umwandeln kommt nichts raus
Was gibst Du denn in die Umwandlung hinein?

Welchen Wert hat Dein #skalierung_1? Welchen Wert hat "Stepper_Soll_Pos"? Wo und wie ist "Stepper_Soll_Pos" deklariert?
Hast Du vielleicht auch ein Bild vom Beobachten Deines Programmes?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es stand beim beobachten an der Maschine direkt nichts drin, also 0.
:confused: :confused: :confused:

Bist Du Programmierer oder Schlosser/Instandhalter oder Bediener?
Wenn man sich Programmierer nennt, dann sollte man verständliche und eindeutige Auskünfte geben können. Und Nachfragen vollständig beantworten.

Wie hast Du "an der Maschine" beobachtet? Mit einem HMI oder Operator Panel? Oder hast Du mit einem PG mit TIA das Programm beobachtet?
Wo stand "nichts" (also 0) drin? Welche Variable beobachtest Du an der Maschine? #skalierung_2? Oder #Soll_Pos? Oder was? Wie kommt der berechnete Wert in die beobachtete Variable?

Wenn man in REAL_TO_DINT() 6400.0 hineingibt, dann kommt 6400 raus. Auch bei TIA.
Wenn 0 rauskommt, dann hat man ungefähr 0.0 oder was unzulässiges reingegeben.
Vielleicht wird auch der Wert den Du beobachtest zwischen der REAL_TO_DINT-Ausgabe und der Beobachtungsstelle überschrieben oder gar nicht in die Beobachtungsvariable kopiert?

Harald
 
Unbenannt.JPGUnbenannt2.JPG

das sind die Beobachtungswerte
mit dem PG auf beobachten geklickt
was hat es mit den ??? auf sich? in der Zeile drüber hat er den Wert noch ausgerechnet
 
Der Wert "#Skalierung_1" hat noch garkeinen Wert.
Und warum willst du REAL zu Int wandeln wenn du keine REAL werte hast? So wie es aussieht ist "Stepper_Soll_Pos" als Word definiert!?

Schreib doch mal:
Code:
#Skalierung_1 := 1.0;
#Skalierung_2 := "Stepper_Soll_Pos" * #Skalierung_1;

#Soll_Pos := REAL_TO_INT(#Skalierung_2);

Lad das hoch, beobachte es und poste das Ergebnis.

Poste auch ein Screenshot der kompletten Bausteinschnittstelle. Mit Anfangswerten.


Stefan
 
Zuletzt bearbeitet:
definition.JPG
0_27.jpg
ich habe mal eine Zahl genommen, bei der auch eine Real rauskommt.
Soll_Pos hat den Wert 90
Ich verstehe nicht, warum dann in Skalierung_2 von 24,3 auf 24 abgerundet wird
 
Weil deine Variable "Stepper_Soll_Pos" kein Real ist. Somit wird auch nicht in Gleitpunkt gerechnet sondern in Festpunkt. So wie es aussieht ist sie als Word definiert.

Word ist nur ein Bitmuster. Zum rechnen brauchst du schon eine Zahl. Stell die Variable auf Real um. Dann funktioniert es.


Stefan
 
dennoch wird dir online eine hex zahl angezeigt. default werden gleitpunktzahlen so nicht angezeigt.
wenn du da nichts verstellt hast, kannst du deine fehlersuche auf diese variable begrenzen.
allerdings ist es recht müßig sich aus diesen einzelnen programmabschnitten etwas zusammen zu reimen.
der komplette baustein, incl vollständiger deklarierung aller verwendeten variabeln wie auch der aufruf des bausteins wären da vll
zielführender..
 
Zurück
Oben