Analisi statistica Run/Stop

Questo report consente il calcolo dei tempi di funzionamento o inattività della macchina in base a criteri differenti. Se …_STATE_COUNT e …_STATE_EVENT sono identici, vuol dire che la durata corrispondente è stata acquisita completamente nell'intervallo di analisi specificato.

Se lo _STATE_COUNT è superiore, l'inizio ricade prima dell'intervallo di analisi. Per lo più queste due colonne sono di scarso interesse, a meno che non si sia interessati a rilevare la durata a partire dal loro primo verificarsi.

Questo report funge internamente da base per la cronologia grafica degli arresti e il report di efficienza.

Note:

  1. La tabelle dei risultati comprende oltre 60 colonne. Per analisi durante intervalli più brevi, la maggior parte di esse sarà sicuramente vuota o comprenderà solo degli zeri.
    Queste colonne non devono essere quindi visualizzate (dinamicamente).
    Esempio:
    le colonne SHOCK_STATE_... comprendono solo dati <> 0 quando nell'intervallo di analisi si è verificato un arresto urti.
Parametri di richiamo

Parametri

Tipo

Descrizione

__sSchema

text

Schema delle tabelle database secondarie.

Se si opera con tabelle provvisorie deve essere sempre _sDestSchema immer == ‘‘

_sTable_Prefix

text,

Prefisso delle tabelle database secondarie

_aSortorder

text[]

Classificazione (matrice da nomi colonna)

Esempio. ARRAY['MC_SORT_ID','START_TIME']

_bGroupByMachine

boolean

Raggruppamento in base a macchina

_bGroupByShift

boolean

Raggruppamento in base a turno

_bGroupByUserName

boolean

Raggruppamento in base a utente (sulla macchina)

_bGroupByPattern

boolean

Raggruppamento in base a disegno

_bGroupBySeq

boolean

Raggruppamento in base a sequenza

_bGroupByTicketUid

boolean

Raggruppamento in base a ticket (UID PPS)

_bGroupByTicketProductionId

boolean

Raggruppamento in base a ID produzione ticket

_bGroupByTicketProductionSub1Id

boolean

Raggruppamento in base a Sub1 ID produzione ticket

_bGroupByTicketProductionSub2Id

boolean

Raggruppamento in base a Sub2 ID produzione ticket

_bGroupByTicketCustomerId

boolean

Raggruppamento in base a ID cliente del ticket

_bGroupByTicketArticleId

boolean

Raggruppamento in base a ID articolo del ticket

_bgroupbyday

boolean

Raggruppa per giorno

_bgroupbyweek

boolean

Raggruppa per settimana

_bgroupbymonth

boolean

Raggruppa per mese

_aFilterShift

integer[]

Filtraggio secondo turno/i

Esempio: emissione solo di turno 1 e 3:
ARRAY[1,3]

_aFilterUsername

text[]

Filtraggio secondo utente (operatore)

Esempio: ARRAY[‚User_1,'User_3']

_aFilterPattern

text[]

Filtraggio secondo sequenze

Esempio: ARRAY['S-kUuG01','P-Sjo9v3']

_aFilterSeq

text[]

Filtraggio secondo sequenze

Esempio: ARRAY['SEQ-WNJhP3','SEQ-wMWzx2']

_aFilterTicketUid

bigint[][]

Filtraggio secondo UID di ticket interni

Esempio: ARRAY[3374994314,3738720541]

_aFilterTicketProductionId

text[]

Filtraggio secondo ID produzione ticket

Esempio: ARRAY['2E0Hl4-H8T803-cId-8','2E0Hl4-H8T803-cId-8']

_aFilterTicketProductionsub1Id

text[]

Filtraggio secondo Sub1 ID produzione ticket

Esempio: ARRAY['SubId_2','SubId_21']

_aFilterTicketProductionsub2Id

text[]

Filtraggio secondo Sub2 ID produzione ticket

Esempio: ARRAY['-']

_aFilterTicketCustomerId

text[]

Filtraggio secondo Id cliente ticket

Esempio: ARRAY['cId-2','cId-4']

_aFilterTicketArticleid

text[]

Filtraggio secondo Id articolo ticket

Esempio: ARRAY['H8T803']

_aFilterUserState

Smallint[]

Filtraggio secondo stato utente

Esempio: ARRAY[4,3]

_aFilterSintralState

Smallint[]

Filtraggio secondo stato Sintral

Esempio: ARRAY[4,3]

Tabella di ritorno

Colonna

Tipo

Contenuto

MC_ID

integer

ID macchina SKR

MC_SORT_ID

smallint

Per la classificazione in ordine alfabetico in base al nome della macchina

(Il nome della macchina può essere appurato con l'ausilio degli MC_ID)

SHIFT_STATE

smallint

Turno o ZERO quando _bGroupByShift == false

USER_NAME

smallint

Utente o ZERO quando _bGroupByShift == false

TICKET_CUSTOMER_ID

text

UID ticket o ZERO quando _bGroupByTicketCustomerId == false

TICKET_ARTICLE_ID

text

ID articolo ticket o ZERO quando _bGroupByTicketArticleId == false

TICKET_PRODUCTION_ID

text

ID produzione ticket o ZERO quando _bGroupByTicketProductionId == false

TICKET_PRODUCTION_SUB1_ID

text

Sub1 ID produzione ticket o ZERO quando _bGroupByTicketProductionId == false

TICKET_PRODUCTION_SUB2_ID

text

Sub2 ID produzione ticket o ZERO quando *_bGroupByTicketProductionId == false

SEQ_NAME

text

Nome sequenza o ZERO quando _bGroupBySeq == false

PATTERN_NAME

text

Nome disegno o ZERO quando _bGroupByPattern == false

TICKET_UID

bigint

UID ticket o ZERO quando _bGroupByTicketUId == false

START_TIME

timestamp without time zone

Ora/data di inizio del raggruppamento
(riga di output)

END_TIME

timestamp without time zone

Ora/data di fine del raggruppamento
(riga di output)

OVERALL_DURATION

interval

Durata complessiva di tutti gli stati

TIME_ADJUST

interval

Indica le commutazioni orarie sulla macchina nell'intervallo analizzato, che sono state sommate da SKR.
Per ragioni dovute a cambi dell'ora legale/solare si contano effettivamente giornate più corte o più lunghe. Per tutti gli altri tempi, il valore viene utilizzato unicamente per stimare di quali errori di tempo si tratta. Una correzione dei tempi emessi è molto complessa e richiede un'analisi dettagliata di tutti gli eventi di commutazione oraria eseguiti e delle rispettive ragioni.

In caso di tempi insolitamente elevati, che oltrepassano di gran lunga la precisione di un orologio al quarzo, si consiglia di appurarne le ragioni.

Ragioni insolite possono essere attribuite a orologi in tempo reale difettosi o errati, a modifiche manuali alle commutazioni orarie.
Per una correzione occorre in linea di massima addizionare, in percentuale o del tutto, il valore TIME_ADJUST agli intervalli che si intende calcolare.

Per contenere questi intervalli, accertarsi che la regolazione del fuso orario sulla macchina sia corretta e la macchina sia sempre connessa con l'SKR.

Con il report EventList (EventType 101, EventID 1) è possibile appurare quando si sono verificate differenze temporali maggiori.

 

Stato RUN

Tempi produttivi

RUN _DURATION

interval

Durata di questo stato

RUN_STATE_COUNT

integer

Numero di intervalli in questo stato

RUN_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato STOP

Arresti

STOP_DURATION

interval

Durata di questo stato

STOP_STATE_COUNT

integer

Numero di intervalli in questo stato

STOP_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato ENGAGING

Arresti da parte dell'operatore mediante la barra di avviamento

ENGAGING_DURATION

interval

Durata di questo stato

ENGAGING_STATE_COUNT

integer

Numero di intervalli in questo stato

ENGAGING_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato YARN_FEED

Arresti dovuti all'unità di controllo del filo o al tendifilo laterale
Rottura del filo, nodi grandi

YARN_FEED_DURATION

interval

Durata di questo stato

YARN_FEED_STATE_COUNT

integer

Numero di intervalli in questo stato

YARN_FEED_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato PIECE_COUNTER_ZERO

Il contateli è a zero

PIECE_COUNTER_ZERO_DURATION

interval

Durata di questo stato

PIECE_COUNTER_ZERO_DURATION

integer

Numero di intervalli in questo stato

PIECE_COUNTER_ZERO_DURATION

integer

Numero di eventi di cambio stato per questo stato

 

Stato RESISTANCE

Arresti a resistenza

RESISTANCE_DURATION

interval

Durata di questo stato

RESISTANCE_STATE_COUNT

integer

Numero di intervalli in questo stato

RESISTANCE_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato POSITION_NEEDLE_SENSOR

Arresti dovuti al tasta-aghi di posizione
Rottura ago

POSITION_NEEDLE_SENSOR_DURATION

interval

Durata di questo stato

POSITION_NEEDLE_SENSOR_STATE_COUNT

integer

Numero di intervalli in questo stato

POSITION_NEEDLE_SENSOR_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato TAKE_DOWN

Arresti dovuti al tirapezza

TAKE_DOWN_DURATION

interval

Durata di questo stato

TAKE_DOWN_STATE_COUNT

integer

Numero di intervalli in questo stato

TAKE_DOWN_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato PROGRAMMING

Tempi di elaborazione del disegno sulla macchina

PROGRAMMING_DURATION

interval

Durata di questo stato

PROGRAMMING_STATE_COUNT

integer

Numero di intervalli in questo stato

PROGRAMMING_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato OTHER

Arresti dovuti ad altri motivi

OTHER_DURATION

interval

Durata di questo stato

OTHER_STATE_COUNT

integer

Numero di intervalli in questo stato

OTHER_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato SHOCK

Arresti urti

SHOCK_DURATION

interval

Durata di questo stato

SHOCK_STATE_COUNT

integer

Numero di intervalli in questo stato

SHOCK_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato RACKING

errore dello spostamento

RACKING_DURATION

interval

Durata di questo stato

RACKING_STATE_COUNT

integer

Numero di intervalli in questo stato

RACKING_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato NODATA

Nota: delimitazione per MCSTATE_UNKNOWN_...
= la macchina risulta in uno stato sconosciuto.

Stati ed eventi per i quali vale:
lo stato della macchina è sconosciuto all'SKR, in quanto non risultano dati per questo intervallo

Possibili cause:

  • Per tutta la durata dell'intervallo specificato per la creazione del database secondario, la macchina non era ancora registrata nell'SKR.
  • Il buffer dei dati della macchina non era sufficiente per il salvataggio degli eventi per l'intervallo durante il quale non sussisteva collegamento tra la macchina e l'SKR.
  • L'SKR è stato temporaneamente disattivato sulla macchina

NODATA_DURATION

interval

Durata di questo stato

NODATA_STATE_COUNT

integer

Numero di intervalli in questo stato

NODATA_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato OFF

La macchina è disinserita

OFF_DURATION

interval

Durata di questo stato

OFF_STATE_COUNT

integer

Numero di intervalli in questo stato

OFF_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato BOOT

Avvii della macchina

BOOT_DURATION

interval

Durata di questo stato

BOOT_STATE_COUNT

integer

Numero di intervalli in questo stato

BOOT_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

Stato MCSTATE_UNKNOWN
Nota: delimitazione per NODATA_...
= lo stato della macchina è sconosciuto all'SKR per via di dati mancanti.

Stati ed eventi per i quali vale:

lo stato della macchina è sconosciuto all'SKR.

Possibile causa

  • la macchina segnala un nuovo stato di cui l'SKR non è ancora a conoscenza
  • Il sistema operativo della macchina è errato

MCSTATE_UNKNOWN_DURATION

interval

Durata di questo stato

MCSTATE_UNKNOWN_STATE_COUNT

integer

Numero di intervalli in questo stato

MCSTATE_UNKNOWN_EVENT_COUNT

integer

Numero di eventi di cambio stato per questo stato

 

[DEBUG_SRC_MIN_UID]

bigint

Info di debug: ora/data di inizio Uid in <prefix>_collected_filter_rows

Codice a titolo di esempio “sample_eval_stop_statistik.sql”

Importante:

Si parte dal presupposto che siano già state create le tabelle ausiliari analitiche report_01.sample_xxxxxxxx.
Creazione di tabelle ausiliari analitiche (corsa del cursore - UDF)

Per un sistema di produzione inserire al posto di schema report_01, un campo vuoto ‘‘. Deve tuttavia essere identico a quello specificato al momento della creazione delle tabelle ausiliarie.

 

select skrpps_02.skr_mcid2mcname( "MC_ID",'skr'::cstring) AS "MC_NAME"

,* from skrpps_02.eval_stop_statistic_ex

(

 

'report_01' -- Schema

,'sample' –-Prefix name of help tables

, NULL -- ARRAY['MC_SORT_ID','START_TIME DESC'] – Sorting according to…

 

,true -- GroupBy Machine ?

,false -- GroupBy Shift ?

,false -- GroupBy UserName

,true -- GroupBy Pattern ?

,false -- GroupBy Sequence

 

,false -- GroupBy "TICKET_UID" bigint,

,false -- GroupBy "TICKET_PRODUCTION_ID" text,

,false -- GroupBy "TICKET_PRODUCTION_SUB1_ID" text,

,false -- GroupBy "TICKET_PRODUCTION_SUB2_ID" text,

,false -- GroupBy "TICKET_CUSTOMER_ID" text,

,false -- GroupBy "TICKET_ARTICLE_ID" text,

,false -- GroupBy "Day" text,

,false -- GroupBy "Week" text,

,false -- GroupBy "Month" text,

 

 

,NULL -- ARRAY[2,3] -- Filter by shift

,NULL -- ARRAY['User_3','User_4'] -- Selection/Filter UserName

,NULL -- ARRAY['S-kUuG0','P-Sjo9v3'] -- Selection/Filter Pattern

,NULL -- ARRAY['SEQ-WNJhP3','SEQ-9bEqD1'] -- Selection/Filter Sequence

,NULL -- ARRAY[3374994314,3738720541] -- Selection/Filter FilterTicketUid bigint[]

,NULL -- ARRAY['2E0Hl4-H8T803-cId-8','2E0Hl4-H8T803-cId-8'] -- Selection/Filter FilterTicketProductionId text[]

,NULL -- ARRAY['SubId_2','SubId_21'] -- Selection/Filter FilterTicketProductionSub1Id text[]

,NULL -- ARRAY['-'] -- Selection/Filter FilterTicketProductionSub2Id text[]

,NULL -- ARRAY['cId-2','cId-4'] -- Selection/Filter FilterTicketCustomerId text[]

,NULL -- ARRAY['H8T803'] -- Selection/Filter FilterTicketArticleId text[]

,NULL -- ARRAY[4,3] -- Selection/Filter UserState

,NULL -- ARRAY[4,3] -- Selection/Filter SintralState

);