Sigrok-Treiber für APPA 150/208/506 / BENNING MM 12 / CM 12 / Sefram 7352B / etc.

OP #6462751
Lesenswert?

Hallo,

vorweg, ich habe diesen Beitrag in nahezu gleicher Form bereits in einem 
anderen (englischsprachigen) Forum gepostet und betrachte es aufgrund 
der Art der Anfrage nicht als Multipost.

Ich habe vergangenes Wochenende einen Sigrok-Treiber für viele 
APPA-basierte Multimeter erstellt, u.a. Multimeter und Stromzangen mit 
Seriell/USB und Bluetooth LE.

Momentan unterstützt dieser die Geräte BENNING MM 12, BENNING CM 12, 
Sefram 7352B, APPA 506(B), 208(B), 155B, 156B, 157B, 158B und einige 
weitere unter verschiedenen Marken.

Implementiert und getestet habe ich es mit meinem BENNING MM 12 (APPA 
506B). Funktionen für andere Geräte, die das selbe Protkoll verwenden, 
sind zwar umgesetzt aber sinngemäß ungetestet, weil ich die Hardware 
nicht habe.

Aktuell sind alle Funktionen zum Live-Auslesen der Messdaten über 
Serial/USB/Bluetooth LE implementiert, aber Log-Download aus dem 
Aufzeichnungsspeicher und ggf. Kalibrierung folgen erst wenn ich mal ein 
wenig mehr Zeit dafür habe.

Sigrok-Wikiseite zu dem von mir verwendeten MM 12 mit ein paar Bildern:

https://sigrok.org/wiki/BENNING_MM_12

Meine Bitte: Falls jemand hier ebenfalls ein solches APPA 150/208/506 
basiertes Multimeter hat, egal unter welcher Marke, würde ich mich sehr 
über Tests des neuen Treibers freuen.

Hier ist mein github-Form von libsigrok mit dem Treiber "appa-b":

https://github.com/Cymaphore/libsigrok

Der Treiber befindet sich aktuell in der Begutachtung und ggf. Korrektur 
und soll idealerweise anschließend in den Hauptzweig von sigrok 
aufgenommen werden.

MfG,
Martin
Angehängte Dateien:
#7011967
Lesenswert?

Hallo Martin,

vielen Dank für Deinen sehr interessanten Beitrag.
Ich habe versucht, die libsigrok aus Deinem github-Repository zu 
kompilieren (unter Beachtung der ganzen Abhängigkeiten, siehe Anleitung 
im sigrok-wiki).
Leider bekomme ich immer seltsame Fehlermeldungen und das Programm 
sigrok-cli stürzt ab ...

Eigentlich geht es mir aber "nur" darum, die aktuell angezeigten 
Messwerte des MM12 mit Python auf einem Raspi auszulesen und dann mit 
Python-Bibliotheken wie z.B. matplotlib grafisch darzustellen. Leider 
finde ich bis jetzt im Netz keine Hinweise, die das serielle Protokoll 
des MM12 beschreiben. Eine Ansteuerung per SCPI-Befehle scheint nicht zu 
gehen.

Sigrok benötige ich im Grunde nicht, da es für meine Anwendung viel zu 
mächtig ist (auch hinsichtlich Pflege der vielen Abhängigkeiten).

Ich wäre Dir sehr dankbar, wenn Du mir bzgl. Protokoll-Beschreibung des 
Benning MM12 weiterhelfen könntest.

Viele Grüße,
Björn.
#7385531
Lesenswert?

Hallo,

habe mir inzwischen selbst geholfen: nach einer freundlichen Anfrage an den Benning-Support (helpdesk@benning.de) habe ich die Dokumentation zum Interface-Protokoll sehr schnell erhalten ("Multimeter BENNING MM 12 / Clamp Meter BENNING CM 12-serie Communication Protocol, Version 2.6"). Vielen Dank noch einmal dafür.

Anhand dieser Schnittstellenbeschreibung habe ich eine Python-Klasse für das Auslesen der seriellen USB-Schnittstelle und der Interpretation des Byte-Code-Protokolls geschrieben. Wie diese Klasse mit dem Benning MM12 verwendet wird, habe ich in einem Jupyter-Notebook erklärt. Alles zusammen ist Open-Source-lizensiert auf Github veröffentlicht - gemeinsam mit anderen Treiber-Klassen für einen ganzen Zoo von weiteren Messgeräten aus meinem Labor.

Github-Repository: https://github.com/urmel79/Jupyter_PyVisa_Lab

Benning MM12 (Python-Klasse + Jupyter-Notebook):

Ich würde mich freuen, wenn das jemandem beim Ansteuern seiner Messgeräte hilft oder zumindest für eigene Arbeiten / Lösungsansätze inspiriert :)

Viele Grüße, Björn.

OP #7385552
Lesenswert?

Hallo,

ich hatte die Antwort leider nicht bemerkt, entschuldige. Ich nehme an die Compilerfehler haben sich erübrigt ;-(

Falls für Dich noch weitere Infos von Interesse ist, der eigentliche Treiber für die Geräte findet sich hier:

https://github.com/Cymaphore/libsigrok/tree/appadmm-stage/src/hardware/appa-dmm

(Ordner src/hardware/appa-dmm )

In protocol.h finden sich die Speicherlayouts der Geräte und ein paar halb/undokumentierte Kommandos (CAL, OTA, aber ohne alls ins detail getestet zu haben) und eine Beschreibung aller Felder, Datentypen, Rot-Positionen, etc, auch die Sachen die in der Benning-Beschreibung nicht ganz so ausführlich behandelt werden.

Der Ganze basiert auf dem modernen einheitlichen APPA-Protokoll, die alten 500er und 300er-Protokolle haben dann ein Mapping, wo sie sich unterscheiden. Erkennbar ist es immer am Prefix "appadmm_", "appadmm_100_", "appadmm_300_", "appadmm_500_".

Wenn Du die Datenfelder mappst, kannst Du auch ein VC950 ansprechen usw.

Falls Du dem Build noch einen Versuch geben möchtest, sag mir bescheid. Ich hab meinen branch schon länger nicht mehr mit dem upstream synchronisiert und warte (wie so viele...) drauf, ob der pull request jemals bearbeitet wird.

MfG, Martin

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