Siemens AG
Список форумов SIEMENS, Россия. IA&DT
   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Реализовать паузу в таймере.

 
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение
Предыдущая тема :: Следующая тема  
Автор Сообщение
LewAleks
Начинающий писатель


Зарегистрирован: 23.07.2010
Сообщения: 62

Сообщение Добавлено: Пт Май 06, 2011 5:08    Заголовок сообщения: Реализовать паузу в таймере. Ответить с цитатой

Как можно реализовать такое чтобы при возникновении определенного события(i 0.1) текущее значение(время) таймера записывалось куда-нибудь(например mw 6), таймер останавливался и затем при изменении i 0.1 это значение снова загружалось в таймер и он продолжал работать?
Попробовал реализовать это сам но с наскоку не получилось. Может быть есть уже какое-нибудь готовое решение, а я здесь велосипед изобретаю?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
new_user
Начинающий писатель


Зарегистрирован: 18.06.2007
Сообщения: 97
Откуда: Украина, ПАО "МК "Азовсталь"

Сообщение Добавлено: Пт Май 06, 2011 7:35    Заголовок сообщения: Ответить с цитатой

Посмотрите функцию FC80 "Software Timer On Delay - Retentive" - должна вам подойти (Libraries->Standard Library->TI-S7 Converting Blocks-> FC80 "TONR TIMERS").

Цитата:

The TONR function accumulates time until the current value of elapsed time (ET) equals or exceeds the preset value (PV). Since it uses the execution time of the last cycle of the OB in which it runs to accumulate time, this function is intended to be used only in the OBs that have a repetitive nature, such as OB1 and the cyclic OBs.


А еще можно самому попробовать написать что-то похожее... ;)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Худанов Егор
Новый писатель


Зарегистрирован: 25.06.2010
Сообщения: 42

Сообщение Добавлено: Пт Май 06, 2011 8:36    Заголовок сообщения: Ответить с цитатой

Перед остановом таймера, можно считать оставшееся время счета в формате S5#Time
Код:
A i 0.0
jcn l_1
L T1
T mw 6
R T1
l_1: nop 0


Далее перед инициализацией таймера еще раз передаете ему это время, например

A i 0.1
L mw6
SP T1

Как-то так
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
new_user
Начинающий писатель


Зарегистрирован: 18.06.2007
Сообщения: 97
Откуда: Украина, ПАО "МК "Азовсталь"

Сообщение Добавлено: Пт Май 06, 2011 12:24    Заголовок сообщения: Ответить с цитатой

Можно использовать для решения этой задачи время предыдущего цикла ОВ1. Например, у меня такое работает для подсчета времени работы дозатора за смену:

В ОВ1:

Код:

      L     #OB1_PREV_CYCLE
      T     "PLC_to_PC".OB1_prev_DINT //время цикла ОВ1 в мс типа DINT

//вычисляем время работы дозатора
      A     "DSC1_run" //дозатор в работе
      A     "PC_to_PLC".Shift_report_start //признак начала новой смены
      A(   
      L     "DSC1_to_PC".Belt_Load
      L     "consts".DSC_belt_load_min //нагрузка на ленту больше min
      >=R   
      )     
      JNB   m001
      L     "PLC_to_PC".OB1_prev_DINT
      L     "DSC1_to_PC".DSC_time_work_DINT
      +D   
      T     "DSC1_to_PC".DSC_time_work_DINT //время работы дозатора в мс
m001: NOP   0

//переводим время работы дозатора из мс в минуты
      L     "DSC1_to_PC".DSC_time_work_DINT
      DTR   
      L     6.000000e+004
      /R   
      RND   
      T     "DSC1_to_PC".DSC_sh_time_work_val //время работы дозатора в минутах за смену
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение Часовой пояс: GMT + 3
Страница 1 из 1

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


Powered by phpBB 2.0.11 © 2001, 2002 phpBB Group