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

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:

  1. 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'
  2. 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":



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

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.

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)" />
  • cli/franke/nis_failure_management.txt
  • Last modified: 2017/06/09 17:24
  • (external edit)