Informations sur le mode expert Modbus
Traduction de la notice originale
Communication en mode expert
Le mode expert est un ensemble de commandes qui peut être envoyé au module pour obtenir des fonctionnalités supplémentaires.
Adresse
Symbole standard
Type d'échange
Type
Signification
%MWr.m.c.24
CONTROL
Explicite
INT
Signal de commande, changer de protocole
%MWr.m.c.24.0
Explicite
BOOL
Effacer les compteurs locaux
%MWr.m.c.24.1
Explicite
BOOL
Modifier dynamiquement le compte de tentatives en mode maître MODBUS (%MW26)
%MWr.m.c.24.2
Explicite
BOOL
Modifier le délai de réponse des esclaves (%MW28) pour un esclave en particulier (%MW27) en mode maître
%MWr.m.c.24.3
Explicite
BOOL
Modifier le délai par défaut de non prise en compte des esclaves, le caractère reçu indiquant que les esclaves sont ignorés après une réception de trame transmise à l'UC (%MW29)
%MWr.m.c.24.4
Explicite
BOOL
Modifier les synchronisations internes MODBUS RTU t1,5ch (%MW31), t3,5ch (%MW30) et le délai entre commutateurs (%MW32).
La mise à jour de cette valeur risque de perturber le module si celui-ci est en cours de fonctionnement.
%MWr.m.c.24.6
Explicite
BOOL
Modifier le mode de gestion du modem : HALF/FULL DUPLEX
  • Si le bit est défini en même temps que RTS_ON (%MWr.m.c.24.10 fonctionne aussi avec RTS_OFF %MWr.m.c.24.11 et utilise DTR si %MWr.m.r.24.8 ou %MWr.m.r.24.9 est utilisé) le mode de modem half duplex est activé.
  • Si ce bit est défini mais qu'aucun bit RTS ou DTR (%MWr.m.c.24.8, %MWr.m.c.24.9, %MWr.m.c.24.10, %MWr.m.c.24.11) ne l'est, le mode full duplex est activé.
Le bit %MW26 sert à définir le délai de début (StartDelay) et le bit %MW27 le délai de fin (EndDelay). Les bits %MW24.5, %MW24.1 et %MW24.2 ne peuvent donc pas être utilisés simultanément.
REMARQUE : l'utilisateur peut être amené à rétablir l'état correct des signaux RTS/DTR après que la commande a été acceptée.
%MWr.m.c.24.7
SAVE_SLAVE_ADDR
Explicite
BOOL
Enregistrer l'adresse esclave Modbus dans la mémoire FLASH (%MW25).
%MWr.m.c.24.8
DTR_ON
Explicite
BOOL
Définir le signal DTR (tension positive)
%MWr.m.c.24.9
DTR_OFF
Explicite
BOOL
Réinitialiser le signal DTR (tension négative)
%MWr.m.c.24.10
Explicite
BOOL
Définir le signal RTS (tension positive)
%MWr.m.c.24.11
Explicite
BOOL
Réinitialiser le signal RTS (tension négative)
%MWr.m.c.24.12
TO_MODBUS_MASTER
Explicite
BOOL
Basculer en mode maître
%MWr.m.c.24.13
TO_MODBUS_SLAVE
Explicite
BOOL
Basculer en mode esclave
%MWr.m.c.24.14
TO_CHAR_ MODE
Explicite
BOOL
Basculer en mode caractère
%MWr.m.c.25
SLAVE_ADDR
Explicite
INT
Adresse esclave Modbus pour le stockage dans la mémoire FLASH
%MWr.m.c.26
Explicite
INT
LOW BYTE : compte de tentatives en mode maître (MasterRetries) : nombre de tentatives en mode maître [0 à 15], voir %MW24.1
Délai de début (StartDelay) si le bit %MW26.6 est défini. Délai à respecter lorsque le CTS est OK avant de commencer à envoyer la trame. Ce bit est utile pour les modems qui demandent un délai supplémentaire après le CTS ou qui ne gèrent pas le signal CTS (dans ce cas, le RTS doit être connecté au CTS). Ce délai est exprimé en millisecondes, avec une précision de 3 ms environ. Il ne peut être défini qu'en mode RS232.
%MWr.m.c.27
Explicite
INT
LOW BYTE : esclave pour lequel le maître adaptera le délai de réponse [0 à 248, 255=ALL], voir %MW24.2 et %MW28
Délai de fin (EndDelay) si le bit %MW24.6 est défini. Délai à respecter après l'envoi d'une trame, avant d'émettre le signal RTS de façon à donner suffisamment de temps au MODEM pour qu'il envoie la trame avant la fin de communication. Ce délai est exprimé en millisecondes, avec une précision de 3 ms environ. Il ne peut être défini qu'en mode RS232.
%MWr.m.c.28
Explicite
INT
Délai de réponse associé à un esclave en particulier par tranche de 10 ms [1 à 1000], voir %MW24.2 et %MW27
%MWr.m.c.29
Explicite
INT
Délai de non-prise en compte par tranche de 10 ms [1 à 10], voir %MW24.3
%MWr.m.c.30
Explicite
INT
T3,5char : délai intertrames en millisecondes [0 à 10000]. La valeur utilisée dépend de la vitesse. Si elle est inférieure ou supérieure aux valeurs possibles, la limite inférieure ou supérieure est appliquée, et la commande est acceptée. La valeur 0 signifie que la RTU n'a subi aucune transformation.
Le délai de réponse est recalculé.
%MWr.m.c.31
Explicite
INT
T1,5char : délai entre caractères en millisecondes [0 à 9999]. La valeur utilisée dépend de la vitesse. Si elle est inférieure ou supérieure aux valeurs possibles, la limite inférieure ou supérieure est appliquée, et la commande est acceptée. La valeur 0 signifie que T1,5 est calculé comme T3,5ch – 2ch (calcul par défaut).
%MWr.m.c.32
Explicite
INT
Délai maître entre commutateurs en mode RTU [0 à 256] en millisecondes. La valeur 0 signifie « aucun délai » ; si la valeur est inférieure à 10 bits, la valeur minimale de 10 bits est utilisée.
Exemple de code
(* le module NOM côté maître se trouve dans le rack 0 à l'emplacement 9 *)
if HalfModemMaster then
HalfModemMaster:=false;
%MW0.9.0.24:=16#0450;(* basculer en mode half duplex avec RTS, et modifier les synchronisations MODBUS *)
%MW0.9.0.26:=12;(* 12 ms à attendre avant de procéder à l'envoi quand CTS est activé *)
%MW0.9.0.27:=9; (* laisser RTS activé pendant 9 ms après la fin de l'envoi *)
%MW0.9.0.30:=0;
%MW0.9.0.31:=0;(* utiliser la valeur de l'écran de configuration, soit 6 ms *)
%MW0.9.0.32:=50; (* délai de 50 ms à respecter avant l'envoi d'une nouvelle trame *)
write_cmd(%ch0.9.0);(* envoyer une commande et des données à la voie NOM *)
end_if;
(* côté esclave, le NOM se trouve dans le rack 0, à l'emplacement 3 *)
if HalfModemSlave then
HalfModemSlave:=false;
%MW0.3.0.24:=16#0448;(* basculer en mode half duplex avec RTS, et modifier le temps de non prise en compte des esclaves *)
%MW0.3.0.26:=12;(* attendre 12 ms avant de procéder à l'envoi quand CTS est activé *)
%MW0.3.0.27:=9; (* laisser le RTS activé pendant 9 ms après la fin de l'envoi *)
%MW0.3.0.29:=4; (* délai de non prise en compte à respecter : 4*10 ms *)
write_cmd(%ch0.3.0);(* envoyer une commande et des données à la voie NOM *)
end_if;
(* facultatif : envoi automatique de la commande *)
if %S0 or %S1 or %S13 then
memoSendCmd:=true;
end_if;
(* copier chaque cycle d'erreur de module pour détecter une éventuelle disparition de celui-ci *)
memoSendCmd:=%I0.3.0.ERR;
(* si le module est OK, envoyer la commande une fois *)
if FE(memoSendCmd) then
HalfModemSlave:=true;
end_if;
Accès aux registres internes NOM
Pour accéder aux registres internes Nom, il faut activer le mode MODBUS et utiliser l'EF READ_VAR. Exemple de code (le modèle NOM se trouve dans le rack 0, à l'emplacement 3) :
if dataCh030GetChannelGlobalInfo then
read_var(addm('0.3.0'), '%MW', 200, 3, dataCh030Mgt, dataCh030Buff); (* Internal_Reg@200 sont copiés dans le tampon dataCh030Buff *)
dataCh030GetChannelGlobalInfo := false;
end_if;