Questo documento è il manuale di manutenzione e d’uso per soluzioni on-line LIBPFonOPC™ sviluppate con LIBPF (LIBrary for Process Flowsheeting) versione 1.0.2264 e successive.

Questo manuale esiste anche in una versione in lingua inglese: LIBPFonOPC™ Maintenance and user manual.

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:

  1. input: variabili acquisite in lettura dal Distributed Control System (DCS), almeno una;

  2. result: risultati cioè variabili scritte verso il DCS, facoltative;

  3. 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 Identifier 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:

  1. Deve essere unico;

  2. È case-sensitive;

  3. Deve iniziare con un carattere alfabetico (solo caratteri UNICODE stampabili);

  4. 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":

control panel

Il configuratore presenta un’interfaccia con tre linguette:

  1. Avvia / arresta: per visualizzare lo stato del servizio LIBPFonOPC™, avviarlo o arrestarlo;

  2. Configura: per modificare le impostazioni generali del servizio LIBPFonOPC™;

  3. 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™:

start stop

Sono inoltre presenti due bottoni:

  • start avvia e

  • stop 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™:

settings

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 è tipicamente C:\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 è tipicamente 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);

  • 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 folder, 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:

variables

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":

group selection

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 add in blu a sinistra della riga vuota in fondo; in questo modo viene creato un nuovo gruppo con impostazioni predefinite:

group add

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 delete 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 add in blu a sinistra della riga vuota; in questo modo viene creata una nuova variabile con impostazioni predefinite:

variable add

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 delete 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:

    xml import

    se sono presenti modifiche non ancora salvate nel file settings.xml attivo, appare una finestra di conferma:

    xml import confirm

    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:

    export

    il file settings.xml attivo viene salvato con quel nome e infine appare una finestra di conferma:

    export confirmation

  • 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(XML validation schema:)) 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ì:

settings list

in questa lista i gruppi non attivi sono visualizzati in azzurro. Cliccando su un gruppo è possibile vedere i dettagli:

settings detail

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 (http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&displaylang=en), 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:

XML Notepad

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:

LIBPFOPC019

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:

LIBPFOPC020

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:

LIBPFOPC021

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):

  1. Errori

  2. Warning

  3. Informazioni

  4. Successo

Inoltre i messaggi emessi da LIBPFonOPC™ sono catalogati in quattro categorie:

  1. XML: legati alla validazione e scansione del file settings.txt

  2. OPC: legati alla comunicazione con il server OPC

  3. LIBPF: legati a LIBPF™ CORE

  4. 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

Exit code -10
SymbolicName MSG_DEMO_EXPIRED
Error Sorry, this demo has expired.
Suggerimenti ed azioni correttive Verificare la presenza di una valida licenza d’uso dell’applicativo LIBPFonOPC.
Exit code -11
SymbolicName MSG_CONNECTION_ERROR1
Error Connection error: the interface [%1] is not registered
Suggerimenti ed azioni correttive L’OPC server non è correttamente installato oppure la voce di registro HKEY_LOCAL_MACHINE\SOFTWARE\libpf.com\LIBPF\CLSID è settata incorrettamente.
Exit code -12
SymbolicName MSG_CONNECTION_ERROR2
Error Connection error: impossible to get a pointer to the IOPCServer interface for [%1]
Suggerimenti ed azioni correttive Errore interno OPC: l’OPC server non è correttamente installato.
Exit code -13
SymbolicName MSG_CONNECTION_ERROR3
Error Connection error: impossible to get a pointer to the IOPCCommon interface for [%1]
Suggerimenti ed azioni correttive Errore interno OPC: l’OPC server non è correttamente installato.
Exit code -22
SymbolicName MSG_INCORRECT_NAME
Error Incorrect variable name
Suggerimenti ed azioni correttive Errore interno: la funzione linkmap è stata chiamata con un TAG inesistente.
Exit code -16
SymbolicName MSG_MISSING_ID
Error Missing id for group [%1]
Suggerimenti ed azioni correttive Manca l’attributo obbligatorio id per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione.
Exit code -17
SymbolicName MSG_MISSING_MODEL
Error Missing model for group [%1]
Suggerimenti ed azioni correttive Manca l’attributo obbligatorio model per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione.
Exit code -21
SymbolicName MSG_SCDISPATCHER_FAIL
Error StartServiceCtrlDispatcher failed.
Suggerimenti ed azioni correttive 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”.
Exit code -19
SymbolicName MSG_SELECT_NODES
Error Error while calling selectNodes /groups/group
Suggerimenti ed azioni correttive Errore grave nel file settings.xml. Rivedere la sintassi del file di configurazione.
Exit code -22
SymbolicName MSG_SSSTATUS_FAIL
Error SetServiceStatus failed.
Suggerimenti ed azioni correttive Errore interno nella comunicazione con il SCM (Service Control Manager).
Exit code -20
SymbolicName MSG_UNKNOWN_NAME
Error Unknown name
Suggerimenti ed azioni correttive Uno degli elementi item aveva un sotto-elemento non ammesso nel file settings.xml. Rivedere la sintassi del file di configurazione.
Exit code -14
SymbolicName MSG_VALIDATION
Error XML Validation: %1
Suggerimenti ed azioni correttive 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.
Exit code -15\
SymbolicName MSG_XML_INSTANCE
Error Error while instantiating MSXML2::DOMDocument60
Suggerimenti ed azioni correttive Il componente MSXML 6.0 non è correttamente installato sul computer. Scaricare dal sito Microsoft ed installare.

Avvisi

SymbolicName MSG_CONFIGURATION
Error Configuration error: impossible to add OPC link [%1] for group [%1]
Suggerimenti ed azioni correttive Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server.
SymbolicName MSG_CONVERGENCE
Error Convergence for group [%1], the values of the input variables were: [%2]
Suggerimenti ed azioni correttive Errore interno LIBPF CORE. Raccogliere i valori per le variabili di ingresso e comunicare il problema al supporto.
SymbolicName MSG_CORE
Error Severe error in LIBPF CORE [%1] in group [%2]
Suggerimenti ed azioni correttive Errore interno LIBPF CORE. Raccogliere i valori per le variabili di ingresso e comunicare il problema al supporto.
SymbolicName MSG_GROUP_ACTIVATE
Error Error activating group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_GROUP_ADD1
Error Error adding group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_GROUP_ADD2
Error Group add error: NULL pointer to the IOPCItemMgt interface for group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_GROUP_ADD3
Error Group add error: NULL pointer to the IOPCGroupStateMgt interface for group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_GROUP_DEACTIVATE
Error Error deactivating group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_GROUP_REMOVE
Error Error removing group [%1]
Suggerimenti ed azioni correttive Errore interno OPC.
SymbolicName MSG_SYNCH_READ1
Error Synchronous read error: impossible to read item [%1] [%2]
Suggerimenti ed azioni correttive Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server.
SymbolicName MSG_SYNCH_READ2
Error Synchronous read error: NULL value for item [%1] [%2]
Suggerimenti ed azioni correttive Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server.
SymbolicName MSG_SYNCH_WRITE
Error Synchronous write error: impossible to write item [%1] [%2]
Suggerimenti ed azioni correttive Rivedere la sintassi per l’item indicato, e verificare che sia correttamente configurato sull’OPC server.
SymbolicName MSG_TRACEPIPE_CONNECT
Error Problem while connecting to trace pipe: [%1]
Suggerimenti ed azioni correttive Non sembra essere raggiungibile la named pipe per la traccia. È possibile ignorare questo avviso.
SymbolicName MSG_UNKNOWN_ATTRIBUTE
Error Unknown attribute [%1]
Suggerimenti ed azioni correttive È stato rilevato un attributo di troppo per uno dei gruppi nel file settings.xml. Rivedere la sintassi del file di configurazione.
SymbolicName MSG_UNKNOWN_ATTRIBUTE_VALUE
Error Unknown value [%1] for attribute [%2]
Suggerimenti ed azioni correttive Il valore assegnato all’attributo per uno dei gruppi nel file settings.xml è incomprensibile. Rivedere la sintassi del file di configurazione.
SymbolicName MSG_UNKNOWN_TAGTYPE
Error Unknown tag type %1
Suggerimenti ed azioni correttive 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.
SymbolicName MSG_MINMAX
Error Max is less or equal to min for item %1
Suggerimenti ed azioni correttive 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.

SymbolicName MSG_SYNCH_READ_MAXERR
Error Too many read errors for item [%1] [%2] any further error will be silenced
Suggerimenti ed azioni correttive Per il tag OPC indicato è stato ecceduto il numero massimo di avvisi per errori di lettura. Ulteriori problemi non saranno segnalati nel registro eventi.
SymbolicName MSG_SYNCH_WRITE_MAXERR
Error Too many write errors for item [%1] [%2] any further error will be silenced
Suggerimenti ed azioni correttive Per il tag OPC indicato è stato ecceduto il numero massimo di avvisi per errori di scrittura. Ulteriori problemi non saranno segnalati nel registro eventi.
SymbolicName MSG_CONNECTION_OK
Error Successfully connected to OPC Driver [%1]
Suggerimenti ed azioni correttive -
SymbolicName MSG_DISCONNECTION_OK
Error Successfully disconnected from OPC Driver
Suggerimenti ed azioni correttive -
SymbolicName MSG_OPERATION_STARTED
Error Started processing data
Suggerimenti ed azioni correttive -
SymbolicName MSG_OPERATION_STOPPED
Error Stopped processing data
Suggerimenti ed azioni correttive -
SymbolicName MSG_CONVERGENCE_MAXERR
Error Too many convergence errors for group [%1] any further error will be silenced
Suggerimenti ed azioni correttive Per il gruppo indicato è stato ecceduto il numero massimo di avvisi per errori di convergenza. Ulteriori problemi non saranno segnalati nel registro eventi.