SAM себе PLC
Четверг, 10.07.2025, 08:06
Приветствую Вас Гость | RSS
 
Главная Злобные таймеры!! - ФорумРегистрацияВход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Злобные таймеры!!
vvanaДата: Среда, 29.06.2011, 22:22 | Сообщение # 1
Рядовой
Группа: Друзья
Сообщений: 7
Статус: Offline
Друзья,

нужно проследить сколько времени сигнал находится во включенном состоянии.
все таймеры мотают время в обратном направлении т.е. с 20 сек до нуля.
Мне же нужно наоборот - чтобы мотало с 0 и в сторону увеличения.
Есть решение у этой задачки? smile
В данный момент сделал через счетчики, но это не то.


Во всей вселенной пахнет нефтью
 
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сек. маловато будет
king


Во всей вселенной пахнет нефтью
 
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.
 
  • Страница 1 из 1
  • 1
Поиск:

Top.Mail.Ru Copyright "SAM себе PLC" © 2025
Сайт создан в системе uCoz