LIBPFonOPC® Manuale di manutenzione e uso
Questo documento è il manuale di manutenzione e d’uso per soluzioni on-line LIBPFonOPC® sviluppate con LIBPF® (LIBrary for Process Flowsheeting) versione 1.1. È anche disponibile in inglese.
Si rimanda al Manuale di installazione di LIBPFonOPC® per maggiori informazioni sul sistema di sviluppo, l’architettura e le funzionalità di LIBPFonOPC®.
Concetti
Variabili
Le variabili sono così classificate:
-
input: variabili acquisite in lettura dal Distributed Control System (DCS), almeno una;
-
result: risultati cioè variabili scritte verso il DCS, facoltative;
-
constant: parametri costanti per il calcolo, facoltativi.
Ciascuna variabile di tipo input o result contraddistingue quindi un link puntuale tra un TAG del DCS ed una variable di LIBPF.
Tutte le variabili (input, result o constant che siano) devono contenere tutti i seguenti elementi:
-
OPCtag: Valore del TAG nel DCS (comprensivo, se necessario delle estensioni .PV oppure .SP) per i punti di collegamento (input e result) oppure il valore numerico nel caso di constant;
-
description: Un testo descrittivo opzionale della variabile;
-
TAG: Percorso completo della variabile in LIBPF, si veda il paragrafo successivo;
-
UOM: Unità di misura della variabile nel DCS: stringa vuota per le variabili adimensionate oppure una tra le unità riportate in questa tabella:
Grandezza fisica | Unità ammesse |
---|---|
Temperatura | C (note: without degree symbol °) |
K | |
Portata massica | t/h |
kg/h | |
kg/s | |
Pressione | barg |
bar | |
atm | |
Velocity | m/s |
Densità di massa | kg/m3 |
Dimensione lineare (lunghezza/diametro) | m |
mm | |
Potenza | kW |
Calore di reazione | kcal/kg |
Corrente elettrica | A |
Tensione elettrica | V |
In aggiunta gli item di tipo input o result possono contenere i seguenti elementi opzionali:
-
min: Valore minimo ammissibile, nelle unità di misura specificate dall’elemento UOM – valore di difetto: -3.402823466E38;
-
max: Valore massimo ammissibile, nelle unità di misura specificate dall’elemento UOM – valore di difetto: +3.402823466E38.
Se i campi min e max sono impostati a dei valori finiti e non ai valori di difetto, essi vengono usati per mantenere le variabili all’interno di range ammissibili:
-
Per un item di tipo input, il valore acquisito in lettura dal DCS viene forzato in modo che resti all’interno del range [min..max];
-
Per un item di tipo result, il risultato del calcolo prima di essere scritto verso il DCS viene forzato in modo che resti all’interno del range [min..max].
Se i valori min / max sono inconsistenti (max <= min) viene inviato un messaggio di segnalazione nel registro eventi e ambedue i valori vengono resettati al valore di difetto.
Variabili in LIBPF
Per compilare correttamente l’elemento TAG di ogni variabile va indicato il percorso completo in LIBPF.
Le variabili LIBPF® possono essere scalari (temperatura, portata) o vettoriali (composizioni, portate per ogni componente); le seconde vengono indicizzate con gli identificativi dei componenti: x[H2], mdotcomps[N2].
L’elenco del componenti presenti è definito una volta per tutte durante la realizzazione dell’applicativo, per modificare in seguito la scelta dei componenti è necessaria la ricompilazione dell’applicativo.
Negli esempi seguenti i componenti disponibili con i rispettivi identificativi sono riportati in questa Tabella:
Componente | Identificativo in LIBPF® |
---|---|
Azoto | N2 |
Etano | C2H6 |
Propano | C3H8 |
Idrogeno | H2 |
Le variabili sono raggruppate in oggetti che sono instanze di tipi, e che possono contenere a loro volta dei sotto-oggetti.
Quando si vuole referenziare una variabile mdot contenuta in un oggetto di tipo Phase denominato Tphase contenuto nell’oggetto di tipo StreamEosVapor denominato S01, la sintassi prevede di separare gli identificatori dei modelli con il carattere due punti (:) e alla fine la variabile con un punto (.); in questo esempio il percorso completo della variabile sarà:
S01:Tphase.mdot
I tipi utilizzati in LIBPFonOPC® sono i tipi generici LIBPF® (si veda la LIBPF® SDK Classes overview (inglese)):
-
Phase e suoi derivati PhaseTotal, PhaseEos<PhaseType::vapor>, PhaseEos<PhaseType::liquid>, PhasePcsaft<PhaseType::vapor> e PhasePcsaft<PhaseType::liquid>
-
StreamEosVapor
-
StreamEosLiquidVapor
-
StreamPcsaftVapor
-
StreamPcsaftLiquidVapor
e in aggiunta i tipi specifici sviluppati per la soluzione.
Il tipo Phase e suoi derivati definiscono una fase omogenea di materia, e contengono le variabili scalari riportate in questa tabella:
Scalar Variable | Identificativo in LIBPF® |
---|---|
Portata massica | mdot |
Portata volumica | vdot |
Portata molare | ndot |
Peso molecolare medio | AMW |
Volume molare | v |
Densità massica | rho |
Entalpia specifica, per unità di massa | h |
Entalpia specifica, per unità di moli | H |
Calore specifico, per unità di massa | cp |
Calore specifico, per unità di moli | Cp |
Entropia specifica, per unità di massa | s |
Entropia specifica, per unità di moli | S |
Energia libera di Gibbs specifica, per unità di massa | g |
e le variabili vettoriali riportate in questa tabella:
Variabile vettoriale indicizzata dall’identificativo del componente | Identificativo in LIBPF® |
---|---|
Frazione molare | x |
Frazione massica | w |
Portata massica di ciascun componente | mdotcomps |
Portata molare di ciascun componente | ndotcomps |
I tipi StreamEosVapor e StreamPcsaftVapor definiscono una corrente materiale in fase vapore con le proprietà volumetriche determinate con l’equazione di stato di Kwong, Redlich e Soave ovvero con PC-SAFT rispettivamente.
Contengono le seguenti variabili scalari:
-
T: Temperatura
-
P: Pressione
e inoltre un oggetto di tipo Phase opportuno per la fase totale (vapore) denominato Tphase.
I tipi StreamEosLiquidVapor e StreamPcsaftLiquidVapor definiscono una corrente materiale bifasica (vapore / liquido) con le proprietà volumetriche ed i coefficienti di fugacità determinati con l’equazione di stato di Kwong, Redlich e Soave ovvero PC-SAFT rispettivamente.
Contengono le seguenti variabili scalari:
-
T: Temperatura
-
P: Pressione
Inoltre contengono i seguenti sotto-oggetti:
-
Un oggetto di tipo PhaseTotal per la fase totale denominato Tphase;
-
Un oggetto di tipo Phase opportuno per la fase vapore denominato Vphase;
-
Ed un oggetto di tipo Phase opportuno per la fase liquida denominato Lphase.
Gruppi
L’interfaccia con il DCS è basata su gruppi di variabili (groups**)**, corrispondenti a set di dati omogenei o riferiti alla stessa unità impiantistica; deve essere presente almeno un gruppo.
Ogni gruppo deve:
-
avere un identificativo unico (id)
-
essere associato ad un modello (model) che serve a calcolare le variabili di tipo result in funzione di inputs e constants
-
avere almeno una variabile di input.
I gruppi possono inoltre avere gli attributi opzionali description ed enabled.
La suddivisione delle variabili in gruppi permette di:
-
Abilitare/disabilitare selettivamente i gruppi;
-
Associare più gruppi ad uno stesso modello per favorire la modularità ed il riuso;
-
Calcolare soltanto un gruppo alla volta (se è attiva la modalità di funzionamento on-demand) quando per esempio vengono aggiornati dei valori relativi a una certa sezione dell’impianto, mentre le restanti variabili di input non sono cambiate e quindi gli altri gruppi non devono essere ricalcolati.
L’attributo obbligatorio id è l’identificativo del gruppi sia nei confronti del server OPC sia ai fini dell’instanziazione del corrispondente modello LIBPF. Pertanto è soggetto ai seguenti vincoli:
-
Deve essere unico;
-
È case-sensitive;
-
Deve iniziare con un carattere alfabetico (solo caratteri UNICODE stampabili);
-
I caratteri successivi devono essere alfanumerici oppure spazio, underscore
_
trattino-
, parentesi quadra aperta[
o chiusa]
.
L’attributo obbligatorio model determina il tipo di modello LIBPF, a scelta tra i tipi specifici per l’applicativo on-line.
L’attributo description è facoltativo e permette di aggiungere una descrizione testuale al gruppo.
Attraverso l’attributo facoltativo enabled i gruppi possono essere abilitati (true oppure 1) oppure disabilitati (enabled=false oppure 0), in difetto dell’attributo sono considerati abilitati. Abilitati vuol dire che vengono configurati con il server OPC e viene fatto il calcolo, disabilitati vuol dire che vengono solo configurati con il server OPC; se i gruppi (abilitati o disabilitati che siano) contengono dei tag invalidi, ci saranno inizialmente degli errori del tipo “Configuration error: impossible to add OPC link [XXXXXX.YY] for group [ZZZZZZZZ]” quindi vengono scollegati in maniera definitiva poiché in ogni caso sarà sempre e comunque impossibile abilitarli.
Funzionamento
Una soluzione on-line basata su LIBPFonOPC® può funzionare in due modalità:
-
In modalità console;
-
Come servizio;
La modalità console è utile per il troubleshooting ed è descritta nel relativo capitolo.
Nella modalità di funzionamento come servizio l’applicativo non ha accesso a finestre grafiche o in modo testo visibili, non scrive alcun file e non interagisce in nessun modo diretto con l’utente. L’interazione con l’applicativo in funzionamento in questo caso avviene indirettamente tramite:
-
Il configuratore di LIBPFonOPC®, che permette l’avvio / arresto del servizio;
-
Il SCM (Service Control Manager) del sistema operativo, che permette l’avvio/arresto e anche la pausa del servizio;
-
Il registro eventi “Applicazione” del sistema operativo, dove vengono annotati gli eventi critici (Error), gli Avvisi (Warning) e le notifiche (Information);
-
Con l’utility Trace Listener che rende visibile la traccia sul funzionamento come lista di messaggi testuali.
Configurazione e controllo attraverso il Control Panel
Il configuratore LIBPFonOPC è un’interfaccia interattiva per il controllo del servizio dell’applicativo on-line e la sua configurazione, che può essere usata in alternativa ai metodi manuali descritti al capitolo “Configurazione manuale”.
L’accesso al configuratore avviene attraverso il Control panel cliccando su “LIBPFonOPC Configurator” nella categoria “Sistema e sicurezza”:
Il configuratore presenta un’interfaccia con tre linguette:
-
Avvia / arresta: per visualizzare lo stato del servizio LIBPFonOPC®, avviarlo o arrestarlo;
-
Configura: per modificare le impostazioni generali del servizio LIBPFonOPC®;
-
Variabili: per visualizzare, modificare, importare ed esportare le variabili ed i gruppi di variabili.
Avvia / arresta
Dalla linguetta Avvia / arresta è possibile visualizzare lo stato del servizio LIBPFonOPC®:
Sono inoltre presenti due bottoni:
-
avvia e
-
arresta.
Quando il servizio è in esecuzione, il bottone avvia è disattivato, mentre quando il servizio è arrestato, il bottone arresta è disattivato.
Quando si preme su uno di questi bottoni, il cursore diventa una clessidra finché il comando è andato a buon fine o comunque entro un certo time-out.
Al termine del comando o in caso di mancata risposta dal servizio, un messaggio viene mostrato nella barra di stato.
Nota: All’uscita del servizio vengono interrotti i collegamenti, eliminati tutti i riferimenti agli oggetti (in particolare gli handles ai gruppi sul server OPC) e chiusi i modelli.
Impostazioni
Nella linguetta impostazioni è possibile modificare le impostazioni generali del servizio LIBPFonOPC®:
Le variabili che possono essere configurate sono:
-
home_path: percorso completo del file settings.xml sul disco, senza backslash () alla fine; il valore di difetto in mancanza di un’impostazione è
C:\
, il valore impostato dall’installer è tipicamenteC:\ProgramData\LIBPF 1.0
; -
kernel_path: percorso completo dell’eseguibile LIBPFonOPC.exe sul disco, senza backslash () alla fine; il valore di difetto in mancanza di un’impostazione è
C:\
, il valore impostato dall’installer è tipicamenteC:\Programmi\LIBPF 1.0
(oppureC:\Programmi (x86)\LIBPF 1.0
se la versione a 32 bit di LIBPFonOPC viene installata su un sistema operativo a 64 bit); -
CLSID: COM class identifier del server OPC(Globally unique identifier used to uniquely distinguish different software component interfaces in the Microsoft Component Object Model (COM)); valore default “Hci.TPNServer”;
-
sleepTime in ms (millisecondi): parametro utile per la modulazione del carico sulla CPU; se è richiesta una riduzione dell’impatto sulla performance del server, allungare questo valore – per accelerare la frequenza di calcolo diminuire questo valore; valore default 1000 ms, valori ammessi compresi tra 0 e 10000;
-
tracePipe: il nome della named pipe per l’invio dei messaggi di traccia (trace), valore default “LIBPFTracer”;
-
traceServer: il nome del computer sulla cui named pipe saranno inviati i messaggi di traccia, valore default “.” (corrisponde al computer locale);
-
verbosityGlobal: prolissità dei messaggi generici inviati a traccia: valore 3 corrisponde al massimo numero di messaggi, 0 dovrebbe zittire quasi tutto; valore default 0, valori ammessi compresi tra 0 e 3;
-
verbosityFlash: controlla selettivamente la prolissità dei messaggi relativi alla convergenza degli algoritmi di risoluzione del flash vapore/liquido, 3 è il massimo, 0 silenzia quasi tutto; valore default 0, valori ammessi compresi tra 0 e 3;
-
readOnly: se spuntato permette di far girare l’applicativo in modalità “sola lettura”, senza scrivere alcun valore sul DCS; valore non spuntato;
-
maxErrCount: permette di impostare il numero massimo di avvisi per errori di lettura/convergenza/scrittura per ogni gruppo, non c’è limite se è impostato a 0; valore default 3.
Le impostazioni alfanumeriche possono essere modificate direttamente scrivendo il nuovo valore nel campo, o per l’impostazione sleepTime muovendo la barra di scorrimento (slidebar). Nel caso dei percorsi home_path e kernel_path, la modifica avviene premendo sul bottone con l’icona della cartella , e navigando alla cartella che interessa.
Le modifiche vengono immediatamente scritte nel registro di sistema, pertanto non è presente in questa maschera un bottone “applica” o “salva”. Tuttavia affinché le modifiche abbiano un effetto, è necessario un riavvio del servizio (che deve essere effettuato a cura dell’utente).
Dopo che ogni modifica è stata scritta nel registro di sistema, viene mostrato un messaggio di conferma nella barra di stato, ad esempio: “Key [sleepTime] set to 1; restart service to make change effective“.
Variabili
Dalla linguetta variabili è possibile consultare e modificare interattivamente i gruppi e le variabili come definite nel file settings.xml corrente, quindi premendo “Salva” si salvano su disco le modifiche:
I gruppi e le variabili si possono consultare cliccando prima sul gruppo nel pannello sinistro; ad esempio nella figura seguente è stato selezionato il gruppo “E200”:
nel pannello destro vengono mostrate le variabili (input, risultati e costanti) del gruppo selezionato.
Le modifiche ai gruppi esistenti si fanno modificando direttamente la check box di attivazione/disattivazione, la descrizione e il modello (per quest’ultimo appare una pull-down list con i modelli disponibili); per entrare in modalità modifica nei campi alfanumerici, cliccare una volta ed attendere un secondo.
Nella figura precedente ad esempio i gruppi “E200” ed “S500” sono stati attivati.
Non appena qualche variabile o qualche gruppo vengono cambiati, viene mostrato un messaggio nella barra di stato: “Modifiche non salvate“ e il bottone “Salva” diventa attivo.
Per aggiungere un nuovo gruppo si clicca sul tasto col simbolo in blu a sinistra della riga vuota in fondo; in questo modo viene creato un nuovo gruppo con impostazioni predefinite:
che possono essere modificate – in particolare almeno l’id e il modello devono essere obbligatoriamente impostati:
Per eliminare un gruppo esistente si clicca sul tasto col simbolo in rosso a sinistra della riga corrispondente.
Per riordinare i gruppi si usano i comandi “Move up” / “Move down” disponibili cliccando col tasto destro del mouse su ciascun gruppo.
Le modifiche alle variabili esistenti si fanno modificando direttamente l’OPC tag, la descrizione, il LIBPF tag, le unità di misura (per le unità di misura appare una pull-down list con le unità disponibili), e i limiti ammissibili inferiore e superiore; per entrare il modalità modifica in questi campi, cliccare una volta ed attendere un secondo.
Per aggiungere una nuova variabile si clicca sul tasto col simbolo in blu a sinistra della riga vuota; in questo modo viene creata una nuova variabile con impostazioni predefinite:
che possono essere modificate – in particolare almeno i campi OPC tag, Description, LIBPF tag e UOM devono essere impostati.
Per eliminare una variabile esistente si clicca sul tasto col simbolo in rosso a sinistra della riga corrispondente.
Per riordinare le variabili si usano i comandi “Move up” / “Move down” disponibili cliccando col tasto destro del mouse su ciascuna variabile.
Le modifiche non vengono immediatamente salvate sul file settings.xml, pertanto deve essere premuto il bottone “salva”. Tuttavia affinché le modifiche abbiano un effetto, è necessario anche un riavvio del servizio (che deve essere effettuato a cura dell’utente).
Un volta salvate le modifiche su disco, viene mostrato nella barra di stato il messaggio: “Settings.xml file overwritten; restart service to make changes effective“.
Inoltre è possibile:
-
Importare il file settings.xml salvato in precedenza da un altra posizione; dopo aver scelto il file da importare:
se sono presenti modifiche non ancora salvate nel file settings.xml attivo, appare una finestra di conferma:
una volta confermata l’operazione il file scelto va a sostituire il file settings.xml attivo e viene immediatamente caricato nella maschera.
-
Esportare il file settings.xml attivo con un altro nome: dopo aver dato un nome al file che viene esportato:
il file settings.xml attivo viene salvato con quel nome e infine appare una finestra di conferma:
-
Aggiornare la vista (per il caso in cui il file settings.xml attivo sia stato modificato da un editor esterno) forzando la ricarica del file settings.xml presente su disco; se sono presenti nella maschera delle modifiche non ancora salvate, appare una finestra di conferma; una volta confermata l’operazione il file settings.xml attivo viene ricaricato nella maschera.
-
Nota: Dopo ogni modifica alle variabili, affinché queste modifiche abbiano un effetto, è necessario un riavvio del servizio (che deve essere effettuato a cura dell’utente).
Configurazione e controllo manuale
In alternativa al configuratore di LIBPFonOPC è possibile configurare e controllare manualmente la
-
Le variabili e i gruppi sono salvati nel file settings.xml;
-
Il servizio può essere avviato/arrestato attraverso il Service Control Manager del sistema operativo;
-
La configurazione dei parametri principali che controllano il funzionamento di LIBPFonOPC® può avvenire anche manipolando direttamente il registro del sistema operativo.
File settings.xml
La configurazione dei gruppi di variabili (inputs, risultati e costanti) con associato il modello di calcolo, può essere effettuata manualmente per mezzo del file di testo di configurazione settings.xml in codifica UNICODE UTF-8, che si trova sul disco al percorso completo definito dalla variabile home_path (tipicamente C:\ProgramData\LIBPF 1.0
).
La costruzione o l’adattamento del file settings.xml deve quindi essere fatta a tavolino prima di usare LIBPFonOPC®. Le modifiche al file hanno effetto soltanto quando si lancia nuovamente l’applicazione LIBPFonOPC® in modalità console oppure quando si riavvia il servizio.
Per evitare errori il file di configurazione vero e proprio è accompagnato dai due files ausiliari (che non devono essere manipolati dall’utente): schema.xsd (per la validazione della sintassi dell’XML validation schema; https://www.w3.org/TR/xmlschema-2/) e stylesheet.xml (per la visualizzazione in forma user-friendly e il controllo della congruenza interna).
Per la visualizzazione del file di configurazione settings.xml usa un HTML compatibile con i files XSLT come Internet Explorer, Firefox o Safari; il file apparirà così:
in questa lista i gruppi non attivi sono visualizzati in azzurro. Cliccando su un gruppo è possibile vedere i dettagli:
NOTE: Opera, Google Chrome e Chromium non sono supportati a causa di questo bug; Microsoft Edge non è supportato.
Per piccole modifiche incrementali del file di configurazione si consiglia l’uso dell’utility freeware Microsoft XML Notepad (https://microsoft.github.io/XmlNotepad/), mentre per le modifiche massicce (copia e incolla etc.) è più pratico un comune editor di testo (es. Notepad).
La figura seguente mostra il file durante l’editing all’interno di XML Notepad, con gli ausili alla composizione:
Se il file di configurazione non è corretto sintatticamente, vengono riportati errori o warnings nel registro eventi “Applicazione” del sistema operativo ed i collegamenti non vengono abilitati.
In generale i descrittivi testuali (tag, etichette, descrizioni) non sono soggetti a limiti di lunghezza, e possono contenere qualsiasi carattere speciale (àèìòù, caratteri grafici, cirillico, greco..) grazie alla codifica UNICODE UTF-8.
La struttura generale del file di configurazione settings.xml è la seguente:
Il file è organizzato in gruppi, ognuno associato ad un modello, e all’interno di ogni gruppo in variabili input, output e costanti.
Un file settings.xml dimostrativo nel formato XML grezzo potrebbe avere il seguente aspetto:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> <groups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema_dummy.xsd"> <group id="200" enabled="true" description="Esterification section 200" model="ReactorEsterification"> <input> <OPCtag>TRC201.PV</OPCtag> <description>Reactor inlet temperature</description> <TAG>R200.T</TAG> <UOM>m</UOM> </input> <input> <OPCtag>PRC204.PV</OPCtag> <description>Reactor pressure</description> <TAG>R200.P</TAG> <UOM>barg</UOM> </input> <input> <OPCtag>FIC210.PV</OPCtag> <description>Total mass flow</description> <TAG>S04.mdot</TAG> <UOM>t/h</UOM> </input> <input> <OPCtag>X208.PV</OPCtag> <description>Solvent mass fraction</description> <TAG>S02:Tphase.w[S]</TAG> <UOM></UOM> </input> <result> <OPCtag>X298.PV</OPCtag> <description>Predicted fractional conversion</description> <TAG>R200:reactions[4].z</TAG> <UOM>mm</UOM> </result> </group> </groups>
Avvio / arresto del servizio
Aprire l’applet Microsoft management console relativo ai servizi da Start → Pannello di controllo → Strumenti di amministrazione → Servizi ed avviare / arrestare il servizio:
Nota: All’uscita del servizio vengono interrotti i collegamenti, eliminati tutti i riferimenti agli oggetti (in particolare gli handles ai gruppi sul server OPC) e chiusi i modelli.
Registro del sistema operativo
La configurazione dei parametri principali che controllano il funzionamento di LIBPFOPC può anche avvenire direttamente tramite il registro del sistema operativo.
Le chiavi rilevanti sono in HKEY_LOCAL_MACHINE\Software\libpf.com\LIBPF 1.0
:
Troubleshooting
Traccia
La traccia (trace) è una diagnostica dettagliata sul funzionamento del programma.
LIBPFOPC ha due tipi di traccia:
T1) traccia del modulo LIBPFonOPC® e del programma principale;
T2) traccia dei calcoli eseguiti dal modulo LIBPF® CORE.
La traccia T1 viene inviata normalmente a console, oppure ad una named pipe se qualcuno è in ascolto. La named pipe di difetto è locale: \\.\pipe\LIBPFTrace
; utilizzando le voci di registro tracePipe e traceServer è possibile cambiare il nome della named pipe e la workstation remota su cui verrà tentata la connessione. In questo caso occorre che l’utente in nome del quale viene lanciato il programma LIBPFonOPC® (normalmente l’account locale sul server NT AUTHORITY/SYSTEM in caso di funzionamento come servizio) abbia le credenziali necessarie ad aprire la named pipe sulla workstation remota. È possibile ad esempio avviare il servizio come un account di dominio dotato di appropriati diritti d’accesso.
Per richiedere la traccia occorre aprire l’utility TraceListener.exe prima di avviare il servizio, con doppio-click sul collegamento Start → Programmi → LIBPF 1.0 → Trace Listener.
La traccia T2 invece viene inviata unicamente a console quindi per poterla vedere è necessario avviare LIBPFonOPC® in modalità console (vedi paragrafo successivo).
Funzionamento in modalità console
Per poter vedere sia la traccia T1 che la traccia T2, invece di avviare LIBPFonOPC® come servizio, avviare tramite il collegamento Start → Programmi → LIBPF 1.0 → LIBPFonOPC console.
Se necessario salvare su file la traccia inviata a console, aprire una finestra di Prompt dei comandi, cambiare la directory corrente a C:\Programmi\LIBPF 1.0
(oppure C:\Programmi (x86)\LIBPF 1.0
se la versione a 32 bit di LIBPFonOPC viene installata su un sistema operativo a 64 bit) ed eseguire il programma con i comandi:
cd C:\Programmi\LIBPF 1.0
LIBPFonOPC -console > %USERPROFILE%Desktop\log.txt
Il programma può essere fermato premendo il tasto q (lettera Q minuscola) quando il focus è sulla console dove sta eseguendo.
Chiudendo in questo modo LIBPFonOPC in modalità console, elimina tutti i riferimenti agli oggetti (in particolare gli handles ai gruppi sul server OPC), chiude la simulazione, interrompe il collegamento con il server OPC e infine chiude l’applicazione. Se invece la console dove è in esecuzione LIBPFonOPC viene chiusa direttamente, non vengono liberate le risorse sul server OPC, la qual cosa potrebbe portare a problemi con certe implementazioni del server OPC.
Codici d’uscita
L’applicativo al termine di una girata in modalità console senza errori uscirà con il codice 0. I codici di uscita negativi sono associati ad errori irreversibili:
Codice di uscita | Messaggio a registro eventi |
---|---|
-10 | MSG_DEMO_EXPIRED |
-11 | MSG_CONNECTION_ERROR1 |
-12 | MSG_CONNECTION_ERROR2 |
-13 | MSG_CONNECTION_ERROR3 |
-14 | MSG_VALIDATION |
-15 | MSG_XML_INSTANCE |
-16 | MSG_MISSING_ID |
-17 | MSG_MISSING_MODEL |
-18 | MSG_SELECT_NODES |
-19 | MSG_UNKNOWN_NAME |
-20 | MSG_SCDISPATCHER_FAIL |
-21 | MSG_INCORRECT_NAME |
-22 | MSG_SSSTATUS_FAIL |
Quando il programma genera un errore irreversibile, dovrebbe anche inviare un messaggio al registro eventi “Applicazione” del sistema operativo.
Si rimanda alla sezione successiva “Errori” per le azioni correttive da prendere caso per caso.
Event logging: categorie e tipi di messaggi
I messaggi a registro eventi “Applicazione” sono di quattro tipi (classificazione definita dal sistema operativo):
-
Errori
-
Warning
-
Informazioni
-
Successo
Inoltre i messaggi emessi da LIBPFonOPC® sono catalogati in quattro categorie:
-
XML: legati alla validazione e scansione del file settings.txt
-
OPC: legati alla comunicazione con il server OPC
-
LIBPF: legati a LIBPF® CORE
-
General: legati alla connessione alla named pipe, alla gestione della comunicazione con il SCM (Service Control Manager), alla scadenza della licenza d’uso dell’applicativo, notifica di avvio e chiusura.
Errori
Codice di uscita | Nome simbolico | Errore | Suggerimenti ed azioni correttive |
---|---|---|---|
-10 | MSG_DEMO_EXPIRED | Sorry, this demo has expired. | Verificare la presenza di una valida licenza d’uso dell’applicativo LIBPFonOPC. |
-11 | MSG_CONNECTION_ERROR1 | Connection error: the interface [%1] is not registered | L’OPC server non è correttamente installato oppure la voce di registro HKEY_LOCAL_MACHINE\SOFTWARE\libpf.com\LIBPF\CLSID è settata incorrettamente. |
-12 | MSG_CONNECTION_ERROR2 | Connection error: impossible to get a pointer to the IOPCServer interface for [%1] | Errore interno OPC: l’OPC server non è correttamente installato. |
-13 | MSG_CONNECTION_ERROR3 | Connection error: impossible to get a pointer to the IOPCCommon interface for [%1] | Errore interno OPC: l’OPC server non è correttamente installato. |
-22 | MSG_INCORRECT_NAME | Incorrect variable name | Errore interno: la funzione linkmap è stata chiamata con un TAG inesistente. |
-16 | MSG_MISSING_ID | Missing id for group [%1] | Manca l’attributo obbligatorio id per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione. |
-17 | MSG_MISSING_MODEL | Missing model for group [%1] | Manca l’attributo obbligatorio model per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione. |
-21 | MSG_SCDISPATCHER_FAIL | StartServiceCtrlDispatcher failed. | Si è tentato di avviare il programma direttamente. Avviare come servizio oppure se si desidera far partire in una console, usare il parametro a linea di comando “-console”. |
-19 | MSG_SELECT_NODES | Error while calling selectNodes /groups/group | Errore grave nel file settings.xml. Rivedere la sintassi del file di configurazione. |
-22 | MSG_SSSTATUS_FAIL | SetServiceStatus failed. | Errore interno nella comunicazione con il SCM (Service Control Manager). |
-20 | MSG_UNKNOWN_NAME | Unknown name | Uno degli elementi item aveva un sotto-elemento non ammesso nel file settings.xml. Rivedere la sintassi del file di configurazione. |
-14 | MSG_VALIDATION | XML Validation: %1 | Il file settings.xml non è stato trovato oppure non è un file XML corretto. Verificare la presenza del file nella posizione home_path oppure rivedere la sintassi del file di configurazione. |
-15 | MSG_XML_INSTANCE | Error while instantiating MSXML2::DOMDocument60 | Il componente MSXML 6.0 non è correttamente installato sul computer. Scaricare dal sito Microsoft ed installare. |
Avvisi
Nome simbolico | Errore | Suggerimenti ed azioni correttive |
---|---|---|
MSG_CONFIGURATION | Configuration error: impossible to add OPC link [%1] for group [%1] | Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server. |
MSG_CONVERGENCE | Convergence for group [%1], the values of the input variables were: [%2] | Errore interno LIBPF CORE. Raccogliere i valori per le variabili di ingresso e comunicare il problema al supporto. |
MSG_CORE | Severe error in LIBPF CORE [%1] in group [%2] | Errore interno LIBPF CORE. Raccogliere i valori per le variabili di ingresso e comunicare il problema al supporto. |
MSG_GROUP_ACTIVATE | Error activating group [%1] | Errore interno OPC. |
MSG_GROUP_ADD1 | Error adding group [%1] | Errore interno OPC. |
MSG_GROUP_ADD2 | Group add error: NULL pointer to the IOPCItemMgt interface for group [%1] | Errore interno OPC. |
MSG_GROUP_ADD3 | Group add error: NULL pointer to the IOPCGroupStateMgt interface for group [%1] | Errore interno OPC. |
MSG_GROUP_DEACTIVATE | Error deactivating group [%1] | Errore interno OPC. |
MSG_GROUP_REMOVE | Error removing group [%1] | Errore interno OPC. |
MSG_SYNCH_READ1 | Synchronous read error: impossible to read item [%1] [%2] | Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server. |
MSG_SYNCH_READ2 | Synchronous read error: NULL value for item [%1] [%2] | Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server. |
MSG_SYNCH_WRITE | Synchronous write error: impossible to write item [%1] [%2] | Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server. |
MSG_TRACEPIPE_CONNECT | Problem while connecting to trace pipe: [%1] | Non sembra essere raggiungibile la named pipe per la traccia. È possibile ignorare questo avviso. |
MSG_UNKNOWN_ATTRIBUTE | Unknown attribute [%1] | È stato rilevato un attributo di troppo per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione. |
MSG_UNKNOWN_ATTRIBUTE_VALUE | Unknown value [%1] for attribute [%2] | Il valore assegnato all’attributo per uno dei gruppi nel file settings.xml è incomprensibile. Rivedere la sintassi del file di configurazione. |
MSG_UNKNOWN_TAGTYPE | Unknown tag type %1 | All’interno di ogni gruppo nel file settings.xml sono ammessi solo elementi di tipo input, result oppure constant. Rivedere la sintassi del file di configurazione. |
MSG_MINMAX | Max is less or equal to min for item %1 | I limiti specificati per il range di validità della variabile sono inconsistenti. Il programma resetterà min e max ai valori di difetto. Rivedere i dati inseriti nel file di configurazione. |
Informazioni (information e success)
Non è normalmente richiesta alcuna azione correttiva specifica per questi messaggi.
Nome simbolico | Errore | Suggerimenti ed azioni correttive |
---|---|---|
MSG_SYNCH_READ_MAXERR | Too many read errors for item [%1] [%2] any further error will be silenced | Per il tag OPC indicato è stato ecceduto il numero massimo di avvisi per errori di lettura. Ulteriori problemi non saranno segnalati nel registro eventi. |
MSG_SYNCH_WRITE_MAXERR | Too many write errors for item [%1] [%2] any further error will be silenced | Per il tag OPC indicato è stato ecceduto il numero massimo di avvisi per errori di scrittura. Ulteriori problemi non saranno segnalati nel registro eventi. |
MSG_CONNECTION_OK | Successfully connected to OPC Driver [%1] | - |
MSG_DISCONNECTION_OK | Successfully disconnected from OPC Driver | - |
MSG_OPERATION_STARTED | Started processing data | - |
MSG_OPERATION_STOPPED | Stopped processing data | - |
MSG_CONVERGENCE_MAXERR | Too many convergence errors for group [%1] any further error will be silenced | Per il gruppo indicato è stato ecceduto il numero massimo di avvisi per errori di convergenza. Ulteriori problemi non saranno segnalati nel registro eventi. |