M-bus mit software auslesen(c/c++).
-
Hallo erst mal....
alos wie die überschrift schon sagt hab ich ein Problem.
und zwar möchte ich ein Programm schrieben welches in der lage ist mittel eines M-bus ein zähler z.B. Stromzähler etc. auszulesen. ich hab jedoch kein ahnung wie ich darauf zugreife und den request an den mbus slave send.
das ganze soll unter linux laufen (wichtig!!) der slave welcher an dem m-bus hängt ist ein Padpuls MC1. mein Problem ist jetz wie geagt das ich keine Ahnung habe wie ich unter c oder c++ darauf zugriefen kann.hoffe mir kann da jemand helfen.
-
schon mal hier geschaut: http://www.m-bus.com/
haste die hardware dafür, tranceiver-chip und so?
-
In google: Linux mbus
Ist das vllt. was? http://mbus.sourceforge.net/
Ansonsten gibt es sicher eine libmbus und libmbus-dev oder sowas in der Art. Ist eine C Bibliothek.
-
DEvent schrieb:
In google: Linux mbus
Ist das vllt. was? http://mbus.sourceforge.net/
Ansonsten gibt es sicher eine libmbus und libmbus-dev oder sowas in der Art. Ist eine C Bibliothek.^^ das ist für den 'modbus'. den meint er bestimmt nicht mit 'm-bus'.
-
also danke fur die schnelle hilfe erstmal.
so also der mbus ist in einem kleinen linux rechner mit eingebautem m-bus master. Dieser entsprichtr denke ich auch den dafür güligen standarts.
mein problem ist jetzt das ich nicht weiß wie ich im quellcode auf das slave interface zugreife. die slaves können soweit ich das sehe 255 adressen haben wobei einige reserviert sind wie z.B. 254 für nen brodcast befehl auf den alle angeschlossenen slaves antworten. mein problem ist jetz aber das ich nicht weiß was ich im programm mit dieser adresse machen muss/kann.
mfg babcom
-
Welchen Zähler hast?
-
BabCom schrieb:
also danke fur die schnelle hilfe erstmal.
so also der mbus ist in einem kleinen linux rechner mit eingebautem m-bus master. Dieser entsprichtr denke ich auch den dafür güligen standarts.
mein problem ist jetzt das ich nicht weiß wie ich im quellcode auf das slave interface zugreife. die slaves können soweit ich das sehe 255 adressen haben wobei einige reserviert sind wie z.B. 254 für nen brodcast befehl auf den alle angeschlossenen slaves antworten. mein problem ist jetz aber das ich nicht weiß was ich im programm mit dieser adresse machen muss/kann.
mfg babcom
Slaves können haben primär adressen von 1 bis 250 oder bin mir nicht sicher 251!
254 kannst du vergessen,wenn mehrere slaves angeschlossen sind.Kollosion!!wenn du nur die zäehler auslesen willst,dann kannst ein einfaches programm schreiben.Req_ud<<< dann die daten auswerten und auf zb.visual c++ win32 konsolenanwendung anzeigen lassen.in c z.b.
mit writefile <<< req-ud for schleifen ( ) in die writefile
mit while(1)
readfile()
if(rückgabewert von der unterfunktion wo du die daten auswertest)
break;bool unterfunktion
wenn zb.0x68 oder E5
switch()
case start:
wenn 0x68 dann L-feld
wenn e5 fertig
ansonsten errorcase L-Feld
(mit printf oder puts kannst du ja die bytes ausgeben)
go to l-feld2
case L-feld2sollst die beiden kontrollieren müssen ja gleich sein wenn ja geh zu z.b anwenderdaten kommen.
wenn nicht error rückgabe wert 1 damit die while schleife abgebrochen werden kann lesen beenden kann.case anwenderdaten kommen
wenn 0x68 setze du den case c Feld usw.bis checksumme.
***********************************************************************
wenn mehr als ein byte in ein case muss dann sollst du dir was einfallen lassen zwischen speichern dann ausgeben.Ich würde die Slaves über die Primäradressen ansprechen.einfach mit einer software gibts genug primäradressen ändern dann in writefile entsprechend adressen senden.zb. 10 5b adresse 3 ....
-
Laut Norm EN 13757-3 sind die Adressen 1 bis 250 erlaubt. Die anderen Adressen haben besondere Funktionen oder sind reserviert. In EN13757 steht z.B. über Adresse 251: "251 is reserved for managing the (primary) M-Bus level converter/bridge".
Viele Details sind auf m-bus.org zu finden, aber die ganz genau erfährt man es nur in den Normen EN 13757 und EN1434.
Kommerzielle Software ist zu haben, z.B. bei http://mayeranalytics.com/de/m-bus.