This is topic Отработка каналов в заданные моменты времени in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Считывать из прибора каждый час среднечасовые архивные значения, записывать и в СПАД архив и затем формировать отчетности по данным этих архивов.
Для этого требуется реализовать примерно следующий алгоритм:
Имеется 20 каналов привязанных к оборудованию. Нужно каждый час в (XX часов 30 минут (точность в +/- 10 минут не сыграют роли)) производить чтение значений этих каналов, формировать метку времени и записывать эти значения в СПАД архив с заранее сформированной меткой времени.
Например. - 22 июня в 22.30 отработать 20 каналов. Записать значения в СПАД архив с меткой времени 22:00, 22 июня.
- 22 июня в 23:30 отработать 20 каналов, получив их значения, И записать эти значения в СПАД архив с меткой времени на 23:00, 22 июня. ( дата должна быть часовой давности)
- 23 июня в 00.30 отработать 20 каналов. Записать значения в СПАД архив с меткой времени 00:00 23 июня. И так далее…
Для этого попытался написать программу, которая бы анализировала системную переменную t_Set_Date.
Однако столкнулся с проблемой анализа и формирования даты-времени, т.к. время представляется как количество секунд с 1.1.1970 г. Как мне узнать какой сегодня год, месяц, число, час, минута имея только данные о количестве секунд? И как мне сформировать нужное мне время? Например 27 июня 2009 г, 11:00 – как вычислить количество секунд с 1.1.1970? Должно быть, есть какая то формула?!
После того как программа проанализировала текущее время и сделала вывод, что нужно заставить каналы отработаться программным путем. Какую конфигурацию каналов сделать и на какой атрибут канала воздействовать, чтобы он отработался?
Для принудительной записи в СПАД архив, как я понял, используется канал CALL.writer. С этим пока проблем нет, т.к. руки до него еще не дошли
Помогите пожалуйста разобраться с проблемой. И если можно сделайте тестовый пример для наглядности. Уверен что и остальным участникам данного форума этот пример может принести пользу.
Спасибо.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Все операции с текущим временем осуществляются с помощью системной переменной @t_Set_Date и FBD блоков для работы с временем.
Для Вашей задачи лучше всего использовать FBD блок Alarm.