Wiki wieder gesichert über benutzersteuerung. Der Fehler in unserem Programm lag an der Annahme das die cEMI-funktionen des Calimero nach dem E0 paar die 00 mitsendet was sie leider nicht tun... den werte einfach erweitert und schon gehts
Ankündigung
Einklappen
Keine Ankündigung bisher.
Aufbau eines KNXnet IP Telegramms
Einklappen
X
-
Zitat von shadovv1 Beitrag anzeigenMeine Telegramme sehen folgendermaßen aus:
2B 07 03 01 00 04 02 14 D0 B4 31 64 51 02 E0 00 XX AD
2B 07 03 01 00 04 02 9E 77 B4 31 64 51 01 E0 00 XX AE
[...]
Kann mir bitte wer den ersten Teil des Telegramms erklären [...]
Danke im voraus
shadovv1
07: Längenangabe für zusätzliche Infos (AddInfos) (oft 0)
AddInfo-Aufbau:
1. Gesamtlänge (hier 7)
2a. Typ der Info (hier 3 für "busmon info")
2b. Länge der folgenden Daten (hier 1)
2c. Daten (hier 0 (status ok))
3a. Typ der Info (hier 4 für "relative timestamp info")
3b. Länge der folgenden Daten (hier 2)
3c. Daten (hier 14D0 bzw. 9E77 timestamp)
Der Status-Wert
Der Zeitstempel entspricht einem internen Zähler der Schnittstelle.
Für meine USB-Schnittstelle (GIRA 1070 00) gilt interessanterweise:
Anzahl der Zyklen = (13 x 52 + 1) x (L + 1), wobei L der Anzahl der Bytes des Telegrammes entspricht. Für die Übertragung eines Bits werden 52 Zyklen des Zählers benötigt. Ein Byte wird ja durch 13 Bits übertragen (Startbit, 8 Datenbits, Parität, Stopbit und 2 Wartebits). Ein Extrazyklus wird für jedes Byte benötigt (keine Ahnung warum). Mit dieser Formel kann für die GIRA-Schnittstelle exakt der Zeitpunkt der Übertragung eines Telegrammes bestimmt werden.
Für eine andere Schnittstelle muss zumindest der Wert 52 neu bestimmt werden. Das ist aber leicht, wenn man genügend aufgezeichnete Telegramme hat.
Kommentar
-
KNX/EIB Aufbau eines KNXnet IP Telegramms
Hallo zusammen,
ich bin an dem Zerlegen des IP-Telegramms. Soweit sieht das auch garnicht schlecht aus.
Funktioniert:
Quelladresse: 1.1.122 Zieladresse: 0/4/38 - Nachricht: 06 10 05 30 00 1F 11 00 BC E0 11 7A 04 26 0F 00 80 30 30 3A 34 35 3A 32 38 20 20 20 20 20 20 00 00 00 00 00
Fehler:
Quelladresse: 1.1.4 Zieladresse: 6/B/3 - Nachricht: 06 10 05 30 00 15 29 00 BC D0 11 04 6B 03 05 00 80 41 B7 57 69 35 3A 32 38 20 20 20 20 20 20 00 00 00 00 00 00
Es sollte eigentlich 13/3/3 als Zieladresse übersetz werden.
Stattdesen bekomme ich 6/B/3.
Ich hoffe es kann mir jemand weiterhelfen.
Gruß Sebastian
Kommentar
-
Zitat von szange Beitrag anzeigenEs sollte eigentlich 13/3/3 als Zieladresse übersetz werden.
Stattdesen bekomme ich 6/B/3.
Ich hoffe es kann mir jemand weiterhelfen.
Gruß Sebastian
Code:6B03 = 0110 1011 0000 0011 HHHH HMMM SSSS SSSS H= 01101=13 M= 011 =3 S= 00000011=3 Gruppenadresse: H/M/S= 13/3/3
Gaston
Kommentar
-
Hallo,
vielen Dank erstmal für die Hilfe.
Das heist ich muss aus dem 6B03 erst einen Bit-Code machen und
dann wieder zurück übersetzen. Leider kommt bei mir in .net VB folgender Bit-Code heraus:
1000001110011
Warscheinlich liegt das daran das nicht alles mit 0 aufgefüllt ist.
BIsher habe ich scheinbar keine brauchbar Routine gefunden die das macht.
Gruß Sebastian
Kommentar
-
Zitat von szange Beitrag anzeigenDas heist ich muss aus dem 6B03 erst einen Bit-Code machen und
dann wieder zurück übersetzen. Leider kommt bei mir in .net VB folgender Bit-Code heraus:
1000001110011
Warscheinlich liegt das daran das nicht alles mit 0 aufgefüllt ist.
BIsher habe ich scheinbar keine brauchbar Routine gefunden die das macht.
In c++ z.Bsp so:
Code:ostringstream temp; temp << ((addr>>11)&0xf) << "/" << ((addr>>8)&0x7) << "/" << (addr&0xff);
Kommentar
-
Zitat von JNK Beitrag anzeigenHg = int( wert/8)
Mg = rest( Wert/8)
Richtig (in VB):
Dim b AsString
Dim d AsInteger
Dim Hg AsInteger, Mg AsInteger, Sg AsInteger
b = "6B03"
d = Val("&H" & b)
Hg = Int(d / 2048)
d = d Mod 2048
Mg = Int(d / 256)
Sg = d Mod 256
P.S.: In disem Code ist Int() nur als paranoia anzusehen. Wer weis was er tut kann das auch weglassen.
Kommentar
-
Hallo,
vielen Dank für das Beispiel. Sieht soweit auch gut aus.
Ich habe nur das Problem, das andere Varianten nicht stimmen.
z.B.:
20:19:28.3429454 Quelladresse: 2.1.53 Zieladresse: 0/6/83 - Nachricht: 1.1.53 - 6/5/3 - 06 10 05 30 00 11 29 00 BC D0 11 35 65 03 01 00 80 0F 7B 3A 30 38 3A 35 33 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Richtig ist: 1.1.53 - 6/5/3
Gruß Sebastian
Kommentar
-
Zitat von szange Beitrag anzeigenz.B.:
20:19:28.3429454 Quelladresse: 2.1.53 Zieladresse: 0/6/83 - Nachricht: 1.1.53 - 6/5/3 - 06 10 05 30 00 11 29 00 BC D0 11 35 65 03 01 00 80 0F 7B 3A 30 38 3A 35 33 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Richtig ist: 1.1.53 - 6/5/3
Gruß Sebastian
1135 is 1.1.53
BLGG = B=Bereich L=Linie GG=Geräteadresse
aber
6503 ist nicht 6/5/3 sondern 12/5/3 (=GA) oder 6.5.3 (=PA)
Kommentar
-
Hallo,
ich habe mal wieder etwas Zeit gefunden an meiner .Net-Schnittstelle zu basteln.
Es ist richtig das 6503 = 12/5/3 (=GA), aber ich bekomme im 6/5/3 übersetzt.
Mit folgendem Code übersetze ich die Byte-Werte:
PrivateFunction GetZielAdresse(ByVal p_Byte1 AsByte, ByVal p_Byte2 AsByte) AsString
GetZielAdresse = Conversion.Hex(p_Byte1).PadLeft(2, "0").Substring(0, 1) & "/" & Conversion.Hex(p_Byte1).PadLeft(2, "0").Substring(1, 1) & "/" & p_Byte2
EndFunction
Gruß Sebastian
Kommentar
-
Hallo Gaston,
vielen Dank für den Tip. Jetzt funktionieren endlich die Adressen. Bei den Werten sieht es auch nicht schlecht aus. Aktuell habe ich noch ein Problem mit dem Typ:
Beispiel:
- Nachricht: 1.1.27 - 1/0/4 - Typ: 0 - Wert: Neuer Wert: 89 - 6 10 5 30 0 11 29 0 BC D0 11 1B 8 4 1 0 89 C 4C 3A 30 31 3A 30 36 20 20 20 20 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Ich hatte gedacht by byte(14) bekomme ich den Typ, aber scheinbar habe ich da auch noch einen Fehler.
Gruss Sebastian
Kommentar
Kommentar