1
Ваши проекты / Re: Система управления на химическом заводе
« : 08 Ноября 2023, 10:45:09 »Добрый день, вы шаблонизировали окна управления клапанами или у вас на каждый клапан свое индивидуальное (не шаблонное) окно?В той версии Simple SCADA таких возможностей как сейчас не было. Сейчас это сделано через шаблонное окно.
Код: (delphi)
var status: Integer;
comand:Boolean;
ModeUSV,ValuePV,ValueMV,Valve_Sost:TM_Text;
LampZL,LampZH,LampMV0,LampMV1:TM_Shape;
aButtonC,aButtonO:TM_Button;
begin
//Лампы
LampZL := GetTemplateObject('tmpUSVShapeClose') as TM_Shape;
LampZH := GetTemplateObject('tmpUSVShapeOpen') as TM_Shape;
LampMV0:= GetTemplateObject('tmpUSVShapeMV0') as TM_Shape;
LampMV1:= GetTemplateObject('tmpUSVShapeMV1') as TM_Shape;
//Текст
ModeUSV:= GetTemplateObject('tmpUSVTextMode') as TM_Text;
ValuePV:= GetTemplateObject('tmpUSVValuePV') as TM_Text;
ValueMV:= GetTemplateObject('tmpUSVValueMV') as TM_Text;
Valve_Sost:= GetTemplateObject('tmpUSVTextSost') as TM_Text;
//Кнопки
aButtonO := GetTemplateObject('tmpUSVButtonOpen') as TM_Button;
aButtonC := GetTemplateObject('tmpUSVButtonClose') as TM_Button;
if not (Assigned( ModeUSV.Variable)) Then Exit;
if not (Assigned( ModeUSV.VariableEx)) Then Exit;
status:= ModeUSV.Variable.AsInt;
comand:= ModeUSV.VariableEx.AsBool;
//Изменение надписи режима РУЧ/АВТ
//и разрешения управленния клапаном
if status<10 Then
Begin
ModeUSV.Text:='AUT';
aButtonC.Enabled:=False;
aButtonO.Enabled:=False;
end
Else
Begin
ModeUSV.Text:='MAN';
aButtonC.Enabled:=True;
aButtonO.Enabled:=True;
end;
//Диагностика клапана 1..7
Case status of
1,11:Begin
//Клапан открыт
ValuePV.Text:='2';
LampZH.Color:=clGreen;
LampZL.Color:=RGB(218,218,218);
Valve_Sost.Text:='NR';
end;
2,12:Begin
//Клапан открывается
ValuePV.Text:='1';
LampZH.Color:=RGB(218,218,218);
LampZL.Color:=RGB(218,218,218);
Valve_Sost.Text:='NR';
end;
3,13:Begin
//Клапан закрыт
ValuePV.Text:='0';
LampZH.Color:=RGB(218,218,218);
LampZL.Color:=clGreen;
Valve_Sost.Text:='NR';
end;
4,14:Begin
//Клапан закрывается
ValuePV.Text:='1';
LampZH.Color:=RGB(218,218,218);
LampZL.Color:=RGB(218,218,218);
Valve_Sost.Text:='NR';
end;
5,15:Begin
//Ошибка открытия
ValuePV.Text:='1';
LampZH.Color:=RGB(218,218,218);
LampZL.Color:=RGB(218,218,218);
Valve_Sost.Text:='ANS+';
end;
6,16:Begin
//Ошибка открытия
ValuePV.Text:='1';
LampZH.Color:=RGB(218,218,218);
LampZL.Color:=RGB(218,218,218);
Valve_Sost.Text:='ANS-';
end;
7,17:Begin
//Ошибка концевиков
ValuePV.Text:='1';
LampZH.Color:=clGreen;
LampZL.Color:=clGreen;
Valve_Sost.Text:='PERR';
end;
end;
//Динамизация команды на клапан
if comand then
begin
LampMV0.Color:=RGB(218,218,218);
if status<10 Then LampMV1.Color:=clYellow Else LampMV1.Color:=clRed;
ValueMV.Text:='1';
end
else
begin
if status<10 Then LampMV0.Color:=clYellow Else LampMV0.Color:=clRed;
LampMV1.Color:=RGB(218,218,218);
ValueMV.Text:='0';
end;
end.