LabVIEWForum.de
SGL zu Byte - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SGL zu Byte (/Thread-SGL-zu-Byte)

Seiten: 1 2


SGL zu Byte - Lucki - 20.03.2009 19:49

' schrieb:Ein Telegramm ist grob gesagt ein Datensatz.
@Beginner: Laß Dich von der Begriffsvielfalt nicht irre machen. In Deinem Bild heißt es "Datenblock". Die Bezeichungen "Telegramm" oder "Datensatz" werden hier als Synonyme dafür benutzt - mehr steckt da nicht dahinter. Damit der Text nicht so trocken ist, muß man eben auch einem Ingenieur einen gewissen literarischen Spielraum gönnen.

So würde jetzt die 4-byte Übertragung eines Single-Values mit Vor- und Rück-Konversion aussehen. Es gibt dabei keinerlei Einschränkungen im Zahlenbereich des Singles:

[attachment=17352]


SGL zu Byte - Labview-Beginner - 24.03.2009 14:06

Ooooooookay Leute,

langsam habe ich es raus. Mit eurem Spürsinn habt ihr erahnt, was ich einfach nicht erkannt hatte. -_-

Ich habe unten mal das ganze Blatt als jpg drangehängt. Da erkennt man, wie ihr geschrieben habt, dass der Wortwert 275 im Hexadezimal in 4 Byte umgewandelt wird und als zwei Mal 2 Byte Pakete in den Befehl hineingeschrieben wird.

Jetzt macht das auch langsam Sinn, warum diese Wortadressen immer eine Differenz von 2 zur nächsten Wortadresse haben. ^_^


Und jetzt kommt natürlich die Masterfrage: Es gibt auch den Befehl Schreiben von n Worten. Ich habe wieder die Erklärung des Manuals als jpg drangehängt und habe dabei eine konkrete Frage.
Ich verstehe in dem Beispiel nicht, warum an der Stelle Wortanzahl, max. 127 eine 02 steht. Huh

Es wird doch nur ein Befehl gegeben. Nämlich mit der Wortadresse 0x3014.

Was ist an dieser Stelle die Bedeutung des Begriffs Wort ?!?

Helft mir bitte Telegramme schreiben zu können. ^_^

Herzlichen Dank im Voraus.
Lv-B


SGL zu Byte - Lucki - 24.03.2009 15:40

' schrieb:Und jetzt kommt natürlich die Masterfrage: Es gibt auch den Befehl Schreiben von n Worten. Ich habe wieder die Erklärung des Manuals als jpg drangehängt und habe dabei eine konkrete Frage.
Ich verstehe in dem Beispiel nicht, warum an der Stelle Wortanzahl, max. 127 eine 02 steht. Huh

Es wird doch nur ein Befehl gegeben. Nämlich mit der Wortadresse 0x3014.

Im engeren, fast ausschließlich gebrauchten Sinn ist ein (Daten)Word eine 16bit-Zahl, die aber nicht als Zahlenwert, sondern als Adresse verwendet wird und dementsprechend das Format U16 und nicht I16 hat. Für eine 32bit lange Adresse wird meist die Bezeichnung Doppelword verwendet, aber ich habe auch schon die Bezeichnung 32bit-Word dafür gesehen. Ist aber selten, und vielleicht wußten die Schreiber nicht was sie taten, man kann es praktisch vergessen.

Also, ich verstehe nicht was es da nicht zu vertehen gibt. Das Kommandoword ist redundant: Die Datenlänge wird hier doppelt vorangekündigt, einmal als Anzahl Words (02) und im nächsten byte noch mal als Anzahl von Bytes (04), also dem Doppelten des ersten Eintrages.

Im Beispiel werden also 2 Word, bzw 4 Bytes übertragen, und diese 4 Bytes (00 00 42 A0) folgen doch auch prompt nach der Ankündigung. Was ist daran schwierig?

Edit: Man beachte den Widerpruch in meiner eigenen Erklärung. Ich habe gesagt, daß die Bezeichnung Word meist im Zusammenhang mit Adressen verwendet wird. Hier sind aber im Eintrag "Wortanzahl" einfach Doppelbytes mit beliebigem Verwendungszweck gemeint. Man darf alles nicht so genau nehmen, die erwähnte literarische Freiheit der Ingenieure kommt auch hier zum Ausdruck. Wenn es nach mir ginge, hätte ich an dieser Stelle den Audruck "Word" besser vermieden. Überhaupt ist ja dieser ganze Eintrag überflüssig, wenn anschießend noch die Bytezahl genannt ist.


SGL zu Byte - Labview-Beginner - 24.03.2009 16:22

Lucki schrieb:Also, ich verstehe nicht was es da nicht zu vertehen gibt.

Lucki schrieb:Edit: Man beachte den Widerpruch in meiner eigenen Erklärung. Ich habe gesagt, daß die Bezeichnung Word meist im Zusammenhang mit Adressen verwendet wird. Hier sind aber im Eintrag "Wortanzahl" einfach Doppelbytes mit beliebigem Verwendungszweck gemeint. Man darf alles nicht so genau nehmen, die erwähnte literarische Freiheit der Ingenieure kommt auch hier zum Ausdruck. Wenn es nach mir ginge, hätte ich an dieser Stelle den Audruck "Word" besser vermieden. Überhaupt ist ja dieser ganze Eintrag überflüssig, wenn anschießend noch die Bytezahl genannt ist.

^_^

Aber mal im Ernst, ich als Laie bin dahingehend eben schnell zu verwirren. Ich hatte mir genau diese Frage gestellt, welche Bedeutung die Wortanzahl hat.
Mir war klar, dass die Größe der Wortadresse durch die Angabe von 4 Bytes erledigt war. Also wozu noch die Anzahl der Worte angeben.

Ich dachte in meiner Naivität, dass ich damit mehrere Wortadressen in ein Telegramm packen kann. Dass ich also eine Art Befehl schreiben kann:
01 10 3014 3016 00 02 04 00 00 41 A0 00 00 41 A5 9779
_____WA1__WA2___________WW1______WW2

Soll heißen zuerst gebe ich die Wortadressen (WA1, WA2) ein, die ich gerne als Befehl übermittelt haben möchte und anschließend eben die zugehörigen Wortwerte.
Nur das funktioniert eben nicht. Dry

Ich dachte eben mit n Worten könnte ich n Wortadressen in ein Telegramm schreiben. Sprich nicht für jede Wortadresse einen eigenen Befehl generieren, sondern das ganze kompakter - in ein Telegramm - fassen.

Denn wozu sonst die Unterscheidung zwischen Schreiben eines Wortes und Schreiben von n Worten?

Ich checks net. -_-

Gruß,
Lv-B


SGL zu Byte - IchSelbst - 24.03.2009 17:25

' schrieb:Ich verstehe in dem Beispiel nicht, warum an der Stelle Wortanzahl, max. 127 eine 02 steht. Huh
2 bedeutet hier: In dem Telegramm sind diese beiden (also 2) Bytes vorgesehen für die Übertragung von Werten.
127 bedeutet, dass der maximale Wert, der übertragen werden kann, eben 127 ist.

127 ist also der Wert, den z.B. ein Parameter wie Temperatur o.ä. haben soll. 2 ist die Größe des Speicherbereiches innerhalb des Telegramms, in den der zu übertragende Wert passen muss.

Das eine, nämlich die 2, bezieht sich auf den Aufbau des Telegrammes. Das andere, nämlich die 127, ist der Inhalt des Telegrammes.

Das eine, nämlich den Aufbau, musst du als Programmierer kennen, damit du eine an sich funktionierende Schnittstelle programmieren kannst. Das andere, nämlich der Inhalt, muss halt nur passen, damit dein Temperatur-Schrank nicht überhitzt (sag ich jetzt mal so als Beispiel).


SGL zu Byte - Lucki - 24.03.2009 19:11

' schrieb:Denn wozu sonst die Unterscheidung zwischen Schreiben eines Wortes und Schreiben von n Worten?

Also es wird hier (in dieser Doc) in der Terminologie unterschieden zwischen "Wordadresse" und "Word". Wenn hier nur von "Word" gesprochen wird, dann ist ein "Datenwort" gemeint. Ein Datenwort ist einfach ein U16-Wert, verteilt auf zwei Bytes (U8). Die Bezeichnung "Datenwort" statt Zahl wird hier deshalb verwendet, weil es keine reinen Zahlenwerte sind. Es handelt sich z.B um Gleitkomma-Single-Zahlen, die in zwei Datenworten (4bytes) übertragen werden, und die, gewissermaßen verschlüsselt, den Zahlenwert der Single Zahl zwar enthalten, aber selbst nicht diese Zahlenwerte sind. Deshalb die Bezeichnung Wort (Bytes) statt Wert oder Zahl.

Mit "Schreiben von n Worten" kann ich in einem einzigen Telgramm bis zu 127 Wortwerte übertragen. Daß die "Wortanzahl" auf 127 beschränkt ist, ist ja logisch und muß sein: Denn im anschließenden byte "Bytezahl" , was das Zweifache davon ist, läßt sich ja nur 0..255 reinschreiben. Auf die berechtigte Frage, warum für die Übertragung eines Zahlenwertes 0..127 zwei Bytes reserviert sind, ist die Antwort: "Da ist eben so - das erste Byte ist immer Null"

Abwandlung des Beispiel "Schreiben von n Worten"

Der Proportionalbereich Pb1 = 20 soll - sinnloserweise. ist aber hier egal - 5 mal hintereinder in einem Telegramm übertragen werden:

Der Gleitkommawert 20.0 entpricht codiert diesen 4 bytes: 00 00 41 A0.
Dann lautet das Telegramm:

01 10 30 14 00 0A 14 00 00 41 A0 00 00 41 A0 00 00 41 A0 00 00 41 A0 00 00 41 A0 XXXX

XXXX ist die Prüfsumme, weiß nicht wie die berechnet wird.

Und die Antwort ist:
01 10 30 14 00 0A yyyy

Was auch nicht aus dem DOC-Fragment hervorgeht, ist, warum überhaupt immer außer dem Wert eine Adresse mit übertragen wird. Anscheinend ist der Empfänger der Nachricht nicht intelligent genug selbt zu wissen, wo z.B. der Wert "Proportionalbereich" zu speichern ist.
Beim Senden eines (Daten-)Wortes wird es sich um die Adresse selbst handeln. Beim Senden von mehreren Worten wird es sich um die Anfangsadresse handeln, die Speicherung geschieht dann fortlaufend.

@IchSelbst: Entschuldige, Daß ich Deine Antort nicht erwähne. Veilleicht meinen wir beide das das Gleiche, ich habe nur auf die Schnelle nicht alles richtig verstanden.


SGL zu Byte - jg - 24.03.2009 19:38

Ich habe es schon mal gefragt, in der Hoffnung, Antwort zu erhalten: Welches Kommunikationsprotokoll willst/musst du implementieren? Sieht nämlich genauso wie Modbus aus, dafür gibt es bei NI eine schöne Library:
http://zone.ni.com/devzone/cda/epd/p/id/4756

Gruß, Jens