OPC DA
Un client per i server OPC Data Access classici su COM/DCOM, che gira in un processo ausiliario a 32 bit, con indirizzamento per ID elemento e una scansione dei server di una macchina.
Il driver OPC DA è un client per i server OPC Data Access classici (versioni 1.0, 2.05a e 3.0), i server COM attraverso cui gateway di PLC meno recenti, sistemi SCADA e simulatori pubblicano ancora i loro dati. Un server si indica con la macchina su cui gira e con il suo ProgID, per esempio Matrikon.OPC.Simulation.1, e ogni tag con l'ID elemento del server. Aggiungi il driver e i suoi dispositivi nella pagina Connector.
Dispositivo
| Campo | Significato | Predefinito |
|---|---|---|
| Indirizzo host | Il nome o l'indirizzo del computer su cui gira il server OPC DA. Vuoto indica questo computer, dove gira la maggior parte dei server classici. | vuoto: questo computer |
| Server / Chiave | Il ProgID del server, così come il produttore lo registra in Windows, per esempio Matrikon.OPC.Simulation.1. |
OPC.Server.1 |
| Intervallo di interrogazione (ms) | Ogni quanto la stazione legge i tag del dispositivo, a meno che un tag non fissi un intervallo proprio. | 1000 |
L'indirizzo del dispositivo si compone dai due, per esempio opc.da://localhost/Matrikon.OPC.Simulation.1. Non c'è una porta: COM trova il server tramite la registrazione di Windows stesso.
Indirizzamento dei tag
Un tag si indirizza con il suo ID elemento, digitato come testo libero e inviato al server esattamente come è scritto, per esempio Random.Real8 o Channel1.Device1.Tag1. Gli ID elemento sono quelli del server stesso; la sua documentazione o una scansione li elenca. La stazione aggiunge ogni elemento a un gruppo del dispositivo la prima volta che un tag lo legge, e lo legge dall'apparecchiatura, non dalla cache del server.
Tipi di dato
Il selettore Tipo di dato offre i tipi che un elemento OPC DA contiene: Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String e DateTime. Ogni lettura viene convertita nel tipo del tag, quindi scegli il tipo che il server dichiara per l'elemento, lo stesso che una scansione propone: un elemento reale a 64 bit letto come Float perde precisione, e letto come Double la conserva. Un valore che il tipo del tag non può contenere, come un testo che non è un numero o un array, lascia il tag senza valore. In OPC DA una data non porta un fuso orario, e la stazione la legge e la scrive come UTC.
Ogni valore con cui il server risponde porta la sua qualità. Un valore di buona qualità (Good) arriva al tag. Uno di qualità incerta (Uncertain) o di cattiva qualità (Bad) lascia il tag senza valore, e la riga del diario della lettura fallita nomina la qualità con le parole della specifica OPC DA, per esempio Bad: not connected (0x0008) oppure Uncertain: last usable value (0x0044). Un elemento la cui lettura fallisce lascia il suo tag senza valore, e gli altri tag del dispositivo continuano a leggere.
Rilevamento
Rileva elenca i server OPC DA registrati su un computer: digita il suo nome o il suo indirizzo nella destinazione della scansione, oppure lasciala vuota per questo computer. Ogni server viene offerto come dispositivo, e il suo spazio degli indirizzi viene percorso: ogni elemento che contiene viene offerto come tag in sola lettura, con il tipo che il server dichiara per esso: un reale a 64 bit come Double, un intero a 16 bit senza segno come UInt16, e così via per ogni tipo qui sopra, con un valore monetario come Double. Un elemento che non dichiara alcun tipo viene offerto come String, che legge qualunque valore; un elemento di un tipo che nessun tag legge, come un array, non viene offerto, e la scansione lo conta tra ciò che ha lasciato fuori. Vedi Rilevamento per come i candidati vengono scelti e aggiunti.
La scansione chiede i server all'enumeratore dei server OPC (OpcEnum), tramite le librerie proxy e stub di OPC DA registrate su questo computer. Finché ne manca una, la scansione non elenca nulla e dice cosa manca, con i passi di Installare gli OPC Core Components.
Scritture
I tag il cui Accesso è Lettura e scrittura oppure Sola scrittura si possono scrivere, sullo stesso elemento che la lettura usa. Il valore viene inviato nel tipo in cui il server tiene l'elemento (nel tipo del tag stesso quando il server non lo dice), convertito dal valore del tag senza passare per un testo, così una stazione in qualunque lingua invia lo stesso numero. Un numero intero fuori dall'intervallo del tipo dell'elemento viene rifiutato prima di inviare qualcosa, mai tagliato al valore più vicino che il tipo può contenere. Una scrittura che il server rifiuta torna rifiutata, con il motivo quando è uno che la stazione sa dire (un elemento che non accetta scritture, un valore che l'elemento non accetta, un elemento che il server non conosce, un accesso negato) e altrimenti con il codice di errore del server, per esempio OPC DA 0x80004005; il diario conserva il codice del server in ogni caso. OPC DA non ha comandi: un dispositivo di questo driver non ne offre nessuno.
Il processo ausiliario a 32 bit
I server OPC DA si raggiungono tramite un client COM a 32 bit, che la stazione a 64 bit non può caricare. Per questo il driver gira in un processo ausiliario tutto suo, Lab.Desktop.DriverBridge.exe, che la stazione avvia la prima volta che un dispositivo o una scansione OPC DA ne ha bisogno, o che la stazione verifica gli OPC Core Components, e chiude quando il Connector si ferma. Nell'uso del driver non cambia nulla: i suoi dispositivi e tag vengono letti, scritti, scansionati e annotati nel diario come quelli di qualunque altro.
Se il processo ausiliario si ferma, i suoi dispositivi mostrano l'errore "Il processo ausiliario a 32 bit del driver OPC DA si è fermato. La stazione lo avvia di nuovo, e il dispositivo si ricollega tramite esso.", la pagina Eventi conserva il suo codice di uscita, e i loro tag perdono i valori. La stazione avvia di nuovo il processo ausiliario, dopo una pausa che cresce finché continua a fermarsi, e i dispositivi si ricollegano da soli tramite esso. Una scrittura che era in viaggio quando il processo ausiliario si è fermato torna fallita, dicendo che non si sa se il valore abbia raggiunto l'apparecchiatura. Nessun altro driver e nessun'altra parte della stazione si ferma con esso.
Prima di iniziare
- La stazione non installa alcun componente OPC. L'enumeratore dei server OPC (OpcEnum) e le librerie proxy e stub di OPC DA arrivano con il server OPC DA, o con gli OPC Core Components. La stazione verifica da sola se sono registrati e, finché ne manca uno, dice come installarli: vedere Installare gli OPC Core Components.
- Un server su un altro computer si raggiunge tramite DCOM, che entrambi i computer devono consentire per l'account Windows con cui gira la stazione: permessi DCOM, regole del firewall e lo stesso account o un dominio attendibile. Questa configurazione si fa in Windows e mai nella stazione: vedere Preparare un server remoto.
- Il driver gira solo su Windows.
Installare gli OPC Core Components
La stazione verifica da sola, nel processo ausiliario a 32 bit, se questo computer ha l'enumeratore dei server OPC (OpcEnum) e le librerie proxy e stub di OPC DA registrati per i programmi a 32 bit: la prima volta che lo chiede la pagina del driver, la pagina di uno dei suoi dispositivi o l'agente, e di nuovo ogni 30 secondi finché ne manca uno. Finché il Connector non è avviato, non si sa se ci sono, e non se ne dice nulla. Finché ne manca uno:
| Dove | Cosa dice |
|---|---|
| La pagina del driver | Un avviso di attenzione, "Gli OPC Core Components mancano su questo computer", con i passi qui sotto. Il suo link apre la pagina della OPC Foundation nel browser del computer. |
| La pagina di ogni dispositivo | Lo stesso avviso, a meno che il dispositivo sia online. |
| Una scansione | Non elenca nulla e dice cosa manca: la riga che chiude la scansione rimanda all'avviso, e device_discover dell'agente dà i passi in inglese. |
| L'ultimo errore di un dispositivo la cui connessione fallisce | Cosa manca e gli stessi passi, in inglese, come sono scritte le cause proprie del driver. |
| L'agente | driver_capabilities li dà sotto prerequisite, con installed a false. |
Per installarli:
- Eseguire di nuovo il programma di installazione del server OPC DA: di solito li installa.
- Altrimenti, aprire la pagina Core Components della OPC Foundation e scaricare gli OPC Core Components Redistributables. Solo un utente registrato può scaricarli: se la pagina dice che non si ha il permesso di scaricare il file, accedere con "Login" o creare un account con "Create Account" sulla stessa pagina.
- Prendere
opc-core-components-redistributable-<version>-x86-x64.msisu Windows a 64 bit, che contiene anche i componenti a 32 bit, e quello che finisce con-x86.msisolo su Windows a 32 bit. - Eseguirlo come amministratore e riavviare il computer se il programma di installazione lo chiede.
Entro 30 secondi dall'installazione l'avviso scompare, la scansione elenca i server OPC DA e i dispositivi di questo driver si collegano con la configurazione che hanno, senza riavviare Ganter Lab.
Preparare un server remoto
Un server su questo computer non ha bisogno d'altro. Un server su un altro computer si raggiunge tramite DCOM, che non lascia entrare nulla da un altro computer finché entrambi non sono predisposti. La predisposizione si fa in Windows su entrambi i computer, da un amministratore di ciascuno, mai nella stazione:
- Usare lo stesso account Windows con la stessa password su entrambi i computer (l'account con cui gira la stazione), oppure un account di dominio noto a entrambi.
- Sul computer del server, eseguire
dcomcnfge aprire Component Services > Computers > My Computer > Properties > COM Security. In Access Permissions e in Launch and Activation Permissions, sia in Edit Limits sia in Edit Default, concedere a quell'account ogni diritto remoto. In Edit Limits di Access Permissions, concedere anche Remote Access ad ANONYMOUS LOGON, che serve all'enumeratore dei server OPC (OpcEnum). - Sempre lì, in My Computer > DCOM Config, aprire le Properties del server OPC e di OpcEnum e, nella loro scheda Security, personalizzare i tre permessi con lo stesso account.
- Sul computer della stazione, eseguire anche
dcomcnfge, in Edit Limits di Access Permissions, concedere Remote Access all'account con cui gira il server OPC: il server richiama la stazione. - Sul computer del server, in Windows Defender Firewall, consentire in ingresso la porta TCP 135 e i
programmi del server OPC e di OpcEnum (
OpcEnum.exe), e verificare in Servizi che OpcEnum sia in esecuzione e si avvii automaticamente.
Edit Default non cambia nulla finché Edit Limits nega il diritto: impostarli entrambi. DCOM risponde sulla porta 135 e poi porta le chiamate su una porta scelta da Windows, quindi un firewall tra i due computer che apre solo la 135 blocca ancora il server.
| Che cosa risponde Windows | Che cosa dice la pagina del dispositivo |
|---|---|
| Accesso negato (0x80070005) | «host rifiuta questa stazione via DCOM», con l'account con cui gira la stazione e i passi da 1 a 4 |
| Il server RPC non è disponibile (0x800706BA) | «host non risponde a DCOM»: il computer è spento o irraggiungibile, il suo firewall blocca DCOM, oppure OpcEnum non vi è in esecuzione, con il passo 5 |
Ogni avviso prende il posto dell'errore del dispositivo e scompare da solo appena il server si collega. Il diario tecnico e l'agente leggono gli stessi passi in inglese. Un server su questo computer non viene mai segnalato così.
Dove l'impianto non consente DCOM, un wrapper o tunnel che serve il server OPC DA in OPC UA, sul computer del server, lo evita del tutto: la stazione legge allora il server con il driver OPC UA.