здравствуйте
делаю счётчик рабочего времени
у меня есть две временные метки #NEW_TIME и #NEW_TIME2
мне нужно получить разность между ними. использую IEC функцию FC34
A I 0.1
CALL "SB_DT_DT"
DT1 :=#NEW_TIME
DT2 :=#NEW_TIME2
RET_VAL:=#TIME_RAB
в #NEW_TIME записываю текущее время при нажатии на кнопку. Далее значение помещаю в DB. значение статичное.
в #NEW_TIME2 ни чего не кладу. после вычитания получается огромное число (крайнее значение): 2147483647
пробовал в #NEW_TIME2 записывать нули. результат тот же.
мне нужно преобразовать данные DATE_AND_TIME в TIME. поэтому я вычитаю из текущего времени нулевое значение. вариант может не слишком красивый, но я не знаю как сделать проще.
помогите, пожалуйста
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
работа функции FC34
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 20 янв 2017, 11:48
- Имя: Каравкин Павел Николаевич
- Страна: Россия
- город/регион: Рязань
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 14 раз
- Поблагодарили: 59 раз
работа функции FC34
А зачем DATE_AND_TIME в TIME преобразовывать? TIME - это промежуток времени, DATE_AND_TIME - это конкретное значение даты-времени. Даже не представляю, как их между собой "преобразовать" можно. Вышеописанный способ с "нулями в DT2" - точно не прокатит, минимальное значение DATE_AND_TIME - DT#1990-1-1-0:0:0.0. Сама по себе, эта функция SB_DT_DT - возвращает значение промежутка времени между двумя значениями даты/времени, причём этот промежуток не должен быть в пределах от T#-24D_20H_31M_23S_648MS до
T#24D_20H_31M_23S_647MS.
Выбранный Вами способ решения задачи - явно требует коррекции.
Кстати, использование вышеприведенной программной конструкции - не корректно, CALL не зависит от РЛО, нужно использовать условные переходы:
A i0.1
jcn m01
CALL ...
m0.1: ...
T#24D_20H_31M_23S_647MS.
Выбранный Вами способ решения задачи - явно требует коррекции.
Кстати, использование вышеприведенной программной конструкции - не корректно, CALL не зависит от РЛО, нужно использовать условные переходы:
A i0.1
jcn m01
CALL ...
m0.1: ...