Bonjour,
Depuis la Beta de ce jour, les commandes sont trés longues, par exemple 10 secondes pour ouvrir le portail, instantané avant.
Et j’ai des erreurs sur le même automate, voir fichier log.
mymodbus_daemon.txt (1,8 Ko)
Bonjour,
Depuis la Beta de ce jour, les commandes sont trés longues, par exemple 10 secondes pour ouvrir le portail, instantané avant.
Et j’ai des erreurs sur le même automate, voir fichier log.
mymodbus_daemon.txt (1,8 Ko)
Bonjour,
Je suis très étonné… J’ai aussi un automate Wago et ça répondait du feu de dieu et sans erreur durant plusieurs heures. Même l’onduleur Huawei SUN2000 répond sans erreur et pourtant c’est une belle merde en terme de comm…
Tu peux m’en dire plus ? Connexion LAN filaire ou WiFi ? Autres équipements MyModbus ?
Configuration complète ? Log complet ?
Si tu as plusieurs commandes, le temps d’attente entre 2 lectures doit être diminué sinon ça va durer des plombes. Passe cette valeur à 0.01 ou quelque chose d’approchant.
Sinon, j’ai identifié un moyen d’améliorer la vitesse d’écriture même si cette valeur est exagérément grande.
Bonjour,
Même problème Sur RPI 4 3 équipements (2 en polling et 1 en cycle)
si je réécris une commande sur un nouvel équipement OK => instantané
par contre sur RPI 5 (test) Debian 12 OK 1 équipement en polling
Patrick
RPI4 Debian 11 Jeedom 4.4.17 Mymodbus Bêta 2024-09-17 01:50
RPI5 Debian 12 Jeedom 4.4.17 bêta Mymodbus Bêta 2024-09-17 01:50
C’est à dire ?
Sur un équipement existant, ça prend plus de temps et sur un nouvel équipement créé sous cette version c’est instantané ?
Si c’est le cas, est-ce que l’ancien démon tourne encore ? En théorie il est stoppé par Jeedom lors de la mise à jour donc ce n’est pas possible, mais on ne sais jamais. Pour confirmer :
ps axf | grep mymodbus et poster le retour ici SVP
Oui c’est instantané sur un nouvel équipement créé pour test avec une commande
Dans un bloc de texte préformaté STP
Icône roue dentée puis </> Texte préformaté
ps axf | grep mymodbus
498971 pts/0 S+ 0:00 | \_ grep --color=auto mymodbus
392183 ? S 0:50 /var/www/html/plugins/mymodbus/core/class/../../resources/venv/bin/python3 /var/www/html/plugins/mymodbus/resources/mymodbus/mymodbusd.py --loglevel error --socketport 55502 --callback http://127.0.0.1:80/plugins/mymodbus/core/php/jeemymodbus.php --apikey piiM2rh8FUK8Ogl13p1a2h3Snip3qaDPmuV7rHFVVvrvK7k7l641dMTMhaqQOqku --pid /tmp/jeedom/mymodbus/daemon.pid --json [{"id":"452","name":"ModBus Automatismes","eqProtocol":"tcp","eqRefreshMode":"polling","eqPolling":"45","eqTimeout":"5","eqWriteCmdCheckTimeout":"5","eqRetries":"3","eqFirstDelay":"0","eqErrorDelay":"1","eqAddr":"192.168.1.21","eqPort":"510","cmds":[{"id":"4997","name":"Alim_Cam_Pergola","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"817","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5000","name":"Alim_Cam_Salon","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"816","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5009","name":"Eclairage_Salon","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"803","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5010","name":"Eclairage_Cuisine","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"804","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5020","name":"Eclairage_Jardin","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"813","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5021","name":"Eclairage_Terrasse","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"814","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5022","name":"Cpt Presences Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"74","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5023","name":"Cpt Presences Cour Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"76","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5026","name":"D\u00e9tecteur Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"823","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5027","name":"D\u00e9tecteur Cour Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"815","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5034","name":"Eclairage_Pergola","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"818","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5035","name":"Cpt_Pres_Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"58","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5036","name":"Detec_Pres_Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"2","cmdFormat":"bit","cmdAddress":"0","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5056","name":"Detec_Cour","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"822","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5057","name":"Detec_Garage","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"819","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5058","name":"cpt Pr\u00e9sence Cour","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"81","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5059","name":"cpt Pres Garage","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"83","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5060","name":"Eclairage_Garage","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"805","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5061","name":"Eclairage_Cour","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"806","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5065","name":"Autor Enreg Cams","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"879","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5704","name":"Cde_Alim_Sonnette","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"880","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5715","name":"Cde_Alim_Repeteur_Wifi","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"881","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"}]},{"id":"126","name":"Modbus OBA8","eqProtocol":"tcp","eqRefreshMode":"polling","eqPolling":"45","eqTimeout":"5","eqWriteCmdCheckTimeout":"5","eqRetries":"3","eqFirstDelay":"0","eqErrorDelay":"1","eqAddr":"192.168.1.21","eqPort":"510","cmds":[{"id":"985","name":"Auto Pompe Puits","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"808","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"986","name":"Manu Pompe Puits","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"808","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"994","name":"Info A M Pompe","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"808","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1211","name":"Porte 1 Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"2","cmdFormat":"bit","cmdAddress":"1","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1215","name":"Cpt Ouv Portes Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"62","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1133","name":"Manu Marche Ppe = 1","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"809","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1134","name":"Manu Marche Ppe = 0","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"809","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1261","name":"Manu At Ppe = 0","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"810","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1260","name":"Manu At Ppe = 1","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"810","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1137","name":"Info Marche Manu","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"809","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1262","name":"Info Arret Manu","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"810","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1212","name":"Porte 2 Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"2","cmdFormat":"bit","cmdAddress":"2","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1088","name":"Acquit defaut Pompe=1","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"811","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1089","name":"Acquit Defaut Pompe=0","type":"action","cmdSlave":"1","cmdFctModbus":"5","cmdFormat":"bit","cmdAddress":"811","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1090","name":"Info Acquit Defaut","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"811","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1344","name":"Defaut Pompe","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"812","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"996","name":"Pres Pompe","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"56","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1213","name":"Porte 3 Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"2","cmdFormat":"bit","cmdAddress":"3","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"5140","name":"Cpt D\u00e9marrage Pompe","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"72","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1217","name":"Porte Garage","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"821","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1202","name":"Temperature Garage","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"59","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1203","name":"Temperature Exterieur","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"60","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1805","name":"Cde Enreg. Camera Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"872","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1808","name":"Cde Enreg. Camera Garage","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"875","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"1806","name":"Cde Enreg. Camera Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"1","cmdFormat":"bit","cmdAddress":"873","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"7754","name":"Cpt Enreg Cam Garage","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"93","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"7753","name":"Cpt Enreg Cam Pergola","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"91","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"},{"id":"7752","name":"Cpt Enreg Cam Jardin","type":"info","cmdSlave":"1","cmdFctModbus":"3","cmdFormat":"H","cmdAddress":"89","cmdFrequency":"1","cmdInvertBytes":"0","cmdInvertWords":"0","repeat":"0"}]}]
Pareil pour toi, 5 secondes c’est un peu exagéré… C’est le temps d’attente entre chaque commande info.
Je ne reviens pas sur le fait que ça peut être optimisé (dans le démon) et ça le sera ce soir, mais n’empêche que 5 secondes c’est beaucoup.
Sur l’équipement avec 10 commandes info, ça fait déjà 10 * 5 secondes d’attente + le temps d’exécution des requêtes. Le polling à 45 secondes est très optimiste.
J’expliquerai ces paramètres en détail dans la doc.
Merci! c’est beaucoup mieux avec 0.01
Ca peut aussi être mis à 0, les lectures seront un peu plus rapides mais les écritures devront peut-être attendre un peu.
J’ai quand même quelques défauts aléatoires. (j’ai 20 info binaire env. sur le wago)
mymodbus_daemon (2).txt (3,9 Ko)
C’est un automate Wago ou un coupleur Ethernet Modbus ?
Il serait intéressant de faire un ping -t en parallèle pour voir si ce sont des déconnexions réseau. Chez moi c’est câblé et je n’ai absolument aucune erreur.
Passe les log en debug (redémarrage du démon nécessaire) pour une demi-heure pour voir.
mymodbus_daemon (3).txt (4,6 Mo)
C’est un Wago 750-352 (Coupleur de bus de terrain).
Il est câblé, mais je n’avais pas de défaut avant… du moins visible
[2024-09-17 13:50:31][DEBUG] : Connection lost Wago due to None
[2024-09-17 13:50:31][DEBUG] : callback_disconnected called: None
[2024-09-17 13:50:31][DEBUG] : Wait Wago 100.0 ms before reconnecting.
[2024-09-17 13:50:31][DEBUG] : Wago: 'one_cycle_read' treatment cmd_id = 2642
[2024-09-17 13:50:31][DEBUG] : Wago: 'one_cycle_read'/Eclairage Ch Eliott ETAT: requesting read
[2024-09-17 13:50:31][ERROR] : Wago/Eclairage Ch Eliott ETAT: exception during read request on slave id 1, address 2 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
[2024-09-17 13:50:31][DEBUG] : Connecting Wago
[2024-09-17 13:50:31][DEBUG] : Connected to Wago
On voit que pymodbus perd la connexion puis l’exception est levée puis pymodbus se reconnecte tout seul.
Sur l’ensemble des log c’est la seule erreur. Ce serait interéssant de capturer un moment où plusieurs commandes à la suite sont en erreur comme :
[2024-09-17 11:48:03][ERROR] : Wago/Eclairage Cuisine ETAT: exception during read request on slave id 1, address 8 -> Modbus Error: [Connection] Client is not connected
[2024-09-17 11:48:04][ERROR] : Wago/Eclairage Bar ETAT: exception during read request on slave id 1, address 9 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
[2024-09-17 11:48:05][ERROR] : Wago/Eclairage Ch Eliott ETAT: exception during read request on slave id 1, address 2 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
[2024-09-17 11:48:06][ERROR] : Wago/Eclairage Ch Lily ETAT: exception during read request on slave id 1, address 13 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
[2024-09-17 11:48:07][ERROR] : Wago/Eclairage SB principale ETAT: exception during read request on slave id 1, address 11 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
[2024-09-17 11:48:08][ERROR] : Wago/Eclairage SB douche ETAT: exception during read request on slave id 1, address 12 -> Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.1.24:502]
en tout cas ça fait 2 ajustements que j’ai en tête pour ce soir :
Merci pour tes retours !
Après vérification et test, tu as 126 déconnexions du coupleur Ethernet durant les 34 minutes de log debug. C’est loggé avec cette ligne :
[2024-09-17 13:51:22][DEBUG] : -> transport: received eof
Tu peux vérifier, :126 occurrences…
Ton coupleur coupe la connexion alors même qu’une requête vient d’être lancée. Mon contrôleur attend 1 minute après la dernière requête (je viens de tester).
Et parfois le coupleur insiste pour fermer la communication :
[2024-09-17 13:57:51][DEBUG] : -> transport: received eof
[2024-09-17 13:57:51][DEBUG] : Connection lost Wago due to None
[2024-09-17 13:57:51][DEBUG] : callback_disconnected called: None
[2024-09-17 13:57:51][DEBUG] : Wait Wago 100.0 ms before reconnecting.
[2024-09-17 13:57:51][DEBUG] : Connecting Wago
[2024-09-17 13:57:51][DEBUG] : Connected to Wago
[2024-09-17 13:57:51][DEBUG] : Resetting frame - Current Frame in buffer -
[2024-09-17 13:57:55][DEBUG] : -> transport: received eof
[2024-09-17 13:57:55][DEBUG] : Connection lost Wago due to None
[2024-09-17 13:57:55][DEBUG] : callback_disconnected called: None
[2024-09-17 13:57:55][DEBUG] : Wait Wago 100.0 ms before reconnecting.
[2024-09-17 13:57:55][DEBUG] : -> transport: received eof
[2024-09-17 13:57:55][DEBUG] : Connecting Wago
[2024-09-17 13:57:55][DEBUG] : Connected to Wago
Je fais des essais de mon coté pour simuler le comportement de ton coupleur. J’ai déjà une solution a priori fonctionnelle, elle sera postée cette nuit.
Bonjour,
Merci, J’ai fait la mise à jour.
Ci joint le log sur 20 minutes.
mymodbus_daemon (4).txt (5,7 Mo)
Plus une seule erreur → cool !
En voyant les log, je m’aperçois que tu peux LARGEMENT optimiser les requêtes de lecture avec des plages de registres.
Pour ton équipement « Adam Pt100-1 », tu peux faire une seule requête avec 0 [6] en adresse et basculer les commandes info pour utiliser cette plage de registres.
Résultat : 1 seule requête au lieu de 6
Pour ton équipement « Adam Pt100-2 », tu peux faire une seule requête avec 0 [5] en adresse et basculer les commandes info pour utiliser cette plage de registres.
Résultat : 1 seule requête au lieu de 5
Pour ton équipement « Wago », tu peux faire 2 requêtes avec 1 [17] et 529 [4] en adresse et basculer les commandes info pour utiliser la bonne plage de registres.
Résultat : 2 requêtes au lieu de 31
Sur les Zelio, tu lis 2 fois le registre 48, ce sont des lectures d’octet c’est pour ça qu’il y a 2 requêtes à la même adresse ?
Pour les 2 Zelio aussi, il est possible d’optimiser les requêtes.
Bonjour @Michel_F
*Pour ton équipement « Adam Pt100-1 », tu peux faire une seule requête avec 0 [6] en adresse et basculer les commandes info pour utiliser cette plage de registres.
Résultat : 1 seule requête au lieu de 6
Je ne comprend pas comment je peux lire 6 Holding registers d’un coup, merci de ma faire un exemple de config stp.
*Sur les Zelio, tu lis 2 fois le registre 48, ce sont des lectures d’octet c’est pour ça qu’il y a 2 requêtes à la même adresse ?
Oui #value# &2 et #value# &4
PS: D’ailleurs comment fait ton pour Ecrire un seul octet?
0 [6] avec le type de variable Plage de registres (ça va lire les 6 registres de 0 à 5 d’un coup, c’est fait pour ça)Depuis plage de registresDe la même manière tu peux donc faire une plage de registres de longueur 1 registre et lire 2 fois dans cette plage
C’est un peu tricky… Comme on ne peut écrire que le registre en entier, il faut faire les lectures des 2 octets (LSB et MSB) qui composent le mot (évidemment via une plage de registres). Disons que ces 2 commandes sont #byte_low# (LSB) et #byte_high# (MSB) pour l’exemple.
Pour écrire un octet, il faut écrire le registre entier, donc si on veut modifier #byte_low#, il faut créer une commande action de type slider avec en option/valeur #value# + 256 * #byte_high#.
Et si c’est #byte_high# que tu veux écrire il faut mettre #byte_low# + #value# * 256.
C’est juste un exemple pour le principe, en vrai il faut tout le chemin #[tout le][chemin vers][byte_low]#