Доброго всем времени суток
В проекте есть битовая переменная, которая меняет значение в зависимости от состояния агрегата, 1 - в работе, 0 - остановлен
За предыдущие 24 часа высчитывается, какое количество времени агрегат был в работе:
DateEnd:= Now;
DateStart:= IncHour(Now, -24);
ArchiveTimeOn(Bool_Val, DateTime_Val, DateStart, DateEnd);
Результат выводится в поле Calendar, с отключенным значением даты и временем в формате hh:mm:ss
Проблема в том, что если агрегат работал все 24 часа, то в поле Calendar выводится 00:00:00
Как сделать так, чтобы в таком случае отображалось 24:00:00 ?
Спасибо
Здравствуйте.
Результат выводится в поле Calendar, с отключенным значением даты и временем в формате hh:mm:ss
Проблема в том, что если агрегат работал все 24 часа, то в поле Calendar выводится 00:00:00
В компонент "Календарь" и переменную типа "DateTime" нельзя вывести значение времени больше чем 23:59:59. Если время наработки/простоя может быть больше 23:59:59, то его можно выводить в компонент "Текст (https://simple-scada.com/help/manual/text.html)", как это описано в примере №2 по ссылке (https://simple-scada.com/help/script/archivetimeon.html).
Как сделать так, чтобы в таком случае отображалось 24:00:00 ?
Значение 24:00:00 можно отобразить в компоненте "Текст". Для этого компонент "Текст" нужно связать с переменной "DateTime_Val" и на событие OnDataChange (https://simple-scada.com/help/script/by-obj-event.html) написать универсальный скрипт:
var
aSeconds: Int64;
begin
if Sender is TM_Text then // проверяем, что Sender это текст
with Sender as TM_Text do // приводим Sender к типу "TM_Text"
begin
aSeconds := SecondsBetween(0, DateTime_Val.AsDateTime); // получить кол-во секунд
Text := SecondsToStr(aSeconds); // переводит секунды в строку вида "чч:мм:сс".
end;
end.