Relevé des compteurs sur le canal GSM

Tâche: interroger selon le planning le doseur d'électricité à l'aide d'un modem GSM.

Je n'ai pas choisi le fer, il a été choisi avant moi, et j'ai pu créer un système de vote à distance à partir de cela. Ainsi, la source d'informations sur le gaspillage d'électricité était le Diris A40 fabriqué par Socomec (ci-après dénommé le compteur).

image

L'appareil sait mesurer beaucoup de choses, j'ai arrêté de lire des centaines de registres, à partir de l'adresse décimale 1792 à 1891. En tant qu'interface, je n'ai pas non plus sélectionné de matériel: le module de communication de la passerelle RS485 utilisant le protocole JBUS / MODBUS®. Protocole de type Modbus avec mention dans la numérotation des registres.

Les modems GSM Siemens sont des MC35i (ci-après simplement appelés modems). Les voici: il

image

y a beaucoup d'articles à leur sujet, il est facile de trouver de la documentation. Il est contrôlé par les équipes AT. N'est plus disponible. Il a été remplacé par le terminal Cinterion MC52iT. Vous pouvez toujours l'acheter. Alimentation et antenne incluses. Pour convertir RS232 en RS485, ce matériel généralement bon marché a été choisi. Elle fait son boulot.

image

Le schéma structurel du système conçu se présentera comme suit:

image

j'ai nommé un câble en tant que câble direct, où toutes les broches correspondent les unes aux autres au début et à la fin. Par exemple, la broche 2 est connectée à la broche 2. J'ai appelé le câble un câble croisé, où la broche 2 est connectée à la broche 3 et la broche 3 est connectée à la broche 2.

Pour l'interrogation, il était censé utiliser MasterOPC Universal Modbus Server, qui vitici, c'est gratuit si vous ne souhaitez pas interroger plus de 32 tags (certains disent "tags", j'aime plus "tags"). Son charme est qu'il a des paramètres qui vous permettent d'utiliser un modem pour l'interrogation. Un tel deux en un. C'est le seul programme que j'ai trouvé avec de telles fonctionnalités. Par exemple, je n'ai pas trouvé de telles opportunités dans ibaPDA.

Échec du serveur Modbus universel MasterOPC. Au contraire, il s'est avéré être à moitié: lorsqu'il est connecté au compteur par fil - tout va bien, lorsqu'il est connecté via un modem, les paquets reçus pour une raison quelconque (pour moi, il y a encore un mystère, qui sait - écrire) ressemblent à ceci:

Demande: 13/05/2016 14 : 12: 56.408 Notebook :: DirisA40 (adr5) :( COM5) Tx: [0008] 05 03 07 0A 00 01 A4 F8
Réponse: 13-05-2016 14: 12: 56.401 Notebook :: DirisA40 (adr5) :( COM5) Rx: [0013] F1 EB FF FD B7 00 05 03 02 13 86 C5 16

Comme vous pouvez le voir dans la réponse, les informations nécessaires sont là : 05 03 02 13 86 C5 16. Il est également clair qu'il existe également un étranger: F1 EB FF FD B7 00.

Peu importe, vous pouvez utiliser l'analyseur pour décrypter les paquets. Par exemple, j'utilise CAS_Modbus_RTU_Parser. C'est gratuit et c'est super. Il existe également des analyseurs en ligne. Par exemple: http://modbus.rapidscada.net/ .

Je ne savais pas comment me débarrasser de ces "ordures", alors j'ai écrit un programme sur LabView (peut-être serait-il plus correct de dire "peint"). Il coupe les bits inutiles du paquet reçu, puis déchiffre le paquet Modbus. Quel est ce LabView que vous pouvez lire ici. En général, sur Habrahabr, à ma grande surprise, beaucoup d'articles sur LabView ont été trouvés. Le résultat est une telle interface: le

image

image

texte d'aide est le suivant. Le programme est destiné à l'interrogation des compteurs DirisA40. Avant d'exécuter le fichier exécutable, vous devez installer le moteur d'exécution LabVIEW (une fois). Le programme peut fonctionner en deux modes:

1) interrogation directe
2) interrogation via un modem

Mode d'interrogation par défaut: interrogation de 100 registres à partir du registre 1792.
Format de données des registres de mots.
L'adresse Modbus par défaut est 5.
L'interrogation directe démarre en appuyant sur le bouton START.

L'interrogation via le modem est programmée (par défaut 5 minutes) et commence après avoir appuyé sur les boutons "START" et "Save". Le calendrier de l'enquête ne doit pas être inférieur à 1 minute et supérieur à 60 minutes. A l'état enfoncé, le bouton «START» est signé comme «Survey in progress». À l'état enfoncé, le bouton «Enregistrer» est signé comme «Enregistrement en cours».

La case à cocher «Prendre en compte les facteurs de conversion» est conçue pour mettre à l'échelle la valeur lue du registre selon la formule X * Factor + Offset. Les valeurs de Factor et Offset sont enregistrées dans les colonnes du même tableau du tableau de configuration et de la sélection des registres pour l'écriture. L'écriture a lieu dans un fichier texte dans le même répertoire où se trouve le fichier exécutable du format suivant - date heure data.txt (Par exemple: 21/05/2016 22_12 data.txt). Si l'enregistrement a été effectué à l'aide d'un modem, le nom du fichier de données ressemblera à ceci: 06/08/2016 9_47 data__modem.txt. La première fois que vous essayez d'écrire un fichier, vous pouvez modifier le nom du fichier. L'enregistrement se fait dans le même fichier jusqu'à ce que le bouton «Enregistrement en cours» soit enfoncé. Les registres dont les cases à cocher sont cochées dans le tableau des paramètres sont écrits dans le fichier. Vous pouvez modifier l'état de la case à cocher dans le tableau des paramètres en double-cliquant.Les valeurs de registre reçues sont affichées dans le tableau des paramètres avec la colonne "Valeur". Dans l'onglet «Graphiques», vous pouvez configurer l'affichage de n'importe quelle valeur de registre à partir du tableau des paramètres. La couleur de la courbe du graphique correspond à la couleur du cadre autour de la balise sélectionnée. Les balises qui doivent être désactivées de la génération doivent être placées en position «enregistrer» ou tout autre registre avec une valeur de 0. L'interface Web de l'appareil est publiée _http: // nomordinateur: 8000 / DirisA40.html et n'est accessible que via l'explorateur si LabVIEW Run-Time est installé Moteurvous devez le mettre en position «enregistrer» ou tout autre registre avec une valeur de 0. L'interface Web de l'appareil est publiée _http: // nomordinateur: 8000 / DirisA40.html et n'est accessible que via l'explorateur si LabVIEW Run-Time Engine est installé.vous devez le mettre en position «enregistrer» ou tout autre registre avec une valeur de 0. L'interface Web de l'appareil est publiée _http: // nomordinateur: 8000 / DirisA40.html et n'est accessible que via l'explorateur si LabVIEW Run-Time Engine est installé.

Dans le processus d'écriture / dessin, les programmes auxiliaires suivants ont été utilisés.

Pour émuler le fonctionnement du compteur, le programme gratuit DevEmu a été utilisé. Je l'ai découverte sur le blog d'Alexei , qui a bien décrit son travail et sa candidature. Merci beaucoup à lui.

Pour émuler la connexion avec le compteur, des versions d'essai de divers programmes appelés Serial Port Splitter ont été utilisées. Ils sont très différents, la période d'essai de deux de ces répartiteurs m'a suffi pour écrire le programme ci-dessus.

PS: Pendant que j'écrivais cet opus, apparemment un collègue, j'ai écrit un article sur le même sujet: geektimes.ru/post/277358 .

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


All Articles