Advertisement
tanfy88

Untitled

Mar 11th, 2018
973
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #tempo_mantenimento := "database_tempi".tempo["selezione_tempo"];
  2.  
  3. // test per entrare nello stato di emergenza o azzerare il macchinario.
  4. IF ("richiesta_emergenza" OR "pulsante_emergenza") THEN
  5.     IF ("sensore_piatto_alto" AND (NOT "sensore_piatto_basso") AND
  6.         ("sensore_ganasce_aperte" AND (NOT "sensore_ganasce_chiuse"))
  7.         AND ("sequenza" = 0)) THEN
  8.         "stato_emergenza" := 1;
  9.         "richiesta_emergenza" := 0;
  10.     ELSE
  11.         "Emergenza"();
  12.     END_IF;
  13.     GOTO fine;
  14. END_IF;
  15.  
  16. // toglie stato emergenza quando si spegne il pulsante emergenza
  17. IF ((NOT "pulsante_emergenza" AND "stato_emergenza") AND
  18.     (NOT ("pulsante_dx" OR "pulsante_sx"))) THEN
  19.     "stato_emergenza" := 0;
  20.     "reset_timer_emerg_ganasce" := 0;
  21.     "reset_timer_emerg_piatto" := 0;
  22.     "reset_timer_emergenza" := 0;
  23.     "reset_timer_ganasce" := 0;
  24.     "reset_timer_piatto" := 0;
  25.     "reset_timer_pulsante" := 0;
  26.     "reset_timer_mantenimento" := 0;
  27.     "start_timer_emerg_ganasce" := 0;
  28.     "start_timer_emerg_piatto" := 0;
  29.     "start_timer_emergenza" := 0;
  30.     "start_timer_ganasce" := 0;
  31.     "start_timer_piatto" := 0;
  32.     "start_timer_pulsante" := 0;
  33.     "start_timer_mantenimento" := 0;
  34.     "stato_timer_emerg_ganasce" := 0;
  35.     "stato_timer_emerg_piatto" := 0;
  36.     "stato_timer_emergenza" := 0;
  37.     "stato_timer_ganasce" := 0;
  38.     "stato_timer_piatto" := 0;
  39.     "stato_timer_pulsante" := 0;
  40.     "stato_timer_mantenimento" := 0;
  41.     "richiesta_apertura" := 0;
  42.     "richiesta_chiusura" := 0;
  43.     "richiesta_discesa" := 0;
  44.     "richiesta_emergenza" := 0;
  45.     "richiesta_salita" := 0;
  46.     "occupato" := 0;
  47.     IF (("pulsante_dx" AND "pulsante_sx") AND
  48.         "pulsante_emergenza") THEN
  49.         "pulsante_sx" := 0;
  50.         "pulsante_dx" := 0;
  51.     END_IF;
  52.     "sequenza" := 0;
  53.     GOTO fine;
  54. END_IF;
  55.  
  56. // rilascio pulsante di avvio
  57. rilascio:
  58. IF "errore" = 'X' THEN
  59.     IF ("pulsante_dx" OR "pulsante_sx") THEN
  60.         #consenso := 0; //definisco di non voler proseguire
  61.         GOTO fine;
  62.     ELSIF (NOT ("pulsante_dx" OR "pulsante_sx")) THEN
  63.         "reset_timer_pulsante" := 0;
  64.         "errore" := '0';
  65.         GOTO fine;
  66.      END_IF;
  67. END_IF;
  68.  
  69. // test per avvio ciclo
  70. IF (("pulsante_dx" OR "pulsante_sx") AND
  71.     ("sequenza" = 0)) THEN
  72.     IF "errore" = 'X' THEN
  73.         "reset_timer_pulsante" := 1;
  74.         GOTO rilascio;
  75.     END_IF;
  76.     #consenso := "pulsante_dx" OR "pulsante_sx";
  77.     "Gestione_pulsanti"(richiesta := #consenso);
  78. END_IF;
  79.  
  80. #consenso := "pulsante_dx" AND "pulsante_sx";
  81.  
  82. CASE "sequenza" OF
  83.     1:  //discesa piatto
  84.         IF (#consenso AND (("sensore_piatto_alto") AND
  85.             (NOT "sensore_piatto_basso"))) THEN
  86.             "reset_timer_piatto" := 0;
  87.             "richiesta_discesa" := 1;
  88.             "Discesa_piatto"(richiesta_discesa := "richiesta_discesa");
  89.         ELSIF (#consenso AND ((NOT "sensore_piatto_alto") AND
  90.             (NOT "sensore_piatto_basso"))) THEN
  91.             "Discesa_piatto"(richiesta_discesa := "richiesta_discesa");
  92.         ELSIF (#consenso AND ((NOT "sensore_piatto_alto") AND
  93.             ("sensore_piatto_basso"))) THEN
  94.             "Discesa_piatto"(richiesta_discesa := "richiesta_discesa");
  95.         ELSIF (NOT #consenso) THEN
  96.             "sequenza" := 10;
  97.             "richiesta_emergenza" := 1;
  98.         END_IF;
  99.     2:  //chiusura ganasce
  100.         IF (("sensore_ganasce_aperte") AND
  101.             (NOT "sensore_ganasce_chiuse")) THEN
  102.             "reset_timer_piatto" := 0;
  103.             "richiesta_chiusura" := 1;
  104.             "Chiusura_ganasce"(richiesta_chiusura := "richiesta_chiusura");
  105.         ELSIF ((NOT "sensore_ganasce_aperte") AND
  106.             (NOT "sensore_ganasce_chiuse")) THEN
  107.             "Chiusura_ganasce"(richiesta_chiusura := "richiesta_chiusura");
  108.         ELSIF ((NOT "sensore_ganasce_aperte") AND
  109.             ("sensore_ganasce_chiuse")) THEN
  110.             "Chiusura_ganasce"(richiesta_chiusura := "richiesta_chiusura");
  111.         END_IF;
  112.     3:  //attesa programmata
  113.         "Mantenimento"(tempo := #tempo_mantenimento);
  114.     4:  //apertura ganasce
  115.         IF ((NOT "sensore_ganasce_aperte") AND
  116.             ("sensore_ganasce_chiuse")) THEN
  117.             "reset_timer_ganasce" := 0;
  118.             "richiesta_apertura" := 1;
  119.             "Apertura_ganasce"(richiesta_apertura := "richiesta_apertura");
  120.         ELSIF ((NOT "sensore_ganasce_aperte") AND
  121.             (NOT "sensore_ganasce_chiuse")) THEN
  122.             "Apertura_ganasce"(richiesta_apertura := "richiesta_apertura");
  123.         ELSIF (("sensore_ganasce_aperte") AND
  124.             (NOT "sensore_ganasce_chiuse")) THEN
  125.             "Apertura_ganasce"(richiesta_apertura := "richiesta_apertura");
  126.         END_IF;
  127.     5:  //salita piatto
  128.         IF ((NOT "sensore_piatto_alto") AND ("sensore_piatto_basso")) THEN
  129.             "reset_timer_ganasce" := 0;
  130.             "richiesta_salita" := 1;
  131.             "Salita_piatto"(richiesta_salita := "richiesta_salita");
  132.         ELSIF ((NOT "sensore_piatto_alto") AND
  133.             (NOT "sensore_piatto_basso")) THEN
  134.             "Salita_piatto"(richiesta_salita := "richiesta_salita");
  135.         ELSIF (("sensore_piatto_alto") AND
  136.             (NOT "sensore_piatto_basso")) THEN
  137.             "Salita_piatto"(richiesta_salita := "richiesta_salita");
  138.         END_IF;
  139.     6:  //azzeramento merker
  140.         "reset_timer_piatto" := 0;
  141.         "richiesta_apertura" := 0;
  142.         "richiesta_chiusura" := 0;
  143.         "richiesta_salita" := 0;
  144.         "richiesta_discesa" := 0;
  145.         "stato_timer_pulsante" := 0;
  146.         "sequenza" := 7;
  147.     10..11:;    //sequenze riservate all'emergenza
  148.     ELSE
  149.         "sequenza" := 0;
  150.         GOTO fine;
  151. END_CASE;
  152.  
  153. fine:   ;
Advertisement
RAW Paste Data Copied
Advertisement