Ваши комментарии
Доброго времени суток!) У меня схожая ситуация с изначальным вопросом. Мне необходимо вывести количество циклов за смену (с 6:00 до 18:00). Общий счётчик циклов выведен на скаду с контроллера. Заранее благодарю за ответ.
Большое спасибо!!!)всё и правда оказалось проще чем казалось... Я обязательно ещё раз пройду курсы на Stepike!))) Я прям восхищаюсь работой тех поддержки!!!)) Вы лучшие!
Сервис поддержки клиентов работает на платформе UserEcho
Написал немного ерундятину..., как будто расход считаю...
{Pascal Script}
Var
cycles_now, cycles_now_temp: Double;
cycles_last, total_cycles: Double;
total_day_cycles, cycles_last_day: Double;
total_night_cycles, cycles_last_night: Double;
firstTime: Time;
currentTime: Time;
day: Boolean;
night: Boolean;
// Выполняется один раз при первом выполнении скрипта
procedure OnStartScript;
begin
// Ваш код
// ПОДУМАТЬ
// При запуске скады. Определяет день-ночь и правильно ли был выполнен переход.
// Нужно ли выполнить сброс накопленного за день-ночь.
if (Time > EncodeTime(6,0,0,0)) and (Time <= EncodeTime(18,0,0,0)) then
begin
if GetGlobalVar('ПроверкаДеньНочьЦиклы') = 1 then
begin
night := True;
WriteValue('СтатусДеньНочьKN', True);
end
else
begin
night := False;
WriteValue('СтатусДеньНочьKN', False);
end;
end
else
begin
if GetGlobalVar('ПроверкаДеньНочьЦиклы') = 0 then
begin
night := False;
WriteValue('СтатусДеньНочьKN', False);
end
else
begin
night := True;
WriteValue('СтатусДеньНочьKN', True);
end;
end
end;
// Выполняется при завершении работы монитора
procedure OnStopScript;
begin
// Ваш код
end;
Begin
total_cycles := GetGlobalVar('РассчётСуммаЦиклов');
total_day_cycles := GetGlobalVar('СуммаДеньЦиклов');
total_night_cycles := GetGlobalVar('СуммаНочьЦиклов');
// Сброс сетчиков
IF ReadValue('СбросСчётчикЦиклов') THEN
begin
total_cycles := 0;
total_day_cycles := 0;
total_night_cycles := 0;
end;
// Циклов в час
cycles_now_temp := ReadValue('KEKURA.3016.KN1.KN1_Cycles');
// Для теста
//currentTime := EncodeTime(ReadValue('ВремяУстановка'),0,0,0);
// Приводим к циклам в секунду...
cycles_now := cycles_now_temp / 3600; - тут врятли нужно в секунду...
// Счетчик итоговый
total_cycles := total_cycles + (cycles_now_temp - cycles_last);
cycles_last := cycles_now; - Вот тут надо из общего кол-ва циклов, вычесть заранее записанное значение циклов на начало смены...?
if (Time > EncodeTime(6,0,0,0)) and (Time <= EncodeTime(18,0,0,0)) then
begin
if NOT(night) then
begin
WriteValue('АрхивДеньНочьKN', total_night_cycles);
SaveValueToDB('АрхивДеньНочьKN');
total_day_cycles := 0;
night := True;
SetGlobalVar('ПроверкаДеньНочьЦиклы', 1, TRUE);
end;
// Счетчик день
total_day_cycles := total_day_cycles + (cycles_last_day - cycles_now);
cycles_last_day := cycles_now;
WriteValue('СтатусДеньНочьKN', True);
end
else
begin
if night then
begin
WriteValue('АрхивДеньНочьKN', total_day_cycles);
SaveValueToDB('АрхивДеньНочьKN');
total_night_cycles := 0;
night := False;
SetGlobalVar('ПроверкаДеньНочьЦиклы', 0, TRUE);
end;
// Счетчик ночь
total_night_cycles := total_night_cycles + (cycles_last_night - cycles_now);
cycles_last_night := cycles_now;
WriteValue('СтатусДеньНочьKN', False);
end;
SetGlobalVar('РассчётСуммаЦиклов', total_cycles, TRUE);
SetGlobalVar('СуммаДеньЦиклов', total_day_cycles, TRUE);
SetGlobalVar('СуммаНочьЦиклов', total_night_cycles, TRUE);
WriteValue('РассчётСуммаЦиклов', total_cycles);
WriteValue('СуммаДеньЦиклов', total_day_cycles);
WriteValue('СуммаНочьЦиклов', total_night_cycles);
end.