Seite 1 von 1

Wie sieht das Protokoll des M4660 Multimeter aus

Verfasst: Dienstag 7. Mai 2013, 11:27
von john.kennedy
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

Re: Wie sieht das protokoll der Mehrfach-Display Multimeter aus

Verfasst: Mittwoch 8. Mai 2013, 08:03
von abacom
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

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
(Zwischen zwei Kanälen würde ich also ein CHR(13) annehmen!)

Re: Wie sieht das Protokoll des M4660 Multimeter aus

Verfasst: Mittwoch 8. Mai 2013, 21:03
von john.kennedy
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.

Re: Wie sieht das Protokoll des M4660 Multimeter aus

Verfasst: Montag 13. Mai 2013, 08:37
von abacom
Dass DMM sendet nur nach Request! Hier die PL-Auswertung...
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;