Le Plugin MyModBus sert à communiquer en protocole Modbus via plusieurs types de Liaison.
- Liaison modbus Ethernet
- Liaison Série Mode RTU
Il est compatible avec plusieurs types d’automates (Crouzet, IPX , Wago …)
Après téléchargement du plugin, il vous suffit juste d’activer et d’installer les dépendances Mymodbus (clic sur le bouton Installer/Mettre à jour)
Attention le démond démarre seulement s’il y a un équiment de présent !!
Vous retrouvez ici toute la configuration de votre équipement :
Nom de l’équipement Mymodbus : nom de votre équipement Mymodbus,
Objet parent : indique l’objet parent auquel appartient l’équipement,
Catégorie : les catégories de l’équipement (il peut appartenir à plusieurs catégories),
Activer : permet de rendre votre équipement actif,
Visible : rend votre équipement visible sur le dashboard,
En-dessous vous retrouvez la liste des commandes :
Nom : le nom affiché sur le dashboard,
Afficher : permet d’afficher la donnée sur le dashboard,
Tester : permet de tester la commande
Petit plus :) :
- Jeedom recherche toutes les jours à 00h30 s’il y a un automate à mettre à l’heure , si oui il le fait .
Pour se faire vous devez obligatoirement avoir installé le plugin “virtuel”
Il faut maintenant créer les commandes du virtuel pour cela on s’appuie sur celles crées précédemment dans le plugin MyModbus:
La commande info :
Puis la commande action :
Partie configuration : mettre le registre que vous voulez lire et utiliser la fonction ( and & et ) suvie du numéro de bit que vous voulez récuperer ( multiple de 2 ).
Voir l’exmemple ci dessous .
Dans cette partie, je vais parler de la configuration du plugin pour un automate WAGO 750-x
Petite explication sur l’adressage WAGO. Nous ne parlerons ici que des Entrées %I, des Sorties %Q et des mémoires %M Chacune de ces adresses peut être lue et/ou écrite sous forme de bit (0 ou 1) ou de mot (16 bits = de 0 à 65535)
Dans ce document, vous voyez d’autres informations, comme des Byte ou Double word, mais ça ne sera pas utilisé pour le ModBus. Nous utilisons donc les I, Q et M, ainsi que les X et W.
Exemple, pour la première entrée, on peut avoir soit %IW0 (16 bits) soit %IX0.0, %IX0.1, … , %IX0.15 (soit les 16 bits du mot, mais adressable un par un)
Pour le moment, je n’ai pas trouvé la différence entre Input Register et Holding Register, ni entre Coils et Discrete Imputs, et j’ai réussi à tout faire avec Coils et Holding Register, donc je ne parlerais que de ces 2 types.
Donc pour simplifier :
%MX0.0 -> %MX1279.15 ont les adresses de 12888 à 32750 Je ne parle pas des %QX car c’est un peu particulier et j’en parle après.
J’espère que vous avez suivi, car avec le modbus, on ne peut pas lire un %QX, on doit lire un %QW et ensuite séparer chaque bit dans un virtuel comme indiqué plus haut dans cette documentation.
Et pour couronner le tout, %QW0 a l’adresse 512, %QW1 a l’adresse 513, …
Bon allez, pour vous simplifier la tâche, j’ai créé un document excel pour les premières adresses, vous le trouverez : ici
Nous avons donc notre Jeedom, notre Wago, ils communiquent via le plugin. Parfait ! On peux maintenant faire 3 choses :
Ne pensez pas que vous pourrez directement écrire sur une sortie pour allumer une lampe, ça ne fonctionnera pas, il faut que ce soit l’automate qui active l’entrée. Donc les entrées et sorties sont en fait en lecture seules (je peux me tromper car je n’ai pas fait trop de tests, mais de toute façon, pour éviter les soucis c’est nettement mieux de faire comme ça)
Pour les %QW :
Et pour écrire les %MX (le principe est le même pour les MW)
Première chose à faire: déclarer les %MX en tant que variables. Pour celà, dans Resources/Global variables je crée un nouveau fichiers de variables que j’ai appelé Variables_virtuelles
Tip
Pour vous aider, dans le fichier excel, vous trouverez un 4è onglet, qui crée directement les syntaxes, plus qu’à copier-coller ou adapter.
Voilà, nous avons maintenant des interrupteurs virtuels appelé vrt_LUM_Salle_Sports1 dans mon exemple. On peut donc l’utiliser dans le code.
Dans l’exemple qui suit, je parle de la config chez moi, donc il faut l’adpater pour vous. Je code en ST dans CodeSys, donc désolé pour ceux qui préfère le Ladder ou autre
(* Salle ) ( Virtuels *) vrt_temp_salle_spots1 := FALSE; IF (vrt_LUM_Salle_Spots1_On) THEN IF (NOT LUM_Salle_Spots1) THEN vrt_temp_salle_spots1:=TRUE; END_IF END_IF IF (vrt_LUM_Salle_Spots1_Off) THEN IF (LUM_Salle_Spots1) THEN vrt_temp_salle_spots1:=TRUE; END_IF END_IF
input_Lum_Salle_Spots1:=simple_INT_Salle_TV_1 OR simple_INT_Salle_Esc_Lum_G OR simple_INT_Coul_Chaud_1 OR simple_INT_Salle_Ecran_Lum_G OR simple_INT_Salle_Cuis_G OR vrt_LUM_Salle_Spots1 OR vrt_temp_salle_spots1;
SW_LUM_Salle_Spots1(Interrupteur:=input_Lum_Salle_Spots1); LUM_Salle_Spots1:=SW_LUM_Salle_Spots1.Lampe;
Un peu d’explications : ma sortie physique s’appelle LUM_Salle_Spots1 (elle est assigné dans la configuration physique de l’automate dans CodeSys). Maintenant, je vais prendre le code à l’envers pour une meilleure compréhension :
SW_LUM_Salle_Spots1 est un switch, en gros ça inverse juste l’état si l’Interrupteur
en paramètre est à TRUE.
Et ma sortie LUM_Salle_Spots1 est donc positionné sur la sortie Lampe
de ce switch.
Ensuite la variable input_Lum_Salle_Sports1, c’est en fait mon Interrupteur
dont on a parlé plus haut, mais comme j’ai dans la pièce plusieurs interrupteurs physiques, plus des interrupteurs virtuels, je fais juste un simple OR
avec tous ces interrupteurs.
(pour ceux qui sont intrigué, j’ai simple_ pour un simple click, double_ pour un double click, triple_ pour un triple click et long_ pour un appuis long, mais ça n’a rien à voir avec le sujet)
Dans cette chaine de OR
, vous trouvez à la fin 2 virtuels :
A quoi servent ces 2 virtuels :
Comment fonctionne le ON et le OFF Ca se fait dans le premier bout de code
(* Virtuels *)
vrt_temp_salle_spots1 := FALSE;
IF (vrt_LUM_Salle_Spots1_On) THEN
IF (NOT LUM_Salle_Spots1) THEN
vrt_temp_salle_spots1:=TRUE;
END_IF
END_IF
IF (vrt_LUM_Salle_Spots1_Off) THEN
IF (LUM_Salle_Spots1) THEN
vrt_temp_salle_spots1:=TRUE;
END_IF
END_IF
En gros, si on veut faire un ON, on doit juste faire quelque chose si la lumière est éteinte, et dans ce cas on simule un appuis sur l’interrupteur temp.
Idem pour le OFF, on ne doit faire quelquechose que si la lumière est allumée, et dans ce cas c’est aussi une simulation d’appuis sur l’interrupteur temp.
Voilà, vous savez tout maintenant sur la configuration de MyModBus pour les automates WAGO.
(Cette partie sur WAGO a été faite par Vincent VAURETTE @vvaurette)
Merci à @Anthony_Ferreira pour ce début de documentation sur les automates Crouzet.
Merci à @vvaurette pour la partie de documention sur le Wago.