Failure Management

NIS should define machines failures as an inherited structure. The fields of this structure are defined below:

KIND: defines the kind of failure

WHERE: defines where failure occurred; in case of single machine this field is the same machine where the failure is reached, in case of work center this field should be specified a part selecting one machine of the work center

WHAT: defines what failure is occurred

The image represents an example by Simon Fretz
The following ER graph describes data structures
The related physical schema following
For using these structures into NIS are required some activities described below:

Create tables kfail, whafail

Update table causafm

Create GUI for managing kfail, whafail

Update GUI for inserting into causafm kfail, whafail

Update touch panel GUI for selecting failure cause through the step by step selection of KIND -> WHERE -> WHAT

How To: Select List of Cause

The selection will occur on Touch Panel 10''. Each touch panel is linked to a specific line / machine (location). Each location is defined into ubicaz.
For each specific failure cause there is a row into table causafm.
For selecting correct information of a specific location it's required next steps:

identify a sub-set of rows into table causafm referred to the specific kind of failure as selected through "START-FAILURE-BUTTON"

change-over-time => setup=1

failure => setup=0 and tipofm='F'

organizational => setup=0 and tipofm='P'

starting from previous sub-set identify a sub-set of rows into table causafm referred to the specific location

risolist = '*' or risolist like '%ubicaz.codice%'

If sub-set of causes is available then it's possible to manage it through "KIND - WHERE - WHAT". It's necessary to add column "caugrp" for calculating "OEE STRATIFICATION":

Database schema changes

ALTER TABLE causafm ADD COLUMN zord INTEGER DEFAULT 0; COMMENT ON COLUMN causafm.zord IS 'Ordinamento 0 => n';

Maintenance time management

Maintenance time managed using following causes of maganet:

INMA: begin of maintenance

FIMA: end of maintenance

Following query for adding causes into caumaga:

INSERT INTO caumaga (codice,descrizio,prelievo,deposito,cariniz,caucol,utente,datareg,flag,impegno) SELECT 'INMA','Inizio manutenzione',prelievo,deposito,cariniz,caucol,utente,datareg,'M',impegno FROM caumaga WHERE codice='INFM'; INSERT INTO caumaga (codice,descrizio,prelievo,deposito,cariniz,caucol,utente,datareg,flag,impegno) SELECT 'FIMA','Fine manutenzione',prelievo,deposito,cariniz,caucol,utente,datareg,'M',impegno FROM caumaga WHERE codice='FIFM';

AgentVisualMng defines when it's required a maintenance request and when it's required a termination of maintenance using following flag:

inma: if 1 indicates that it's required confirmation for beginning maintenance

fima: if 1 indicates that it's required confirmation for terminating maintenance

The GUI uses AgentLavoro from library libwmsgp to register begin and termination of maintenance operation into maganet.

Automatically terminate Stop Machine

It's possible to filter some stop machine causes for automatic terminating stop machine when one item is produced on specific production line.
To do it you must create a new view as following:

SELECT movimag.* FROM movimag LEFT JOIN ( SELECT movimag.codubi FROM movimag INNER JOIN (SELECT codubi, MAX(codice) AS cod FROM movimag WHERE codcau='INFM' OR codcau='FIFM' GROUP BY codubi) AS q ON q.cod=movimag.codice WHERE caufm='setup') AS q1 ON q1.codubi=movimag.codubi WHERE q1.codubi IS NULL ORDER BY movimag.codice DESC

In the above example caufm='setup' you can change setup with specific stop machine cause you want to filter. In the ctrldb configuration you should substitute the table "movimag" with the view you created:

<!-- Agente dedicato al controllo del database ed alla generazione degli eventi --> <agent lib="/usr/lib/libiautiag.so" create="agentCtrlDb" live="1" name="ctrldb"> <param name="agdb" value="tpevodb_ctrl" /> <!-- Rileva l'inserimento di un nuovo collaudo, il 4^ parametro e' fittizio (campo da controllare), il quinto=0 indica che non deve caricare i dati non trasferiti all'avvio della piattaforma, in modo da considerarli nella prox elaborazione --> <param name="cmd0" value="newrec(filfm,codice,codubi='FL1E' and codcau='PREL' order by codice desc limit 1)" /> <param name="tocmd0" value="to(fermistp,fifm,movimag)" />