Hallo
Wie sieht das Uebertragungsprotokoll dieser DVM aus, die mehrere Messwerte auf einmal senden?
Z.B. das M4660 ( aber auch alle anderen mit z.B. 2 Displays )
Hab das mal in Bascom so emuliert:
Do
Print "DC-123.45mV " ;
Print "DC-234.56mV " ;
Print "DC-345.67mV " ;
Print "DC-456.78mV " ;
Printbin 13 ; ' CR
loop
Sind bis jetzt nur feste Werte, aber das PL DVM M4660 Modul gibt keine Werte aus.
Im Seriell Monitor sieht es bei 9200Bd 7N2 gut aus. Der MC gibt folgenden String raus:
DC-123.45mV DC-234.56mV DC-345.67mV DC-456.78mV
Welches Format erwartet PL am eingang ?
Wie muss es korrekt aus sehen ?
Hat das schon mal jemand gemacht?
Gruesse und Dank im vorraus
Wie sieht das Protokoll des M4660 Multimeter aus
-
- Beiträge: 2
- Registriert: Montag 6. Mai 2013, 21:18
Re: Wie sieht das protokoll der Mehrfach-Display Multimeter aus
Das Protokoll ist (mehr oder weniger gut) im Datenblatt des Gerätes beschrieben.
Bei einer "Protokoll-Emulation" muss man sich natürlich strikt an das "Originalgerät" halten,
insbesondere u.a. auch bei den Einheiten. Ohne eine Originalgerät mit dem man vergleichen kann,
wird man kaum auskommen, da sonst besteht die Gefahr, dass fehlerhafte Messwerte entstehen.
http://www2.produktinfo.conrad.de/daten ... _4660M.pdf
(Zwischen zwei Kanälen würde ich also ein CHR(13) annehmen!)
Bei einer "Protokoll-Emulation" muss man sich natürlich strikt an das "Originalgerät" halten,
insbesondere u.a. auch bei den Einheiten. Ohne eine Originalgerät mit dem man vergleichen kann,
wird man kaum auskommen, da sonst besteht die Gefahr, dass fehlerhafte Messwerte entstehen.
http://www2.produktinfo.conrad.de/daten ... _4660M.pdf
Code: Alles auswählen
"Ein Datenformat ist 14 Byte lang. Die Zusammensetzung lautet wie folgt:"
BYTE 1 2 3 4 5 6 7 8 9 A B C D E
Bsp.1 DC -3 .9 9 9 V CR
Bsp.2 3 .9 9 9 Mo h m CR
ABACOM support
-
- Beiträge: 2
- Registriert: Montag 6. Mai 2013, 21:18
Re: Wie sieht das Protokoll des M4660 Multimeter aus
Danke fuer die Antwort.
Ich werde das mal mit je einem CR nach jedem Kanal ausprobieren.
Aber wie werden dann die Kanaele dann von einander unterschieden?
Ist das Timing auch im Protokoll festgelegt?
Wegen der Genauigkeit und der Interpretation mache ich mir weniger Sorgen.
Ich kann ja Dummys schicken und Vergleichen.
Aber zur Zeit kommt aus dem PL modul noch garnichts raus.
Ich werde das mal mit je einem CR nach jedem Kanal ausprobieren.
Aber wie werden dann die Kanaele dann von einander unterschieden?
Ist das Timing auch im Protokoll festgelegt?
Wegen der Genauigkeit und der Interpretation mache ich mir weniger Sorgen.
Ich kann ja Dummys schicken und Vergleichen.
Aber zur Zeit kommt aus dem PL modul noch garnichts raus.
Re: Wie sieht das Protokoll des M4660 Multimeter aus
Dass DMM sendet nur nach Request! Hier die PL-Auswertung...
Mehr kann ich nicht machen.
Mehr kann ich nicht machen.
Code: Alles auswählen
Procedure TSerialMultimeter.Request_DMM_Data;
begin
Comm.Write('D', 1);
end;
procedure TMetex.CreateMesswert;
var p,dummy,i: integer;
WertString: string[8];
EinheitString: String[5];
RealMesswert: Real;
Daten: String[14];
Dek: extended;
begin
if length(DatenPuffer)=14*(KanalAnz-1) then
begin
Dek:=1;
for i:=0 to KanalAnz-2 do
begin
MesswertString:=Copy(DatenPuffer,1,14);
{*** schön machen ***}
if (Pos('TM',MesswertString)>0) or
(pos('TE',MesswertString)>0) then
begin
p:=pos('C',MesswertString);
if p>0 then MesswertString[p-1]:='°';
end;
while (Pos('DB',MesswertString)>0) do
begin
p:=pos('D',MesswertString);
if p>0 then MesswertString[p]:='d';
end;
{***}
if i=0 then
begin
if (Pos('OL',MesswertString)>0) or (Pos('O.L',MesswertString)>0) then
PMesswert(MesswertListe.Items[KanalAnz-1])^:=5 else PMesswert(MesswertListe.Items[KanalAnz-1])^:=0;
end;
if PMesswert(MesswertListe.Items[KanalAnz-1])^<2.5 then {*** nicht bei OL *** }
begin
Daten:=Copy(DatenPuffer,i*14+1,14);
EinheitString:=TrimString(Copy(Daten,10,4));
WertString:=TrimString(Copy(Daten,3,7));
if length(EinheitString)>0 then Dek:=Dekade(EinheitString); {keine Einheit? dann nimm die vom Kanal vorher}
Val(WertString,RealMesswert,dummy);
RealMesswert:=RealMesswert*Dek;
PMesswert(MesswertListe.Items[i])^:=RealMesswert;
end;
end;
end;
end;
ABACOM support