Вход

Просмотр полной версии : Не сбрасываются счетчики времени



Vadim.Cybr
05.04.2021, 11:48
Добрый день, при разработке проекта столкнулись со следующей проблемой. В проекте используется большое количество счетчиков времени(более 800), которые сбрасываются раз в 12 часов выходом функционального блока cкрипт С#(выход переходит из состояния выкл. в состояние вкл. на один цикл). При работе проекта обнаружили, что некоторые счетчики времени не сбросились после изменения выхода скрипта и продолжили подсчет времени. При этом в момент следующего сброса(по прошествии ещё 12 часов) счетчики времени насчитавшие более 12 часов были сброшены, но не сбросились уже другие счетчики и также продолжили подсчет времени. В чём может заключаться данная проблема? Есть ли в скаде ограничения на количество связей к одному выходу(выход скрипта, отвечающий за сброс счетчиков, имеет более 1000 связей)? Версия MasterScada 3.11.0.17386 3.11(30011293_7008)_20_05_13_08_57.

SCADAMaster
05.04.2021, 12:07
Не должно быть.
Опрос по изменению установлен?
Возможно если разные циклы опроса стоит (например у скрипта 500 мс, а у ФБ 1000), то импульсы попадают между циклами.
Можно для начала сделать выдачу импульса со скрипта более длинной - 4-5 секунд например.

Vadim.Cybr
12.04.2021, 11:10
Цикл опроса у скрипта и у ФБ одинаковый - 1000 мс. Увеличение длительности импульса до 5 секунд решило проблему со сбросом счетчиков. К выходу скрипта, выдающего импульс для сброса, также привязаны входы других скриптов, исполняющихся при подаче импульса. При работе проекта обнаружили, что в один из моментов сброса несколько скриптов не исполнились при подаче импульса, при это в предыдущие и последующие моменты сброса скрипты исполнялись корректно. Опрос скриптов установлен по изменению входов.

SCADAMaster
12.04.2021, 11:24
Приложите проект (Проект - Экспортировать), укажите путь к команде и скриптам которые не исполнились

Vadim.Cybr
12.04.2021, 11:49
Путь к команде Объект\Сервер\Переключение смен\Антидребезг_post_switch\Выход. Не исполнились скрипты: Скрипт переназначение сотрудников и Скрипт обновление данных производства. Также прикрепил Логи. Скрипты не исполнились в 11.04.2021 20:00.

SCADAMaster
12.04.2021, 12:27
Антидребезг лучше поднять выше - сразу после скрипта, которым вы выдаете импульс. У вас сейчас на входы скрипта сигнал приходит только на следующий цикл.
Возможно у вас сам код не отработал, вот вы пишите:
bool temp; // singleshot generation variable
if(exec != null) {
if(exec.HasValue) {
if((exec == true) && (temp == false))
Во первых это масло масляное. HasValue это и есть проверка на null
И что вы тут хотите сделать? Передний фронт отследить?
Так вот так:
bool? temp=false; // singleshot generation variable
public override void Execute(){
if(exec == true && temp == false)
{
Log(INFO, "обновление данных производства", 81);
updateProduce();
temp = true;
}
temp=exec;
}

Vadim.Cybr
12.04.2021, 15:32
Антидребезг лучше поднять выше - сразу после скрипта, которым вы выдаете импульс. У вас сейчас на входы скрипта сигнал приходит только на следующий цикл.
Возможно у вас сам код не отработал, вот вы пишите:
bool temp; // singleshot generation variable
if(exec != null) {
if(exec.HasValue) {
if((exec == true) && (temp == false))
Во первых это масло масляное. HasValue это и есть проверка на null
И что вы тут хотите сделать? Передний фронт отследить?
Так вот так:
bool? temp=false; // singleshot generation variable
public override void Execute(){
if(exec == true && temp == false)
{
Log(INFO, "обновление данных производства", 81);
updateProduce();
temp = true;
}
temp=exec;
}

В каких случаях данный код может не отработать? Что будет, если в одном из скриптов возникнет неперехваченный Exception e, и есть ли возможность узнать об этом в режиме исполнения? Можно ли узнать сколько по времени занимает процесс формирования отчета?

SCADAMaster
12.04.2021, 15:53
В каких случаях данный код может не отработать?
Например если TEMP будет в TRUE.



Что будет, если в одном из скриптов возникнет неперехваченный Exception e, и есть ли возможность узнать об этом в режиме исполнения?
Можно посмотреть лог - в правом нижнем углу скады появляется красная кнопка.


Можно ли узнать сколько по времени занимает процесс формирования отчета?
Имеется ввиду отчет из редактора отчетов?
С помощью ФБ "Управление документом" можно отслеживать его выполнение