PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bustelegramme über ein VB Programm senden



Martin
15.02.03, 16:32
Ich habe im Jahr 2001 mein eigenes Haus mit dem
EIB Bus ausgestattet und eine Visualisierung auf
Basis OPC Server und Visual Basic 6 programmiert.
Derzeit werden folgende Teile bei meiner
Visualisierung abgedeckt:
- Licht/Jalo/Heizung
- Anrufbeantworter/Telefon/E.Mail/Fax
- Stereoanlage (MP3/SAT/Radio/CD Vernetzung im kompletten Haus)
- Alarmanlage/Anwesenheitssimulation
- Türkontakte/Türöffner/Webcam
- Protokollierung von Alarmen/Türkontakten/Bewegungsmelder, etc.
- allgemeine Info's (Erinnerung an Geburtstage/Namenstage, etc.)

Ich möchte nun meine Visualisierung wieder ein wenig
auf Vordermann bringen und einen OLE Server programmieren
der EIB Zugriffe über einen OLE Client steuert. Mein
Wunsch wäre es meine HeimVisualisierung Web-fähig zu
gestalten und mittels PDA auch eine Art Fernbedienung
fürs komplette Haus zu programmieren.

Derzeit sehe ich leider nur das Produkt Falcon Developer
oder Elvis um diese Anforderungen abzudecken.
Beide Dinger kosten nicht wenig und aus diesem
Grund wollte ich mal nachfragen ob jemand da
draussen Erfahrungen im Umgang mit dem Senden
von Bustelegramme in einem Visual Basic Programm
hat.

Derzeit bin ich so weit, dass ich die serielle ansprechen kann,
der Aufbau des Datenstroms eines BusTelegrammes habe ich
über die Telegramm Analyse mit der ETS herausgefunden.
Das Telegramm im HEX Format habe ich binär umgewandelt
und sende es nun über die serielle Schnittstelle in den
Bus. Leider bekomme ich kein Lebenszeichen auf dem Bus
(via Busmonitor kontrolliert). Vielleicht ist mein Ansatz
auch zu naiv einen eigenen kleinen OPC Server selbst zu
programmieren. Falls dies so sein sollte bin ich über
eure Kommentare dankbar - denn dann kann ich mit
der Testerei aufhören.

Gruß
SeM
;-)

Martin
18.02.03, 20:57
Ich bin mittlerweile ein wenig weiter mit
meinen seriellen Experimenten, leider
fehlt mir noch ein kleiner Schlüssel
zum Erfolg.

Meine bisherigen Ergebnisse:

1.) Die Komponente "Microsoft Comm Control" ins Projekt einfügen
2.) mittels MScomm1.DTREnable = True das DTR Signal
der seriellen Schnittstelle auf True setzen
3.) MSComm1.RTSEnable = True aktivieren ("Request to send" )
Dann meldet der Busankoppler ein CTS = True (Clear to send)
4.) Mit MSComm1.Output = "BCA12D0A0AE10081AF" + vbcr
die Daten senden.

Telegramm senden Aufbau:
+-------------------------------+
BC = Kontrollbyte (BC=hex -> 1011 1100=bin und bedeutet
niedrige Übertragungspriorität (das 11 bei 1100)

a1 2d = Quelladresse (20.1.45)
0a 0a = Zieladresse (1.2.10)
E=hex -> 1110=bin und bedeutet
1 Zieladresse=Gruppe
110= Routingzähler6
1=Anzahl der Nutzdaten in Byte
00 81=bedeutet schreiben TRUE (80 wäre FALSE)
AF=Sicherung via gerade Parität

Leider fehlt mir noch eine Initialisierungsequents
in den EIB
<STX> Start of Text
habe ich bereits getestet und funktioniert leider nicht.
Hat jemand von euch eine Idee welche Initialisierungsequents
ein EIB Telegramm verwendet ?

Gruß
SeM

Martin
18.02.03, 21:12
Ich musste leider feststellen,
das meine Formatierungen im
Board nicht übernommen wurden. Die Erklärung
der Bustelegramme sieht ja grausam aus:

Deshalb nochmals:
MSComm1.Output = "BCA12D0A0AE10081AF" + vbcr
sendet ein Telegramm über die RS232

BC = Kontrollbyte
----------------------
BC=hex umgewandelt in binär -> 1011 1100
das 11 bei 1100 ändert die SendePriorität auf dem Bus (LowPriority, Alarm, etc.)

a1 2d = Quelladresse
---------------------------
Ist die dreistellige Quelladresse = 20.1.45

0a 0a = Zieladresse
-------------------------
Ist die dreistellige Zieladresse 1.2.10

E=Routingzähler
--------------------
E=hex umgewandelt nach binär -> 1110
der erste einser bedeutet 1 -> Zieladresse=Gruppe
das nachfolgende 110 bedeutet Routingzähler6

1=Anzahl der Nutzdaten in Byte
----------------------------------------
=Länge Nutzinformation

00 81=bedeutet schreiben TRUE
----------------------------------------
80 wäre ein False senden
81 ist ein True auf die Gruppenadresse senden

AF=Sicherung via gerade Parität
----------------------------------------

nochmals Grüße
ins Board

Würde mich über eure Antworten freuen !
;-)

Bits&Bytes
18.02.03, 21:52
Hallo Martin,
eine Programmierung über MSComm bringt gar nichts. Die EIB-Schnittstelle hat ein eigenes Timingverhalten. Alleine Synchronisation der einzelnen Bytes ist schon ein Problem für sich.
Das Dtr - Signal ist ebenfalls wichtig denn hierüber wird der Opto-Koppler mit Spannung versorgt. Dies hast du ja auch berücksichtigt.
Danach erfolgt im Prinzip eigentlich nur immer der Byteweisewechsel des RTS-Signals.
Für Einzelheiten wäre hier im Forum gar keine Zeit.
Die Grundlagen des Telegrammverkehrs sind jedoch im EIB-Handbuch zu finden.
Es ist nicht einfach, aber auf Basis der MSComm-Komponente sehe ich im Moment keine Erfolgschancen.

mfg
Bits&Bytes

Meudenbach
19.02.03, 08:41
a1 2d = Quelladresse
---------------------------
Ist die dreistellige Quelladresse = 20.1.45


0a 0a = Zieladresse
-------------------------
Ist die dreistellige Zieladresse 1.2.10


a1 2d = 10.1.45

0a 0a = 0.10.10

;)

J.Kronwitter
19.02.03, 10:14
Hallo Martin,

es ist erstaunlich wie weit Sie mit Ihrer Schnittstellenanalyse gekommen sind. Aber ohne Ihren Enthusiasmus abwürgen zu wollen, ist es denn sinnvoll das Rad zweimal erfinden zu wollen?
Warum greifen Sie nicht auf die vielfach erhältlichen Gateways zurück. Ich habe z.B. ein VB Projekt zur kontinuierlichen Meßdatenerfassung realisiert bei dem wir über ein Gateway der Fa. ELKA kommunizieren.

Grüße

Joachim

Martin
20.02.03, 20:22
Danke für eure Info !

Endlich jemand der mir antwortet!
Ich glaubte schon das intressiert hier niemand, aber
ich gebe es ja zu mein Thema ist ein wenig
abgehoben.


Hallo Joachim:
Eine Frage hätte ich noch zum ELKA Gateway. Wo kann ich das
Ding beschaffen und was kostet es, kann ich dort mein
Wunsch programmieren (DDE Server - DDE Client)


Hallo Meudenbach:
- die Konvertierung von hex auf EIB Format
habe ich bei folgender Internetseite gefunden.
EIB Format Converter (http://www.tapko.de/d/eib_converter.htm)

Laut EIB Aufzeichnungstelegramm müßte meine 1.2.10 stimmen
:confused:
aber na ja - man kann immer etwas
dazulernen - als nicht Elektriker
:cool:

In diesem Sinne
bis bald
;-)

Bits&Bytes
20.02.03, 21:52
Hallo Martin,
die Gruppenadresse 1/2/10 stimmt, jedoch die Physikalische Adresse ist falsch.
Sender :Physikalische Adresse -> Empfänger Grp-Adresse.
Die Antwort von Meudenbach ist also richtig.
Das Interesse für dein Thema ist wohl da !
Die Sache ist eben nur die Zielsetzung.
Wäre toll wenn ich mal einen kostengünstigen Buszugriff hätte.
Für Linux gibt es einen Freeware-Treiber, aber ich habe keine Zeit in auf die Windows-typischen Verhältnisse anzupassen.
Also heißt es fürs erste den Umweg über die Hardware zu machen die ich von Windows aus ansteuern kann.

Viel Erfolg bei deinem Projekt
Bits&Bytes

gamma
20.02.03, 23:10
Hallo Martin,
mir ist immer noch unklar ob du jetzt
mittels VB/MSCOMM, OPC oder DDE
mit dem EIB kommunizieren willst.

DDE ist der urururvorgänger von OPC, also obsolet.
Für EIB OPC Anbindungen gibt es verschiedene Anbieter;
EIBA, Schlaps & Partner,...

Serielle Anbindungen auf Binärbasis und auch auf
ASCII Basis gibt es von Schlaps & Partner.

Grüsse von Gamma!

J.Kronwitter
21.02.03, 08:56
Hallo Martin,

bezugnehmend auf Deine Rückfrage:


Original geschrieben von Martin
Danke für eure Info !

Eine Frage hätte ich noch zum ELKA Gateway. Wo kann ich das
Ding beschaffen und was kostet es, kann ich dort mein
Wunsch programmieren (DDE Server - DDE Client)


;-)

hier verweise ich auf den guten Hinweis von Gamma da DDE in der Tat überholt ist. Von Schlaps & Partner gibt es eine OPC-Eibweiche. Habe aber selbst noch keine Erfahrung damit gemacht. Soviel ich gelesen habe gibt es auch fertigen VB-Code. Aber schau doch selber auf deren Homepage.
Falls du aber dennoch auf der ASCII-Seite bleiben willst gibt es
eben das EIB-Gateway von ELKA (www.elka.de). Das Gateway filtert EIB-Telegramme der im Gateway hinterlegten GA´s und schickt diese nach Anfrage über die RS232 als ASCII-String (im Hexformat). Man kann aber auch Telegramme einzeln lesen und schreiben. Ein gewisser Aufwand besteht darin die Telegramm-Strings zu generieren und zu interpretieren. Für die Interpretation von EIS5-Telegrammen (Telegramme mit Flieskommawerten) kann ich dir VB-Code zur Verfügung stellen.
Dein DDE Server müsste dann eben das Gateway auslesen, interpretieren und an den DDE-Client weiterleiten.

Gruß Joachim

Martin
21.02.03, 13:45
Erst einmal ein Danke für eure zahlreiche Info!

zur Richtigstellung -> das DDE sollte OLE sein !

Ich habe mir die einzelnen Seiten angeschaut.
Die "EIB Weiche Standard" von Schlaps & Partner
macht einen guten Eindruck. Hat jemand von euch via
Visual Basic dieses Gateway schon einmal
verprogrammiert ?
:)