BACnet trova i dispositivi trasmettendo una domanda in broadcast e ascoltando le risposte. Un client invia Who-Is e ogni dispositivo corrispondente risponde con I-Am, comunicando l’istanza del dispositivo e il proprio indirizzo. Perché funzioni, ogni dispositivo deve avere un’istanza unica, ogni rete un numero di rete unico e il broadcast deve raggiungere la rete in cui si trova il dispositivo. La maggior parte dei problemi di rilevamento viola una di queste tre condizioni.
Questa guida fa parte della serie su BACnet e i protocolli per gli edifici.
Tre identificativi
| Identificativo | Che cos’è | Ambito di unicità | Esempio |
|---|---|---|---|
| Istanza del dispositivo | Numero di istanza dell’oggetto Device, da 0 a 4 194 302 | Unico nell’intero sito | 20102 |
| Numero di rete | Numero di una rete BACnet, da 1 a 65 534 | Unico nell’intero sito | 12 |
| Indirizzo sulla rete | Indirizzo IP e porta UDP in BACnet/IP, oppure indirizzo MAC da 0 a 254 in MS/TP | Unico su quella rete | 10.20.4.31:47808 oppure MAC 7 |
L’istanza del dispositivo è l’identificativo stabile. I client trovano un dispositivo tramite la sua istanza e poi ne ricordano l’indirizzo. Se il dispositivo cambia indirizzo IP, un nuovo rilevamento lo ritrova con la stessa istanza.
La guida introduttiva del comitato BACnet stabilisce la regola: il numero di istanza dell’oggetto Device deve essere unico nell’intera internetwork BACnet. Gli identificatori degli oggetti all’interno del dispositivo, per esempio analog-input 3, devono essere unici soltanto all’interno del dispositivo stesso.
Come funzionano Who-Is e I-Am
- Il client trasmette Who-Is in broadcast. Può interrogare tutti i dispositivi oppure solo quelli con istanze comprese in un intervallo.
- Ogni dispositivo corrispondente trasmette I-Am in broadcast. La risposta contiene l’istanza del dispositivo, la dimensione massima dei messaggi accettati, il supporto della segmentazione e l’identificativo del produttore.
- Il client registra l’indirizzo di origine di I-Am e associa l’istanza del dispositivo a quell’indirizzo.
- Il client legge poi l’oggetto Device, di solito la sua Object_List, per trovare gli altri oggetti.
Una coppia di servizi collegata, Who-Has e I-Have, trova un dispositivo in base al nome o all’identificatore di un oggetto che contiene.
Alcuni dispositivi non possono partecipare direttamente. L’articolo di Karg su MS/TP spiega che i dispositivi slave MS/TP non detengono mai il token, quindi non possono rispondere autonomamente a Who-Is. Risponde per loro un router o uno slave proxy; in alternativa, il client li associa staticamente a un indirizzo configurato. La guida a BACnet/IP e MS/TP spiega il passaggio del token e i dispositivi slave.
Perché un dispositivo non compare
| Sintomo | Causa probabile |
|---|---|
| Compaiono i dispositivi sulla subnet locale, ma non gli altri | I broadcast si fermano ai router IP; servono BBMD o la registrazione come foreign device |
| Non compare alcun dispositivo | Un firewall blocca UDP 47808, il client ascolta sull’interfaccia di rete sbagliata oppure usa un’altra porta UDP |
| Manca un solo dispositivo | La sua istanza è fuori dall’intervallo Who-Is, si trova su un bus MS/TP dietro un router con numero di rete errato oppure è uno slave MS/TP |
| Un dispositivo compare e scompare, oppure i valori passano da un impianto all’altro | Due dispositivi condividono la stessa istanza |
| I dispositivi dietro due router vengono confusi | Due reti condividono lo stesso numero di rete |
| Il rilevamento funziona, ma le letture scadono | Il dispositivo risponde ai broadcast ma non ai messaggi diretti: NAT, regola del firewall o messaggio più grande di quanto accetti |
La guida all’instradamento e ai BBMD spiega come i broadcast raggiungono altre subnet.
Ping, rilevamento e lettura dimostrano cose diverse
Esegui le prove in quest’ordine e registrane i risultati:
| Prova | Cosa dimostra se riesce |
|---|---|
| Ping dell’indirizzo IP | L’interfaccia di rete del dispositivo è raggiungibile. ICMP può essere bloccato, quindi un fallimento dimostra poco |
| Who-Is e I-Am | Il dispositivo esegue BACnet su questa rete e ha l’istanza prevista |
| Lettura di Present_Value di un oggetto | Il client può indirizzare direttamente il dispositivo e l’oggetto esiste |
| Aggiornamento dei valori nel tempo | Le interrogazioni o le notifiche COV proseguono, con un timestamp recente per ogni punto |
Un esito positivo in un passaggio non dimostra che riuscirà il successivo. Un dispositivo che risponde al ping potrebbe avere BACnet disattivato. Uno che risponde a Who-Is potrebbe rifiutare una richiesta ReadPropertyMultiple che non supporta.
Prima di collegare un nuovo client
Concorda questi punti con il responsabile del BMS:
- la porta UDP e la subnet IP di ogni rete BACnet/IP;
- i numeri di rete già in uso e il piano delle istanze dei dispositivi;
- se ci sono BBMD, dove si trovano e se il nuovo client può registrarsi con uno di essi;
- l’orario del rilevamento in un sito grande, perché un Who-Is globale provoca una raffica di risposte I-Am.
Rilevamento con Edge
Edge sul Gateway ZGW-20 è un client BACnet/IP che usa per impostazione predefinita la porta UDP 47808. Rileva i dispositivi con un broadcast sulla rete locale e identifica ciascuno con la sua istanza. Il suo test di connessione è un ping. Rilevamento, lettura di un punto e avanzamento regolare del timestamp sono i passaggi successivi della sequenza descritta sopra. Per i controller su altre subnet, la rete BACnet del sito deve fornire la gestione dei broadcast o l’instradamento.
Domande frequenti
Che cos’è un’istanza di dispositivo BACnet?
È il numero nell’identificatore dell’oggetto Device del dispositivo, da 0 a 4 194 302. Deve essere unico nell’intera internetwork BACnet del sito, perché i client trovano i dispositivi e stabiliscono un’associazione con essi tramite questo numero.
A cosa servono Who-Is e I-Am in BACnet?
Who-Is è un broadcast che chiede ai dispositivi di identificarsi, facoltativamente solo a quelli in un intervallo di istanze. Ogni dispositivo corrispondente risponde con I-Am, che contiene la sua istanza, la dimensione massima dei messaggi, il supporto della segmentazione e l’identificativo del produttore. Il client ricava l’indirizzo del dispositivo dalla risposta.
Perché non riesco a rilevare un dispositivo BACnet?
Tra le cause comuni: il dispositivo è su un’altra subnet IP senza BBMD; un firewall blocca UDP 47808; l’istanza è fuori dall’intervallo Who-Is; ci sono istanze duplicate; uno slave MS/TP non può rispondere ai broadcast; oppure il client usa l’interfaccia di rete sbagliata.
Che cos’è un numero di rete BACnet?
È un numero da 1 a 65 534 che identifica una rete BACnet del sito, per esempio una subnet IP utilizzata da BACnet oppure un bus MS/TP. I router lo usano per inoltrare i messaggi. Ogni rete del sito deve avere un numero diverso.