rs232 befehlsstruktur

Gast #1421348
Lesenswert?

Hallo Leute,

wie sieht eine sauber strukturierte KOmmunikation PC<-> µC aus, wenn man 
bspw 10 Parameter im µC mit dem PC kontrollieren/regeln möchte und die 
Parameter einzeln geregelt werden.

1.: soll der PC immer den kompletten Datensatz übertragen?
2.: gibt es eine Standardadressierung /Zeichenfolge für die einzelnen 
Parameter oder definiert das jeder wie er will?
3.: ist es der richtige weg, Fehler in der Kommunikation (bspw. 
unvollständige Übertragung) über Timeouts abzufangen?

Viele Grüße
Simon
Gast #1421413
Lesenswert?

Hi
Nun, Aufwand zu treiben ist meist kein Problem. So könnte man z.B. ein 
Protokollverfahren entwickeln, welches entsprechend überwacht wird. So 
ist mir z.B. ein Protokoll bekannt, in welchem eine Befehlsstruktur über 
mehrere Telegramme abgewickelt wird.
1. Anforderung ( 2 Zeichen v. Sender )
2. Antwort ( 2 Zeichen v. Empfänger mit ok oder Err-Kennung)
bei ok-
3. Nutztelegramm ( lfd.Nr, Bef.Code, Nutzdaten, Prüfbyte, Ende-Kennung 
v.Sender)
4. Antwort (Telegramm gespiegelt, mit einer eigenen lfd.Nr v. Empf. mit 
ok oder Err-Kennung)
5. Wenn ok, dann erledigt, ansonsten Maßnahme oder Wiederholung.
Das Prüfbyte war in diesem Fall nichts anderes, als eine XOR-Verknüpfung 
aller Telegrammbytes, außer dem Prüfbyte selber unf der Ende-Kennung.
Ein solches Handling gibt dir die Möglichkeit, über den Befehlscode die 
Nutzdaten entsprechenden Routinen zuzuweisen. Die lfd.Telegrammnummer 
muß nicht ins uferlose laufen. In dem vorgegebenen Fall war ein 
Telegramm mit der Nummer 0 ein Starttelegramm nach Zuschaltung, danach 
wurde nur zwischen 1 und 2 gewechselt. Ist aber nicht unbedingt 
notwendig, weil der Befehlscode entsprechende Information auch tragen 
kann.
Gruß oldmax
Gast #1421845
Lesenswert?

Ich bin mit dem/einem 'webinterface' nicht vertraut. Ich habe eine im 
prinzip autonom agierende Steuerung, der ich mit Hilfe der rs232 neue 
Parameter übergeben möchte (und diese evtl. auslesen). Also in der art:

neuer DAC_1-Wert = 4095
neuer DAC_2-Wert = 2023
neue Zeit_1=256
...
Die notwendige Hardware (max232) ist bereits angelegt, es geht mir also 
nur um das Protokoll.

Viele Grüße
Gast #1422003
Lesenswert?

Hallo,

es müssen natürlich alle möglichen Fehler bearbeitet werden. Ich 
betrachte das jeweils als Transaktion: Befehle/Daten senden - Antwort 
empfangen - Prüfsumme checken - Antwort analysieren. Nur wenn bis zum 
Ende der Transaktion alles fehlerfrei ist, ist sie erfolgreich, sonst 
muss sie wiederholt werden.

Noch ein Tipp: verwende ASCII-Text, also z.B. "195," anstatt eines 
binären Bytes. Habe ich früher auch anders gemacht, aber die paar Bytes 
mehr spielen keine Rolle und das Debuggen wird auf allen Ebenen eminent 
vereinfacht. Früher bin ich mit den Taschenrechner dagesessen und habe 
dauernd Hex in Dezimal gewandelt, heute lese ich einfach mit.

Das haben andere auch gemerkt: alte Protokolle wie BitBus waren total 
binär, im Internet ist heute alles Text.

Gruss Reinhard
#1422047
Lesenswert?

Karsten schrieb:
> Ascii übertragen. IGITT!!!

Kommt immer drauf an, wer an der Gegenstelle sitzt und wieviele Daten 
übertragen werden.

Wenn es ein Mensch ist, dann ist ASCII einfacher.
Wenn es ein Programm ist, dann ist binär einfacher.

ASCII hat den unerhörten Charme, dass man zum Testen bereits mit einem 
Terminalprogramm am PC loslegen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren