Bonjour à tous,
et pardon d'avance si je ne poste pas dans la bonne section
Je viens vers vous car je galère avec une centrale d'acquisition et Modbus.
Je m'explique : Cette centrale d'acquisition inclut un serveur Modbus qui permet entre autre d'accéder aux valeurs des canaux d'acquisition (16 channels en tout) et qui peut également être attaqué de l'extérieur pour setter divers paramètres (le gain, si les canaux sont monitorés en tension ou en courant, le déclenchement de l'acquisition en boucle infinie ou en séquence).
Chacune de ces fonctions est fournie dans une API, documentée avec les docs techniques de la centrale.
Cette doc Modbus indique à chaque fois pour chaque fonction, quel registre est attaqué derrière niveau modbus (en lecture ou en écriture) (exemple : fonction get_system_time, registre 10000)
Ce que je souhaite faire :
Interfacer cette centrale d'acquisition avec un automate, et plus précisément
- D'une part, dans mon programme gérant les acquisitions chargé sur la centrale, pouvoir lire des registres Modbus (autres que ceux utilisés pour les fonctions spécifiques de l'API, je cherche simplement à lire des valeurs entière non signées) qui auront une valeur positionnée par l'automate (le codage de l'automate est hors de mon scope, je me place uniquement au niveau de la centrale dont je fais le code d'acquisition)
- D'autre part, toujours dans mon programme, pouvoir écrire des valeurs entières non signées dans d'autres registres (que les précédents et que ceux déjà réservés pour les fonctions spécifiques de la centrale). Registres qui pourraient ensuite être lus par l'automate avec lequel je souhaite m'interfacer.
Mes questions sont donc :
- Y a t il une limite aux registres que je peux adresser via Modbus (en clair si je prends de façon arbitraire le registre 12200 - registre qui ne fait pas partie de ceux utilisé pour les fonctions de la centrale, et que j'y colle un uint16, est-ce que ça pose problème ?)
- Les registres non référencés par des fonctions fournies par l'API Modbus de la centrale ne sont-ils pas protégés en écriture/lecture ? (ça ne donnant pas la référence de la centrale j'imagine que vous aurez du mal à me répondre : c'est une MSX-E3011 de chez addidata)
La question racine en fait est : Comment puis-je setter des registres visibles de ma centrale et de mon automate (surtout si ceux non pris par des fonctions de l'API de la centrale sont protégés) ?
(et oui j'ai regardé : les fonctions de l'API du serveur modbus de la centrale n'incluent pas de fonction permettant simplement de setter ou de lire une valeur - autre qu'un des canaux d'acquisition :'( )
Merci à tous pour vos lumières
Partager