Forum: Mikrocontroller und Digitale Elektronik Sigrok-Treiber für APPA 150/208/506 / BENNING MM 12 / CM 12 / Sefram 7352B / etc.


von Martin E. (cymaphore)


Angehängte Dateien:

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

von B. K. (b_k)


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.

von B. K. (b_k)


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):
- 
https://github.com/urmel79/Jupyter_PyVisa_Lab/blob/main/Benning_MM12_class.py
- 
https://github.com/urmel79/Jupyter_PyVisa_Lab/blob/main/Benning_MM12_notebook.ipynb

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.

von Martin E. (cymaphore)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.