[Python] R: Registri modbus

Vinny Mautone vinny74man a gmail.com
Gio 17 Feb 2022 07:34:30 CET


Studiando un pò sono riuscito a scrivere questa funzione che fa il suo
dovere, ma volevo capire se era la strada giusta o si potesse velocizzare
un po, comunque questa è la funzione

def reg_to_string(reg):
s = ''
for ele in reg:
if ele:
b = format(ele, '016b')  # converto il registro da decimale in binario
ch = chr(int(b[:8], 2))  # prendo i primi 8 bit e li converto in char
if ch.isalnum():  # controllo che sia un numero o una lettera
s += ch  # lo aggiungo alla stringa
ch = chr(int(b[8:], 2))  # faccio la stessa cosa con gli altri 8 bit
if ch.isalnum():
s += ch
return s  # ritorno la stringa

Grazie per eventuali correzioni o miglioramenti

Il giorno gio 17 feb 2022 alle ore 06:18 Vinny Mautone <vinny74man a gmail.com>
ha scritto:

> Ok scusate questa la lista che leggo dai 6 rgistri
> [21070, 12601, 12340, 12593, 12593, 13312]
> e indicano il serial number del dispositivo che è questo
> RN190411114
>
> Il giorno gio 17 feb 2022 alle ore 00:27 Attilio Menegon <
> attilio.menegon a tecnoemmesnc.it> ha scritto:
>
>> Ciao
>>
>> Mi sembra di capire  che acquisisci i n. 6 registri  e ci fai l’esempio:
>>
>> ----------------------------------------
>>
>> quando li vada a leggere il dato restituito è in questo modo
>>
>>
>>
>> [3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio
>>
>>
>>
>> ogni elemento della lista è un registro da 16bit questo in effetti è una
>> stringa di 12 caratteri,  quello che non riesco a fare è rendere questa
>> lista la stringa equivalente.
>>
>> ---------------------------------------
>>
>> Se tu posti la lista che realmente acquisì e la stringa di 12
>> caratteristi che ti aspetti di ottenere dalla trasformazione, penso che
>> qualcuno ti potrebbe aiutare nella comprensione e trasformazione……
>>
>> Viceversa è un po’ dura capire cosa non riesci a decifrare.
>>
>>
>>
>> Attilio Menegon
>>
>>
>>
>> *Da:* Python <python-bounces a lists.python.it> *Per conto di *Vinny
>> Mautone
>> *Inviato:* mercoledì 16 febbraio 2022 17:33
>> *A:* Discussioni generali sul linguaggio Python <python a lists.python.it>
>> *Oggetto:* Re: [Python] Registri modbus
>>
>>
>>
>> Il mio problema non è leggere i registri quelli li leggo tranquillamente,
>> è che dopo non riesco a renderli comprensibili.
>>
>> Mi spiego meglio ho un dato che occupa 6 registri e quando li vado a
>> leggere il dato restituito è in questo modo
>>
>>
>>
>> [3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio
>>
>>
>>
>> ogni elemento della lista è un registro da 16bit questo in effetti è una
>> stringa di 12 caratteri,  quello che non riesco a fare è rendere questa
>> lista la stringa equivalente.
>>
>>
>>
>> Il giorno mer 16 feb 2022 alle ore 14:22 Pietro Convalle <
>> pietroconvalle a python.it> ha scritto:
>>
>> Ciao, non ho mai usato quel modulo ma qua vedo un esempio che sembra
>> proprio quello che stai cercando di fare tu:
>> https://pypi.org/project/pyModbusTCP/ (Read 2x 16 bits registers at
>> modbus address 0)
>>
>> On Wed, 2022-02-16 at 06:53 +0100, Vinny Mautone wrote:
>> > Ciao a tutti sto provando a leggere dei dati da un apparecchiatura
>> > con la quale comunico tramite il protocollo modbus, sto usando il
>> > modulo pymodbusTCP, ho alcuni dati come ad esempio la versione del
>> > firmware che occupano sei registri da 16 bit, riesco a leggerli e con
>> > la funzione di lettura del modulo ottengo una lista di 6 elementi da
>> > 16bit, solo che non riesco a scomporre e a recuperare l'informazione
>> > in modo leggibile, dal manuale leggo che il dato è formato da 11 byte
>> > in caratteri ascii, quindo ho capito che devo scomporre ogni elemento
>> > della lista nei due byte che lo compongono e poi riassemblare il
>> > tutto.
>> >
>> > Il mio problema e che non riesco a capire come fare.
>> >
>> > Grazie
>> > _______________________________________________
>> > Python mailing list
>> > Python a lists.python.it
>> > https://lists.python.it/mailman/listinfo/python
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> https://lists.python.it/mailman/listinfo/python
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> https://lists.python.it/mailman/listinfo/python
>>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20220217/46cfe40d/attachment-0001.html>


Maggiori informazioni sulla lista Python