Злобные таймеры!!
|
|
vvana | Дата: Среда, 29.06.2011, 22:22 | Сообщение # 1 |
 Рядовой
Группа: Друзья
Сообщений: 7
Статус: Offline
| Друзья,
нужно проследить сколько времени сигнал находится во включенном состоянии. все таймеры мотают время в обратном направлении т.е. с 20 сек до нуля. Мне же нужно наоборот - чтобы мотало с 0 и в сторону увеличения. Есть решение у этой задачки? В данный момент сделал через счетчики, но это не то.
Во всей вселенной пахнет нефтью
|
|
| |
SAM_Serg | Дата: Суббота, 02.07.2011, 18:42 | Сообщение # 2 |
 Полковник
Группа: Администраторы
Сообщений: 41
Статус: Offline
| возможно, тебе поможет SFB4 TON из системной библиотеки. Она использует DB в качестве рабочей памяти, из этой DB-шки можно вытащить текущее состояние таймера.. но там все в формате TIME, не очень удобно обрабатывыать. Я бы сделал через счетчик и циклическое прерывание..
samsebeplc.ru
|
|
| |
vvana | Дата: Понедельник, 04.07.2011, 18:16 | Сообщение # 3 |
 Рядовой
Группа: Друзья
Сообщений: 7
Статус: Offline
| надо попробовать. плюс ко всему у счетчика лимит 999 т.е. при точности 0,1с. ---> макс. время=100сек. маловато будет
Во всей вселенной пахнет нефтью
|
|
| |
andrew | Дата: Пятница, 27.07.2012, 20:30 | Сообщение # 4 |
 Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Таймер прост как три копейки. Чтобы таймер считал вперёт, а не обратно, за основу берётся блинкер с интервалом в 1сек. Пример блинкера (блинкер с английского - моргать. В нашем случае моргание происходит раз в секунду.):
AN M 700.0 L S5T#1S SE T 5 AN T 5 L S5T#1S SE T 8 A T 8 = M 700.0
Далее пишется код такого содержания:
A T 8 FP M 700.1 //тут ловим состояние блинкера "1", если еденица, то добавляем одну секунду ко времени и пишем в #_time JNB _003 L #_time L 1 +I T #_time _003: A T 8 FN M 700.2 //тут ловим состояние блинкера "0", если ноль, то добавляем одну секунду ко времени и пишем в #_time JNB _005 L #_time L 1 +I T #_time
_005: L #_time //начало расчёта времени L 60 MOD T #seconds //секунды делим с остатком на 60 и получаем секунды L #_time L 60 /I T #minutes //секунды делим на 60 и получаем минуты L 60 /I T #hours //минуты делим на 60 и получаем часы
Ну и для того чтобы таймер можно было сбросить пишем:
A #reset FP M 700.3 JNB _007 L 0 T #_time _007: NOP 0
Вот таймер и готов. Считать будет пока незаполнится #_time, а это 65535.
|
|
| |