Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
04.12.2008, 07:36 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2008 07:37 von Lucki.)
' schrieb:Hier habe ich 2 Beispiele als Bild eingefügt, ich habe bei den einen Beispiel auf I16 umgestellt, es zeigt zwar was in Minus an, aber nicht der richtige Wert. Also es funktioniert erst wenn die Werte im pos. Bereich liegen. Die beiden Bilder habe ich noch ein Screenshot von den echten Werten aus Kuka. Ich hoffe es wird nicht all zu kompliziert sein. Vielen Dank für die Hilfe.
Es ist schon zum Haare ausraufen mit Dir. Da erklärst Du erst, daß das MSB im zweiten Byte ein Minus bedeuted, und jetzt auf einmal zeigst Du die "echten" Werte von Kuka, bei denen es gar keine negativen Werte gibt, auch dann nicht, wenn wenn die Zahl gemäß Deinen eigenen Erklärungen eigentlich negativ hätte sein müssen. Wie kann es überhaupt möglich sein, daß Dir dieser eklatante Widerspruch nicht zuerst selbst auffällt?
Diese "echten" Werte würde man einfach so erhalten:
Anzeige
04.12.2008, 11:33 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2008 11:50 von Ray D. Light.)
Ähm habe ich da was falsches erklärt?
Wie im Bild 1 siehst du doch dass die Position Z,A,B,C ein negative Wert rauskommt von Roboter, wie kannst du sagen dass es nicht negativ ist?
Die Position X und Y ist positiv daher kommt auch der richtiger Wert raus.
Deine echte Werte habe ich doch auch in meine VI, aber es stimmt nur teilweise. Siehst du nicht auf der linken Ecke oben dass was rauskommen soll?
X = 143,24
Y = 161,62
Z = -133,73
A = -11,17
B = -53,07
C = -78,14
Wegen die kommas brauch man keine Gedanken zu machen, nur dieser Werte müssen herrauskommen. Dass das MSB im 2. Byte ein Minus ist, habe ich es von einem Kuka-Techniker bekommen, das MSB bezieht sich glaube ich nur auf das 1. Bit von den 8 Bit. Muss du bildlich vorstellen.
z.B 01001001 - es ist postiv da das 1. Bit 0 ist, aber das MSB ist ja 1, deswegen kann man nicht auf das MSB beziehen, sondern immer auf das 1.Bit von 8.
Deine echten Werte habe schon rausbekommen, bevor ich dieses Thema erstellt habe. Zwar nicht wie du, aber es kommt das gleiche raus. siehe Post #8
Es ist doch nicht so einfach wie man sich vorstellt. Kann man die echten Werte irgendwie zurückrechnen, sodass man auf die Inputwerte rausbekommt? Also nur für negative Werte.
04.12.2008, 12:00 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2008 12:08 von Ray D. Light.)
Ich habe gerade nachgerechnet, es kommt raus.
Also nehmen wir Byte 4 und Byte 5 aus Post #10
74H und 84H
1110100 und 10000100 Das 1. Bit aus Byte 5 ist eine 1. daher ist es ein Minus, deswegen bleibt nur noch
1110100 und 00000100 übrig. Wenn man es wie im Programm laufen lässt kommt auch der richtige Wert raus
1140 mit Minus zeichen multipliziert und dividiert durch 100 dann hat man genau -114 raus, und das ist was auch im Kuka steht (mit Aufrundung)
deswegen muss ich irgendwie in Binäre Darstellung abfangen und abfragen immer wenn 8 Bit (binär) vollständig da steht nehme ich Bit 2-7, mache die Umrechnung und dann mit -1 multiplizieren. Die Frage ist jetzt wie fang ich die 8Bit auf? in String?
Problem ist, dass die negative KukaZahl nicht der sonstigen Rechenkonvention entspricht (wie schon oben angedeutet, eigentlich ist -1 = 1111111111111111 als Bit-Muster), hier aber anders. Die Zahl ohne Vorzeichen ist wirklich als Bitmuster wie bei einer positiven Zahl gespeichert, und das Minus-Bit ist eine Zusatz-Info.
Übrigens, so geht es z.B.:
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Es war mir nicht klar, welches die wirklich "echten" Werte sind, denn Werte gibt es mehrere in der Graphik. Die echten Werte sind also die Werte in der Tablle links oben. Diese können allerdings nicht aus den Bytes heraus entstanden sein, da sie zusätzliche Kommastellen enthalten. Macht aber nichts.
Es ist also doch so wie Du eingangs sagtest, daß das MSB das Vorzeichen ist, und der Rest ist der Betrag des Wertes. Ich hatte das bezweifelt, da es keine übliche Darstellungsweise für negative Zahlen ist.
Für die Abtrennung des MSB gibt es viele Möglichkeiten, ich habe es hier mit Schieben in ein Überlauf-Register gemacht, und anschließendes Zurückschieben, wobei in das MSB eine Null hinkommt. Der Status des Überlaufregisters ist gleichzeitig die logischen Information, ob die Zahl negativ ist.
@jens: diesmal warst Du schneller..
Wenn man sich darauf beschränkt, nur für einen Wert zu zeigen, wie man es machen kann, dann würde das entsprechende VI bei mir so ausgesehen (Aber wie gesagt, es gibt das viele Lösungsmöglichkeiten):
Cool vielen Dank Lucki, deine Lösung sieht auch ganz gut aus, es liegt wahrscheinlich an mir dass ich am Anfang nicht so deutlich beschrieben hatte. Ich werde nachher es einbauen, mal sehen welcher vers. besser geeignet ist, ich glaub mal dass es egal ist. Aber immerhin, vielen Dank euch beiden.