Modbus RTU
Modbus su un bus seriale, con la linea fisica modellata esplicitamente e condivisa dai dispositivi indirizzati per unità.
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.