rs232 Protokoll



  • Hallo Zusammen!

    Ich arbeite seit einem Jahr an einem Programm "ANSI C + WINAPI" das aus meiner Heizung
    Daten ausliest bzw Werte verstellt (zB RaumTemperatur).

    Es ist möglich Daten mittels MODEM über Internet auszulesen. (Möchte ich aber nicht; steht ja
    bei mir im Keller)

    Weiters ist es möglich einen PC direkt zu verbinden;
    Daher meine eigeninitiative.

    An der Heizung ist ein RS232 "Männchen" das ich mit einem NULL-Modem Kabel
    verbunden habe.

    RxD-TxD
    TxD-RxD
    GND-GND
    RTS-CTS
    CTS-RTS
    DTR-DCD
    DCD-DTR

    Auf der WP kann ich nun wählen: VERBINDUNG:Direkt oder Modem
    Wenn ich ein Analoges 56k Modem anschließe und "MODEM" einstelle,
    erkennt die WP das Modem und schaltet auf online.

    Wenn ich den PC mit meinem NM-Kabel verbinde und "DIREKT" einstelle
    passiert noch nichts;
    Wenn ich dann ein RTS signal sende dann bekomme ich CTS-ON zurück.
    Weiter passiert leider noch nichts.

    **Jetzt meine eigentlichen Fragen:

    1)Gibt es bestimmte (vielleicht Standardisierte) Zeichen die ich senden muss
    um Daten zu erhalten?

    2)Was sendet das Modem bzw die WP das sich sich quasi erkennen?

    3)Wie wichtig ist hierbei die Baudrate,Parity, usw um überhaupt Daten zu bekommen?**

    (Momentane Einstellung(DCB): Baudrate:9600, NoParity,RTSContr.:Enable,1Stopbit,DTR:Enable)

    Vielleicht kann mir ja geholfen werden. 🙂

    Mit bestem Dank im Voraus
    Maxx



  • Ein Modem arbeitet als "slave". Dem schickt man Kommandos um zu gucken ob es da ist -- wenn es antwortet ist es da 😉
    Das einfachste Kommando was du schicken kannst ist "AT\n" - da sollte es dann einfach "\r\nOK\r\n" zurückschicken.

    Guck z.B. mal hier: http://www.computerjockey.de/netzwerke/at/

    Doof ist nur: du müsstest wissen was für ne Baudrate die WP verwendet. Modems haben eigentlich alle "auto baud", d.h. das Modem erkennt automatisch was die WP verwendet. Mit dem PC geht das AFAIK nicht, das musst du vorher richtig einstellen.

    Die restlichen Einstellungen müssten "8 bit data, 1 stop bit, no parity, hardware handshake" sein.

    p.S.: ich verstehe das schon richtig: du willst mit dem PC das Modem "simulieren", so dass die WP mit dem PC redet statt mit dem Modem, ja?



  • hustbaer schrieb:

    Ein Modem arbeitet als "slave". Dem schickt man Kommandos um zu gucken ob es da ist -- wenn es antwortet ist es da 😉

    rs232 ist kein master/slave bus. es gíbt immer 2 teilnehmer (ausnahme: LIN bus) und die sind gleichberechtigt. ein modem kann z.b. von sich aus ein 'RING' schicken, um dem PC mitzuteilen, das es angewählt wurde (entweder hardware über das RI signal oder über RXD als ASCII text "RING").

    OP: möglicherweise verwendet die wärmepumpe nicht(nur) RTS/CTS sondern (auch noch) DTR/DSR und DCD. du solltest dich mal schlau machen, in welchem zusammenhang diese signale stehen. der PC sollte sich als modem ausgeben, mit der winapi hast du da alle möglichkeiten
    🙂



  • Mit hoher Wahrscheinlichkeit basiert die Kommunikation auf einem Textprotokoll. Um das zu benutzen, mußt du die richtige Baudrate, Parity und Bytesize kennen. Praktischerweise gibt es dafür eine Protokollbeschreibung die vielleicht irgendwo im Netz verfügbar ist. Wenn man mindestens einen Befehl kennt, kann man diese Einstellungen durch probieren herausbekommen. Je nach Konfiguration sendet ein Modem bei Anruf ein "RING", was von der Anlage mit "ATA" beantwortet werden sollte.

    Wenn du eine Beispielsoftware hast, kannst du die Kommunikation mithören und daraus auf das Protokoll schließen. Eventuell einige Zeit lang das Webinterface nutzen und hintenrum die Kommunikation mitschneiden.
    Du könntest noch versuchen, mittels "fuzzing" per Zufall einen oder mehrere Befehle herauszubekommen. Manchmal ist im Interface eine Hilfe implementiert, die mit "help<cr>" oder ähnlichen Befehlen aufgerufen werden kann. Im Extremfall könntest du die Anlage öffnen und die Hardware genauer unter die Lupe nehmen. Eventuell gibt es ein standardisiertes Programmierinterface, mit dem du die Firmware herunterladen kannst und dann aus dem disassemblierten Code die Befehle herausklaubst. Ob du damit irgendwelche Rechte oder Vereinbarungen brichst, mußt du selbst prüfen.



  • Danke für die Infos.

    Werde das mit dem mit"sniffen" probieren



  • Bouncer schrieb:

    hustbaer schrieb:

    Ein Modem arbeitet als "slave". Dem schickt man Kommandos um zu gucken ob es da ist -- wenn es antwortet ist es da 😉

    rs232 ist kein master/slave bus. es gíbt immer 2 teilnehmer (ausnahme: LIN bus) und die sind gleichberechtigt.

    Vom Bus her sind die gleichberechtigt, ja, vom Protokoll her das man mit Modems spricht ganz klar NICHT. War das so schwer zu verstehen?

    ein modem kann z.b. von sich aus ein 'RING' schicken, um dem PC mitzuteilen, das es angewählt wurde (entweder hardware über das RI signal oder über RXD als ASCII text "RING").

    Ok, das ist wohl eine der wenigen Ausnahmen.



  • hustbaer schrieb:

    Bouncer schrieb:

    hustbaer schrieb:

    Ein Modem arbeitet als "slave". Dem schickt man Kommandos um zu gucken ob es da ist -- wenn es antwortet ist es da 😉

    rs232 ist kein master/slave bus. es gíbt immer 2 teilnehmer (ausnahme: LIN bus) und die sind gleichberechtigt.

    Vom Bus her sind die gleichberechtigt, ja, vom Protokoll her das man mit Modems spricht ganz klar NICHT. War das so schwer zu verstehen?

    ja, es war irreführend, denn ein modem arbeitet nicht als slave. ich weiss zwar, wie du es meintest (man kann modems mit AT-befehlen steuern), aber für einen unbedarften fragesteller hätte der eindruck entstehen können, dass modems 'immer' slaves sind. und das sind sie, *definitiv nicht*!

    hustbaer schrieb:

    ein modem kann z.b. von sich aus ein 'RING' schicken, um dem PC mitzuteilen, das es angewählt wurde (entweder hardware über das RI signal oder über RXD als ASCII text "RING").

    Ok, das ist wohl eine der wenigen Ausnahmen.

    nein, es gibt viele ausnahmen, software wie auch hardwareseitig. die meisten geräte, so auch modems, die an einer RS232 hängen sind *keine* slaves. bus-seitig können sie selbständig steuersignale setzen und die meisten softwareprotokolle wie PPP, SLIP, XMODEM usw., die darüber laufen, sind *keine* master/slave-protokolle, sondern können ohne aufforderung bidirektional daten transportieren.
    --> http://www.embedded.com/story/OEG20020528S0057
    🙂



  • @Bouncer:
    Ich glaube zwar nicht dass du genau weisst was ich meinte, denn sonst hättest du mir nicht wiederholt versucht etwas über die RS232 Schnittstelle im Allgemeinen zu erklären, wo ich nur von Modems gesprochen habe.

    Aber lassen wir das. Ich habe mich ungenau & irreführend ausgedrückt, das gebe ich ja zu.



  • Hallo Zusammen

    Habe jetzt ein wenig mitgeschnitten: BEI "MODEM" Einstellung:
    sendet die WP Periodisch
    **
    HEX:2B 2B 2B ASCI:+++
    HEX:41 54 45 30 56 31 0D 0A ASCI:ATE0V1..
    **
    Wenn ich dann ein Analoges Modem anschliesse:

    **Startsequenz00:00:06.259 [COM 2]:
    00:00:17.685 [COM 2]:
    00:00:39.627 [COM 1]: +++ATE0V1
    00:00:44.764 [COM 2]:
    OK

    00:00:44.835 [COM 1]: AT+CPIN=?
    00:00:44.915 [COM 2]:
    ERROR

    00:00:44.995 [COM 1]: ATZ
    AT&D E0 V1 M0 S0=1

    00:00:45.145 [COM 2]:
    OK

    OK

    00:00:45.285 [COM 1]: ATS7=60
    ATM0
    ATS0=1

    00:00:45.435 [COM 2]:
    OK

    OK

    00:00:45.576 [COM 1]: ATX1
    AT&W0
    AT&Y0

    00:00:45.736 [COM 2]:
    OK

    OK

    ab hier dann Periodisch
    (wird schauen ob Modem noch da ist ?!)

    00:01:50.880 [COM 1]: +++ATE0V1

    00:01:56.027 [COM 2]:
    OK

    00:01:56.107 [COM 1]: AT+CPIN=?

    00:01:56.207 [COM 2]:
    ERROR

    00:03:01.211 [COM 1]: +++ATE0V1

    00:03:06.348 [COM 2]:
    OK

    00:03:06.438 [COM 1]: AT+CPIN=?

    00:03:06.528 [COM 2]:
    ERROR**

    Wenn ich dann auf "DIREKT" schalte wird nichts mehr von der WP gesendet

    FRAGE: Gibt es hier Standard Befehle (wie für Modem (AT-Befehle)) oder eine
    vielleicht in der WP implementierte "Standard " Hilfe "Funktion" (HELP,HILFE..habe ich schon versucht)

    schönen Gruß MAXX



  • Dieser Mitschnitt nützt dir recht wenig. Da versucht das Gerät nur das Modem zu initialisieren. Allerdings hast du wenigstens die richtigen Verbindungsparameter (Baudrate, parity) rausgefunden. Interessant würde es werden, wenn das Modem richtig initialisiert ist und das Gerät von außen (z.B. Webinterface) angerufen wird und Daten abgefragt/Parameter geändert werden. Vielleicht hast du auch ne Chance, wenn du das Modem selbst anrufst und sich die WP nach dem Verbindungsaufbau aktiv meldet. Dann kannst du aus der Anfrage möglicherweise auf die Antwort schließen und so Stück für Stück das Protokoll entziffern. Aber ich glaube ohne Beschreibung vom Hersteller hast du schlechte Karten.

    Bei dem Modem fehlt übrigens die SIM-Karte. Tip: deaktiviere die PIN bei der SIM-Karte sonst schickt die WP möglicherweise ne falsche und lockt die Karte.



  • Ist es Möglich den "PC" als Modem "vor zu täuschen" indem ich zB
    auf eine Anfrage "+++ ATE0V1" mit OK antworte..usw.
    bzw gibt es einen (AT-Befehl) womit ich dann dem DTE (WP) vortäusche das das Modem Online ist ?

    Bei dem Modem fehlt übrigens die SIM-Karte. Tip: deaktiviere die PIN bei der SIM-Karte sonst schickt die WP möglicherweise ne falsche und lockt die Karte.

    SIM-Karte? wie mache ich das bzw wo ist diese (ist ein normales Analoges Modem)

    mfg Maxx



  • Ist es Möglich den "PC" als Modem "vor zu täuschen" indem ich zB
    auf eine Anfrage "+++ ATE0V1" mit OK antworte..usw.

    Ja, du musst genau so antworten wie ein "echtes" Modem antworten würde. Je nachdem was die WP alles für Befehle verwendet (hab' jetzt nicht nachgesehen was die Befehle alle bedeuten, aber es gibt z.B. einige "lästige" Steuerregister die die Kommunikation beeinflussen) wird das relativ einfach bis sehr schwer (EDIT: nicht wirklich schwer, aber u.U. viel Aufwand).

    bzw gibt es einen (AT-Befehl) womit ich dann dem DTE (WP) vortäusche das das Modem Online ist ?

    Du musst "nur" auf die Befehle die die WP schickt so antworten wie ein Modem antworten würde, und die WP wird glauben dass der PC ein Modem ist.

    SIM-Karte? wie mache ich das bzw wo ist diese (ist ein normales Analoges Modem)

    Mit AT+CPIN=? will die WP vom Modem wissen ob der PIN für die SIM-Karte eingegeben wurde (ist ein Befehl den GSM/GPRS/UMTS/HSDPA/... Modems können). Wenn das Modem kein GSM Modem ist kennt es den Befehl nicht und antwortet daher mit "ERROR".
    Wäre es ein GSM Modem wo die SIM Karte fehlt würde es mit "+CME ERROR: 10" oder etwas in der Art antworten.



  • Danke 👍
    Werde ich gleich am Wochenende versuchen


Anmelden zum Antworten