Modbus RTU

Modbus su un bus seriale, con la linea fisica modellata esplicitamente e condivisa dai dispositivi indirizzati per unità.

Visualizza come Markdown

Il driver Modbus RTU parla con dispositivi Modbus su un bus seriale, RS-485 o RS-232, raggiunto attraverso una porta COM fisica, un adattatore USB oppure una porta virtuale o reindirizzata. Poiché il bus è condiviso fisicamente, la topologia è Driver → Linea → Dispositivo → Tag: la linea possiede tutto ciò che è elettrico (porta, velocità, formato, tempi), e ogni dispositivo su di essa possiede soltanto il proprio indirizzo di unità, l'interrogazione e i tag.

Linea seriale

Campo Significato Predefinito
Nome Il nome parlante del bus. Modificabile in qualunque momento. obbligatorio
Porta seriale La porta del sistema operativo, per esempio COM3. Il campo è a testo libero (funzionano porte fisiche, virtuali e reindirizzate) e la freccia accanto offre le porte che Windows rileva in questo momento (con un Aggiorna per l'inserimento a caldo di un adattatore); l'elenco rilevato è una comodità, mai un elenco di ammessi. COM1
Velocità (baud) La velocità di trasmissione condivisa da ogni dispositivo del bus. 9600
Formato seriale Scelta chiusa tra 8N1, 8N2, 8E1, 8E2, 8O1, 8O2: la cifra è il numero di bit di dati, la lettera la parità (N nessuna, E pari, O dispari), l'ultima cifra i bit di stop. Altre larghezze, la parità mark/space e 1,5 bit di stop non sono supportati. 8E1
Timeout di risposta (ms) L'attesa massima per la risposta di un'unità, da 100 a 60.000. Timeout più lunghi si adattano alle apparecchiature lente ma rendono più lento il riconoscimento delle unità mancanti, e il rilevamento. 1000
Intervallo minimo tra transazioni (ms) La cadenza di compatibilità valida per tutta la linea, da 0 a 1000. Zero mantiene solo il silenzio automatico di protocollo; un valore positivo lo può alzare, mai ridurre. 0

Il protocollo stesso richiede silenzio tra una trama e l'altra, e la linea lo impone sempre: fino a 19.200 baud il silenzio automatico è di 3,5 tempi di carattere, calcolati dal formato configurato; sopra i 19.200 baud è il valore fisso di 1,75 ms che la specifica raccomanda. Il silenzio effettivo è il maggiore tra quel pavimento automatico e l'intervallo configurato, mai la loro somma, e il pannello mostra entrambi i valori. Alzare l'intervallo rallenta deliberatamente ogni unità della linea; è un aiuto di compatibilità, non un rimedio per cablaggio, terminazione, messa a terra o disturbi.

Una linea nuova nasce disabilitata, così le sue impostazioni fisiche si possono configurare prima. Ogni porta fisica appartiene al massimo a una linea, confrontata senza distinguere maiuscole e minuscole e anche mentre le linee sono disabilitate. Il nome e l'intervallo tra transazioni restano modificabili mentre la linea è in funzione (una modifica di tempi ha effetto senza far ripartire la porta); la porta, la velocità, il formato e il timeout di risposta sono bloccati mentre la linea è abilitata: disabilitarla e salvarla prima. Disabilitare una linea ferma la comunicazione di tutti i suoi dispositivi senza cambiare le loro scelte Abilitato individuali.

La linea riferisce il trasporto fisico separatamente dai suoi dispositivi: Spenta, Inattiva (nessun dispositivo abilitato), Connessione, Connessa oppure Guasto della porta con una diagnostica. Eliminare una linea vuota rimuove solo la linea; eliminarne una che contiene dispositivi chiede una conferma esplicita ed elimina anche quei dispositivi e i loro tag.

Dispositivo

Campo Significato Predefinito
Linea seriale Fissa: un dispositivo viene creato sotto la sua linea e ne eredita i parametri fisici, mostrati in sola lettura nel pannello. Aggiungi il dispositivo sotto la linea giusta. (nessuno)
ID unità L'indirizzo Modbus del dispositivo sul bus, da 1 a 247, unico dentro la linea (dispositivi disabilitati compresi). 1
Intervallo di interrogazione (ms) La cadenza di interrogazione predefinita per i tag che non la ridefiniscono. 1000

L'indirizzo interno di runtime è modbus+rtu://<line-id>/<port>/<baud>/<format>/<timeout>/<unitId>/<interval>: porta l'identità stabile della linea e le sue impostazioni fisiche complete, mai il suo nome parlante.

Il comportamento della linea condivisa

Il driver apre una sola sessione seriale per linea e serializza ogni richiesta di ogni dispositivo attraverso un unico dispatcher, così letture e scritture non si sovrappongono mai sul bus. Una scrittura in attesa prende il primo turno libero con priorità limitata: le scritture vengono servite subito, ma uno scrivere continuo non può affamare l'interrogazione. I timeout di ciascuna unità sono isolati con allontanamento progressivo, quindi un dispositivo muto rallenta solo se stesso. Un'eccezione Modbus con CRC valido è un errore della singola richiesta su quel tag, e la linea resta sana. Solo un guasto fisico di I/O (la porta che scompare, l'adattatore staccato) invalida la sessione condivisa e avvia una sola riapertura coordinata per tutta la linea. L'ultimo dispositivo rilasciato chiude la porta.

Indirizzamento dei tag

L'indirizzamento dei tag è identico a quello di Modbus TCP: una Classe di registro (HoldingRegister, InputRegister, Coil, DiscreteInput, ricavata per impostazione predefinita dal tipo e dall'accesso del tag), un Numero di registro in base 0, una Quantità automatica (Boolean 1 registro, Int32 e Float 2, String 4; la casella viene disegnata solo sui tag String, perché ogni altra larghezza è fissa), e le due caselle indipendenti sull'ordine dei byte, entrambe predefinite sul più significativo per primo. I tipi di valore supportati sono gli stessi quattro, Boolean, Int32, Float e String, e i codici di funzione di lettura e scrittura e le quattro disposizioni sul bus sono documentati nella pagina Modbus TCP e valgono qui senza cambiamenti.

Rilevamento

Il rilevamento sonda un intervallo di ID unità su una linea esistente e vive nel pannello di quella linea:

Campo Significato Predefinito
ID unità iniziale Il primo id di unità da sondare, da 1 a 247. 1
ID unità finale L'ultimo id di unità, crescente rispetto al primo. 32

La scansione ricarica le impostazioni fisiche salvate della linea, apre la porta una volta sola e sonda l'intervallo in sequenza con Read Basic Device Identification (funzione 43/14), cadenzando ogni sondaggio con il silenzio tra trame effettivo della linea. Non prova mai combinazioni di impostazioni e non legge mai registri. Un'eccezione Modbus con CRC valido prova che un'unità è presente senza dichiararne l'identità; un timeout o una trama non valida no.

Una linea in uso non viene mai interrotta né commutata automaticamente: disabilitala prima di scansionare, e riabilitala tu dopo. L'annullamento chiude la sessione seriale e lascia i risultati già mostrati come candidati transitori finché non li aggiungi esplicitamente. Un id di unità già configurato viene marcato come tale e apre il dispositivo esistente invece di crearne un duplicato; i risultati non portano tag: i registri si configurano dopo Aggiungi.

Il rilevamento e la configurazione della linea condividono una sola prenotazione a fallimento immediato per ogni porta fisica, così una scansione e una modifica di impostazioni non si possono contendere la porta: a chi perde viene detto quale operazione la tiene.

Limiti da conoscere

  • I quattro tipi di valore sono tutto il vocabolario del codificatore del bus; gli interi larghi e Double non vengono offerti.
  • La portata è una proprietà del bus: ogni dispositivo della linea condivide un solo flusso di richieste, cadenzato dal silenzio tra trame effettivo, quindi molti dispositivi o un intervallo alzato allungano ogni ciclo di interrogazione.