Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  
Smart Solutions VDT :: Просмотр темы - Использование UTC в контроллерах CL
 FAQFAQ   ПоискПоиск   ГруппыГруппы   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Использование UTC в контроллерах CL

 
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации
Предыдущая тема :: Следующая тема  
Автор Сообщение
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Пт 23 Июл, 2010 7:00:03    Заголовок сообщения: Использование UTC в контроллерах CL Ответить с цитатой

Здравствуйте коллеги. Решился спросить. Задача такая: нужно при наступлении определенного события запоминать текущее время. Я пока решил использовать атрибут CurrentValue объекта WALLCLOCKTIME. Однако столкнулся с проблемой: текущее время ложится в переменную с типом LINT и не скопировать не сконвертировать в другой тип я не могу, а мне нужно чуть отредактировать значение. Может кто уже сталкивался с такой темой. Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Locky
Частый гость
Частый гость


Зарегистрирован: Oct 13, 2009
Сообщения: 49
Рейтинг: +5/-1
Откуда: Рязань

СообщениеДобавлено: Пт 23 Июл, 2010 9:29:43    Заголовок сообщения: Ответить с цитатой

Попробуйте использовать атрибут DateTime (UTC) или LocalDateTime (локальное). В качестве приемника данных команды GSV используйте 0-й элемент массива типа DINT[7]. Результат получается очень наглядный.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Пт 23 Июл, 2010 10:28:29    Заголовок сообщения: Ответить с цитатой

Locky писал(а):
Попробуйте использовать атрибут DateTime (UTC) или LocalDateTime (локальное). В качестве приемника данных команды GSV используйте 0-й элемент массива типа DINT[7]. Результат получается очень наглядный.
Я это знаю, но мне это не подходит - мне нужно именно время unix time. CurrentValue - это как раз то, что мне нужно, но существует проблема, которую я описал выше...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
dv_
Эксперт
Эксперт


Зарегистрирован: Sep 14, 2006
Сообщения: 776
Рейтинг: +41/-1
Откуда: Донецк

СообщениеДобавлено: Пт 23 Июл, 2010 12:13:47    Заголовок сообщения: Re: Использование UTC в контроллерах CL Ответить с цитатой

maxim писал(а):
Однако столкнулся с проблемой: текущее время ложится в переменную с типом LINT и не скопировать не сконвертировать в другой тип я не могу, а мне нужно чуть отредактировать значение.

LINT преобразуется в два последовательных DINT.
Многое остальное найдешь, см.:
http://samplecode.rockwellautomation.com/idc/groups/public/documents/webassets/sc_home_page.hcst
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Пн 26 Июл, 2010 6:26:21    Заголовок сообщения: Re: Использование UTC в контроллерах CL Ответить с цитатой

dv_ писал(а):

LINT преобразуется в два последовательных DINT.
Многое остальное найдешь, см.:
http://samplecode.rockwellautomation.com/idc/groups/public/documents/webassets/sc_home_page.hcst

Благодарю за ссылку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Ср 19 Окт, 2011 11:43:59    Заголовок сообщения: Ответить с цитатой

Долго не давала покоя мне эта идея - получить в контроллере нормальное UT в 32 - х разрядном виде. Мучился с LINT разлаживал на 2 DINT, умножал, делил, нашел даже в примерах как с LINT получают UT в DINT, но все как то не нравилось. Решил написать свой код, на основе класса WALLCLOCKTIME и атрибута DateTime получаю на выходе dUnixTime тип DINT :
Код:
gsv(WALLCLOCKTIME,,DateTime,diTemp[0]);

year:= diTemp[0] - 1970;
vysokosny:= year/4;

CASE diTemp[1] OF

1: DayOfMounth:= 0;
2: DayOfMounth:= 31;
3:    if (year MOD 4) > 0 then
   DayOfMounth:= 59;
   else    DayOfMounth:= 60;
   end_if;
4:   if (year MOD 4) > 0 then
   DayOfMounth:= 90;
   else    DayOfMounth:= 91;
   end_if;
5:   if (year MOD 4) > 0 then
   DayOfMounth:= 120;
   else    DayOfMounth:= 121;
   end_if;
6:   if (year MOD 4) > 0 then
   DayOfMounth:= 151;
   else    DayOfMounth:= 152;
   end_if;
7:   if (year MOD 4) > 0 then
   DayOfMounth:= 181;
   else    DayOfMounth:= 182;
   end_if;
8:   if (year MOD 4) > 0 then
   DayOfMounth:= 212;
   else    DayOfMounth:= 213;
   end_if;
9:   if (year MOD 4) > 0 then
   DayOfMounth:= 243;
   else    DayOfMounth:= 244;
   end_if;
10:   if (year MOD 4) > 0 then
   DayOfMounth:= 273;
   else    DayOfMounth:= 274;
   end_if;
11:   if (year MOD 4) > 0 then
   DayOfMounth:= 304;
   else    DayOfMounth:= 305;
   end_if;
12:   if (year MOD 4) > 0 then
   DayOfMounth:= 334;
   else    DayOfMounth:= 335;
   end_if;

END_CASE;
dUnixTime:= year*365*86400+vysokosny*86400+DayOfMounth*86400+(diTemp[2]-1)*86400+diTemp[3]*3600+diTemp[4]*60+diTemp[5];

как мне кажется все наглядно и просто. Может тоже кому пригодиться -пользуйтесь Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации Часовой пояс: GMT + 1
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Powered by phpBB © 2001, 2005 phpBB Group
Яндекс цитирования

Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany
Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de
Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна.
Открытие страницы: 0.136 секунды
/n