PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : serielle Schnittstelle ansprechen, kleines Problem, Eingabe



daywalker008
01.02.2008, 22:27
Hallo mal wieder,
ich hab ein kleines Problem mit dem Ansprechen einer seriellen Schnittstelle.
Ich hoffe ihr könnt mir helfen.
Also ich habe eine Steuerung die über eine serielle Schnittstelle verfügt ( allerdings nur TX, RX und GND).
Die Komandos sollen so Aussehen:

Bytes sind mit Komma getrennt.

Frame: R,I,0x04 (Länge),ParaID (2 byte), Neuer Wert (2 byte), CHKSUM

Die Regelung antwortet mit:
M,I, Länge (1 Byte), Para ID (2 Byte), Wert (2 byte), CHKSUM
Dieses Frame wird auch gesendet wenn auf der Regelung ein Parameter
verstellt wird.

Der neue Wert muss richtig umgerechnet werden, z.b.: Uhrzeit 12:00 ->
Wert 720, Zeiten werden auf Tages minuten umgerechnet

Temperatur 70 °C -> Wert 140 (mal 2)

Wird keine Antwort gesendet so wurde der Wert nicht übernommen.


Die Parameter ID kann man sich aus der gesendeten Liste mit der Kennung
M,E holen.

Frame:
M,E,Länge (1 Byte),ParaID (2 byte), Einheit (1 byte), Komma ( 1 byte),
Faktor (2 byte), 2 byte ?? (min wert), 2 byte (max wert) ??, 2 byte
(std wert) ??, 3 byte ????, Parameterwert (2 byte) chksum

In diesem Frame ist der Faktor für die Umrechnung enthalten !

Das hab ich aus einer Art Anleitung.
Ich versuche die Schnittstelle mit dem PC auszulesen.
Und jetzt meine Frage:
Kann mir jemand mal eine Beispielanweisung geben welche ich schicken muss?
Weis nicht wie eine Anfrage dann nach dem Schema

Frame: R,I,0x04 (Länge),ParaID (2 byte), Neuer Wert (2 byte), CHKSUM

auszusehen hat.

kann mir da jemand helfen???[/quote]

Steinigtmich
01.02.2008, 22:53
Ok denn...

Sende ein R, ein Komma, ein I, ein Komma, den Bytewert (nicht die Zahl) von 4 (das ist die Länge des Frames, in diesem Fall wohl wegen 2 Byte langer ParaID und 2 Byte langem neuen Wert), ein Komma, dann die ParaID (wieder nicht als Zahl sondern halt die beiden Bytes), ein Komma, dann den neuen Wert (wieder 2 Bytes), und - wer hätts gedacht - wieder ein Komma, und dann letztendlich die Checksumme des Frames.
Wie man die berechnet müsste aus dem Datenblatt des Geräts hervorgehen.

daywalker008
02.02.2008, 08:27
Ein Datenblatt für die Regelung existiert nicht, gibts ne Möglichkeit die Checksumme anders zu berechnen oder gibt es Werte die man ausprobieren kann?
Um die Werte der Regelung auszulesen soll man normalerweise eine Software für 900€ kaufen die das kann. Deswegen gibts da auch nichts,
die Informationen hatte ich von jemanden der das gleiche Problem hat,
aber mehr konnt ich da auch nicht in Erfahrung bringen.
Hat jemand noch Tipps?

deSilva
02.02.2008, 08:47
...Sende ein R, ein Komma, ein I, ein Komma ....
Man könnte auch VERMUTEN, dass kein Komma zu senden ist, weil es natürlich unnötig ist: Alle Felder sind genau bestimmt, durch die Längenangabe ist sogar eine "formale" Blockprüfung der CRC möglich.
Man könnte sogar auf den Gedanken kommen, dass die 2.Byte Werte nicht BCD sondern 16 bit binär sind....

Aber wie einer der Kollegen hier immer sagt: "Versuch macht kluch" :-) Was SIEHT man denn an IRGENDEINEM Terminalprogramm??

deSilva
02.02.2008, 08:52
...Hat jemand noch Tipps?
Wenn Du hier 20 oder 30 empfangene Blöcke postest wird Dir sicherlich jemand das verwendete CRC Verfahren nennen können; es kommen da nur 5 oder 6 in Frage... Es sei denn, die Entwickler haben sich einen Spaß gemacht und ein unübliches Polynom verwendet Für 900 Eier kann man sich ja schon mal was einfallen lassen :-)

daywalker008
02.02.2008, 09:36
Kann mir jemand ein Terminalprogramm empfehlen? Habe hier Extract V2
falls das jemanden was sagt, gibts aber wieder zig einstellungen...

Achso: aud der Regelung ist neben den Anschlüssen rx tx gnd noch ein Anschluss US vorhanden.
Weis jemand für was der ist, der wird auf der Anleitung
http://www.rigert.com/wiki-wiki/index.php/Fr%C3%B6ling
nicht aufgeführt.
hat jemadn ein paar Beispielbefehle die ich der Regelung senden kann, komme mit der Zusammenstellung des Befehls ned klar.