Unsere WLAN Funkmodule für Messmittel sind hervorragend geeignet, um ein IIoT Infrastruktur für Messmittel aufzubauen. Es gibt jedoch auch Situationen in welchen nur eine einfache, zunächst lokale Übernahme der Messwerte, z.B. auf ein Smartphone, hinreichend ist. Das Smartphone wird somit zur einfachen Fernanzeige für eine Messuhr oder ein anderes Messmittel.

Für diesen Anwendungsfall haben wir die Mobile Anwendung „smart measure display“ entwickelt.

Das Smartphone scannt zur Kopplung der Funkverbindung das Messgerät (Messuhr)
Das Smartphone scannt zur Kopplung der Funkverbindung die Messuhr mit montiertem Funkmodul und aufgedrucktem Barcode
Nach erfolgreicher Kopplung werden die Messwerte auf dem Smartphone angezeigt.
Nach erfolgreicher Kopplung werden die Messwerte direkt auf dem Smartphone angezeigt.

Ohne besondere Konfiguration wird das Messmittel einfach mit dem Smartphone gescannt. Daraufhin wird eine Funkverbindung zwischen dem Smartphone und dem Messgerät hergestellt und der Messwert kann direkt auf dem Smartphone abgelesen und gespeichert werden.

Als Zusatzfunktionen sind implementiert:

  • Überwachung von Bereichsgrenzen und Grenzwerten
  • Automatische, programmierbare Intervallmessung
  • Ferngesteuerte Messauslösung
  • Speichern der Messwerte in einer lokalen Datenbank
  • Weitergabe der Messwerte an ein Backend (SQL, MQTT-Broker, Q-DAS)

Die Anwendung kann kostenfrei (kostenlos) verwendet werden („freeware“) und funktioniert mit unseren beliebten Funkmodulen der Reihe M4 und M8.

Technische Details

Unsere Funkmodule beherrschen verschiedene Protokolle zur Messwertkopplung.

Als professionelles Kopplungsverfahren setzen wir bevorzugt das MQTT Protokoll ein. Dieses IoT Protokoll hat den Vorteil der relativ einfachen Konfigurierbarkeit, verbunden mit der Möglichkeit, eine gesamte Messinfrastruktur aufzubauen. So können z.B. ein Smartphone und gleichzeitig eine Prozesssoftware auf das Messmittel zugreifen um Messwerte abzurufen oder eine Messung auszulösen. Als Nachteil erweist sich, dass diese Infrastruktur vorhanden sein muss. Für eine einfache Messanzeige eines Messwertes auf einem Smartphone kann dies schon überdimensioniert sein.
Daher unterstützen unsere Module der Reihe M8 auch einfache WebSockets als Übertragungsprotokoll. Hierüber kann über eine sehr einfaches Protokoll einfach der Messwert eines Messmittels abgefragt werden.
Die Kopplung erfolgt denkbar einfach:
Ist nur ein Messmittel in der Reichweite des Smartphones wird dieses Messmittel direkt gekoppelt und abgefragt.
Sind mehrere Messmittel vorhanden kann das Messmittel entweder
– manuell durch eine Auswahl am Bildschirm
– durch den Scan eines QR-Codes
gekoppelt werden.

Das im Text verwendete Wort "Q-DAS" ist ein eingetragenes Warenzeichen der Q-DAS GmbH, Eisleber Straße 2, 69469 Weinheim, Germany

Unser WLAN Funkmodul für Messuhren und andere Handmessmittel wie Bügelmessschraube oder Messschieber kann mit dem Funkmodul M8 für Verbindungen über WebSockets verwendet werden. Meist werden unsere Datenübertragungsmodule im MQTT Modus eingesetzt. Es gibt jedoch Anwendungsfälle, in denen eine Verbindung über Websockets zweckmäßiger ist. Z.B. wenn aus einer Web-Anwendung oder einem Web-Browser heraus direkt auf ein einzelnes Messgerät zugegriffen werden soll.

Dieses Praxisbeispiel soll zeigen, wie eine WebSocket-Verbindung zum Messgerät hergestellt werden kann.

Das Beispiel besteht aus einer einfachen Webseite / Webanwendung in HTML und Javascript. Über diese einfachen Techniken ist es möglich, direkt auf das Funkmodul zuzugreifen und den aktuellen Messwert sowie Statusinformationen aus der Funk-Messuhr auszulesen. Dies ist im Vergleich zu MQTT ohne zusätzliche Infrastruktur eines Brokers möglich und somit vor allem für kleine, lokale Anwendungen eventuell einfacher umzusetzen als eine MQTT Abfrage.

Web-Oberfläche der Beispielanwendung

Der Quelltext der einfachen Anwendung:

<!DOCTYPE HTML>
<html>
<head>
  <meta name="websocket_test">
  <meta charset="UTF-8"/>
  <style>button{width:140px;height:50px}body{background: #f48f0d;}</style>
  <style>table, th, td { border-collapse: collapse;}</style>
<title>websocket to iot test</title>
</head>
<body style="font-family: arial, sans-serif;">
    <div style="width:500px;border:1px solid black;align:left">
        <form onsubmit="return false">
            Client name (informal): <input type="text" id="txtName" value="Client_1"><br>
            Server: <input type="text" id="txtServer" value="192.168.1.119">
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnConnect">Connect to IoT device</button>
            <input type="checkbox" id="cbxSsl" name="ssl" checked>
            <label for="cbxSsl">SSL</label>
            <input type="checkbox" id="cbxRaw" name="raw" checked>
            <label for="cbxRaw">Raw</label>
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnConfigSet" disabled>Set configuration</button>
        </form>
        <form onsubmit="return false">
        <table>
        <tr><td>
            <button type="submit" id="btnRequestMeas" disabled>Request measurements</button>
            </td><td>
            Repeat count:<input style="width:80px;" size="3" type="number" id="txtRepCnt" value="3"><br>
            Interval:<input style="width:80px;" size="6" type="number" id="txtRepMs" value="200">
            </td>
        </tr></table>
        </form>
        <form onsubmit="return false">
            <button type="submit" id="btnRequestMeta" disabled>Request device info</button>
        </form>
        <!-- output form -->
        <form onsubmit="return false">
            <div style="overflow:scroll;height:400px;word-break:break-all" id="divOut">Not connected...</div>
        </form>
        <!-- clear -->
        <form onsubmit="return false">
            <button type="submit" id="btnClear">Clear</button>
        </form>
    </div>
    <script type="text/javascript">
        const elem = id => document.getElementById(id);
        const txtName = elem("txtName");
        const txtServer = elem("txtServer");
        const txtRepCnt = elem("txtRepCnt");
        const txtRepMs = elem("txtRepMs");
        const btnConnect = elem("btnConnect");
        const cbxSsl = elem("cbxSsl");
        const cbxRaw = elem("cbxRaw");
        const btnConfigSet = elem("btnConfigSet");
        const btnRequestMeas = elem("btnRequestMeas");
        const btnRequestMeta = elem("btnRequestMeta");
        const btnClear = elem("btnClear");
        const divOut = elem("divOut");

        class Mdevice {
            constructor() {
                this.connecting = false;
                this.connected = false;
                this.name = "";
                this.ws = null;
            }
            connect() {
                if (this.ws === null) {
                    this.connecting = true;
                    txtName.disabled = true;
                    this.name = txtName.value;
                    btnConnect.innerHTML = "Connecting...<br>"+txtServer.value+"<br>ssl "+
                      cbxSsl.value+": "+(cbxSsl.checked?"on":"off");
                    this.ws = new WebSocket("ws"+(cbxSsl.checked?"s":"")+"://"+txtServer.value+"/"+(cbxRaw.checked?"raw1":"dev1"));
//                    this.ws = new WebSocket("wss://192.168.1.119/dev1");
                    this.ws.onopen = e => {
                        this.connecting = false;
                        this.connected = true;
                        divOut.innerHTML += "<br><p>Connected.</p>";
                        btnConnect.innerHTML = "Disconnect";
                        btnConfigSet.disabled=false;
                        btnRequestMeas.disabled=false;
                        btnRequestMeta.disabled=false;
                        // optional: send something through the websocket 
                        // this.ws.send(this.name + " connected!");
                    };
                    this.ws.onmessage = e => {
                        divOut.innerHTML+="<p>"+e.data+"</p>";
                        divOut.scrollTo(0,divOut.scrollHeight);
                    }
                    this.ws.onclose = e => {
                        this.disconnect();
                    }
                }
            }
            disconnect() {
                if (this.ws !== null) {
                    // optional: send something through the websocket 
                    // this.ws.send(this.name + " disconnect!");
                    this.ws.close();
                    this.ws = null;
                }
                if (this.connected) {
                    this.connected = false;
                    btnConfigSet.disabled=true;
                    btnRequestMeas.disabled=true;
                    btnRequestMeta.disabled=true;
                    txtName.disabled = false;
                    divOut.innerHTML+="<p>Disconnected.</p>";
                    btnConnect.innerHTML = "Connect";
                }
            }
            sendMessage(msg) {
                if (this.ws !== null) {
                    this.ws.send(msg);
                }
            }
        };
        let mdevice = new Mdevice();
        btnClear.onclick = () => {
            divOut.innerHTML ="";
        }
        btnConnect.onclick = () => {
            if (mdevice.connected) {
                mdevice.disconnect();
            } else if (!mdevice.connected && !mdevice.connecting) {
                mdevice.connect();
            }
        }
        btnConfigSet.onclick = () => {
            mdevice.sendMessage("{\"cmd\":\"config\",\"sleep_sec\":13698,\"display_text\":\"MESSAGE\"}");
            divOut.focus();
        }
        btnRequestMeas.onclick = () => {
            if (cbxRaw.checked) {
               mdevice.sendMessage("meas"); // -- opt: csv instead json
            } else {
              mdevice.sendMessage("{\"client\":\""+this.name+"\",\"cmd\":\"meas\",\"rep_cnt\":"+
                txtRepCnt.value+",\"rep_ms\":"+txtRepMs.value+"}");
            }
            divOut.focus();
        }
        btnRequestMeta.onclick = () => {
            // mdevice.sendMessage("1|info|*");
            mdevice.sendMessage("{\"client\":\""+this.name+"\",\"cmd\":\"info\"}");
            divOut.focus();
        }
    </script>
</body>
</html>

Der Quellcode dieses Programmbeispiels kann hier heruntergeladen werden. Dieser Quelltext kann gerne frei verwendet werden (Freeware, OpenSource, Public domain) – allerdings übernehmen wir keine Haftung für die Fehlerfreiheit des Quellcodes oder der Software.

Messuhr mit externer Anzeige und Funkverbindung (Anbindung über Funkmodul M4)

Mit unserer Digitalanzeige für Messmittel bieten wir eine einfache Möglichkeit die Messwerte auf einem externen Display darzustellen. Die Anbindung des externen Displays für die Messuhr (oder ein anderes Messmittel wie Messschieber oder Bügelmessschraube) erfolgt über ein Kabel oder über Funk. Durch die Verwendung allgemeiner und offener Standards können die großen Displays sehr universell eingesetzt werden. Entweder als reine Anzeige zum Beispiel einer einzelnen Messuhr oder als Teil einer komplexen MQTT oder LAN Infrastruktur zur Anbindung über eine Funkverbindung. Als Funkprotokolle werden sowohl MQTT als auch WebSocket jeweils über WLAN (WiFi) unterstützt.

Einsatzmöglichkeiten der Fernanzeige für verschiedene Messgeräte

Das Angebot für eine einfache, externe Messwertanzeige für Messuhr oder Messschieber für Mess-, Anzeige- oder Prüfaufgaben ist am Markt sehr übersichtlich. Entsprechend bedienen wir mit unserem Funk-Anzeigemodul für Messuhren ein Produkt in dieser Nische für Anwendungsfälle in welchen ein eigener PC, Smartphone oder Tablet entweder als überdimensioniert gelten oder aufgrund der damit verbundenen administrativen Aufwände ausscheiden.

Das Stand-Alone Display mit TFT Farbbildschirm kann als externe große Messwertanzeige für Messmittel wie Messuhr, Messschieber oder Bügelmessschraube verwendet werden.

MQTT und WLAN für Messmittel sind unsere Passion. Dennoch gibt es Anforderungen, in welchen eine kabellose Übertragung nicht gewünscht oder notwendig ist.
Entsprechend kann dieses Modul nicht nur als WLAN-Funkanzeige sondern auch über ein Kabel als kabelgebundene Fernanzeige für eine Messuhr oder ein anderes Messgerät verbunden werden. Als weitere Verbindungsmöglichkeit besteht die Option per WLAN Funkverbindung eine Verbindung zum Messsystem über das MQTT Protokoll oder HTTP / WebSockets herzustellen.
Als kabelgebundenes Protokoll wird das Mitutoyo Digimatic Protokoll oder auch ein serielles Protokoll wie es z.B. von Mahr-Messuhren oder den Messuhren von Helios-Preisser verwendet wird unterstützt.

Die Anzeige wird mit einem 5V Steckernetzteil mit USB Kabel ausgeliefert. Der Versorgungsspannungsanschluss an der Anzeige erfolgt über einen Micro-USB Stecker.

Die Fernanzeige mit aktivierter Grenzwertüberwachung (IO/NIO, grün/rot) und Bereichsanzeige

Grenzwertüberwachung

Eine konfigurierbare Grenzwertüberwachung ermöglich das Beurteilen des Messergebnisses an der Fernanzeige.

Die Grenzen können entweder extern konfiguriert über das WLAN vorgegeben werden oder können am Touch-Display eingegeben und verändert werden. Der Hintergrund der Messanzeige kann bei erreichen des IO Messbereiches von rot auf grün umschalten. Auch andere kundenspezifische Farben für die Anzeige können einfach konfiguriert werden.

Konfigurationsmöglichkeiten

Die Grundkonfiguration erfolgt über eine Web-Oberfläche. Hierzu stellt das Anzeigemodul eine eigene Web-Schnittstelle bereit. Diese ermöglicht weitreichende Konfigurationsmöglichkeiten über alle Features der Fernanzeige.

Web Oberfläche zur Konfiguration des Remote Displays über einen Browser

Kabelverbindung

Wenn keine Funkverbindung zum Einsatz kommt, kann mit einem konfektionierten Kabel aus unser Fertigung die Verbindung zwischen Messuhr und Display hergestellt werden.
Bitte geben Sie bei einer Bestellung oder Angebotsanfrage an, für welches Messmittel das Kabel geeignet sein soll. Wir unterstützen die Datenausgänge der Mitutoyo Messuhren, Bügelmessschrauben und Messschieber mit Digimatic Datenausgang (ID-S, ID-CX, ID-C) sowie die Datenausgänge der Mahr oder Helios-Preisser Messuhren. Bei speziellen Messmitteln senden Sie bitte ein Bild des Datenausgangs mit der Anfrage oder Bestellung.

Lagernde Kabellängen sind 1m und 2m. Es sind individuelle Kabellängen von 20cm bis 5m möglich.

Technische Daten der Fernanzeige

EigenschaftWertEinheit
Maße (BxHxT), ohne Kabel 106 x 74 x 22mm
Gewicht95g
Temperaturbereich0-50°C
Versorgungsspannung5V
Stromaufnahme300mA
Messinterval0,3 – 600sek
TFT LCD Display (7.1 cm/2.8″ Bildschirm-Diagonale)320 x 200pixel

Dokumentation

Lesen Sie unsere Dokumentation der Fernanzeige um Detailinformationen über die Funktionsweise und Konfigurationsmöglichkeiten zu erhalten.

Resourcen

Download der Übersicht als PDF.

Kundenprojekte

Durch unsere Agile Fertigung lassen sich über Kundenprojekte viele Anpassungen für Anzeigelösungen für Messinstrumente umsetzen. Was letztendlich auf dem TFT Farbdisplay angezeigt wird kann frei definiert werden. Der Fantasie des Kunden sind hier keine Grenzen gesetzt. Denkbar ist die grafische Visualisierung der Messwerte z.B. als Zeigerinstrument genauso wie eine Messhistorie in Form einer Verlaufsgrafik oder Historienansicht. Trotzdem ist zu bedenken, dass es sich um ein einfaches Display handelt: Sehr aufwendige Visualisierungen von Messwerten lassen sich nach wie vor deutlich einfacher, schneller und besser mit einem PC oder Tablet-Computer in MS-Windows oder Android/iOS umsetzen. Hier haben wir genug Erfahrung um jeden Visualisierungswunsch einer Messvorrichtung als Remote Display für ein beliebiges Messmittel im Labor-, Entwicklungs- oder Fertigungsumfeld umzusetzen.

Optional kann das Display auch zusätzliche Steuereingänge bereitstellen. Diese können dann z.B. für unseren elektromechanischen Messuhr-Anheber in einer automatisierten Prüfvorrichtung verwendet werden.

Das Produkt wurde nach unserer Philosophie der agilen Fertigung umgesetzt.
Dies bedeutet z.B. dass das Gehäuse in ABS gedruckt wird und nur einfache Standardkomponenten verwendet werden.
Dadurch wird eine lange Teileversorgung sichergestellt. In Bezug auf die Kabelverbindungen bedeutet es, dass einfache Standardkabel in fertig konfektionierter Länge direkt verwendet werden können.
Weiter können spezielle Kundenanforderungen einfach umgesetzt werden.

Projektbeispiel

In diesem Projektbeispiel zur automatisierten Messung über IoT Messmittel werden 4 Messuhren mit automatischem Anheber des Messtaster verwendet. Die Messwerte werden zentral auf einer externen MQTT-Anzeige dargestellt. Die Kombination ergibt eine Messuhr mit großer externer Anzeige und externer Anhebemöglichkeit.

Alle 4 Mitutoyo Absolute Messuhren der Messeinrichtung sind per Kabel an die externen Displays angeschlossen. Über einen Schalter lassen sich die Messuhren zentral anheben und absenken sobald das Werkstück vom Werker in die Montageeinrichtung eingelegt ist. Die Messwerte werden an zentraler Stelle über die externe Anzeige visualisiert. Die Anlage kann dahingehend automatisiert werden, dass sowohl die Verarbeitung der Messwerte als auch das Anheben oder Absenken der Messuhr-Taster über externe Signale z.B. über MQTT gesteuert werden. Somit ist auch ein komplett autonomer Betrieb der Messstation über Roboter und Steuerung möglich.

Über ein externes Signal kann der Messfühler anheben oder absenken. Der Zustand des Messstiftes wird auf dem Display als Pfeil dargestellt. Bei abgesenktem Messstift wird der aktuelle Messwert der Messuhr in rot oder grün dargestellt. Bei nicht angeschlossener oder ausgeschalteter Messuhr wird ein rotes diagonales Kreuz angezeigt.

Das Produkt wurde nach unserer Philosophie der agilen Fertigung umgesetzt.
Dies bedeutet z.B. dass das Gehäuse mit 3D Druckern gedruckt wird und nur einfache Standardkomponenten verwendet werden. Dadurch wird eine lange Teileversorgung sichergestellt. In Bezug auf die Kabelverbindungen bedeutet es, dass einfache Standardkabel in fertig konfektionierter Länge direkt verwendet werden können.

Alternativen

Eine Alternative zu einem autonomen externen Display stellt ein Smartphone oder Tablet als Anzeige dar. Auch dieses kann über ein Adapterkabel direkt an eine Messuhr angeschlossen werden. Neben der reinen Anzeige lassen sich hier dann noch weitere Funktionen auf dem Betriebssystem des mobilen Rechnern einfach umsetzen.

Rechtliches

Mitutoyo und Digimatic sind vermutlich eingetragene Warenzeichen von Mitutoyo. Wir verwenden diese Bezeichnungen hier zur Erklärung des hier vorgestellten Produkts (der Hardware und Software). Wir stehen in keiner Verbindung zu Mitutoyo – setzen aber sehr gerne und wo immer möglich deren gute und zuverlässigen Messuhren und Messschieber ein.