SIEMENS, DF&PD

Предыдущее посещение: Чт июл 07, 2016 18:37 Текущее время: Чт июл 07, 2016 18:37

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




 [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 10:42 
Не в сети
Известный Писатель

Зарегистрирован: Ср мар 04, 2009 14:44
Сообщения: 218
Откуда: Днепродзержинск
Добрый день!
Суть задачи: считать системное время с контроллера 313С-2DP, и если оно больше или равно уставке - установить маркер в 1. Пните, пожалуйста, в нужном направлении. Как считать системное время понятно, вот вопрос в сравнении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 10:51 
Не в сети
Писатель со стажем

Зарегистрирован: Вт фев 27, 2007 9:39
Сообщения: 567
Откуда: Tel-Aviv
Преобразовать в удобный для сравнения формат.
Например, так:
Код:
      L     %LB0
      BTI
      L     10
      +I
      ITD
      L     DINT#100
      MOD
      L     1990
      +I
      T     "DateTime_DB".PLC_Time.Year

      L     %LB1
      BTI
      T     "DateTime_DB".PLC_Time.Month

      L     %LB2
      BTI
      T     "DateTime_DB".PLC_Time.Day

      L     %LB3
      BTI
      T     "DateTime_DB".PLC_Time.Hour

      L     %LB4
      BTI
      T     "DateTime_DB".PLC_Time.Minute

      L     %LB5
      BTI
      T     "DateTime_DB".PLC_Time.Sec


LBxx - это данные в локальном стеке. Переменная типа Date_and_Time находится по адресу L0.0 и в предыдущей ветке читается с помощью SFC RD_SYS_T. Скриншот с ладдера я делать поленился.

После этого кода у вас есть отдельно год, месяц, день, час, минута, секунда и можете сравнивать с чем угодно.
В результате


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 10:58 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7512
Откуда: Украина
В стандартной библиотеке STEP7 есть группа блоков IEC Function Blocks, где есть всё необходимое для сравнения.
Например,
Цитата:
FC12 GE_DT

Description

The function FC12 compares the contents of two variables in the data type format DATE_AND_TIME to find out if one is greater or equal to the other and outputs the result of the comparison as a return value. The return value has the signal state “1" if the time at parameter DT1 is greater (more recent) than the time at parameter DT2 or if both times are the same. The function does not report any errors.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 11:32 
Не в сети
Известный Писатель

Зарегистрирован: Ср мар 04, 2009 14:44
Сообщения: 218
Откуда: Днепродзержинск
Eugene1974 писал(а):
В стандартной библиотеке STEP7 есть группа блоков IEC Function Blocks, где есть всё необходимое для сравнения.
Например,
Цитата:
FC12 GE_DT

Description

The function FC12 compares the contents of two variables in the data type format DATE_AND_TIME to find out if one is greater or equal to the other and outputs the result of the comparison as a return value. The return value has the signal state “1" if the time at parameter DT1 is greater (more recent) than the time at parameter DT2 or if both times are the same. The function does not report any errors.

Всем спасибо. То, что надо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 12:03 
Не в сети
Известный Писатель

Зарегистрирован: Ср мар 04, 2009 14:44
Сообщения: 218
Откуда: Днепродзержинск
opelat_evgen писал(а):
Eugene1974 писал(а):
В стандартной библиотеке STEP7 есть группа блоков IEC Function Blocks, где есть всё необходимое для сравнения.
Например,
Цитата:
FC12 GE_DT

Description

The function FC12 compares the contents of two variables in the data type format DATE_AND_TIME to find out if one is greater or equal to the other and outputs the result of the comparison as a return value. The return value has the signal state “1" if the time at parameter DT1 is greater (more recent) than the time at parameter DT2 or if both times are the same. The function does not report any errors.

Всем спасибо. То, что надо!

Вот токо когда для входа DT2 ставлю константу (DT#2015-07-04-10:35:00) чет ругается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 12:11 
Не в сети
Известный Писатель

Зарегистрирован: Ср мар 04, 2009 14:44
Сообщения: 218
Откуда: Днепродзержинск
Разобрался. Всем спасибо за внимание!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Чт май 28, 2015 12:17 
Не в сети
Писатель со стажем

Зарегистрирован: Вт фев 27, 2007 9:39
Сообщения: 567
Откуда: Tel-Aviv
opelat_evgen писал(а):
Разобрался. Всем спасибо за внимание!

И почему же ругалось?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сравнить дату и время
СообщениеДобавлено: Пт май 29, 2015 10:16 
Не в сети
Известный Писатель

Зарегистрирован: Ср мар 04, 2009 14:44
Сообщения: 218
Откуда: Днепродзержинск
Азанов Максим писал(а):
opelat_evgen писал(а):
Разобрался. Всем спасибо за внимание!

И почему же ругалось?

Нужно было создать костанту с помощью функции FC3 (D_TOD_DT)
CALL "D_TOD_DT" (
IN1 := D#2015-8-4,
IN2 := TOD#10:35:0.000,
RET_VAL := #Const_Time);


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

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


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

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


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

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