Snooping sur un bus RS-485

Snooping sur un bus RS-485

Nous avons expliqué il y a quelques temps comment interroger un capteur MODBUS à l'aide d'un Yocto-RS485-V2. Mais dans certains cas, on peut vouloir surveiller des mesures qui transitent par une communication MODBUS, sans rien envoyer sur le bus RS485. C'est aussi possible, et c'est ce que nous allons vous expliquer aujourd'hui.



Principe


Le principe d'une écoute passive sur un bus RS485 est semblable au snooping sur une ligne RS232 que nous vous avons expliqué dans un précédent article. Mais comme une ligne RS485 est un bus et non une communication point-à-point, il n'est même pas nécessaire d'utiliser un adaptateur comme le RS232-Snooping-Adapter: il suffit de brancher le Yocto-RS485-V2 en parallèle sur le bus RS485 à surveiller, et tant qu'on ne lui demande pas d'envoyer de commandes, il se contentera de surveiller l'activité sans influencer la communication entre les autres appareils présents sur le bus. Vérifiez simplement que vous avez bien désactivé le terminateur de ligne sur le module en positionnant le petit interrupteur sur la position OFF.

Le Yocto-RS485-V2 peut surveiller une ligne RS485 sans impacter la communication
Le Yocto-RS485-V2 peut surveiller une ligne RS485 sans impacter la communication



Analyse automatique des communications


Si vous savez que le trafic circulant sur le bus RS485 utilise le protocole MODBUS, vous pouvez configurer le Yocto-RS485-V2 pour qu'il décode spontanément les messages qui y circulent et fournisse les résultats à travers les fonctions genericSensor comme s'il avait effectué l'interrogation lui-même. Cela permet par exemple d'envoyer les valeurs observées à un serveur Web par un simple callback HTTP. Le wizard d'édition des tâches automatiques permet de faire cela facilement si vous connaissez le numéro du registre interrogé qui vous intéresse:

Définition d'une tâche d'écoute pour un registre d'entrée MODBUS
Définition d'une tâche d'écoute pour un registre d'entrée MODBUS


Si cela ne marche pas d'emblée, c'est probablement que l'appareil qui effectue l'interrogation ne demande pas le registre que vous pensez, ou alors utilise une autre commande MODBUS. Pour résoudre le problème, commencez par vérifier dans la fenêtre de statut du Yocto-RS485-V2 qu'il voit bien passer la communication et que les messages sont clairement reconnaissables, comme ci-dessous:

Trace d'une communication MODBUS
Trace d'une communication MODBUS


Dans la définition de votre tâche, passez à l'option Use a custom protocol pour voir les messages que la tâche précédemment définie s'attend à recevoir. Dans notre cas, on obtient ceci:

Messages correspondants à la tâche définie
Messages correspondants à la tâche définie


On voit que les messages attendus par la tâche automatique correspondent bien au trafic qui circule, ce qui ne nous surprend pas puisqu'elle fonctionne bien. En se référant à la spécification MODBUS, on peut facilement décoder les messages de type "read single input register".

En cas de problème, il se peut que le numéro de registre ne soit pas celui que vous attendiez, ou alors que l'appareil qui effectue les interrogations utilise une commande MODBUS pour lire plusieurs registres d'un coup. Dans ce cas, vous pouvez facilement modifier la tâche d'écoute en conséquence. En cas de doute, envoyez-nous un message à l'adresse support@yoctopuce.com et nous vous aiderons...

Cas particulier: le chaînage de plusieurs Yocto-RS485-V2


Une utilisation particulière du snooping mérite d'être notée. Des clients nous ont demandé s'il était possible d'utiliser un Yocto-RS485-V2 pour interroger de manière autonome une vingtaine de capteurs MODBUS et poster sur un serveur Web les valeurs mesurées. Or le Yocto-RS485-V2 ne dispose que de dix genericSensor, ce qui limite le nombre de registres qu'il est possible de lire et de poster de manière autonome.

La première solution qui vient à l'esprit consiste à utiliser deux Yocto-RS485-V2 qui interrogent chacun la moitié des capteurs de manière indépendante. Mais on devine que selon les cas, cela pourrait causer des collisions sur le bus RS485.

La bonne solution consiste à utiliser deux Yocto-RS485-V2, mais à initier toutes les interrogations MODBUS depuis l'un des deux modules. Celui-ci se contentera par contre d'analyser et de publier dans ses genericSensors les réponses fournies par les dix premiers capteurs, tandis que le deuxième Yocto-RS485-V2 utilisera la technique du snooping pour analyser et poster les réponses fournies par les dix capteurs suivants. Ainsi, tout risque de collision est écarté. Et cette solution peut être étendue pour plus de capteurs encore si nécessaire...

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.