Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/02/2017, à 18:08

BenjiBoy

[RESOLU] Script python modbus RTU

Hello tout le monde,

voilà je suis en train d'essayer de faire un script très basique.
J'ai une centrale d'acquisition (de marque Campbell pour les connaisseur) qui parmis tous les protocol qu'elle utilise peut aussi faire du modbus.
C'est pas vraiment ce que je préfère mais il se trouve que c'est la seule solution, pour tout un tas de raisons que j'évoquerai si nécessaire.

#!/usr/bin/env python
import minimalmodbus as mmbus
import serial
import datetime
import time


try:
    mmbus.CLOSE_PORT_AFTER_EACH_CALL = True
    ins = mmbus.Instrument('/dev/ttyUSB0', 4) # port name, slave address (in decimal)
    ins.debug = False
    ins.serial.baudrate = 9600
    ins.serial.bytesize = 8
    ins.serial.parity = serial.PARITY_NONE
    ins.serial.stopbits = 2
    ins.serial.timeout = 5

    test1 = ins.read_register(1, 1)
    time.sleep(0.1)
    test2 = ins.read_register(2, 1)
    time.sleep(0.1)
    test3 = ins.read_register(3, 1)
    time.sleep(0.1)


    f = open('data.txt', 'w')
    f.write(str(datetime.datetime.now()) + "/" + str(test1) + "/" + str(test2) + "/" + str(test3) + "\n")
    f.close()

    g = open('log.txt', 'a')
    g.write(str(datetime.datetime.now()) + "/" + str(test1) + "/" + str(test2) + "/" + str(test3) + "\n")
    g.close()


except Exception, e:
    print str(datetime.datetime.now())+ "/" + str(e)

Donc, le script est en python et utilise la librairie "minimalmodbus" qui a fonctionné sur un autre périphérique. Sauf que là j'ai en réponse un message d'erreur :

2017-02-13 16:57:24.622481/The registerdata length does not match number of register bytes. Given 0 and 2.

Et je n'arrive pas à l'interpréter.
Est-ce que vous avez des idées, chers amis ?

Bonne soirée,
a+

Dernière modification par BenjiBoy (Le 28/03/2017, à 10:02)

Hors ligne

#2 Le 13/02/2017, à 18:16

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Ah tiens je percute en lisant "python" qu'il y a une rubrique de développement dans le forum ...
Si je peux déplacer le topic je m'en occupe si je n'ai pas la possibilité merci aux modo de le faire à ma place ?

Bonne soirée

Hors ligne

#3 Le 13/02/2017, à 18:26

pingouinux

Re : [RESOLU] Script python modbus RTU

Bonjour,
Pour avoir des informations supplémentaires, tu peux déjà lancer un raise après le print de l'erreur.

Hors ligne

#4 Le 13/02/2017, à 18:28

BenjiBoy

Re : [RESOLU] Script python modbus RTU

En complément et parce que j'ai encore bu trop de café, la réponse que j'obtiens en prenant l'option "debug" vrai donne :

MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x04\x03\x00\x01\x00\x01\xd5\x9f' (04 03 00 01 00 01 D5 9F)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1487003138200.7 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x04\x03\x000\xf1' (04 03 00 30 F1) (5 bytes), roundtrip time: 5005.1 ms. Timeout setting: 5000.0 ms.

2017-02-13 17:25:43.310303/The registerdata length does not match number of register bytes. Given 0 and 2.

Et pour les cador de l'instrumentation voilà les documentation qui parlent du modbus pour les deux numériseurs que j'utilise le plus souvent, c'est surtout dans le langage de programmation de la marque Campbell (CRBasic qui doit être une forme de C mais je n'y connais rien non plus ...)

CR200:
https://s.campbellsci.com/documents/us/ … /cr200.pdf

CR1000:
https://www.campbellsci.fr/cr1000

Hors ligne

#5 Le 13/02/2017, à 19:31

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Hello, je le mets ou le raise ?
Dans le terminal ou dans le code python ?

a pluche

Hors ligne

#6 Le 13/02/2017, à 19:55

pingouinux

Re : [RESOLU] Script python modbus RTU

je le mets ou le raise ?

Dans le bloc except, au même niveau que le print. C'est pour relancer l'exception précédente.

Hors ligne

#7 Le 14/02/2017, à 09:21

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Voici la nouvelle réponse du script après avoir intégré raise :

MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x04\x03\x00\x01\x00\x01\xd5\x9f' (04 03 00 01 00 01 D5 9F)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1487056729597.9 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x04\x03\x000\xf1' (04 03 00 30 F1) (5 bytes), roundtrip time: 5002.6 ms. Timeout setting: 5000.0 ms.

2017-02-14 08:18:54.704984/The registerdata length does not match number of register bytes. Given 0 and 2.
Traceback (most recent call last):
  File "./MODBUS_CR200.py", line 18, in <module>
    test1 = ins.read_register(1, 1)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 258, in read_register
    return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 732, in _genericCommand
    'Given {0!r} and {1!r}.'.format(len(registerdata), numberOfRegisterBytes))
ValueError: The registerdata length does not match number of register bytes. Given 0 and 2.

J'ai peur de ne pas bien comprendre mais je sens qu'il y a des indices !

Dernière modification par BenjiBoy (Le 14/02/2017, à 09:22)

Hors ligne

#8 Le 14/02/2017, à 09:46

pingouinux

Re : [RESOLU] Script python modbus RTU

La ligne qui produit l'erreur est donc celle-ci

  File "./MODBUS_CR200.py", line 18, in <module>
    test1 = ins.read_register(1, 1)

Ne connaissant pas minimalmodbus, je ne peux pas t'aider davantage, mais si un spécialiste passe par là, on a maintenant des informations précises sur l'erreur.

Hors ligne

#9 Le 14/02/2017, à 09:55

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Peut-être que je ne demande tout simplement pas le bon registre en réponse !
J'ai regardé des exemple de code avec minimalmodbus ... Ben c'est pas bien clair (nettement plus complexe comme code).

Mon topic aurait peut-être de meilleur chance s'il était posté sur la bonne catégorie ?
Merci pour ton aide pingouinux -> sais-tu comment je peux déplacer mon topic ?

Dernière modification par BenjiBoy (Le 14/02/2017, à 10:01)

Hors ligne

#10 Le 14/02/2017, à 12:40

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Bon du coup j'ai pas trouvé comment déplacer le sujet, je clos celui-ci et en ouvre un autre dans le forum dédié à la programmation (dont python !).
Bonne journée.

Hors ligne

#11 Le 14/02/2017, à 12:48

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Bonjour à tous,

j'avais ouvert un sujet dans la rubrique "terminal, scripts et ligne de commande" mais en fait la meilleur section est probablement celle-ci.

Donc voilà je suis en train d'essayer de faire un script très basique.
J'ai une centrale d'acquisition (de marque Campbell pour les connaisseurs) qui parmis tous les protocoles qu'elle utilise peut entre-autre faire du modbus RTU.
C'est pas vraiment ce que je préfère mais il se trouve que c'est la seule solution, pour tout un tas de raisons que j'évoquerai si nécessaire.

Voici mon code :

#!/usr/bin/env python
import minimalmodbus as mmbus
import serial
import datetime
import time


try:
    mmbus.CLOSE_PORT_AFTER_EACH_CALL = False
    ins = mmbus.Instrument('/dev/ttyUSB0', 4, mode='rtu') # port name, slave address (in decimal)
    ins.debug = True
    ins.serial.baudrate = 9600
    ins.serial.bytesize = 8
    ins.serial.parity = serial.PARITY_NONE
    ins.serial.stopbits = 2
    ins.serial.timeout = 5

    test1 = ins.read_register(1, 1)
    time.sleep(0.5)
    test2 = ins.read_register(2, 1)
    time.sleep(0.5)
    test3 = ins.read_register(3, 1)
    time.sleep(0.5)


    f = open('data.txt', 'w')
    f.write(str(datetime.datetime.now()) + "/" + str(test1) + "/" + str(test2) + "/" + str(test3) + "\n")
    f.close()

    g = open('log.txt', 'a')
    g.write(str(datetime.datetime.now()) + "/" + str(test1) + "/" + str(test2) + "/" + str(test3) + "\n")
    g.close()


except Exception, e:
    print str(datetime.datetime.now())+ "/" + str(e)
    raise

Et le résultat une fois que je l'ai lancé :


MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x04\x03\x00\x01\x00\x01\xd5\x9f' (04 03 00 01 00 01 D5 9F)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1487056729597.9 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x04\x03\x000\xf1' (04 03 00 30 F1) (5 bytes), roundtrip time: 5002.6 ms. Timeout setting: 5000.0 ms.

2017-02-14 08:18:54.704984/The registerdata length does not match number of register bytes. Given 0 and 2.
Traceback (most recent call last):
  File "./MODBUS_CR200.py", line 18, in <module>
    test1 = ins.read_register(1, 1)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 258, in read_register
    return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 732, in _genericCommand
    'Given {0!r} and {1!r}.'.format(len(registerdata), numberOfRegisterBytes))
ValueError: The registerdata length does not match number of register bytes. Given 0 and 2.

A priori il s'agirait d'un problème de registre (merci pingouinux) et je veux bien le croire parce que la documentation du numériseur, p139, indique les valeurs de registre qui ont l'air toute autre que, 1, 2 3.
La doc en question.

S'il y a un cador de python qui en plus est familier du protocol modbus m'est avis que ça ne lui prendrai pas longtemps pour piger le problème !

En vous remerciant pour votre aide,

bonne journée

Dernière modification par BenjiBoy (Le 14/02/2017, à 12:56)

Hors ligne

#12 Le 14/02/2017, à 12:55

pingouinux

Re : [RESOLU] Script python modbus RTU

Pour déplacer une discussion, je suppose qu'il suffit d'aller à ton premier message, cliquer sur Signaler aux modérateurs, et le leur demander.

Hors ligne

#13 Le 14/02/2017, à 12:55

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Ah tiens j'ai essayé un autre truc, apparemment le RTU c'est pas comme l'ASCII il faut faire c'est requête sous la forme 0x0001 ... Du coup j'ai essayé d'autre valeur qui, bien que ça ne doit pas être les bonne, semblent donenr une réponse mais je sais pas comment la traduire !


MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x04\x03\x10\x00\x00\x01\x80\x9f' (04 03 10 00 00 01 80 9F)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1487069521012.2 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x04\x83\x02\xd0\xf0' (04 83 02 D0 F0) (5 bytes), roundtrip time: 5005.1 ms. Timeout setting: 5000.0 ms.

2017-02-14 11:52:06.017804/The slave is indicating an error. The response is: '\x04\x83\x02\xd0\xf0'
Traceback (most recent call last):
  File "./MODBUS_CR200.py", line 18, in <module>
    test1 = ins.read_register(0x1000)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 258, in read_register
    return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 697, in _genericCommand
    payloadFromSlave = self._performCommand(functioncode, payloadToSlave)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 798, in _performCommand
    payloadFromSlave = _extractPayload(response, self.address, self.mode, functioncode)
  File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 1088, in _extractPayload
    raise ValueError('The slave is indicating an error. The response is: {!r}'.format(response))
ValueError: The slave is indicating an error. The response is: '\x04\x83\x02\xd0\xf0'

Hors ligne

#14 Le 14/02/2017, à 14:04

cqfd93

Re : [RESOLU] Script python modbus RTU

Bonjour,

Effectivement, il suffisait de demander le déplacement. J'ai fusionné les deux sujets.


cqfd93

Hors ligne

#15 Le 14/02/2017, à 15:18

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Ah ok je pensais que "signaler" le message revenait à le déclarer comme indésirable, au temps pour moi.
Merci cqfd93 !

Hors ligne

#16 Le 15/02/2017, à 14:20

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Hello, de l'avancement !
Déjà j'ai eu des conseils des gars de chez Campbell, le programme produit de la données lisible en modbus, j'en suis maitnenant certain.
Sur un logiciel windows j'ai un outil pour lire à la volée et il y a désormais bien des valeurs.

Mais ... Sur mon programme python, j'ai toujours un retour d'erreur (le même). Sur le soft windows il pousse une requête qui n'est pas la même que celle générée par mon python, et je ne pige pas pourquoi.

Les messages retours varient légèrement mais on la même forme :

ValueError: The slave is indicating an error. The response is: '\x04\x83\x02\xd0\xf0'

avec \x04\x83\x02\xd0\xf0 ou \x04\x83\x02\xc0\xf1 ou encore \x04\x84\x02\xc2\xc1

Des idées ?

Dernière modification par BenjiBoy (Le 15/02/2017, à 14:22)

Hors ligne

#17 Le 15/02/2017, à 15:12

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Alors du mieux, encore.
Une modification, à la place de la fonction "read-register" j'utilise read_registers" qui semble pouvoir lire une réponse de 16bit (et uniquement celle-ci).
Et là paf, j'ai des valeurs numériques :

#!/usr/bin/env python
import minimalmodbus as mmbus
import serial
import datetime
import time



mmbus.CLOSE_PORT_AFTER_EACH_CALL = True
ins = mmbus.Instrument('/dev/ttyUSB0', 1, mode='rtu') # port name, slave address (in decimal)
ins.debug = True
ins.serial.baudrate = 9600
ins.serial.bytesize = 8
ins.serial.parity = serial.PARITY_NONE
ins.serial.stopbits = 1
ins.serial.timeout = 0.5

values = ins.read_registers(1,6,3)
print(values)

Ce qui me donne une réponse type :

MinimalModbus debug mode. Writing to instrument (expecting 13 bytes back): '\x01\x03\x00\x01\x00\x04\x15\xc9' (01 03 00 01 00 04 15 C9)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1487163967890.8 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x01\x03\x08q\xa7DD\x00\x00\x00\x00z\xbe' (01 03 08 71 A7 44 44 00 00 00 00 7A BE) (13 bytes), roundtrip time: 26.6 ms. Timeout setting: 500.0 ms.

[29095, 17476, 0, 0]

Mais, mais, mais ... Ok ce sont des chiffres mais qui n'ont rien à voir avec les mesures. Pas juste un problème de virgule, il n'y a juste pas de lien entre les valeurs lu par python et les vraies.

Des idées ?

[EDIT] précision, en fait j'interroge les registres de 1 à 4 mais théoriquement, selon la doc les valeurs mesurées sont plus sur les registres 30000 et/ou 40000. Mais là je retombe sur la même erreur cité plus haut quand j'interroge en python. Peut-être encore une histoire de bit. (non pas une histoire cochonne... Désolé je saigne du nez à force de lire des doc)

Dernière modification par BenjiBoy (Le 15/02/2017, à 15:19)

Hors ligne

#18 Le 23/03/2017, à 12:44

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Bonjour,
du nouveau, un peu.
Alors déjà un truc : le numériseur sort des valeurs sur 2 registres (une valeur "float" de 16bits), donc inutile d'essayer de lire les registres individuellement.

C'est donc la commande read_float qui convient. Et effectivement j'ai des valeurs mais ... C'est encore n'importe quoi ; j'ai contacté la personne qui a réalisé le soft / driver minimalmodbus pour lui demander son avis, parce que c'est vraiment louche.
J'ai un petit soft gratuit sur windows qui lit le modbus RTU et là je vois des valeurs tout à fait cohérentes, mais dès que j'essaie de les récupérer sur python, c'est des trucs complètement hors limite.



Je reste donc cruellement en recherche de solution, si vous en avez, même un début, je suis preneur.

Hors ligne

#19 Le 24/03/2017, à 10:06

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Bonjour,
j'ai également dégoté un autre utilitaire "pymodbus" mais qui semble un véritable usine à gaz en comparaison de minimalmodbus (qui porte peut-être finalement bien son nom).
Si jamais ...
Je sombre, please help.

Hors ligne

#20 Le 26/03/2017, à 17:14

eiger

Re : [RESOLU] Script python modbus RTU

Salut,

Il y a plein de trucs pas clairs dans tes exemples et explications.

1. Pour commencer, un registre Modbus contient toujours 16 Bits ( 2 octets ).
2. Un float sera en général codé sur 32 bits (format IEEE 754 standard), donc sur 2 registres, pas 4, ou 6
3. Tu ne précises pas l'endianness de ton appareil. Il est possible que tu doives inverser les 2 registres avant d'interpréter la valeur en float.
Voir par exemple https://minimalmodbus.readthedocs.io/en … byte-order. À noter que "wrong" est une interprétation subjective de l'auteur du module Python, puisque le protocole Modbus d'origine ne connaît pas le type float.
4. Le manuel de ton appareil indique que les registres se trouvent à partir de l'adresse 30000. Pourquoi essayer de lire absolument à partir de l'adresse 1 ???
D'après le manuel, on trouve les "coils" à partir de 1, qui correspondent à des variables booléennes. Je vois mal comment tu pourrais lire un float à cette adresse.

Autrement dit : est-ce que tu sais ce que tu veux lire (un float, plusieurs float ?) et à quelle adresse ?
Je te conseille de commencer par lire un float à la bonne adresse. Si la valeur obtenue n'a aucun sens, essaie de suivre les indications dans le lien ci-dessus.

Hors ligne

#21 Le 27/03/2017, à 15:14

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Bonjour eiger,
merci pour ta réponse, tu trouveras les miennes par points :

1. Ok.
2. Tout à fait, les float campbell sont 32 bits, sur 2 registres, mais les 64bits le sont sur 4. Il ne me semble pas avoir dit autre chose ? Et c'est bien le 32bits / 2 registres qui est dans mon cas.
3. La CR200X est en ABCD, il précisé dans le manuel qu'on ne peut pas la programmer autrement (elle ne le supporte pas)
4. En l'occurrence et comme je l'ai dit un peu tout du long de mon long topic, la requête sur les registres 3000X ou 40000X n'abouti systématiquement que sur une erreur 02 "adresse illégale". Il n'y a étonnamment que les premières adresses qui donnent quelque chose. Mais ce n'est que le driver minimalmodbus qui abouti à cela, le soft windows, lui, trouve des valeurs correctes, sur les bons registers. C'est pour ça que j'ai écris au programmeur de minimalmodbus pour lui faire part de ce résultat (et bien qu'il m'ait répondu, je n'ai pas encore de réponse là dessus).


Autrement dit : est-ce que tu sais ce que tu veux lire (un float, plusieurs float ?) et à quelle adresse ?
Oui bien sûr : plusieurs valeurs type float 32 sur plusieurs registres. sachant que le nombre de valeur, et de fait registre, est paramétrable (ça c'est la partie programmation Campbell qui est maîtrisée).

Je te conseille de commencer par lire un float à la bonne adresse. Si la valeur obtenue n'a aucun sens, essaie de suivre les indications dans le lien ci-dessus.
Je suis dessus et essaie d'obtenir quelques chose (autres chose qu'une erreur 02) aux registres 3000X / 4000X. Pour l'instant en vain, ceci dit.

Dernière modification par BenjiBoy (Le 27/03/2017, à 15:17)

Hors ligne

#22 Le 27/03/2017, à 15:44

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Oh, je crois que tu as raison eiger : j'ai une valeur potable en inversant les deux valeurs de payload (non ACSII) en hexa.
Pourtant j'ai relu la doc de mon umériseur, il est dit qu'elle est en ABCD ? Je vais faire la remarque au fournisseur, il aura peut-être une explication ; ils font très souvent des mises à jour et je crois qu'il y a extrêmement peu de monde qui utilise le modbus comme ça.
En tout cas tu m'as donné un très bonne piste.

Mais, car il y a un mais, je trouve les bonne valeur sur le registre 0, plutôt que 30000. Ca, ça reste à élucider.
Je tiens au tourant,

a+

Hors ligne

#23 Le 28/03/2017, à 09:18

BenjiBoy

Re : [RESOLU] Script python modbus RTU

Hello,
je crois que c'est bon.
Petites remarques :
- il semblerait qu'il ne faille pas demander les registres 3000x ou 4000x mais qu'il faille utiliser les "function code" de la fonction de lecture de registre (03 & 04) ce qui créer l'offset de la demande, directement.
- Pour une raison que j'ignore, il faut lire d'abord l'ensemble des registres et les placer en variable plutôt que de le faire 2 par 2, sinon ça n'aboutis pas.
- Les valeurs float sur le matériel campbell est soit en ordre normal soit en inverse, et minimalmodbus a une fonction pour la remettre en ordre CDAB (merci eiger)
Mon prog (executable bash en python) :

#!/usr/bin/env python

#imports

import minimalmodbus as mmbus
#necessaire dns certain cas de le mettre ici specifiquement
mmbus.CLOSE_PORT_AFTER_EACH_CALL = True

import serial
import time

#configuration du peripherique avec lequel communiquer 

ins = mmbus.Instrument('/dev/ttyUSB0', 1, mode='rtu') # port name, slave address (in decimal)
ins.debug = True #info pratique
ins.serial.baudrate = 9600 #valeur unique pour les CR200X
ins.serial.bytesize = 8
ins.serial.parity = serial.PARITY_NONE
ins.serial.stopbits = 2
ins.serial.timeout = 1

# mettre "time.sleep(0.5)" entre chaque recuperation de valeur



values = ins.read_registers(0, numberOfRegisters=6, functioncode=3)
voltage = ((mmbus._numToTwoByteString(values[1])) + (mmbus._numToTwoByteString(values[0])))
minbat = ((mmbus._numToTwoByteString(values[3])) + (mmbus._numToTwoByteString(values[2])))
counter = ((mmbus._numToTwoByteString(values[5])) + (mmbus._numToTwoByteString(values[4])))

floatvalue1 = mmbus._bytestringToFloat(voltage)
floatvalue2 = mmbus._bytestringToFloat(minbat)
floatvalue3 = mmbus._bytestringToFloat(counter)

print(ins.read_registers(0, numberOfRegisters=6, functioncode=3))
print(floatvalue1)
print(floatvalue2)
print(floatvalue3)

Merci beaucoup pour votre aide,
à bientôt !

Hors ligne