+++
title = "IMEMA"
description = "Interface Modbus pour l'Enregistrement des Mesures d'Automates"

[extra]
keywords = ["IMEMA", "Modbus", "PLC", "Automate", "DB", "Hatmos", "hatmos"]
+++

Interface Modbus pour l'Enregistrement des Mesures d'Automates

J'ai travaille sur ce projet dans le cadre de mon travail en tant que technicien en automatisme pour le service de la Maitrise de l'Energie de la ville de Besancon.

Ce projet consiste a journaliser des valeurs recueillies dans des automates utilises pour les chaufferies et centrales de traitement de l'air present sur le reseau informatique de la ville.
Pour realiser cet objectif j'ai fais appel a mes connaissances en langage de programmation Rust, pour la partie PC, et Structure, pour la partie automate.

Pour la partie PC en Rust, j'ai utilise les crates tokio_modbus, tokio, chrono et csv.
Le programme s'articule ainsi :
- Le processus ouvre un fichier de configuration qui contient les adresses IP v4 de tout le reseau automate ainsi que le nom des sites physique et la quantite de registre modbus a lire.

- Le processus etabli une connexion avec un automate via son IP
- Les valeurs de registre sont lues dans le DataBlock expose par l'automate
- Ces valeurs sont parsees puis ecrite dans une nouvelle entree du fichier .csv propre au site

Le programme itere sur les adresses IP en suivant cette boucle jusqu'a ce que toutes les adresses soient traitees.
Apres une pause de 15 minutes, le processus relance un nouveau cycle de lecture des registres sur tout le reseau automate.


Pour la partie Automate, j'ai mis en place un serveur modbus grace au bloc fourni par le constructeur et ai expose les registres voulu avec un DataBlock dedie.

Il reste des modifications a operer et des fonctionnalites a rajouter, mais le coeur du programme est la et repond a besoin de securite des donnees avec une duplication des format et des localites.
