melky, я привёл пример с ВОРОТАМИ на языке ST, как мне кажется должно быть понятно.
Состояние это реле из 4-х положений, каждое положение определяется своей логической цепочкой
Код:
; Входные сигналы
; I00A00 – Кнопка ворота открыть
; I00A01 – Кнопка ворота закрыть
; I00A02 – Кнопка ворота стоп
; I00A03 – Датчик препятствия
; I00A04 – Конечник открыто
; I00A05 – Конечник закрыто
; Выходные сигналы
; U00A00 – Ворота открыть
; U00A01 – Ворота закрыть
; U00A02 – Лампа Стоп
; U00A03 – Лампа Открытие
; U00A04 – Лампа Закрытие
; U00A05 – Лампа Авария
; -------- формирование состояний на основе событий -----------------
; Если (Кн. ворота стоп or Датчик препятствия or Конечник открыто or Конечник закрыто)
IF (I00A02 or I00A03 or I00A04 or I00A05)
W20K0=0 ; состояние СТОП
END
; Если (Кн. ворота открыть or Ворота отрыть)
IF (I00A00 or U00A00)
W20K0=1 ; состояние Открытие ворот
ENDF
; Если (Кн. ворота закрыть or Ворота закрыть)
IF (I00A01 or U00A01)
W20K0=2 ; состояние Закрытие ворот
ENDF
; Если (Ворота открыть and Ворота закрыть)
IF (U00A00 and U00A01)
W20K0=3 ; состояние Авария
ENDF
; --------------- Алгоритм -------------------
; Ворота открыть = Кн. ворота открыть or Ворота открыть and NOTСостояние СТОП and NOTСостояние Авария
U00A00 = (I00A00 or U00A00) and NOT[W20K0=0] and NOT[W20K0=3]
; Ворота закрыть = Кн. ворота закрыть or Ворота закрыть and NOTСостояние СТОП and NOTСостояние Авария
U00A01 = (I00A01 or U00A01) and NOT[W20K0=0] and NOT[W20K0=3]
; Лампа Стоп
U00A02 = [W20K0=0]
; Лампа Открытие
U00A03 = [W20K0=1]
; Лампа Закрытие
U00A04 = [W20K0=2]
; Лампа Авария
U00A05 = [W20K0=3]