1
Ваши вопросы / Re: Вопросы по скриптам в Simple-Scada 2
« : 22 Марта 2018, 09:05:47 »
Здравствуйте! Обнаружился неприятный баг в версии 2.2.7.1:
Необходим универсальный скрипт, который обрабатывал бы два DI сигнала и менял цветовую индикацию разгных объектов. Пусть будут два сигнала DI_1 и DI_2. На основную переменную - DI_1, на дополнительную - DI_2. Объекты Клапан и Изображение.
Цветовая схема:
Пишем скрипт (листинг ниже) и подвязываем его на оба события по основному и дополнительному тэгу. С приведённым листингом - объект изображение отрабатывает правильно по цветовой схеме, а вот клапан - нет.
Клапан работает двояко: если был сигнал DI_1 = 0, DI_2 = 1, пришло событие DI_1 = 1 - клапан становится зелёным (так не должно быть), а изображение - красным (как и положено).
Если был сигнал DI_1 = 1, DI_2 = 0, пришло событие DI_2 = 1 - клапан становится карсным как и положено.
Другие переменные на клапан не подвязывались.
Листинг:
P.S.: у нас приобретены лицензии Simple Scada 2.2.7.1. версии Professional (с расиренной техподдержкой, ФКП "Комбинат "Каменский").
Просим также прислать последниие версии скады (ссылки наскачивание) на наш email.
Необходим универсальный скрипт, который обрабатывал бы два DI сигнала и менял цветовую индикацию разгных объектов. Пусть будут два сигнала DI_1 и DI_2. На основную переменную - DI_1, на дополнительную - DI_2. Объекты Клапан и Изображение.
Цветовая схема:
Код
Если DI_1 = 1 DI_2 = 0 - зелёный цвет;
Если DI_0 = 1 DI_2 = 1 - серый цвет;
Если DI_1 = 1 DI_2 = 1 - красный цвет;
Если DI_1 = 0 DI_2 = 0 - серый цвет, жёлтое моргание;
Клапан работает двояко: если был сигнал DI_1 = 0, DI_2 = 1, пришло событие DI_1 = 1 - клапан становится зелёным (так не должно быть), а изображение - красным (как и положено).
Если был сигнал DI_1 = 1, DI_2 = 0, пришло событие DI_2 = 1 - клапан становится карсным как и положено.
Другие переменные на клапан не подвязывались.
Листинг:
Код: (delphi)
var
Color1_0, Font1_0, Color0_1, Font0_1, Color1_1, Font1_1, Color0_0, Font0_0, Flash1_1, Flash0_0: Cardinal;
begin
Color1_0 := $00CE00; //Green
Font1_0 := clBlack;
Color0_1 := clLightGray;
Font0_1 := ClBlack;
Color1_1 := ClRed; //Green
Font1_1 := clBlack;
Color0_0 := clLightGray;
Font0_0 := clBlack;
Flash1_1 := ClNone;
Flash0_0 := clYellow;
//Если вызвавший объект - изображение
if Sender is TM_Image then
with Sender as TM_Image do
begin
if ((Variable.AsBool = true) AND (VariableEX.AsBool = false)) then
begin
Alpha := 255; Color := Color1_0;
FlashColor := clNone;
end;
if ((Variable.AsBool = false) AND (VariableEX.AsBool = true)) then
begin
Alpha := 255; Color := Color0_1;
FlashColor := clNone;
end;
if ((Variable.AsBool = true) AND (VariableEX.AsBool = true)) then
begin
Alpha := 255; Color := Color1_1;
FlashColor := Flash1_1;
end;
if ((Variable.AsBool = false) AND (VariableEX.AsBool = false)) then
begin
Alpha := 255; Color := Color0_0;
FlashColor := Flash0_0;
end;
end;
//Если вызвавший объект - клапан
if Sender is TM_Valve then
with Sender as TM_Valve do
begin
if ((Variable.AsBool = true) AND (VariableEX.AsBool = false)) then
begin
Alpha := 255; Color := Color1_0;
FlashColor := clNone;
end;
if ((Variable.AsBool = false) AND (VariableEX.AsBool = true)) then
begin
Alpha := 255; Color := Color0_1;
FlashColor := clNone;
end;
if ((Variable.AsBool = true) AND (VariableEX.AsBool = true)) then
begin
Alpha := 255; Color := Color1_1;
FlashColor := Flash1_1;
end;
if ((Variable.AsBool = false) AND (VariableEX.AsBool = false)) then
begin
Alpha := 255; Color := Color0_0;
FlashColor := Flash0_0;
end;
end;
end.
Просим также прислать последниие версии скады (ссылки наскачивание) на наш email.