6BSPJ motion

Detaljer

Typ
Program
Upplaggd av
Ove Jansson, Abelko Innovation
Version
2
Uppdaterad
2013-09-03
Skapad
2013-08-28
Kategori
Allmän automation
Visningar
3462

Beskrivning

Motionering

Bruksanvisning

Saknas

Juridisk information

Alla skript tillhandahålls i befintligt skick och all användning sker på eget ansvar. Felaktig använding kan leda till skadad eller förstörd utrustning.

Skript kod

ROUTINE fire_ex
  ALIAS
    DI_ind_open_1   = CHANNEL[59]; %TA1-ST1 öppen
    DI_ind_open_2   = CHANNEL[63]; %CF1-ST1 öppen
    DI_ind_open_3   = CHANNEL[65]; %CF1-ST2 öppen
    DI_ind_open_4   = CHANNEL[48]; %CF2-ST1 öppen
    DI_ind_open_5   = CHANNEL[50]; %CF2-ST2 öppen
    DI_ind_open_6   = CHANNEL[52]; %CF2-ST3 öppen
    DI_ind_closed_1 = CHANNEL[60]; %TA1-ST1 Stängd
    DI_ind_closed_2 = CHANNEL[64]; %CF1-ST1 Stängd
    DI_ind_closed_3 = CHANNEL[66]; %CF1-ST2 Stängd
    DI_ind_closed_4 = CHANNEL[49]; %CF2-ST1 Stängd
    DI_ind_closed_5 = CHANNEL[51]; %CF2-ST2 Stängd
    DI_ind_closed_6 = CHANNEL[53]; %CF2-ST3 Stängd
    DO_open       = CHANNEL[68]; %Brandspjäll
    FIRE_alarm    = ALARM[18]; %Rökdetektor
    ALARM         = CHANNEL[98]; %Larmkanal BSP

    ALARM_1       = CHANNEL[92]; %TA1-ST1 i Felläge
    ALARM_2       = CHANNEL[93]; %CF1-ST1 i Felläge
    ALARM_3       = CHANNEL[94]; %CF1-ST2 i Felläge
    ALARM_4       = CHANNEL[95]; %CF2-ST1 i Felläge
    ALARM_5       = CHANNEL[96]; %CF2-ST2 i Felläge
    ALARM_6       = CHANNEL[97]; %CF2-ST3 i Felläge
    RUN_cal       = CALENDAR[1]; %BSP-Motion
    RUN_time      = PARAMETER[36]; %Brandspjälltid
    STATE         = CHANNEL[99]; %Status Brandspjäll
    CNT           = CHANNEL[100]; %Räknare Brandspjäll
  VAR
    Last_RUN_cal;
    DI_ind_open; DI_ind_closed;
  BEGIN
    DI_ind_open := DI_ind_open_1 AND DI_ind_open_2 AND DI_ind_open_3 AND DI_ind_open_4 AND DI_ind_open_5 AND DI_ind_open_6;
    DI_ind_closed := DI_ind_closed_1 AND DI_ind_closed_2 AND DI_ind_closed_3 AND DI_ind_closed_4 AND DI_ind_closed_5 AND DI_ind_closed_6;

    IF FIRE_alarm = 1 THEN
      DO_open <- 0;
      STATE   <- 0;
    ELSIF (DI_ind_closed = 1) AND (DI_ind_open = 1) THEN
      ALARM <- 1;
      STATE <- 0;
    ELSE
      IF RUN_cal = 1 THEN
        IF (RUN_cal = 1) AND (Last_RUN_cal = 0) THEN
          STATE <- 1;
          DO_open <- 0;
          CNT <- RUN_time;
        ENDIF;
        IF (STATE = 1) THEN
          IF DI_ind_closed = 1 THEN
            STATE   <- 2;
            DO_open <- 1;
            CNT     <- RUN_time;
          ENDIF;
        ELSIF (STATE = 2) THEN
          IF DI_ind_open = 1 THEN
            STATE   <- 3;
            CNT     <- RUN_time;
          ENDIF;
        ELSIF (STATE = 3) THEN
          CNT <- RUN_time;
        ENDIF;
        CNT <- CNT - 1;
        IF (CNT < 0) THEN
          ALARM <- 1;
          IF STATE = 1 THEN
            ALARM_1 <- (DI_ind_closed_1 = 0);
            ALARM_2 <- (DI_ind_closed_2 = 0);
            ALARM_3 <- (DI_ind_closed_3 = 0);
            ALARM_4 <- (DI_ind_closed_4 = 0);
            ALARM_5 <- (DI_ind_closed_5 = 0);
            ALARM_6 <- (DI_ind_closed_6 = 0);
          ELSIF STATE = 2 THEN
            ALARM_1 <- (DI_ind_open_1 = 0);
            ALARM_2 <- (DI_ind_open_2 = 0);
            ALARM_3 <- (DI_ind_open_3 = 0);
            ALARM_4 <- (DI_ind_open_4 = 0);
            ALARM_5 <- (DI_ind_open_5 = 0);
            ALARM_6 <- (DI_ind_open_6 = 0);
          ENDIF;
        ENDIF;
      ELSE
        DO_open <- 1;
        STATE   <- 0;
        CNT     <- 0;
        IF (DI_ind_open = 0) OR (DI_ind_closed = 1) THEN
          ALARM   <- 1;

          IF (DI_ind_open_1 = 0) OR (DI_ind_closed_1 = 1) THEN
            ALARM_1 <- 1;
          ELSE
            ALARM_1 <- 0;
          ENDIF;
          IF (DI_ind_open_2 = 0) OR (DI_ind_closed_2 = 1) THEN
            ALARM_2 <- 1;
          ELSE
            ALARM_2 <- 0;
          ENDIF;
          IF (DI_ind_open_3 = 0) OR (DI_ind_closed_3 = 1) THEN
            ALARM_3 <- 1;
          ELSE
            ALARM_3 <- 0;
          ENDIF;
          IF (DI_ind_open_4 = 0) OR (DI_ind_closed_4 = 1) THEN
            ALARM_4 <- 1;
          ELSE
            ALARM_4 <- 0;
          ENDIF;
          IF (DI_ind_open_5 = 0) OR (DI_ind_closed_5 = 1) THEN
            ALARM_5 <- 1;
          ELSE
            ALARM_5 <- 0;
          ENDIF;
          IF (DI_ind_open_6 = 0) OR (DI_ind_closed_6 = 1) THEN
            ALARM_6 <- 1;
          ELSE
            ALARM_6 <- 0;
          ENDIF;
        ELSE
          ALARM   <- 0;
          ALARM_1 <- 0;
          ALARM_2 <- 0;
          ALARM_3 <- 0;
          ALARM_4 <- 0;
          ALARM_5 <- 0;
          ALARM_6 <- 0;
        ENDIF;
      ENDIF;
    ENDIF;
    Last_RUN_cal := RUN_cal;
END;

Användarnas noteringar

Du måste vara inloggad för att göra en notering. Bli medlem eller logga in. Vi använder en moderator som godkänner noteringarna innan de visas.