Analisi di report di produzione

Il report della produzione elenca in ordine cronologico i teli prodotti o i ticket completati con informazioni supplementari, quali ad es. tempo di lavoro.

Parametri di richiamo:

Nota sui filtri:

Tutti i filtri sono stati implementati come filtri “deboli”.

Ciò significa che un telo o un ticket appare completamente nella tabella dei risultati solo quando viene soddisfatto, a prescindere dal momento, il filtro per questo telo o ticket.

Esempio:
È stato filtrato secondo turno 2 e 3.
(== vengono visualizzati solo i teli lavorati nel turno 2 o 3)

L'esclusione non ha luogo dal momento che la lavorazione è stata eseguita (in parte) nel turno 2.
(Un “filtro forte” ignorerebbe completamente certi teli iniziati.)

Parametri

Tipo

Descrizione

__sSchema

text

Schema delle tabelle database secondarie.

Se si opera con tabelle provvisorie, _sDestSchema deve essere sempre “== ‘‘.

_sTable_Prefix

text,

Prefisso delle tabelle database secondarie

_aSortorder

text[]

Classificazione (matrice da nomi colonna)

Esempio:

  • ARRAY['MC_SORT_ID','START_TIME']
  • ARRAY['MC_SORT_ID','START_TIME DESC']

_bGroupByTicketUid

boolean

Se = true viene raggruppato/analizzato secondo ticket

Vengono sommate le righe di tutti i teli. COMPLETE conteggia i ticket completati anziché i teli.

_aFilterShift

integer[]

Filtraggio secondo turno/i

Esempio di 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 disegni

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]

_xFilterMinDuration

interval

Esclusione di teli attivi per meno di x secondi.
È possibile così escludere teli fantasma, che possono risultare ad es. da sequenze inadatte o errate di eventi.
Valore sensato dalla prassi: ca. 2 sec.

_bFilterUseOnlyNettoTime

boolean

Includere solo tempi netti. ( == la macchina ha impostato il contrassegno di produttività == il tempo che intercorre tra caricamento disegni ad arresto contateli è 0 )

_bFilterUseOnlyProductiveTicketTime

boolean

Se == true vengono esclusi i tempi nei quali vengono prodotti ticket di manutenzione o viene prodotto senza ticket

Tabella di ritorno

Note:
La tabella di ritorno comprende colonne di debug supplementari, nonché colonne necessarie solo per la statistica dei disegni (quest'ultima si avvale internamente delle UDF report di produzione).
I nomi di queste colonne risultano tra parentesi quadre.

Esempio: [MIN_UID]

Alcune colonne restituiscono matrici come valore di ritorno.
Esse presentano spesso solo una voce.

Per ciascuna di queste matrici possono subentrare situazioni nelle quali esistono più voci.

Esempi:

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)

AGG_TICKET_DATA

text[]

Data del ticket

Formato attuale:
TicketType | CustomerId | Articleid | ProductionId | ProductionSub1Id | ProductionSub2Id | Uid

AGG_SEQ_NAME

text[]

Nome o nomi della sequenza

AGG_PATTERN_NAME

text[]

Nome o nomi del disegno

START_TIME

timestamp without time zone

Indicazione temporale di inizio del telo o del ticket

END_TIME

timestamp without time zone

Indicazione temporale di fine del telo o del ticket

DURATION

interval

Intervallo di tempo in cui era attivo il telo o il ticket

KNIT_DURATION

interval

Intervallo di funzionamento della macchina

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 sia sul server PPS che sulla macchina.
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.

COMPLETE

boolean

È stato completato il telo/ticket

(o interrotto)

AGG_SHIFT_STATES

smallint[]

I turni attivi durante i quali è stato lavorato il telo o il ticket

AGG_USER_STATES

smallint[]

Gli stati utente attivi durante i quali è stato lavorato il telo o il ticket

AGG_SINTRAL_STATES

smallint[]

Gli stati Sintral durante i quali è stato lavorato il telo o il ticket

AGG_USER_NAME

smallint[]

Gli utenti attivi durante i quali è stato lavorato il telo o il ticket

[MIN_UID]

bigint

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

[MAX_UID]

bigint

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

[COUNT]

integer

Info di debug:
numero di righe utilizzate da <prefix>_collected_filter_rows (valore effettivo)

[LOOP_CHG_COUNT]

integer

Info di debug:
numero di righe utilizzate da <prefiy>:collected_chg_counts (valore nominale)

[TICKET_UID_CHG]

integer

Info di debug:
CHG_ID in _collected_chg_counts per la macchina attiva e COL_ID“=‘ eTICKET_UID_CHG

[AGG_TICKET_UID]

bigint[]

Info di debug: ticket attivo UID’s

[AGG_TICKET_CUSTOMER_ID]

bigint[]

Info di debug: ticket attivo CUSTOMER ID‘s

[AGG_TICKET_ARTICLE_ID]

text[]

Info di debug: ticket attivo ARTICLE ID‘s

[AGG_TICKET_PRODUCTION_ID]

text[]

Info di debug: ticket attivo PRODUCTION ID‘s

[AGG_TICKET_PRODUCTION_SUB1_ID]

text[]

Info di debug: ticket attivo PRODUCTION_SUB1_ID‘s

[AGG_TICKET_PRODUCTION_SUB2_ID]

text[]

Info di debug: ticket attivo PRODUCTION_SUB2_ID‘s

Codice a titolo di esempio “sample_production_report.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_production_report(

 

'report_01' -- Schema

,'sample' –- Table Name Prefix

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

,false –- Group by tickets?

,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 Sequences

 

,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

 

,'00:00:01' -- FilterMinDuration Filter-out fabric pieces or tickets with a duration shorter than the specified value.

-- (e.g. in order to keep times after ending a ticket and before starting the next out of the report in case of the Auto Production Mode

 

,false – Evaluate net times only if true. (== Machine has set the Productive flag == Time from pattern loaded state to Piece Counter is zero)

,false – If == false, all times allocated to service tickets will be filtered-out.

);