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.

Visualizza come Markdown

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.