🔌 Modbus RS485 & Gestione Convertitori USB
Il protocollo Modbus RS485 è uno standard di comunicazione seriale nato per i PLC, molto diffuso in ambito industriale e presente in numerosissime apparecchiature: schede I/O, sensori di temperatura e umidità , contatori di energia e altre periferiche. Tramite comuni convertitori USB–seriale è possibile interfacciare questi dispositivi con il NUC.
Nel nostro sistema, la gestione del protocollo Modbus è affidata completamente a Node-RED, rendendo superflui strumenti esterni o software dedicati.
⚠️ Il Problema: Assegnazione Dinamica delle Porte USB
Quando si utilizzano più convertitori seriali per la lettura di diversi dispositivi (es. contatori di energia), può accadere che le porte USB non vengano sempre assegnate allo stesso dispositivo dopo un riavvio del sistema (ttyUSB0 potrebbe diventare ttyUSB1 e viceversa).
Per evitare questo problema, è possibile configurare ogni convertitore in modo statico sfruttando i parametri idVendor e idProduct per creare una regola udev personalizzata. In questo modo ogni convertitore avrà sempre un nome univoco e stabile.
🛠️ Configurazione delle Regole udev
1. Ricerca dei parametri del convertitore USB
Per identificare i codici univoci del tuo convertitore collegato alla porta di sistema (dove * identifica il numero della porta USB), esegui il comando:
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB*)
đź’ˇ Nota: Dall'output del comando, cerca all'interno dell'elenco le righe relative al dispositivo corrispondenti a ATTRS{idVendor} e ATTRS{idProduct} (ad esempio idVendor=="10c4" e idProduct=="ea60"): ti serviranno tra poco per creare la regola personalizzata.
2. Creazione della regola personalizzata
Crea o modifica il file di configurazione delle regole udev:
sudo nano /etc/udev/rules.d/99-usbserial.rules
Aggiungi le righe per associare i tuoi convertitori ai nomi prescelti (sostituisci i valori con quelli reali rilevati al punto precedente):
ACTION=="add", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="qeed485"
ACTION=="add", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="eastron485"
3. Verifica dell'associazione
Dopo aver riavviato il sistema, puoi verificare che i link simbolici puntino correttamente ai dispositivi seriali con i comandi:
ls -l /dev/qeed485
ls -l /dev/eastron485
🔑 Gestione dei Permessi USB
Un altro problema comune riguarda i permessi di accesso alle porte seriali da parte dei container o dei servizi. Per risolverlo definitivamente, sono stati impostati due cron job in Webmin che automatizzano l'assegnazione dei permessi corretti ad ogni riavvio del sistema tramite i comandi:
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1