SIEMENS, DF&PD

Предыдущее посещение: Вс июл 10, 2016 16:39 Текущее время: Вс июл 10, 2016 16:39

Часовой пояс: UTC + 3 часа




 [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: перевод TIME для пересчета
СообщениеДобавлено: Пн окт 17, 2011 11:56 
Не в сети

Зарегистрирован: Вс дек 06, 2009 1:55
Сообщения: 7
Здравствуйте,
есть необходимость задавать время в формате TIME
и переводить его в целое или двойное целое или с плавающей точкой
но чтобы это уже было в секундах
то есть TIME - необходимо представить числом с количеством секунд
что бы использовать в формуле
кк это сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 11:59 
Не в сети
Известный Писатель

Зарегистрирован: Вт янв 20, 2009 13:44
Сообщения: 343
"TIME" это и так двойное целое в мс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 12:29 
Не в сети
Начинающий писатель

Зарегистрирован: Пн окт 10, 2011 10:15
Сообщения: 72
Скорее всего надо будет писать FC, которое читает переменную TIME по байтам, и потом переводит ее в формат REAL. Ещё есть набор функцйи в стандартной библиотеке, может там что нибудь есть. А вообще описание структуры этой перменной есть в Help Step7.
Если вам лень искать то вот:
The Date_And_Time data type is stored in BCD format:



Bytes Content
Range

номер байта, предназначение, диапозон.
0 Year
1990 to 2089

1 Month
01 to 12

2 Day
1 to 31

3 Hour
0 to 23

4 Minute
0 to 59

5 Second
0 to 59

6 2 MSD (most significant decade) of ms
00 to 99

7 (4 MSB) LSD (least significant decade) of ms
0 to 9

7 (4 LSB) Weekday
1 to 7 (1 = Sunday)

PS Диапозон 0 байта смущает, думаю там на самом деле 0 до 99


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 12:58 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
mikhail_g, зачем Вы сбиваете человека с толка описанием DATE_TIME формата? Речь идет про TIME.

TIME - это время, задаваемое в миллисекундах. Двойное целое, то есть DINT. Диапазон величины от 0 до (2^31) - 1.

Преобразование TIME -> INT (сек)

L varTIME //тип TIME, он же DINT
L L#1000
/D
T varINT //тип INT, целое количество секунд

Преобразование TIME -> REAL (сек)

L varTIME
DTR //преобразовать в REAL
L 1000.0
/R
T varREAL //тип REAL, секунды с дробной частью


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 13:01 
Не в сети

Зарегистрирован: Вс дек 06, 2009 1:55
Сообщения: 7
Дело в том что у меня TIME
предыдущий пост благодарю за внимание))
в формате T#hh:mm:ss.sss
если это двойное целое в миллисекундах
то мне стало быть нужно умножать его на 1000.0
предварительно конвертировав в Real ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 13:04 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
werg писал(а):
в формате T#hh:mm:ss.sss


Это - строго представление времени, которое Вам показывает Step7.

werg писал(а):
если это двойное целое в миллисекундах
то мне стало быть нужно умножать его на 1000.0 ?


Делить. Я привел примеры чуть выше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 13:12 
Не в сети

Зарегистрирован: Вс дек 06, 2009 1:55
Сообщения: 7
да конечно делить.. что это я
благодарю, ВАС =)
тема закрыта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 19:50 
Не в сети

Зарегистрирован: Вс дек 06, 2009 1:55
Сообщения: 7
Вот еще вопросик
в библиотеке нашел функции
вычтание DT-DT выдает в TIME
вычитание DT-TIME так же выдает в TIME
а вот TIME-TIME не нашел
а очень нужно
может есть готовая функция тайм - тайм?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 21:11 
Не в сети
Известный Писатель

Зарегистрирован: Ср янв 13, 2010 18:55
Сообщения: 251
werg писал(а):
может есть готовая функция тайм - тайм?

TIME, как и DINT, занимает 2 слова, поэтому можно использовать SUB_DI и контролировать переполнение вручную. Правда, придется не задавать символы для адресов, ну или снять галочку "Type check of addresses" в опциях

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 18, 2011 3:55 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
werg писал(а):
Вот еще вопросик

может есть готовая функция тайм - тайм?


L varTime1
L varTime2
-D
T varTimeRes


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 22, 2014 17:22 
Не в сети

Зарегистрирован: Пт авг 22, 2014 17:17
Сообщения: 1
Откуда: Ukraine
akcount писал(а):
mikhail_g, зачем Вы сбиваете человека с толка описанием DATE_TIME формата? Речь идет про TIME.

TIME - это время, задаваемое в миллисекундах. Двойное целое, то есть DINT. Диапазон величины от 0 до (2^31) - 1.

Преобразование TIME -> INT (сек)

L varTIME //тип TIME, он же DINT
L L#1000
/D
T varINT //тип INT, целое количество секунд

Преобразование TIME -> REAL (сек)

L varTIME
DTR //преобразовать в REAL
L 1000.0
/R
T varREAL //тип REAL, секунды с дробной частью


Спасибо. Задача была обратная - из REAL -> TIME. Но Ваш совет помог)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group