Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Документирование в TRACE MODE / Data Documentation in Trace Mode » печать времени

   
Автор / Author Тема / Topic: печать времени
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192


Icon 5 отправлено / posted      Профиль для / Profile for Погодаева Г.           Редактировать/удалить сообщение / Edit/Delete Post 
Помогите, пожалуйста,решить мою проблему.
Раз в сутки проверяется прибор на нуль и в канал Пр0 я записываю время его проверки (вещ. число), в Win2000 это время в сутках. А сервер док-ния работает с временем в сек. Мне в отчет надо напечатать или время проверки, или 00:00:00, если проверки не было. Меня еще запутывает время по Гринвичу (у нас разница в 8 час.).Какое выражение мне надо составить в отчете или что программно еще мне надо сделать?
Заранее благодарна.

Сообщения / Posts 28 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 5 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Каким образом Вы заносите это время в канал Пр0?
Сообщения / Posts 15204 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192


Icon 1 отправлено / posted      Профиль для / Profile for Погодаева Г.           Редактировать/удалить сообщение / Edit/Delete Post 
Для времени 00:00:00 я посылала в Пр0 - 0.00 , но в отчете печаталось 8:00:00. А для времени проверки, я вычисляла веществ. число = время проверки (переведенное в секунды) - 28800 (разница часовых поясов в секундах). В отчете это время печаталось как мне надо. Вывод на печать шел по такому формату:
TIMESTR("%X",GETVAL(CHAN("Пр0",0,"medal"))).
Я пробовала менять функции (использовать DTIME), но ничего хорошего не получилось: или идет ошибка, или не то время печатается.

Сообщения / Posts 28 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 14 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Рекомендую использовать более простой метод. Суть его в том, чтобы использовать для хранения времени проверки прибора атрибут время изменения канала. Допустим, что у Вас в проекте есть для этого канал ChannelTime. Тогда - при проведении проверки в этот канал Вам необходимо послать любое значение (значение роли не играет - главное, чтобы значение канала поменялось) для того, чтобы его атрибут Время Изменения зафиксировал текущее системное время. Это и будет время, которое мы будем использользовать в шаблоне документа. В шаблоне вывести данное время можно следующим выражением:
TIMESTR( "%#x %X", GETVAL( CHAN( "ChannelTime", "TS", "NODE1") ) )

Сообщения / Posts 15204 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192


Icon 1 отправлено / posted      Профиль для / Profile for Погодаева Г.           Редактировать/удалить сообщение / Edit/Delete Post 
Я согласна, что и так можно напечатать нужное мне время. Но в 7 час. утра каждых суток я должна обнулить это время и как по вашему выражению напечатается 00:00:00 ? Что я должна подать на вход этого канала?
Сообщения / Posts 28 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 4 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
В таком случае Вам необходимо делать поправку на часовой пояс. Вы верно получаете значение 8:00:00 при нулевом значении в канале. Дело в том, что внутри - система работает с форматом времени по Гринвичу, а как Вы уже уточнили - у Вас разница по Гринвичу +8 часов. Поэтому в Вашем локальном времени значение 00:00:00 в канале должно учитывать эту поправку. Для времени проверки Вы эту поправку вводили (- 28800, разница часовых поясов в секундах), а вот при обнулении - не учитывали и получали как следствие время на 8 часов большее, чем необходимо!
Кроме того - не рекомендуется использовать функции типа DTIME() или TIME() от значения Вашего канала, ведь Вы и так уже формируете время в том формате, в котором они его сами возвращают, иначе данные функции будут возвращать всегда текущее время системы!

Сообщения / Posts 15204 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192


Icon 1 отправлено / posted      Профиль для / Profile for Погодаева Г.           Редактировать/удалить сообщение / Edit/Delete Post 
Извините, но для меня это уже пройденный этап. Дело в том, что функция TIMESTR() выдает ошибку, если в канале отрицательное число. Но я нашла выход -применила функцию IF(). При равенстве 0 значения канала я выдаю на печать пробелы:
IF( GETVAL( CHAN( "Пр0_ВСГ", 0, "Medal")), '!=', 0, TIMESTR( "%X", GETVAL( CHAN( "Пр0_ВСГ", 0, "Medal")))," " )
Но теперь у меня пропали границы ячеек, где печатаются пробелы. Я не пойму, почему они пропадают. При просмотре пробного отчета- все нормально. Честно говоря, я уже достаточно намучилась с этими границами. Везде описано, как должно быть, и как надо делать, а непонятные ситуации нигде не описаны.

Сообщения / Posts 28 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 7 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Естественно система не понимает отрицательное значение! Ведь нижний предел - это ноль часов 1970 года. Как можно сместить время меньше этой границы? Это начало осчета - меньше быть не может и Trace Mode тут не при чем, так уж устроена вся вычислительная техника.
Если Вы хотите обнулять время по 00:00:00 - то будте добры учитывать и остальные составляющие формата времени - это День, Месяц и Год! Вы забыли про них? Ведь 00 часов, 00 минут 00 секунд бывают в разные дни разных месяцев и разных лет! Поэтому при формировании нулевого времени про это нельзя забывать! [Улыбка / Smile]

Сообщения / Posts 15204 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2