Arduino uno Q Modbus TCP

Ciao a tutti,

esiste una libreria modbus TCP compatibile con Arduino Q (client)?

Ti segnalo che, nella sezione in lingua Inglese, si può scrivere solo in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana.

Grazie.

Ciao @arino1

Il modo più semplice per avere Modbus TCP su Uno Q è utilizzarlo dallo script Python in una applicazione App Lab. Puoi utilizzare la libreria Welcome to PyModbus’s documentation! — PyModbus 4.0.0dev6 documentation . Prova a dare uno sguardo a questi esempi: Client — PyModbus 4.0.0dev6 documentation .

A presto.

Se la libreria è scritta decentemente, il layer software dove è definito il protocollo è indipendente dal layer hardware usato per il trasporto dati (ovvero il codice strettamente dipendente dalla MCU).

Non l’ho mai provata di persona, ma ad esempio la prima che viene fuori cercando nel repository (ArduinoModbus) è strutturata proprio in questo modo appena descritto.

Nei metodi interni della libreria viene usato un generico Client* e quindi in teoria dovrebbe essere compatibile con qualsiasi framework Arduino dove questa classe è stata definita.

IPAddress server(192, 168, 1, 10); // update with the IP Address of your Modbus server

....
 if (!modbusTCPClient.begin(server)) {
   Serial.println("Modbus TCP Client failed to connect!");
 } else {
   Serial.println("Modbus TCP Client connected");
 }
....


@cotestatnt

Questo è vero in generale per le board Arduino con supporto nativo per il networking, ad esempio quelle con Wi‑Fi o Ethernet integrati, o disponibili tramite shield o carrier. Su Uno Q, invece, la connettività viene gestita nella parte Linux e non è direttamente accessibile dallo Sketch. Stiamo lavorando a un trasporto dei socket sul meccanismo di RPC attraverso la libreria Arduino_RouterBridge, ma in questo momento è ancora in fase sperimentale.

A presto!

E’ una board che conosco molto poco (almeno per ora), ti ringrazio per la precisazione!

@arino1:

Considera poi che nella sezione Italiana del forum, utenti della Q, credo si contino sulle dita di una sola mano ... :roll_eyes:

Se vuoi risposte piĂą circostanziate ed in tempi brevi, ti consiglio di porre le tue domande, esclusivamente in lingua Inglese, nella SEZIONE dedicata ad Arduino Q

Guglielmo

Ciao, grazie per i suggerimenti.

Ho provato ad installare la libreria pymodbus ( Install with github (Welcome to PyModbus’s documentation! — PyModbus 3.11.3 documentation), ma una volta compilato il sw mi viene restituito il messaggio :

"Activating python virtual environment
Traceback (most recent call last):
File "/app/python/main.py", line 1, in
from pymodbus.server.sync import StartTcpServer
ModuleNotFoundError: No module named 'pymodbus'
exited with code 1"

Ciao @arino1,

Per installare la libreria all’interno dell’ambiente utilizzato dallo script Python in App Lab (formalmente un container Docker) devi creare un nuovo file requirements.txt affianco al file main.py e aggiungere il nome della libreria nel file.

  • In App Lab, nel pannello dei file, selezione la cartella python e clicca sull’icona per creare i file.
  • Crea un nuovo file requirements.txt
  • Aggiungi pymodbus nel contenuto del file
  • Lancia nuovamente la App.

Il formato del file requirements.txt è standard ed è descritto qui: Requirements File Format - pip documentation v25.3 .

Fammi sapere.

Grazie per le indicazioni. Sono riuscito ad implementare le librerie.
Adesso il client funziona.

Vorrei capire come gestire i pin fisici con il codice python.... Ad esempio se il bit 0 del registro 0 è a 1 il pin 13 va in ON....

Ciao @arino1

Dovresti avere tutto quello che ti serve nell’esempio “Blink LED”: nello sketch devi modificare il PIN che viene attivato mentre devi integrare il codice Python dell’esempio con il tuo.

Fammi sapere!