Passa al contenuto principale

Modulo di monitoraggio "diagnostics"

Descrizione​

Compito del modulo di monitoraggio "diagnostics" è monitorare diversi tipi di dati di ingresso rispetto a criteri definiti e scrivere successivamente le informazioni di allarme che ne risultano nel database degli allarmi smartCORE dell'Alarm Manager.

Per l'ulteriore elaborazione dei messaggi di allarme, questo database può essere collegato a optiCloud, ad es. con il plug-in opticloud.

Tra i tipi di dati di ingresso monitorati rientrano, tra l'altro,

  • Valori booleani, ad es. flag di stato o risultati di logiche calcolate
  • Valori Double (virgola mobile), ad es. valori di misura o grandezze calcolate, che vengono confrontati con un valore limite fisso. È prevista un'isteresi impostabile per la soppressione del rumore. Per tracciare i valori estremi, è possibile attivare gli aggiornamenti del messaggio.
  • Codici Integer, ad es. codici di stato o ENUM oppure determinati bit o sezioni di bit; i singoli codici o intervalli di codici possono essere filtrati mediante una white/black list e assegnati rispettivamente allo stato HIGH o LOW. I codici non corrispondenti vengono segnalati tramite un allarme di stato di errore dedicato fino all'arrivo di un codice valido. Per tracciare i cambi di stato, è possibile attivare gli aggiornamenti del messaggio.
  • Valori String (testo), ad es. messaggi del registro di bordo di un dispositivo; gli elementi di testo possono essere estratti tramite Regular Expressions (PCRE), filtrati come white/black list e assegnati allo stato HIGH o LOW. I testi non corrispondenti vengono segnalati tramite un allarme di stato di errore dedicato fino all'arrivo di un codice valido.
  • ErrorCode: una sequenza di codici di errore (<string>) in combinazione con un canale di livello oppure con un canale di trasferimento. Il modulo Diagnostics mantiene internamente una tabella con i codici di errore e la relativa istanza di messaggio. I messaggi possono essere assegnati a singoli codici oppure, come template, a un intervallo di codici (wildcard) o a tutti i codici in ingresso.

Inoltre, nell'ambito della composizione dei messaggi di allarme vengono acquisiti valori attuali dei canali smartCORE (i cosiddetti snapshot) e integrati metadati definiti dall'utente. Lo schema seguente offre una panoramica della funzionalità implementata della logica di allarme. Per ogni voce Message sono disponibili i blocchi evidenziati in giallo chiaro:

Overview

L'elaborazione dei dati di un canale monitorato avviene dal punto di vista del plug-in di diagnostica, cioè ha luogo una conversione implicita nel tipo di dati previsto. Il tipo di dati del canale è quindi irrilevante per la valutazione, purché sia convertibile in modo corrispondente.

Interfacce e protocolli utilizzati​

  • Database degli allarmi smartCORE

Configurazione JSON​

Nelle sezioni seguenti vengono elencate configurazioni di esempio e discussi i parametri del modulo coinvolti.

Configurazione di esempio (monitoraggio di valori booleani)​

In questo esempio un canale viene letto come Boolean e monitorato per il valore true.

Per la conversione del tipo di dati vale quanto segue:

  • <integer>, <unsigned integer> o <double> è true se il campione è ≠0\ne 0,
  • <string> è true se la stringa non è vuota
{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring someBooleanChannel",
"channel": "someBooleanChannel",
"activation": "high"
}
]
}
}

Configurazione di esempio (monitoraggio del superamento di un valore numerico con ritardi di stabilizzazione e isteresi)​

In questo esempio un canale viene letto come Double e monitorato per il superamento del valore di 42.0.

Per la conversione del tipo di dati vale quanto segue:

  • i valori <bool> vengono tradotti in 0 e 1,
  • <string> fornisce come valore la lunghezza della stringa

Nell'esempio, per l'attivazione è necessario che il superamento duri almeno 5 secondi e, per la disattivazione, che questo non sia presente per almeno 10 secondi e che a tale scopo il valore del canale si trovi al di sotto della soglia meno la sua isteresi.

Viene inoltre generato un messaggio relativo all'evento, che contiene il valore attuale, l'estremo finora raggiunto, cioè in questo caso il massimo, nonché la soglia.

Questo messaggio viene aggiornato sia al superamento iniziale sia alla disattivazione. Inoltre questo messaggio viene aggiornato anche in caso di scostamenti del valore attuale dall'ultimo estremo segnalato che siano maggiori dell'isteresi.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring measured someValueChannel",
"messageEvent": "Some WARNING occurred (current value ${value} > ${boundary}) (maximum value ${minmax} on ${minmaxDate} at ${minmaxTime})",
"channel": "someValueChannel",
"threshold": 42.0,
"hysteresis": 7.0,
"activation": "high",
"stabilizationSecondsRaise": 5,
"stabilizationSecondsRelease": 10
}
]
}
}

Configurazione di esempio (monitoraggio di valori enumerati)​

In questo esempio un canale viene letto come valore Integer e monitorato.

Per la conversione del tipo di dati vale quanto segue:

  • i valori <bool> vengono tradotti in 0 e 1,
  • i valori <float> o <double> vengono utilizzati senza cifre decimali,
  • <string> fornisce come valore la lunghezza della stringa

In questo esempio gli intervalli di valori 17 e 77-99 vengono interpretati come condizione di attivazione (HIGH), gli intervalli di valori 31-39, 66 e 69-71 come condizione di disattivazione (LOW) e tutti gli altri intervalli come condizione di allarme non valida.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring someEnumeratedChannel",
"messageEvent": "Some WARNING occurred",
"messageFailure": "INVALID error occurred",
"channel": "someEnumeratedChannel",
"activation": "enum",
"valuesHigh": "17,77-99",
"valuesLow": "31-39,66,69-71"
}
]
}
}

Configurazione di esempio (monitoraggio di un Error Stream)​

In questo esempio vengono monitorati codici di errore (ErrorCode) provenienti da un cosiddetto Error Stream. Questo è costituito dai due canali sourceErrorCode e sourceErrorLevel, che devono essere sincroni nel tempo. Il canale del codice di errore viene letto come <string>, così che possano essere utilizzati come fonte canali pressoché qualsiasi. Il canale del livello di errore deve fornire valori interi <integer>. I codici estratti da questo Error Stream sono a disposizione di tutti i messaggi ErrorCode per l'elaborazione nell'ordine della loro definizione. Un determinato codice può essere considerato di volta in volta in un solo messaggio ErrorCode.

Nell'esempio vengono monitorati sia il codice di errore specifico dell'utente "47:11", sia i codici di errore che iniziano con "ERR:", sia tutti gli altri codici di errore sconosciuti. Se l'oggetto Message deve essere utilizzato per diversi codici, deve essere contrassegnato come template.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"sourceErrorCode": "Some.Name.Space.ErrorCodeChannel",
"sourceErrorLevel": "Some.Name.Space.ErrorLevelChannel",
"messages": [
{
"errorCode": "47:11",
"messageLevel": "ALARM",
"context": "Monitoring Error-Stream for 47:11",
"messageEvent": "ALARM ${errorCode} occurred"
},
{
"isTemplate": true,
"errorCode": "ERR:*",
"messageLevel": "ERROR",
"context": "Monitoring for ERR-codes",
"messageEvent": "Error ${errorCode} occurred"
},
{
"isTemplate": true,
"messageLevel": "WARNING",
"context": "Collection unknown codes",
"messageEvent": "Unknown code ${errorCode} occurred"
}
]
}
}

Configurazione di esempio (utilizzo di metadati)​

In questo esempio un canale viene monitorato per il valore true come nell'Esempio 1. Scopo di questo esempio è illustrare l'integrazione dei messaggi di allarme con metadati specifici dell'utente.

A tale scopo, nell'ambito della composizione del messaggio di allarme vengono aggiunti metadati sotto forma di oggetto JSON, dove i metadati globali vengono sempre integrati con i metadati specificati nell'ambito del Message oppure sostituiti al livello più alto dell'oggetto JSON.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"globalMetadata": {
"actionToBePerformed":"some generic action",
"consequences":[
"consequence1",
"consequence2"
]
},
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring someBooleanChannel",
"channel": "someBooleanChannel",
"activation": "high",
"metadata": {
"actionToBePerformed":"some CRITICAL action",
"consequences":[
"some SEVERE consequence",
"consequence1",
"consequence2"
],
"additionalRemarks":[
"some REMARK"
]
}
}
]
}
}

Configurazione di esempio (utilizzo di canali snapshot)​

In questo esempio un canale viene monitorato per il valore true come nell'Esempio 1.

Scopo di questo esempio è illustrare l'integrazione dei messaggi di allarme con uno snapshot specifico dell'utente di valori dei canali.

A tale scopo, al momento della prima comparsa della condizione di allarme viene realizzata un'istantanea dei canali smartCORE elencati, costituita dall'unione di tutti i canali snapshot globali e relativi al messaggio.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"globalSnapshot": [
"someGps.Location",
"someOutsideTemperature"
],
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring someBooleanChannel",
"channel": "someBooleanChannel",
"activation": "high",
"snapshot": [
"somePressure",
"someTemperature",
"someQuantity",
]
}
]
}
}

Configurazione di esempio (utilizzo di gruppi snapshot)​

In questo esempio un canale viene monitorato per il valore true come nell'Esempio 1.

Questo esempio illustra inoltre l'utilizzo dei cosiddetti gruppi snapshot.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"pollingIntervalMs": 1000,
"snapshotGroups": [
{
"name": "gpsInfoChannels",
"channels": [
"GPS.Location",
"GPS.Altitude",
"GPS.SatCount"
]
},
{
"name": "EngineOilPTQChannels",
"channels": [
"Engine.Oil.Pressure",
"Engine.Oil.Temperature",
"Engine.Oil.Quantity"
]
}
],
"globalSnapshot": [
"gpsInfoChannels",
"someOutsideTemperature"
],
"messages": [
{
"messageLevel": "WARNING",
"context": "Monitoring someBooleanChannel",
"channel": "someBooleanChannel",
"activation": "high",
"snapshot": [
"Engine.Revs",
"EngineOilPTQChannels"
]
}
]
}
}

Parametri globali del modulo​

Nella sezione seguente vengono discussi tutti i parametri del modulo.

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
pollingIntervalMsNoINT1 -1000 (1 s)Intervallo di elaborazione [ms]
globalMetadataNoJSON ObjectEMPTY JSON ObjectOggetto JSON con metadati qualsiasi specificati dall'utente
globalSnapshotNoJSON Array of STRINGEMPTY JSON ArrayJSON Array che contiene un elenco globale di canali, i cui valori devono essere rilevati puntualmente al momento dell'allarme
snapshotGroupsNoJSON Array of JSON ObjectEMPTY JSON Arrayvedere sotto
activationMode1(obsoleto)Vedere la descrizione dei Messages
messagesSÌJSON Array of JSON ObjectNESSUN valore predefinitovedere sotto
per Error-Stream o Error-Table
sourceErrorCodeNo/Sì2 3STRINGNESSUN valore predefinitocanale smartCORE, letto come <string>, che contiene un codice di errore variabile nel tempo
sourceErrorLevelNo/Sì2STRINGNESSUN valore predefinitocanale smartCORE, letto come <integer>, che contiene un livello di errore sincrono ad esso
neutralErrorLevel
neutraErrorCode4
No2
(obsoleto)
INTEGER0Livello di errore neutro per il quale NON viene attivato alcun allarme
sourceBufferTransferNo/Sì3STRINGNESSUN valore predefinitocanale smartCORE, letto come <bool>, che controlla il framing per la trasmissione della tabella degli errori
timeoutBufferTransferNo/Sì3DOUBLE0Pausa minima tra le trasmissioni delle tabelle degli errori in secondi

Gruppi snapshot globali "snapshotGroups"​

Più canali da acquisire nell'ambito di uno snapshot possono essere configurati sotto forma di gruppo snapshot come oggetto JSON, il cui nome può poi essere utilizzato nel seguito della configurazione, in gruppi ed elenchi di segnali, come un nome di canale. È opportuno denominare questi gruppi in modo che non avvenga alcuna sovrascrittura di nomi di canale esistenti, poiché un nome in un elenco di segnali viene verificato per primo, nell'interpretazione, come nome di gruppo.

Se nomi di canale sono contenuti in gruppi o elenchi di segnali diversi e quindi moltiplicati, nella composizione dello snapshot vengono inclusi in esso una sola volta.

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
nameSÌSTRINGNome o alias del gruppo snapshot
channelsSÌJSON Array of STRINGElenco di tutti i nomi di canale o dei gruppi già definiti

Configurazione dei messaggi di allarme "messages"​

I messaggi di allarme "messages" vengono configurati sotto forma di oggetti JSON e in modo diverso a seconda del tipo di monitoraggio.

important

La scelta dei parametri determina quale tipo di monitoraggio viene eseguito. La tabella seguente lo riassume. Non appena viene utilizzato un parametro indicato, la funzione corrispondente viene attivata:

Monitoraggio come...Parametri per l'attivazioneObbligatorioAltri parametri raccomandatiNota
ErrorCodeisTemplate
errorCode
No
No
Ignora channelName, poiché la fonte dei dati è Error-Stream/-Table,
activation := HIGH
Nessuna funzione di filtro
Doublethreshold
boundary5
hysteresis
Sì
(obsoleto)
Sì
channel
activation
stabilizationSecondsRaise
stabilizationSecondsRelease
Hysteresis è sempre >0.0\gt 0.0
IntegerstartBit
numberOfBits
valuesWhite
valuesBlack
valuesHigh
valuesLow
No
No
No
No
Raccomandato
Raccomandato
channel
activation
stabilizationSecondsRaise
stabilizationSecondsRelease
Con numberOfBits == 1 il bit selezionato viene trattato come nella modalità Boolean.
StringregxWhite
regxBlack
regxHigh
regxLow
No
No
Raccomandato
Raccomandato
channel
activation
stabilizationSecondsRaise
stabilizationSecondsRelease
Se regxWhite definisce sottoespressioni, queste vengono estratte per tutti i test successivi e collegate con ';'.
Booleanchannel
activation
stabilizationSecondsRaise
stabilizationSecondsRelease

Parametri di configurazione comuni​

Indipendentemente dal tipo di monitoraggio, per i Messages sono definiti i seguenti parametri:

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
messageLevelSÌSTRINGinfo, action, service, warning, alarm, error, fatalNESSUN valore predefinitoGrado di gravità del messaggio di allarme
contextSÌSTRINGContesto del messaggio di allarme
Testo statico per l'identificazione di un messaggio
channelSÌ/No6STRINGNome del canale smartCORE monitorato
activationSÌSTRINGlow, high, minimum, maximum, positiveEdge, negativeEdge, enumCodehighTipo di attivazione dell'allarme.
messageEventNoSTRINGMessaggio di allarme quando l'allarme viene attivato.
Per contenuti dinamici del messaggio possono essere utilizzati segnaposto.
needAcknowledgeNoBOOLEANfalse, truefalseè necessaria una conferma lato cloud
keepAcknowledgedStatusNoBOOLEANfalse, truefalselo stato confermato deve essere mantenuto
metadataNoJSON ObjectEMPTY JSON ObjectMetadati definiti dall'utente, che possono potenzialmente sovrascrivere i metadati globali
snapshotNoJSON Array of STRINGEMPTY JSON Arraycanali da acquisire durante la prima comparsa della condizione di allarme. Viene unito lo snapshot globale "globalSnapshot" con i gruppi snapshot specificati e risolti qui (da "snapshotGroups") nonché con i canali specificati qui individualmente.
Se la funzione di filtro è disponibile:
stabilizationSecondsRaiseNoINTEGER1 -0Ritardo di stabilizzazione dopo il quale l'allarme deve essere attivato (viene segnalato l'istante iniziale della prima comparsa della condizione di allarme)
stabilizationSecondsReleaseNoINTEGER1 -0Ritardo di stabilizzazione dopo il quale l'allarme deve essere disattivato (viene segnalato l'istante iniziale della prima comparsa della condizione di disattivazione)
Se può essere generato un evento di errore:
messageFailureNoSTRINGMessaggio di allarme quando la condizione di allarme non è valida.
Per contenuti dinamici del messaggio possono essere utilizzati segnaposto.

Configurazione dell'attivazione: activation​

Per l'attivazione dell'allarme sono selezionabili i seguenti valori:

Valore enumAliasSignificatoNota
lowAttivazione finché la fonte fornisce LOWLa modalità Double monitora il minimo
high, (Default)Attivazione finché la fonte fornisce HIGHLa modalità Double monitora il massimo
minimumminAttivazione finché la fonte fornisce LOW con aggiornamentiLa modalità Double monitora il minimo con aggiornamento
maximummaxAttivazione finché la fonte fornisce HIGH con aggiornamentiLa modalità Double monitora il massimo con aggiornamento
negativeEdgenegEdgeIl passaggio da HIGH->LOW attivaMessaggio come evento senza stato7
positiveEdgeposEdgeIl passaggio da LOW->HIGH attivaMessaggio come evento senza stato7
enumCodeenumAttivazione finché la fonte fornisce HIGH con aggiornamentiLe modalità Integer/String aggiornano ciascuna per il nuovo codice di errore

Segnaposto per i testi dei messaggi​

Nei testi dei messaggi messageEvent, messageFailure possono essere utilizzati i seguenti segnaposto, per integrare dinamicamente il testo con valori attuali a ogni evento o a ogni aggiornamento. Nel caso di messaggi ErrorCode con template, determinati segnaposto possono essere sostituiti anche in context, quando il codice di errore viene registrato per la prima volta.

Segnapostosostituito daEsempio
${channel}Nome del canale del MessagesomeChannelName
${unit}Unità fisica del canale°C
${value}8Il valore dei dati attuale del canale3.14159
${date}La data dell'evento, YYYY-MM-DD2026-12-31
${time}L'ora dell'evento, hh:mm:ss18:05:27
${errorCode}9Il codice di errore che ha attivato l'allarmeERR:243:881
${errorLevel}9Il livello di errore che ha attivato l'allarme8
${boundary}10
${raiseBoundary}10
Valore limite impostato per l'attivazione threshold10.0
${releaseBoundary}10Valore limite per la disattivazione threshold ±\pm hysteresis8.5
${minmax}10Ultimo valore estremo dall'evento
oppure, se non determinato:
17.9
(n.a.)
${minmaxDate}10Data del valore estremo
oppure, se non assegnata:
2026-12-31
(n.a.)
${minmaxTime}10Ora del valore estremo
oppure, se non assegnata:
18:12:35
(n.a.)

Tutti gli altri segnaposto ${...}, ed eventualmente quelli non disponibili, vengono sostituiti da "(n.d.)".

Monitoraggio del valore del canale come Boolean​

Il monitoraggio come valore Boolean viene impostato quando nell'oggetto Messages non vengono aggiunti parametri individuali. Il canale fornisce direttamente i valori true (HIGH) e false (LOW). Il parametro activation determina con quale livello o con quale fronte il messaggio viene attivato.

Monitoraggio del valore del canale come Double​

Nell'ambito del monitoraggio numerico del valore di un canale smartCORE, l'oggetto di configurazione in messages viene integrato con i parametri threshold o hysteresis. Il parametro activation determina se il limite threshold deve essere letto come minimo o massimo e, di conseguenza, se l'hysteresis per il ritorno nell'area non critica deve trovarsi al di sotto o al di sopra del limite.

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
threshold
boundary5
SÌFLOAT0Soglia il cui superamento o scostamento al di sotto porta al soddisfacimento iniziale della condizione di allarme
hysteresisSÌFLOATlow, high, minimum, maximum0.5Zona al di sotto/al di sopra del valore limite in cui viene mantenuto l'ultimo stato.
activationSÌSTRINGlow, high, minimum, maximumHIGHStabilisce se il valore limite deve essere letto come minimo o massimo e se deve avvenire un tracking del valore estremo con nuova segnalazione.

Monitoraggio del valore del canale come Integer​

Se l'oggetto di configurazione in messages viene integrato con almeno uno dei seguenti parametri individuali, il canale da monitorare viene letto come <integer>. Opzionalmente da questo valore può essere estratto, per l'ulteriore elaborazione, un gruppo di bit di lunghezza impostabile. Questo valore viene filtrato e interpretato come codice di stato o valore ENUM:

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
startBitNoINTEGER0..630Definisce uno spostamento a destra del valore Integer prima dell'analisi.
numberOfBitsNoINTEGER1..64
0: nessun mascheramento
0Maschera dalla parola di stato il corrispondente numero di bit per l'analisi. Il valore mascherato è senza segno per numberOfBits <64\lt 64. Se numberOfBits == 1, l'ulteriore elaborazione del bit avviene come Boolean.
valuesWhiteNoSTRING11(vuoto)Intervalli di valori ammessi per l'analisi, i valori non contenuti vengono ignorati.
valuesBlackNoSTRING11(vuoto)Intervalli di valori non ammessi per l'analisi, i valori contenuti vengono ignorati.
valuesLowA SCELTASTRING11(vuoto)Specifica degli intervalli di valori che corrispondono a una condizione di allarme disattivata
valuesHighA SCELTASTRING11(vuoto)Specifica degli intervalli di valori che corrispondono a una condizione di allarme attivata
activationSÌSTRINGhigh
enum
HIGHTipo di attivazione dell'allarme

Prima che i valori del canale vengano sottoposti a una valutazione, possono essere filtrati opzionalmente tramite la white list o la black list. Vengono elaborati solo i valori contenuti nell'elenco valuesWhite. Vengono ignorati tutti i valori esclusi nell'elenco valuesBlack.

Possono essere utilizzate a scelta una oppure entrambe le specifiche di intervalli di valori citate sopra, valuesLow o valuesHigh. Se viene utilizzata una sola specifica, ad es. valuesHigh, tutti gli altri valori vengono assegnati automaticamente al contrario, qui ad es. LOW. Se invece vengono utilizzate entrambe le specifiche, gli intervalli di valori non coperti corrispondono a una condizione di allarme non valida. Per questo caso può essere specificato un messaggio di allarme non valido con il testo messageFailure.

Monitoraggio del valore del canale come String​

Se l'oggetto di configurazione in messages viene integrato con almeno uno dei seguenti parametri individuali, il canale da monitorare viene interpretato come <string> (testo), ad es. come voce del registro di bordo di un sottosistema:

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
regxWhiteNoSTRING12(vuoto)Espressione regolare che verifica i testi e le formattazioni ammessi.
regxBlackNoSTRING12(vuoto)Espressione regolare che determina i testi da ignorare.
regxLowA SCELTASTRING12(vuoto)Espressione regolare che descrive lo stato LOW
regxHighA SCELTASTRING12(vuoto)Espressione regolare che descrive lo stato HIGH
activationSÌSTRINGhigh
enum
HIGHTipo di attivazione dell'allarme

Prima che i valori del canale vengano sottoposti a una valutazione, possono essere filtrati opzionalmente tramite le espressioni white o black. Vengono elaborati solo i testi che corrispondono all'espressione regxWhite. Vengono ignorati tutti i valori che corrispondono all'espressione regxBlack.

Se regxWhite contiene sottoespressioni (termini in (...)), queste vengono estratte in caso di corrispondenza e collegate tra loro con ';' per tutte le analisi successive. Ciò semplifica l'ulteriore interpretazione, poiché gli elementi chiave sono già estratti dal contesto spesso complesso.

Esempio:

"regxWhite": "Level:([A-Z]+),\\s+(.*)$"
"regxHigh" : "(ERROR|WARNING);"

Estrae da una riga del registro di bordo:

2345987.3256346, abcDevice, Level:ERROR, Here some message!

gli elementi "ERROR" e "Here some message!". L'ulteriore verifica avviene per il testo "ERROR;Here some message!". regxHigh può ora verificare semplicemente i due codici di errore ammessi.

Possono essere utilizzate a scelta una oppure entrambe le espressioni citate sopra, regxLow o regxHigh. Se viene utilizzata una sola espressione, ad es. regxHigh, tutti gli altri valori vengono assegnati automaticamente al contrario, qui ad es. LOW. Se invece vengono utilizzate entrambe le espressioni, i pattern non coperti corrispondono a una condizione di allarme non valida. Per questo caso può essere specificato un messaggio di allarme non valido con il testo messageFailure.

Monitoraggio dei codici di errore: ErrorCode​

I dispositivi che controllano impianti o parti di impianto possono comunicare all'esterno i propri stati di errore in diverse forme:

  1. Sotto forma di singoli codici, ciascuno combinato con lo stato "Entra" o "Esce"

  2. Sotto forma di tabelle di codici di errore trasmesse integralmente (memoria errori) dei codici ancora presenti. In questo caso si deve stabilire per osservazione quali singoli codici "entrano" (sono stati aggiunti) o "escono" (non sono più contenuti). La trasmissione della tabella viene indicata da un segnale di controllo oppure conclusa da un timeout dopo l'ultimo codice di errore.

L'esempio nel diagramma seguente mostra ciò per i codici di errore 17, 42, B7 e E8. Per la massima flessibilità possibile, i codici sul canale sourceErrorCodes vengono sempre letti ed elaborati come <string>.

Esempio di codici di errore

Il modulo Diagnostics legge centralmente i canali

  1. sourceErrorCode e sourceErrorLevel, per interpretare un Error-Stream oppure

  2. sourceErrorCode e sourceBufferTransfer, per seguire la trasmissione di tabelle di codici di errore.

important

Per questi canali non devono essere configurati filtri di riduzione dei dati alla fonte. I timestamp svolgono un ruolo decisivo per la localizzazione e la sincronizzazione dei dati!

In linea di principio è determinante per l'interpretazione il timestamp del codice di errore nel canale sourceErrorCode. Il canale sourceErrorLevel deve fornire il livello corrispondente con timestamp esattamente identici. Viene letto come <integer> e confrontato con il neutralErrorLevel ("esce") per determinare lo stato di attivazione.

Il livello del canale sourceBufferTransfer deve passare a true al più tardi con il primo codice di errore di una tabella e deve tornare a false **dopo l'**ultimo codice della tabella. La velocità di trasmissione o l'ordine dei codici di errore non ha alcuna importanza. In alternativa al canale di controllo può essere utilizzato anche un intervallo di tempo timeoutBufferTransfer. La trasmissione della tabella viene considerata completa se, in questo intervallo dopo il presunto ultimo ErrorCode, non arrivano altri ErrorCode.

Se l'oggetto di configurazione in messages viene integrato con almeno uno dei seguenti parametri individuali, i corrispondenti "messages" accedono a questi codici di errore nell'ordine della definizione. In tal caso può essere osservato e segnalato un determinato codice di errore oppure, come template, un gruppo di codici o semplicemente tutti i codici (rimanenti). Per ogni singolo codice viene creato automaticamente un proprio messaggio di allarme, che tiene aggiornato lo stato Entra/Esce. Possono essere utilizzati elementi di testo per configurare in modo dinamico il contesto iniziale e i testi dei messaggi.

Nome del parametroObbligatorioTipo di datiIntervallo di valori sensatoValore predefinitoDescrizione
errorCodeA SCELTASTRING(vuoto)Codice di errore monitorato da questa unità di monitoraggio, eventualmente come testo WildMask, se isTemplate è impostato.
(vuoto) corrisponde a "*"
isTemplateA SCELTABOOLEANfalse, truefalseViene impostato quando questa voce Message deve generare dinamicamente e automaticamente voci di messaggio per i codici di errore corrispondenti.

Informazioni sul modulo​

InformazioneValore
AutorioptiMEAS GmbH
da smartCORE2.6
Tipo di moduloConsumer
DipendenzeNESSUNA

Footnotes​

  1. Prima di smartCORE 2.10.1 activationMode veniva utilizzato per passare tra monitoraggio dei canali e modalità Error-Stream. Dalla 2.10.1 ciò non è più necessario, il parametro viene ignorato. ↩

  2. Per utilizzare la funzione Error-Stream questi parametri devono essere obbligatoriamente indicati. ↩ ↩2 ↩3

  3. Per utilizzare la funzione Error-Table questi parametri devono essere obbligatoriamente indicati. ↩ ↩2 ↩3

  4. Prima di smartCORE 2.10.1 veniva utilizzato neutraErrorCode, sebbene il valore si riferisca al canale ErrorLevel. Il parametro viene ancora letto, ma non dovrebbe più essere utilizzato. ↩

  5. In molti punti "threshold" viene utilizzato come valore limite, e così ora anche qui. Il parametro boundary viene ancora letto per threshold, ma non dovrebbe più essere utilizzato. ↩ ↩2

  6. Se il Message viene configurato nella modalità Error-Stream o Error-Table, viene utilizzata la fonte dati interna nel modulo Diagnostics e il canale viene ignorato. ↩

  7. Viene generato un messaggio di allarme che contiene solo l'istante dell'evento - nessun "Entra"/"Esce". ↩ ↩2

  8. Nel caso di messaggi Integer questo è eventualmente l'intervallo di bit estratto dal valore effettivo del canale. Nel caso di String è eventualmente il testo composto da sottoespressioni. ↩

  9. solo in combinazione con ErrorCode ↩ ↩2

  10. solo in combinazione con Double ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  11. Contiene come stringa un elenco, separato da virgole, di singoli valori <integer> oppure di intervalli di valori nella forma <integer> - <integer>. Gli spazi vengono ignorati, i segni sono ammessi. Esempio: "-100, -20 - -5, 12 - 34,47,55-57" ↩ ↩2 ↩3 ↩4

  12. Qui è prevista una Regular Expression (PCRE), i cui caratteri di controllo devono essere correttamente sottoposti a escape. Le espressioni vengono applicate senza distinzione tra maiuscole e minuscole (case insensitive). ↩ ↩2 ↩3 ↩4