Forum: PC Hard- und Software Protokoll zwischen PC unf den Gerät


von Oleh P. (Firma: OpalApps (www.opalapps.com)) (opaliy)


Lesenswert?

Hallo Zusammen,

Welche Protokolle verwendet Ihr um zu kommunizieren zwischen PC und MCU 
für verschiedene Schnittstellen (RS232, USB, Ethernet, CAN)?

Ist das Protokoll (PC-Seite) selbstgeschrieben oder gibt es eine gute 
Bibliothek dafür?

Bitte, keine teoretische Grundlagen - einfach von eigene Erfahrung.

Diese frage ist nur für meine Interesse. Es gibt keine konkrete 
Probleme/Aufgabe zu lösen.

Um die Frage mehr praktisch zu machen, hier sind einpaar Anforderungen:
- Soll Firmware Aktualisierung möglich sein (falls Protokol erlaubt 
dass)
- 10 bit ADC 2-3 Kanelle abgetastest möglich soll
- Ping beziehungsweise Hearbeat 10-15 Mal/sec. soll möglich sein

Platformen mehr richtung Arduino Uno/MSP430.

Danke

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kommt drauf an, was "das Gerät" ist, und was seine Aufgabe ist.

So ist Deine Frage viel zu allgemein gestellt und daher nicht sinnvoll 
zu beantworten.

von Amateur (Gast)


Lesenswert?

In den meisten Fällen (excl. RS232) kann man am Protokoll nicht 
herumfummeln.

USB
Es sind jede Menge Geräte möglich bei USB-Verbindung, da dies aber sehr 
tief in das System eingreift, ist der Eigenentwurf eines eigenen Gerätes 
eine Siphos-Arbeit. Aber auch hier MUSST Du innerhalb der 
USB-Spezifikationen bleiben.

CAN
Soweit mir bekannt, lässt das CAN-Protokoll einige "Sonderwünsche" zu, 
die aber auch innerhalb der Spezifikationen bleiben MÜSSEN.

Ethernet
Das hier verwendete Protokoll ist ebenfalls genau spezifiziert.

Vor allem im Bereich der Datenpaketgröße kann man einiges machen, aber 
nur, wenn das auch vorgesehen ist.
Man sollte auch nicht vergessen, dass ein beträchtlicher Teil der 
Übertragungsarbeit schon in der Hardware abgewickelt wird und deshalb 
auch von ihr verstanden werden muss.

Am meisten Spielraum lässt hier wohl das serielle Protokoll zu.
Geschwindigkeit, Prüfungen (incl. Stoppbits), Anzahl an Datenbits (meist 
5 bis 9) usw. Was aber in die Datenpakete hineingepackt wird, wie viele 
zusammengehören, ob irgendwelche als Adresse interpretiert werden, 
interessiert keinen. Der Spielraum ist aber insofern beschränkt, dass 
man manchmal an bestimmte "Schalter" nicht herankommt.

von Pandur S. (jetztnicht)


Lesenswert?

Als Entwickler von eigenen Geraeten :
Ich verwendete bisher UART, als RS232 & RS422, resp UART ueber USB, weil 
das von der Geschwindigkeit her reichte. Das Protokoll hab ich selbst 
entwickelt. Ein zustandsloses Master-Slave-Protokoll, das mehrere Slaves 
gleichzeitig erlaubt.
Fuer neue Geraete mit hoeheren Anspruechen an die Geschwindigkeit werde 
ich Ethernet verwenden, auch mit einem selbst entwickelten Protokoll. 
Web falls passend.

von Patrick C. (pcrom)


Lesenswert?

Einige Regeln die ich selber immer benutze -wenn moeglich- :
* PC immer als master. Der Slave sendet also immer NUR wenn er gefragt 
wird.
* Keine 0 karakters im protocol, am liebsten alles lesbar halten um die 
debugging einfacher du machen
* Timing nicht abhangig von kommunikation machen um damit nicht abhangig 
zu sein von latencies. Also am besten ein start/stop command und ein 
command um den puffer auszulesen.
* Wenn komplette binaire files hin- und her gesendet werden muessen (zB 
fuer bootloading) dann via ZMODEM protocol. Mittels TeraTerm (oder 
Hyperterm) kann man dann testen
* RS-232 : Einfachsten
* USB : Virtual comm-port benutzen
* Via ethernet : Ein socket benutzen
* Via xxx : Immer eine einfache seriele verbinding benutzen

Also wenn die bandbreidte der daten es moeglich macht, zoviel moeglich 
standarisieren. Das macht das definieren, testen, programmieren usw viel 
einfacher.

Wie meinst du PING 10~15x pro sekunde ? Das kann schnell problematisch 
werden zB bei USB virtual comm-port sind eine latency von ca 50ms schon 
schnell erreicht.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Es gibt in diesem Bereich SCPI. Das ist allerdings sehr ..ähm.. 
ausufernd:

http://www.ivifoundation.org/docs/SCPI-99.PDF

von Georg (Gast)


Lesenswert?

Michael X. schrieb:
> Es gibt in diesem Bereich SCPI

Volltreffer! IEEE bzw. IEC-Bus ist so ziemlich die einzige Verbindung, 
nach der der TO NICHT gefragt hat (liegt sicher daran, dass er davon 
noch nichts gehört hat).

Georg

von Oleh P. (Firma: OpalApps (www.opalapps.com)) (opaliy)


Lesenswert?

Sapperlot W. schrieb:
> Als Entwickler von eigenen Geraeten :
> Ich verwendete bisher UART, als RS232 & RS422, resp UART ueber USB, weil
> das von der Geschwindigkeit her reichte. Das Protokoll hab ich selbst
> entwickelt. Ein zustandsloses Master-Slave-Protokoll, das mehrere Slaves
> gleichzeitig erlaubt.
> Fuer neue Geraete mit hoeheren Anspruechen an die Geschwindigkeit werde
> ich Ethernet verwenden, auch mit einem selbst entwickelten Protokoll.
> Web falls passend.

Ist das möglich mit mehrere Slaves über UART kommunizieren? Oder meinst 
du protokoll-Kanele/virtuele Slaves?

von Georg (Gast)


Lesenswert?

Oleh P. schrieb:
> Ist das möglich mit mehrere Slaves über UART kommunizieren?

Mach ich seit Jahrzehnten, setzt allerdings busfähige Hardware 
(RS422/485) oder Multiplexer voraus, da die serielle Schnittstelle ohne 
Zusatz nur 2 Geräte verbinden kann. Und ein Master-Slave-Protokoll, 
damit immer nur 1 Slave antwortet.

Georg

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Georg schrieb:
> IEEE bzw. IEC-Bus ist so ziemlich die einzige Verbindung,

Meinst Du IEEE 488 aka general-purpose-bus?

Insgesamt scheint aber hier vor dem Feiertag eher ein Freitagsprogramm 
zu laufen. Der "Schreibakzent" ist zu offensichtlich. ;)

von Bonzillo (Gast)


Lesenswert?

Wie man das anstellt per UART mit mehreren Slaves zu kommunizieren. 
Meine bevorzugte Loesung, RS422. Diese Loesung hat zwei Leiter Paare, 
das eine vom Master weg, das andere zum Master hin. Das Paar vom Master 
weg ist immer aktiv, das Paar zum Master hin ist nur aktiv wenn ein 
Slave antworten muss, fuer exakt diese Meldung. Der betreffende Slave 
schaltet seinen Treiber zum Antworten ein.
Das Protokoll besteht aus einer Meldung vom Master an einen adressierten 
Slave, welcher innerhalb einer Zeitspanne antworten muss. Die 
Kommunikations Zustaende der Geraete duerfen daher nicht blockierend 
sein. Die Antwort muss quasi sofort zurueck kommen.

Man sollte die Kommunikation zusammen mit der Hardware aus einem Guss 
entwickeln und nicht nachher aufsetzen.

von pcrom721 (Gast)


Lesenswert?

Detail : IEEE 488 war auch die bus die im seriele form fuer commodore 64 
benutzt war. Fuer floppy/printer... Fast vergessen... Gutes beispiel !!!

Patrick

von Georg (Gast)


Lesenswert?

Bonzillo schrieb:
> Man sollte die Kommunikation zusammen mit der Hardware aus einem Guss
> entwickeln

Wobei das beschriebene Master-Slave-Protokoll (so mache ich es auch) für 
eine ganze Reihe verschiedene Hardware-Verbindungen geeignet ist von V24 
bis Ethernet.

Georg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.