mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µC fernsteuern per Modem?


Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sicher kennt Ihr das Szenario: Irgend eine SPS- oder sonstige Steuerung
beim Kunden hat einen Fehler. Daraufhin wählt sich der Support per Modem
in die Steuerung ein und diagnostiziert bzw. den Fehler.

Geht das mit halbwegs einfachen Mitteln mit einem Mikrocontroller auch?
Eine serielle Verbindung mit einem PC aufzubauen ist ja kein Problem -
aber von einem PC über ein Modem in ein anderes Modem einwählen, an dem
ein µC hängt?
Schliesslich muss der µC das Klingelsignal erkennen, das Modem zum
Abheben bewegen und dann den Datenverkehr überwachen - machbar oder so
gut wie unmöglich? Was meint Ihr? Hat jemand damit schon mal
gearbeitet? Braucht man da ein spezielles Modem oder nicht? Vermute mal
nein...

Das wär genial, wenn man so z.B. von unterwegs daheim vergessene Geräte
ausschalten kann oder so...

Autor: Tim O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na wenn das Aufbauen einer Verbindung zwischen MCU und PC kein
Problem ist, bau doch einfach ein paar "Neuerungen" ins Protokoll
ein..

Wenn die MCU z.B. ein "RING" empfängt, soll es "ATA<cr>" senden..
Nun sollte vom Modem abgehoben werden und eine Verbindung hergestellt
werden, bei Erfolg bekommt die MCU (und der PC) ein CONNECT....
je nach Modemkonfiguration ..

Damit das Modem auch weiss, was es tun soll, kannst du ja (z.B.
regelmässig oder nur auf Anweisung) weitere AT-Befehle ans Modem
absetzen..

Gruss,
Tim

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte nicht so schwierig sein. Das Modem hat ein Hardware Signal
'Ring' das man verwenden kann und es sendet auch Ring als Ascii wenn
es klingelt. Dann kann man mit ATA (Answer) abheben und die Verbindung
aufbauen. Das geht alles mit einfachen Modems, auch wenn die schon ein
paar Jahre alt sind. Jetzt muss noch ein Protokoll implementiert sein
mit dem man verschiedene Dinge im µC abfragen kann.

Autor: H-A-L-9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Machbar.
Ich schätze das sogar als eine der leichteren Übungen ein.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Schliesslich muss der µC das Klingelsignal erkennen,
> das Modem zum Abheben bewegen

Einerseits ist das nicht besonders kompliziert -
Modem sendet RING<CR> beim Klingeln, Rufannahme kann durch Senden von
ATA<CR> an das Modem eingeleitet werden ... und wird durch die Meldung
"CONNECT" vom Modem als positiv abgeschlossen gemeldet. Beendigung
der Verbindung meldet das Modem mit "NO CARRIER", das gibt's auch
bei nicht erfolgreichem Verbindungsaufbau.

andererseits ist das gar nicht nötig; jedes Modem kennt auch einen
"Auto-Answer"-Betrieb. Der wird mit ATS0=1 eingestellt, fertig.

> und dann den Datenverkehr überwachen

Der µC sollte sich nicht verschlucken oder explodieren, wenn von der
seriellen Schnittstelle Texte wie "RING", "CONNECT" und "NO
CARRIER" oder auch Varianten* davon übertragen werden. Davon abgesehen
ist nicht viel Aufwand zu treiben.
Soll vom µC gesteuert aufgelegt werden, so kann dies auf zwei Arten
geschehen:
- Durch Senden von "+++" an das Modem, dann etwas abwarten und dann
"ATH<CR>" an das Modem senden.

- Durch Deaktivieren der DTR-Leitung an der seriellen Schnittstelle.

All dies ist mit stinknormalen Standardmodems hinzubekommen, im Detail
mag es bei GSM-Modems (Siemens M20 etc) Unterschiede geben.

Es empfiehlt sich, ein etwas ausgefeilteres Protokoll oder dergleichen
über die serielle Schnittstelle zu fahren; der µC sollte erst dann
irgendwelche Befehle entgegennehmen, wenn der Benutzer ein Passwort
oder sich sonstwie identifiziert hat.
Auch sollten Eingaben genau überprüft werden (und niemals, niemals!
scanf() direkt auf die serielle Schnittstelle losgelassen werden).

*) näheres steht im Handbuch des Modems. Verbreitet ist es, daß das
Modem auch noch näheres über die Verbindungsgeschwindigkeit und das
verwendete Protokoll erzählt, das kann dann so aussehen: "CONNECT
14400 V.42BIS/MNP4". Diese Zusatzinformationen lassen sich aber
abschalten.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann das Modem aber auch so konfigurieren, dass es nur Zahlen für
die einzelnen Meldungen ausgibt...

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das hört sich schon mal gut an :)

Das Problem mit dem Protokoll sollte nicht so groß sein, denn wenn der
µC mit dem PC kommunizieren soll, muss ich ja auch ein Protokoll
implementieren...

Aber wie läuft das mit der Verbindungsgeschwindigkeit? Beim PC stelle
ich im Terminal 9600,8,N,1 ein, okay. Aber ein Modem handelt das
höchstmögliche aus oder? Muss ich im anrufenden oder im angerufenen
Modem die Geschwindigkeit einstellen?

Und wenn das Modem beispielsweise "NO CARRIER" sendet, weil der
Stecker während ner Verbindung gezogen wurde, kommt die Meldung dann
einfach im bereits laufenden Datenstrom und muss rausgefiltert werden?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Geschwindigkeit, mit der die Modems untereinander kommunizieren, ist
nicht von weiterer Bedeutung, solange die nur höher ist als die
Geschwindigkeit, mit der der PC und vor allem Dein µC mit dem Modem
kommuniziert.
Die Modems machen eine nahezu transparente Geschwindigkeitsanpassung;
werden PC und µC zu schnell, "bremsen" die Modems durch Aktivierung
der entsprechenden Handshakeleitungen.
Möchtest Du Dich auf der µC-Seite nicht mit Handshake herumschlagen,
solltest Du eine ausreichend langsame Baudrate verwenden.
Heutige Modems können untereinander mit maximal 33600 Baud
kommunizieren (die 56000 Baud des V.90 gibt's nur mit speziellen
Gegenstellen, nie aber untereinander), daher liegst Du mit 9600 Baud
auf dem µC im sicheren Bereich. Auf der PC-Seite kannst Du auch mit
anderen Baudraten mit dem Modem kommunizieren, Du solltest nur nicht
den µC mit einer zu hohen genutzten Datenrate "überfahren".

Bei Verbindungsabbruch fügt das Modem in der Tat "NO CARRIER" in den
laufenden Datenstrom ein. Allerdings deaktiviert das Modem auch noch
eine Handshakeleitung (DCD, "data carrier detect"), wenn Du die
auswertest, sollte das die Filterung vereinfachen. Diese
Handshakeleitung wird vom Modem auch erst mit erfolgreichem
Verbindungsaufbau aktiviert; also kannst Du alles, was das Modem
mitzuteilen meint, getrost ignorieren, solange DCD inaktiv ist.

Viel Erfolg!

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, das hat mir sehr viel weitergeholfen!

Jetzt muss ich nur noch ein zweites Modem suchen und dann mich um die
Implementierung kümmern :)

9600 Baud langen mir vollkommen, ich will nur ein paar Steuersignale
übertragen und den Status abfragen, das wars...

Autor: AntonWert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Thema scheint sehr interressant zu sein, gibt es denn auch eine
möglichkeit sowas "zu Hause" zu Testen, also ohne Amtsleitung? 2
Modems lassen sich ja nicht so einfach auf der Amts-Seite verbinden.

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mich interessierts zumindest ;)

Ganz einfach gehts, wenn du ne Telefonanlage mit mehreren
Analoganschlüssen hast - an jeden klemmst du ein Modem und zum
Verbinden wählst du einfach die interne Nummer...

Ansonsten fehlt dir das Freizeichen vom Amt, etc. - obs da ne einfache
Möglichkeit gibt, kann ich allerdings nicht sagen...

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nutze fuer solche Tests ein analoge Telefonanlage BJ ca. 1980 "vom
Schrott". So etwas duefte auch sehr guenstig in
Internetauktionshaeusern zu finden sein. Bei diesen alten Teilen muss
man evtl. Puls- statt Tonwahl verwenden und, wie meist auch bei
aktuellen Anlagen, "Dialtone"-Erkennung deaktivieren.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann zwar die reine Datenübertragung analoger Modems mit 'nem Stück
Draht und 'ner Batterie testen, dann aber funktioniert weder das Wählen
noch die automatische Rufannahme. Die muss man dann entsprechend im
richtigen Zeitpunkt "von Hand" einleiten.

"Schaltung":

    +---------o  a
    |              Modem 1
    |         o  b
  + o         |
              |
  - o         o  a
    |              Modem 2
    +---------o  b

Die Polarität der Spannungsversorgung ist irrelevant; eine
Gleichspannung von 12V "oder so" genügt.

Verbindungsaufbau:

An Modem A "ATD" senden.

An Modem B "ATA" senden.

Vorher Wähltonerkennung der Modems mit ATX0 deaktivieren.

Das ist aber eine rein akademische Nutzung, da eben das "angerufen
werden" nicht vom Modem erkannt werden kann und es daher auch nicht
"RING" ausgibt.

Prinzipiell ist daher so ein Test mit 'ner simplen analogen
Telephonanlage wesentlich praktischer. Da Telephonanlagen andere
Wähltöne haben als "das Amt", empfiehlt sich aber auch hier die
Deaktivierung der Wähltonerkennung mit ATX0.

Viel Erfolg!

Autor: seidl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab 2 acer modems und möchte damit eine Datenverbindung herstellen.
Jetzt noch mitn PC später mit mc. Das mit den Befehlen klappt auch 
wunderbar.
Ich kann aber nur von einem Modem das andere anrufen, das erkennt zwar 
das es
angerufen wird ->"Ring" wenn ich aber dann Abheb "ATA" tut sich nichts.
Das erste Modem sagt " Connect 1200/NONE" und setzt die DCD Leitung auf 
1.
Ich hab ISDN und mach das ganze mit den Internen Nummern.
Hab schon alles versucht auf Grundeinstellung zurücksetzten und die 
ganzen ATX befehle aber ich komm damit nicht weiter.
Was könnt ich denn übersehen haben dass das modem keine verbindung 
aufbauen kann?

Vielen Dank
mfG
S. Seidl

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.