Rockwell EtherNet/IP
Collegare i controllori Allen-Bradley Logix su EtherNet/IP (CIP) - nomi di tag del controllore, scostamenti in byte, tipi atomici CIP e rilevamento di rete.
Il driver Rockwell EtherNet/IP parla con i controllori Allen-Bradley / Rockwell Logix (ControlLogix, CompactLogix) su EtherNet/IP con indirizzamento CIP per tag. I valori si indirizzano con il nome di tag dichiarato nel progetto Logix, senza alcuna mappa di registri di mezzo. Aggiungi un dispositivo sotto il driver Rockwell EtherNet/IP nel Connector; il pannello mostra solo i campi che questo protocollo usa.
Connessione
| Campo | Significato | Predefinito |
|---|---|---|
| Indirizzo host | Indirizzo IP o nome host della porta Ethernet del controllore. | vuoto |
| Slot del telaio | In quale posizione del telaio è alloggiato il controllore, contando da 0. | 0 |
| Intervallo di interrogazione (ms) | Il periodo di lettura valido per tutto il dispositivo, per i tag che non lo ridefiniscono. | 1.000 |
Non c'è alcun campo per la porta: EtherNet/IP usa la sua porta TCP standard 44818. Il
percorso CIP è il bus di fondo più lo Slot del telaio, quindi un controllore
alloggiato in qualunque posizione del telaio è raggiungibile; un controllore rilevato
parte dallo slot 0 e il campo è dove lo si corregge. Non c'è alcun campo per il telaio:
un percorso CIP non porta un numero di telaio. Le richieste scadono dopo 10 secondi.
L'intestazione del dispositivo mostra l'endpoint composto, per esempio
eip://192.168.0.10:0, dove il numero dopo l'indirizzo è lo slot.
Ogni tag può impostare il proprio Intervallo di interrogazione (ms); un valore di tag pari a 0 ricade sull'intervallo del dispositivo.
Indirizzamento
Un tag Rockwell viene indirizzato da due campi nella scheda Origine del tag:
| Campo | Significato | Valori accettati | Predefinito |
|---|---|---|---|
| Tag del controllore | Il nome del tag come è dichiarato nel controllore. Obbligatorio. | testo libero | vuoto |
| Scostamento nel tag (byte, bit per BOOL) | Dove il valore si trova dentro i dati di quel tag: uno scostamento in byte, oppure uno scostamento in bit per i tag Boolean. | 0–255 | 0 |
Il driver apre il tag del controllore indicato e prende il valore dal suo buffer di dati allo scostamento. Per un semplice tag atomico lo scostamento resta 0. È lo scostamento che permette a un solo tag del controllore di servire più canali: un DINT all'inizio di una struttura ha scostamento 0, il REAL quattro byte dopo ha scostamento 4, e per un tag Boolean lo scostamento conta bit invece di byte.
| Per leggere | Tag del controllore | Scostamento | Tipo di dato |
|---|---|---|---|
Un DINT Counter di ambito controllore |
Counter |
0 | Int32 |
Un DINT di ambito programma in Main |
Program:Main.Counter |
0 | Int32 |
Un elemento di array REAL Temps[2] |
Temps[2] |
0 | Float |
Il secondo DINT dentro la struttura Recipe |
Recipe |
4 | Int32 |
Il bit 3 dei dati in Flags |
Flags |
3 | Boolean |
Il nome arriva al controllore per intero, punti compresi, e una lettura e una
scrittura dello stesso tag finiscono nello stesso posto. È questo che fa funzionare un
nome di ambito programma come Program:Main.Counter. Un percorso di membro con il
punto (MyUdt.Member) viene risolto dal controllore quando il controllore pubblica
quel membro per nome; dove non lo fa, nomina il tag di base di ambito controllore e
raggiungi quello che ha dentro con lo scostamento in byte, che funziona sempre. La riga
in sola lettura Indirizzo di origine (bus) della scheda Origine mostra l'indirizzo
composto mentre modifichi.
Tipi di dato
Ogni tipo atomico CIP è disponibile come Tipo di dato di un tag:
| Tipo di dato | Tipo CIP | Dimensione |
|---|---|---|
| Boolean | BOOL | 1 bit allo scostamento in bit |
| SByte | SINT | 1 byte |
| Byte | USINT | 1 byte |
| Int16 | INT | 2 byte |
| UInt16 | UINT | 2 byte |
| Int32 | DINT | 4 byte |
| UInt32 | UDINT | 4 byte |
| Int64 | LINT | 8 byte |
| UInt64 | ULINT | 8 byte |
| Float | REAL | 4 byte |
| Double | LREAL | 8 byte |
Le strutture e gli UDT non sono supportati: si possono leggere o scrivere solo i tipi atomici qui sopra, ed è per questo che esiste lo scostamento in byte, per raggiungere i membri al loro interno. String manca deliberatamente dal selettore: una STRING Logix non è un tipo atomico ma una struttura fatta di una lunghezza e di un array di 82 byte, e il driver non la sa né leggere né scrivere. L'ordine dei byte sul bus è il little-endian proprio di CIP e viene gestito automaticamente; non c'è alcuna opzione sull'ordine dei byte.
Scritture
I tag il cui Accesso è Lettura e scrittura oppure Sola scrittura si possono scrivere. Una scrittura legge il tag del controllore, cambia i byte indirizzati (o il bit indirizzato, per i Boolean) e lo riscrive. Un tag nuovo nasce Sola lettura.
Rilevamento
Il pulsante Rileva del Connector diffonde una richiesta CIP List Identity su ogni rete su cui questo computer si trova e continua ad ascoltare finché non passano 10 secondi senza una nuova risposta. La scansione nomina quelle reti mentre gira, così un risultato pari a zero dice dove la domanda è andata davvero: una stazione con adattatori virtuali per macchine, WSL o una VPN ha spesso più reti di quante l'operatore si aspetti, e i candidati possono arrivare da una di quelle.
Le interfacce che non possono portare la richiesta vengono saltate: tutto ciò che non è
attivo, gli adattatori di loopback e di tunnel, e un indirizzo che l'interfaccia si è
data da sé perché nessuno ha risposto al DHCP (169.254.x.x). Solo una risposta che sia
la risposta di identità di un controllore diventa un dispositivo candidato, chiamato
eip:// più il suo indirizzo; qualunque altra cosa risponda sulla porta EtherNet/IP
viene ignorata e detta nel diario. Per ogni candidato la scansione legge poi l'elenco
dei tag di ambito controllore e offre i suoi tag atomici come canali candidati,
ciascuno con scostamento 0.
Il rilevamento scarta quello che il driver non può interrogare: i tag di struttura e di
UDT (STRING Logix comprese) vengono lasciati cadere, e le voci Program:, Task: e
Map: vengono saltate. Un controllore su una rete su cui questo computer non si trova
non risponde alla diffusione; aggiungilo a mano.
Buono a sapersi
- Ogni richiesta al controllore scade dopo 10 secondi, e la finestra di ascolto del rilevamento si chiude dopo 10 secondi di silenzio.
- Il driver apre ogni tag del controllore una volta sola e lo tiene aperto finché il dispositivo resta connesso, così un controllore con decine di tag viene letto sulle sessioni che ha già, invece di aprirne e chiuderne una per ogni lettura. Una lettura che fallisce lascia andare il proprio tag, e quella dopo lo riapre per nome.
- Rinominare un tag nel progetto Logix rompe il canale in silenzio; il tag legge allora cattiva qualità finché il nome configurato non torna a corrispondere.