01/05/2009, 00:09:27
(...)
D'ou l'utilité de séparer "adresse de groupe pour la commande" et
"adresse de groupe pour le retour d'état", ainsi que de correctement
configurer les flags pour CHAQUE objet de CHAQUE participant, pour
CHAQUE adresse de groupe ...
Un exemple est sans doute plus parlant que de la théorie :
En gros, voici la bonne config des flags pour un "bête" circuit ON/OFF
(une lampe par exemple).
Pré-requis : les objets "retour d'état" ou "information d'état" NE
doivent PAS être dans la même adresse de groupe que les objets de
commande.
1) Objets de communication reliés l'adresse de groupe (=A.G.) de
commande :
- boutons poussoirs (et tout ce qui peut "envoyer" un ordre sur cette
A.G.) : activer les flags "communication", "transmit" et
"write" (ainsi, éventuellement que "update") ; mais absolument
désactiver "read".
Il faut aussi que le flag "send" soit actif pour cette A.G.
- acteur(s) (ou tout ce qui doit "exécuter" l'ordre) : activer les
flags "communication", "read" et "write" (ainsi que, éventuellement,
"transmit") ; mais absolument désactiver "update".
En principe, le flag "send" devrait aussi être actif pour cette A.G.,
sauf dans le cas ou la (ou les) A.G. est destinée à une "commande
centrale" et agit donc sur plusieurs acteurs simultanément (comme par
ex. un "Tout OFF pour le RdC")
2) Objets de communication reliés l'A.G. de "retour d'état" :
- LED des boutons poussoirs (et tout ce qui peut afficher l'état,
comme un canal de visu.) : activer les flags "communication",
"update" et "write" ; mais absolument désactiver "read" et "transmit".
Pour cette A.G., le flag "send" doit aussi être actif (cet objet de
communication ne doit envoyer aucune valeur sur le bus, mais le flag
"send" est nécessaire pour pouvoir envoyer des message de type "read
request" vers l'A.G., ce qui particulièrement nécessaire dans le cas
d'une visu.).
- état de l'acteur (au singulier, car un retour d'état n'a de sens que
pour un acteur unique, donc il ne peut y avoir qu'une seule A.G. liée
à cet objet de communication) : activer les flags "communication",
"read" , ainsi que "transmit" ; mais désactiver "update" et "write".
Pour cette A.G., le flag "send" doit aussi être actif.
- - -
Avec cette config, il est impossible pour une visu de faire s'allumer
ou s'éteindre un lampe lors du démarrage de la visu ; mais, si la visu
doit aussi pouvoir commander la lampe, idéalement cela suppose que la
visu propose 2 objets de communication différents par lampe : un objet
"commande" et un autre objet pour l'affichage de l'état ...
Je ne pense malheureusement pas que ce soit le cas de toutes les
visu. :-(
Dans le cas des visu qui ne proposent qu'un seul objet de
communication, on peut y associer les deux A.G. (commande et retour
d'état) mais il faut absolument veiller à ce que le flag "send" soit
actif pour l'A.G. "commande" et non pour l'autre A.G.
Maintenant, si la visu ne propose pas non plus de flag "send" et
envoit d'office un télégramme sur toutes les G.A. reliées à l'objet de
communication, mieux vaut ne rien commander avec cette visu ... ou
bien en changer ... ;-)
- - -
Si l'on ne désire pas utiliser une seconde A.G., dédiée au retour
d'état, c'est aussi possible mais c'est moins "propre" et il faut un
petit peu modifier mon explication sur les flags.
(mais la, ce sera pour une autre fois, j'ai les doigts qui
fatiguent ... ;-)).
N.B. : Ne pas oublier que les flags "read" et "update" sont toujours
mutuellement exclusifs (= il ne faut JAMAIS les activer en même temps)
sur un même objet de communication.
D'ou l'utilité de séparer "adresse de groupe pour la commande" et
"adresse de groupe pour le retour d'état", ainsi que de correctement
configurer les flags pour CHAQUE objet de CHAQUE participant, pour
CHAQUE adresse de groupe ...
Un exemple est sans doute plus parlant que de la théorie :
En gros, voici la bonne config des flags pour un "bête" circuit ON/OFF
(une lampe par exemple).
Pré-requis : les objets "retour d'état" ou "information d'état" NE
doivent PAS être dans la même adresse de groupe que les objets de
commande.
1) Objets de communication reliés l'adresse de groupe (=A.G.) de
commande :
- boutons poussoirs (et tout ce qui peut "envoyer" un ordre sur cette
A.G.) : activer les flags "communication", "transmit" et
"write" (ainsi, éventuellement que "update") ; mais absolument
désactiver "read".
Il faut aussi que le flag "send" soit actif pour cette A.G.
- acteur(s) (ou tout ce qui doit "exécuter" l'ordre) : activer les
flags "communication", "read" et "write" (ainsi que, éventuellement,
"transmit") ; mais absolument désactiver "update".
En principe, le flag "send" devrait aussi être actif pour cette A.G.,
sauf dans le cas ou la (ou les) A.G. est destinée à une "commande
centrale" et agit donc sur plusieurs acteurs simultanément (comme par
ex. un "Tout OFF pour le RdC")
2) Objets de communication reliés l'A.G. de "retour d'état" :
- LED des boutons poussoirs (et tout ce qui peut afficher l'état,
comme un canal de visu.) : activer les flags "communication",
"update" et "write" ; mais absolument désactiver "read" et "transmit".
Pour cette A.G., le flag "send" doit aussi être actif (cet objet de
communication ne doit envoyer aucune valeur sur le bus, mais le flag
"send" est nécessaire pour pouvoir envoyer des message de type "read
request" vers l'A.G., ce qui particulièrement nécessaire dans le cas
d'une visu.).
- état de l'acteur (au singulier, car un retour d'état n'a de sens que
pour un acteur unique, donc il ne peut y avoir qu'une seule A.G. liée
à cet objet de communication) : activer les flags "communication",
"read" , ainsi que "transmit" ; mais désactiver "update" et "write".
Pour cette A.G., le flag "send" doit aussi être actif.
- - -
Avec cette config, il est impossible pour une visu de faire s'allumer
ou s'éteindre un lampe lors du démarrage de la visu ; mais, si la visu
doit aussi pouvoir commander la lampe, idéalement cela suppose que la
visu propose 2 objets de communication différents par lampe : un objet
"commande" et un autre objet pour l'affichage de l'état ...
Je ne pense malheureusement pas que ce soit le cas de toutes les
visu. :-(
Dans le cas des visu qui ne proposent qu'un seul objet de
communication, on peut y associer les deux A.G. (commande et retour
d'état) mais il faut absolument veiller à ce que le flag "send" soit
actif pour l'A.G. "commande" et non pour l'autre A.G.
Maintenant, si la visu ne propose pas non plus de flag "send" et
envoit d'office un télégramme sur toutes les G.A. reliées à l'objet de
communication, mieux vaut ne rien commander avec cette visu ... ou
bien en changer ... ;-)
- - -
Si l'on ne désire pas utiliser une seconde A.G., dédiée au retour
d'état, c'est aussi possible mais c'est moins "propre" et il faut un
petit peu modifier mon explication sur les flags.
(mais la, ce sera pour une autre fois, j'ai les doigts qui
fatiguent ... ;-)).
N.B. : Ne pas oublier que les flags "read" et "update" sont toujours
mutuellement exclusifs (= il ne faut JAMAIS les activer en même temps)
sur un même objet de communication.