Примеры программ на языке ST
Ниже приведен текст возможного варианта программы управления установкой для смешивания жидкостей, алгоритм работы которой, подключение датчиков и выходных устройств, объявление переменных приведены в п. 2.3.
(*Declaration EFB*) VAR RS_Tr1, RS_Tr2: RS; Timer: TON; END_VAR
(*Invocation EFB*) RS_Tr1 (S:=Start, R1:=RS_Tr2.Q1); RS_Tr2 (S:=TUpp, R1:=NOT DU1); Timer (IN:=RS_Tr2.Q1 AND Stop, PT:=t#10s);
(*Transformation of a code temperature*) TUpp:= (UINT_TO_REAL(DTemp) - 6400.0)/256.0 > 70.0;
(*Control*) IF RS_Tr1.Q1=1 THEN K1:=NOT DU2 AND Stop; K2:=DU2 AND NOT DU3 AND Stop; Nagr:=DU3 AND NOT TUpp AND Stop; KM:=DU2 AND Stop; ELSE KM:=0; END_IF; K3:= RS_Tr2.Q1 AND Stop AND Timer.Q; Ниже приведен текст другого возможного варианта программы управления установкой для смешивания жидкостей. В программе дополнительно введена переменная SA типа UDINT, которая используется (вместо триггеров) для реализации трех состояний (State) конечного автомата (вместо триггеров).
(*Declaration EFB*) VAR Timer: TON; END_VAR
(*Invocation EFB*) Timer (IN:=SA=2 AND DU1, PT:=t#10s);
(*Transformation of a code temperature*) TUpp:= (UINT_TO_REAL(DTemp) - 6400.0)/256.0 > 70.0;
(*Control*) (*State 0*) IF SA=0 AND Start THEN SA:=1; END_IF;
(*State 1*) IF SA=1 THEN K1:=NOT DU2 AND Stop; K2:=DU2 AND NOT DU3 AND Stop; Nagr:=DU3 AND NOT TUpp AND Stop; KM:=DU2 AND Stop; IF TUpp THEN SA:=2; END_IF; END_IF;
(*State 2*) IF SA=2 THEN KM:=DU3 AND Stop; K3:=Stop AND DU1 AND Timer.Q; IF NOT DU1 THEN SA:=0; END_IF; END_IF;
|