Vermessung von Messgeräten auf dem GSM-Kanal

Aufgabe: Das Messgerät nach Strom mit einem GSM-Modem planmäßig abfragen.

Ich habe das Eisen nicht gewählt, es wurde vor mir gewählt, und ich musste daraus ein Fernabfragesystem erstellen. Die Informationsquelle über verschwendeten Strom war Diris A40, hergestellt von Socomec (im Folgenden als Zähler bezeichnet).

Bild

Das Gerät weiß, wie man viele Dinge misst. Ich habe aufgehört, Hunderte von Registern zu lesen, beginnend mit der Dezimaladresse 1792 bis 1891. Als Schnittstelle habe ich auch keine Hardware ausgewählt: das RS485-Gateway-Kommunikationsmodul mit dem JBUS / MODBUS®-Protokoll. Modbus-ähnliches Protokoll mit Auszeichnung in der Registernummerierung.

Siemens GSM-Modems sind MC35i (im Folgenden einfach als Modems bezeichnet). Hier sind diese: Es

Bild

gibt viele Artikel darüber, es ist leicht, Dokumentation zu finden. Es wird von AT-Teams kontrolliert. Nicht mehr verfügbar. Er wurde durch das Cinterion MC52iT Terminal ersetzt. Sie können es immer noch kaufen. Netzteil und Antenne enthalten. Um RS232 in RS485 umzuwandeln, wurde diese allgemein billige Hardware gewählt. Sie macht ihren Job.

Bild

Das Strukturdiagramm des konzipierten Systems sieht folgendermaßen aus:

Bild

Ich habe ein Kabel als Direktkabel bezeichnet, bei dem alle Stifte am Anfang und am Ende einander entsprechen. Zum Beispiel ist Pin 2 mit Pin 2 verbunden. Ich habe das Kabel als Kreuzkabel bezeichnet, wobei Pin 2 mit Pin 3 und Pin 3 mit Pin 2 verbunden sind.

Für die Abfrage sollte der lebende MasterOPC Universal Modbus Server verwendet werdenHier ist es kostenlos, wenn Sie nicht mehr als 32 Tags abfragen möchten (einige sagen "Tags", ich mag "Tags" mehr). Sein Reiz ist, dass es Einstellungen hat, mit denen Sie ein Modem zum Abrufen verwenden können. So ein Zwei in Eins. Dies ist das einzige Programm, das ich mit solchen Funktionen gefunden habe. Zum Beispiel habe ich solche Möglichkeiten in ibaPDA nicht gefunden.

MasterOPC Universal Modbus Server ist fehlgeschlagen. Vielmehr stellte sich heraus, dass sich die empfangenen Pakete aus irgendeinem Grund (für mich gibt es immer noch ein Rätsel, wer weiß - schreiben) so aussehen:

Anfrage: 13-05-2016 14 , wenn sie über Kabel mit dem Messgerät verbunden sind - alles ist in Ordnung, wenn sie über ein Modem verbunden sind : 12: 56.408 Notebook :: DirisA40 (adr5) :( COM5) Tx: 05 03 07 0A 00 01 A4 F8
Antwort: 13-05-2016 14: 12: 56.401 Notizbuch :: DirisA40 (adr5) :( COM5) Rx: F1 EB FF FD B7 00 05 03 02 13 86 C5 16

Wie Sie der Antwort entnehmen können, sind die erforderlichen Informationen vorhanden : 05 03 02 13 86 C5 16. Es ist auch klar, dass es auch einen Außenseiter gibt: F1 EB FF FD B7 00.

Wen kümmert es, Sie können den Parser verwenden, um die Pakete zu entschlüsseln. Zum Beispiel benutze ich CAS_Modbus_RTU_Parser. Es ist kostenlos und großartig. Es gibt auch Online-Parser. Zum Beispiel: http://modbus.rapidscada.net/ .

Ich wusste nicht, wie ich diesen „Müll“ loswerden sollte, also schrieb ich ein Programm auf LabView (vielleicht wäre es richtiger, „gemalt“ zu sagen). Es schneidet unnötige Bits aus dem empfangenen Paket ab und entschlüsselt dann das Modbus-Paket. Was ist dieses LabView, das Sie hier lesen können. Im Allgemeinen wurden auf Habrahabr zu meiner Überraschung ziemlich viele Artikel über LabView gefunden. Das Ergebnis ist eine solche Schnittstelle: Der

Bild

Bild

Hilfetext lautet wie folgt. Das Programm ist für die Abfrage von DirisA40-Zählern vorgesehen. Bevor Sie die ausführbare Datei ausführen, müssen Sie die LabVIEW-Laufzeit-Engine (einmal) installieren. Das Programm kann in zwei Modi arbeiten:

1) Direktabfrage
2) Abfrage über ein Modem

Standardabrufmodus: Abfrage von 100 Registern ab Register 1792.
Datenformat der Wortregister.
Die Standard-Modbus-Adresse ist 5. Die
direkte Abfrage wird durch Drücken der START-Taste gestartet.

Das Abrufen über das Modem erfolgt planmäßig (standardmäßig 5 Minuten) und beginnt nach Drücken der Tasten "START" und "Speichern". Der Umfrageplan sollte nicht weniger als 1 Minute und mehr als 60 Minuten betragen. Im gedrückten Zustand ist die Schaltfläche „START“ als „Umfrage in Bearbeitung“ signiert. Im gedrückten Zustand ist die Schaltfläche „Aufnahme“ als „Aufnahme in Bearbeitung“ signiert.

Das Kontrollkästchen „Umrechnungsfaktoren berücksichtigen“ dient zur Skalierung des Lesewerts des Registers gemäß der Formel X * Faktor + Versatz. Die Werte von Faktor und Versatz werden in den Spalten derselben Tabelle der Setup-Tabelle und in der Auswahl der zu schreibenden Register aufgezeichnet. Das Schreiben erfolgt in einer Textdatei in demselben Verzeichnis, in dem sich die ausführbare Datei des folgenden Formats befindet - Datum Uhrzeit data.txt (Beispiel: 21.05.2016 22_12 data.txt). Wenn die Aufnahme mit einem Modem gemacht wurde, sieht der Name der Datendatei folgendermaßen aus: 06/08/2016 9_47 data__modem.txt. Wenn Sie zum ersten Mal versuchen, eine Datei zu schreiben, können Sie den Dateinamen ändern. Die Aufnahme erfolgt in derselben Datei, bis die Schaltfläche „Aufnahme läuft“ gedrückt wird. Register mit aktivierten Kontrollkästchen in der Einstellungstabelle werden in die Datei geschrieben. Sie können den Status des Kontrollkästchens in der Einstellungstabelle mit einem Doppelklick ändern.Die empfangenen Registerwerte werden in der Einstellungstabelle mit der Spalte "Wert" angezeigt. Auf der Registerkarte „Diagramme“ können Sie die Anzeige eines beliebigen Registerwerts aus der Einstellungstabelle konfigurieren. Die Farbe der Diagrammkurve entspricht der Farbe des Rahmens um das ausgewählte Tag. Tags, die aus dem Build deaktiviert werden müssen, müssen an der Position "Speichern" oder in einem anderen Register mit dem Wert 0 abgelegt werden. Die Weboberfläche des Geräts wird veröffentlicht _http: // Computername: 8000 / DirisA40.html und ist nur über den Explorer zugänglich, wenn LabVIEW Run-Time installiert ist MotorSie müssen es in die Position "Speichern" oder in ein anderes Register mit dem Wert 0 setzen. Die webbasierte Oberfläche des Geräts wird veröffentlicht _http: // Computername: 8000 / DirisA40.html und ist nur über den Explorer zugänglich, wenn LabVIEW Run-Time Engine installiert ist.Sie müssen es in die Position "Speichern" oder in ein anderes Register mit dem Wert 0 setzen. Die webbasierte Oberfläche des Geräts wird veröffentlicht _http: // Computername: 8000 / DirisA40.html und ist nur über den Explorer zugänglich, wenn LabVIEW Run-Time Engine installiert ist.

Beim Schreiben / Zeichnen wurden die folgenden Hilfsprogramme verwendet.

Um den Betrieb des Zählers zu emulieren, wurde das kostenlose Programm DevEmu verwendet. Ich erfuhr von ihr aus dem Blog von Alexei , die ihre Arbeit und Anwendung gut beschrieb. Dafür vielen Dank an ihn.

Um die Verbindung mit dem Zähler zu emulieren, wurden Testversionen verschiedener Programme verwendet, die als Serial Port Splitter bezeichnet werden. Sie sind sehr unterschiedlich, die Probezeit von zwei solchen Splittern hat mir gereicht, um das obige Programm zu schreiben.

PS: Während ich dieses Opus schrieb, anscheinend ein Kollege, schrieb ich einen Artikel zum gleichen Thema: geektimes.ru/post/277358 .

Source: https://habr.com/ru/post/de395421/


All Articles