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
Modalità di trasmissione Come ogni dispositivo del bus compone i suoi messaggi: RTU, trame binarie verificate da un CRC, oppure ASCII, trame scritte come testo dai due punti a un a capo e verificate da un LRC, che parlano i dispositivi meno recenti. Un bus parla una sola modalità, che quindi appartiene alla linea. RTU
Formato seriale Scelta chiusa tra 8N1, 8N2, 8E1, 8E2, 8O1, 8O2, e su una linea ASCII anche 7N2, 7E1, 7E2, 7O1: 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. Una trama RTU richiede 8 bit di dati, quindi una linea RTU offre solo i formati a 8 bit; un formato a 7 bit rimasto da una linea ASCII appare vuoto ed è rifiutato finché non se ne sceglie un altro. 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

Su una linea ASCII il silenzio descritto qui sotto non si applica: una trama ASCII termina con il suo a capo, quindi il silenzio automatico indica 0 ms e l'Intervallo minimo tra transazioni (ms) è l'unica pausa tra le trame, come dice la scheda sotto di esso: «Le trame ASCII terminano con un a capo, quindi la linea non aggiunge un silenzio proprio: questo intervallo è l'unica pausa tra le trame.» La modalità di trasmissione è un'impostazione fisica, bloccata insieme a porta, velocità, formato e timeout di risposta finché la linea è abilitata; l'indirizzo di runtime di un dispositivo su una linea ASCII termina con /ascii.

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. la linea sotto cui viene aggiunto
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 (Bobina (0xxxx), Ingresso discreto (1xxxx), Registro di ingresso (3xxxx), Registro di mantenimento (4xxxx), ricavata per impostazione predefinita dal tipo e dall'accesso del tag), un Numero di registro in base 0, una Quantità (registri, vuoto = automatico) automatica (Boolean, Int16 e UInt16 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 d'ordine: Byte più significativo per primo (MSB first, big-endian) per l'ordine dei byte e Parola più significativa per prima (parola alta per prima) per l'ordine delle parole (disegnata solo sui tipi a due registri, Int32 e Float), entrambe attive per impostazione predefinita. La scheda Sorgente termina con Indirizzo nel manuale, l'indirizzo del tag come lo stampa il manuale del dispositivo (il registro di ingresso 0 è 30001). I tipi di valore supportati sono gli stessi sei (Boolean, Int16, UInt16, Int32, Float e String): Int16 e UInt16 leggono un solo registro a 16 bit, con o senza segno, e a loro si applica solo l'ordine dei byte (la casella dell'ordine delle parole non viene disegnata). I codici di funzione di lettura e scrittura e le 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

Su una linea ASCII il sondaggio è la stessa richiesta in una trama ASCII e l'LRC prende il posto del CRC: un'eccezione con LRC valido prova che un'unità è presente, una trama con LRC non valido non prova nulla.

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: va disabilitata prima di scansionare, e riabilitata a mano 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 sei tipi di valore sono tutto il vocabolario del codificatore del bus; le altre larghezze intere 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.