Journalisation en temps réel MODBUS RTU vers une base de données MS SQL
Un guide complet pour interroger les périphériques série MODBUS RTU et exporter les données des registres directement dans une base de données MsSQL avec votre structure de base de données.
1. Configuration du protocole : MODBUS RTU
Type de communication : Interrogation active (Maître/Esclave sur RS485/COM)
Comme MODBUS transmet les données en binaire, l’analyseur doit extraire des registres de maintien spécifiques (par ex., 40001) ou des registres d’entrée. Si votre capteur utilise des nombres à virgule flottante 32 bits, configurez l’analyseur pour lire deux registres adjacents de 16 bits et appliquer l’échange d’octets (endianness) correct pour reconstruire la valeur flottante.
Appliquez cette configuration de base pour la connexion série :
{
"port": "COM3",
"baud_rate": 9600,
"data_bits": 8,
"stop_bits": 1,
"parity": "none",
"protocol": "modbus_rtu_serial",
"poll_interval_ms": 1000
}
Sélection du plugin MODBUS RTU pour interroger et analyser les données.

File d’attente des requêtes MODBUS RTU : configuration personnalisée pour lire différents registres.
Prêt à connecter MODBUS RTU à Microsoft SQL Server ?
2. Configuration de la base de données : Microsoft SQL Server
Utilisez le client natif SQL Server intégré ou le fournisseur OLE DB dans le module d'exportation ODBC du Data Logger. L'authentification Windows est prise en charge de manière transparente si le compte de service du logger a accès à la base de données.
Utilisez le script SQL suivant pour créer votre table cible. Utilisez DATETIME2 au lieu de DATETIME pour une précision d'horodatage plus élevée, ce qui est essentiel pour la journalisation série industrielle à haute fréquence.
CREATE TABLE SerialData ( RecordID INT IDENTITY(1,1) PRIMARY KEY, LogTime DATETIME2 DEFAULT SYSUTCDATETIME(), PortID NVARCHAR(20), SensorReading FLOAT );

Connecteur Microsoft SQL Server dans notre logger.

Paramètres de connexion à la base de données SQLServer. Par exemple, SQL Express.

File d'attente SQL.
3. Dépannage spécifique au protocole
- Erreurs de temporisation ou CRC: Contrairement à TCP, le MODBUS RTU série repose sur une temporisation stricte. Vérifiez que vos câbles RS485 A/B ne sont pas inversés et que le débit en bauds et l’ID du périphérique dans le logiciel correspondent exactement à l’appareil esclave.
- L’appareil renvoie le code d’erreur « Illegal address »: Essayez d’utiliser la fonction n° 3 au lieu de la fonction n° 4 dans votre requête MODBUS. Sinon, vérifiez que vous utilisez la bonne adresse de registre. Essayez de spécifier un décalage absolu (pas une adresse logique comme 40001).
- J’ai plusieurs valeurs que je souhaite exporter sur une seule ligne de données. Actuellement, l’enregistreur écrit une valeur par ligne: Vous devez activer l’option « Exporter toutes les données à la fois » dans les paramètres du plugin MODBUS.
4. Dépannage spécifique à la base de données
- Échec de connexion pour l'utilisateur / Accès refusé: Si vous exécutez RS232 Data Logger en tant que service Windows en arrière-plan, assurez-vous que le service s'exécute sous un compte de domaine avec les rôles db_datawriter, plutôt que sous le compte par défaut « Système local ». Ou créez un utilisateur distinct avec la méthode d'authentification « SQL Server ».
- Que se passe-t-il si ma base de données est hors ligne ? Vais-je perdre mes données ?: Utilisez le plugin SQL Database Pro. Il peut écrire les données dans un fichier temporaire pendant que votre base de données est hors ligne et les restaurer ultérieurement.
- Le code ne fonctionne que lorsque vous envoyez des nombres. Lorsque j'essaie d'envoyer une lettre, cela ne fonctionne pas.: 1. Vous devez déclarer la variable d'analyseur comme une chaîne. 2. Votre table doit contenir la colonne avec le type « VARCHAR » ou « NVARCHAR ». La taille de cette colonne doit être suffisante pour vos données. 3. Vous devez sélectionner le type de données « string » pour la colonne correspondante dans le plugin d'exportation de données sur la page « Binding ».