Здравствуйте.
Пишем свой скрипт определения связи с ПЛК. К сожалению скрипт в примерах Simaple-Scada не подошёл из-за проблем нижнего уровня по этому было решено постоянно менять значение переменной в самом ПЛК.
Был написан вот такой скрипт:
begin
if InterfaceModule_disconnect_flag.Value = FALSE then
begin
InterfaceModule_disconnect_flag.Value := TRUE;
end else begin if InterfaceModule_disconnect_flag.Value = FALSE then
begin
InterfaceModuleTimerCheckState.Value := 0;
vrMsgDisconnect.Value := TRUE;
if vrMsgConnect.Value = TRUE then
begin
AddMessage(Now, mkMessage, 'Установлена связь с ПКЛ', true, false);
vrMsgConnect.Value := FALSE;
end;
end else
begin
InterfaceModuleTimerCheckState.Value := InterfaceModuleTimerCheckState.Value + 1; //Накопление 10-ти секунд
if InterfaceModuleTimerCheckState.Value >= 10 then
begin
vrMsgConnect.Value := TRUE;
if vrMsgDisconnect.Value = TRUE then
begin
AddMessage(Now, mkAlarm, 'Связь с ПЛК утеряна', true, true);
vrMsgDisconnect.Value := FALSE;
end;
end;
end;
end;
end.
Суть задачи такова, что постоянно нужно менять значение в теге InterfaceModule_disconnect_flag с
TRUE на
FALSE. То-есть по дефолту тег имеет значение
TRUE, скада должна менять значение на
FALSE, но если по истечению 10-ти секунд значение с
FALSE не сменится на
TRUE значит ПЛК не на связи.
Скрипт к сожалению отрабатывает не совсем так как хотелось. Подскажите пожалуйста в чём может быть проблема, какое может быть решение?