Есть переменная в контроллере, тип DWORD. В ней записаны секунды, общим количеством не более чем 86400 (полное количество секунд в сутках). Как можно отобразить на скаде в полях отдельно часы, минуты и секунды данной переменной с возможностью редактирования и без использования промежуточных внутренних переменных?
Редактирование времени суток с использованием объект "Календарь" Для переменной dwTimeOPC Вашего "Внешнего тега(с ОРС сервера)" нужно установить:
- тип данных "LongWord";
- шкалу с минимумом = 0, максимумом = 86399;
- виз. минимум = 0, виз. максимум = 0.99998842 (86399/86400).
Данные параметры обеспечивают масштабирование числа секунд во время суток и наоборот.
Календарь необходимо настроить на отображение только времени суток, включая секунды.
Основная переменная - dtTime, дополнительная - dwTimeOPC.
Скрипты по изменению основной и дополнительной переменных:
begin
dwTimeOPC.Value := Frac(dtTime.Value); // ограничить только временем суток
end.
begin
dtTime.value := dwTimeOPC.Value;
end.
Максимальное использование возможностей Simple-Scada позволяет получить компактный код.
Проект из вложения проверен с сервером arОРС и эмулятором Modbus.