16 декабря 2011 г.

Счетчики и таймеры

В этой статье я опишу работу со счетчиками и таймерами в средах разработки Omron CX-One 4 и Delta Electronics ISPSoft 1.03, покажу различия в их реализации.


Счетчики
Omron CX-One

Эта среда разработки мне нравится больше всех (даже чем Siemens STEP 7. ИМХО, слишком наинтегрировали - много лишнего, если проект небольшой).
К счастью для всех (и к несчастью для оригинальности этой статьи), у Omron-а в справке очень подробно описываются практически все инструкции. Но моя цель - показать различия в реализации от разных производителей, так что я конспективно перенесу выдержки из справки.
Счетчики (и таймеры) у Omron делятся на два вида - считающие в BCD-формате и в десятичном. Способ применения одинаковый. Но у первых необходимо вносить данные, соответственно, в BCD. Это может оказаться полезным при работе с часами реального времени, т.к. именно в таком формате хранится текущая дата/время. Минусы при его использовании - максимальное значение в одном слове - 9999 и большее время на обработку инструкций.

Пример применения

Инициирование счетчика происходит путем его сброса (это связано с тем, что значение счетчика сохраняется при отключении питания (без батарейки некоторое время)). Считает он в обратную сторону, так что, если просмотреть значение регистра C0 (текущее значение, PresentValue, PV), то увидим 10, а после переустановки W0.00 - 9.
В данном примере я объединил два способа сброса. По первому (с использованием W0.01, но вместо него можно на вход сброса поставить и бит C0 (флаг окончания счета)), досчитав, счетчик будет выдавать импульс на С0 и самосбрасываться. В этом способе, необходимо до первого счета уже обнулить счетчик. По второму, с использованием W0.02, остальной программе достаточно подавать счет на W0.00, первый сброс будет самостоятельным.
Также существует реверсивный счетчик. Отличия от обычного:
  • Вход не один,а два: по одному текущее значение прибавляется (прямой счет), по второму убавляется (обратный счет)
  • При сбросе текущее значение счетчика становится равным 0
  • Флаг окончания счета устанавливается только в двух случаях: 
  1. При использовании входа обратного счета был получен 0
  2. При использовании входа прямого счета было получено установленное значение (Set Value, SV)
Delta Electronics ISPSoft

В данной среде разработки все инструкции делятся на 16- и 32-битные. Для 16-ти битных счетчиков отведены регистры C0..C199, для 32-х - C200..C254. 32-битные поддерживают реверсивность. Достигается путем установки битов M1200~1254 соответственно для счетчиков C200-C254Так же существуют высокоскоростные счетчики, счет которых может вестись со входов независимо от цикла сканирования (у Omron для этого есть аппаратные функции). Их адреса - с поддержкой обратного счета: С232..С242, C245..C254. С прямым счетом: C243, C244. Счетчики с прямым счетом считают в диапазоне от 0 до установленного значения (максимально 32767 или 2147483647). 16-битные прекратят свой счет после его достижения, 32-битные же продолжат. 32-битные с поддержкой обратного счета считают в диапазоне -2147483648..+2147483647. Флаг достижения счета будет включен только если текущее значение будет равно установленному. После переполнения продолжат с  -2147483648. Без поддержки от 0 до 2147483647. После переполнения продолжат с 0. В отличии от Omron, сброс при первом запуске не требуется. Сброс осуществляется путем применения инструкции RST - "сбросить бит" к имени счетчику. Сбрасывается флаг окончания счета и текущее значение становится 0.

Аналог кода на Omron

Это аналог кода Omron, который я привел на первой картинке.
Кстати, если в текущее значение (PV) 16-битного счетчика записать число, большее чем уставка (SV),то в следующий раз, когда будет инициирован счет, включится флаг окончания счета и текущее значение счетчика станет равным уставке.
Для более детального рассмотрения высокоскоростных (программных и системных) счетчиков предлагаю ознакомиться с 61-66 руководства (2).

Таймеры
Omron CX-One

Аналогично счетчикам, все таймеры разделяются на считающие в BCD- и BIN-формате. Дополнительно, таймеры разделяются по единицам измерения: 100 мс таймеры, 10 мс и 1мс. 32-битную модификацию имеют только 100-мс таймеры. Считают таймеры с уставки до нуля. Тип таймера определяется при запуске его определенной инструкцией.

Примеры применения

Таймеры запускаются подачей на них сигнала. После пропадания сигналов 0.00, 0.01 текущие значения T0, T1 (регистры) таймеров становятся равными уставке (даже если счет не закончен) и снимаются T0, T1 (биты) флаги окончания счета.
Также существует накопительный счетчик (100мс, 16-бит, BCD/BIN). Отличается тем, что считает от нуля до уставки, после снятия сигнала счета не сбрасывает своего текущего значения и после восстановления сигнала продолжит счет с того значения, на котором остановился. Сброс таймера осуществляется дополнительным входом сброса. С таким таймером нужно помнить это отличие, чтобы на автомате не забыть, что если подали сигнал сброса, то флаг окончания счета сбросится только в следующем цикле, при исполнении этой инструкции. О таких ситуациях я напишу отдельную статью.

Delta Electronics ISPSoft

Таймеры Delta Electronics отличаются от Omron в том, что их применение заранее определно номером используемого регистра. Все они считают от 0 до уставки и только в десятичном формате. 32-битные инструкции займут два регистра [T0,T1], [T2,T3]. 
  • Регистры для 100-мс таймеров стандартных: T0..T126, T128..183
  • Регистры для 100-мс таймеров накопительных: T250..T255
  • Если установлен бит M1028, то разрешение T64..T126 - 10 мс.
  • Регистры для 10-мс таймеров стандартных: T200..T239
  • Регистры для 10-мс таймеров накопительных: T240..T245
  • Если установлен бит M1028, то разрешение T200..T245 - 1 мс.
  • Регистр для 1-мс таймера стандартного: T127
  • Регистры для 1-мс таймера накопительных: T246..T249
В прерываниях и подпрограммах разрешается использовать только T184..T199.

Стандартный таймер

Накопительный счетчик

Аналог кода на Omron

В прерываниях и подпрограммах разрешается использовать только таймеры T184..T199.
У Delta существует обучающийся таймер, который представляет из себя инструкцию TTMR, записывающую в указанный регистр время выбранного бита в положении "включено". Всего в программе можно вызвать её 8 раз. А в прерывании или подпрограмме 1 раз.

Также есть инструкция специального таймера STMR (только 16 бит, для T0..T183), который предназначается для управления определенным образом четырьмя битами в соответствии с установленным временным интервалом.

Специальный таймер: циклограммы управления

Ссылки к статье
  1. Документация для контроллеров Omron
  2. Документация для контроллеров Delta Electronics

Комментариев нет:

Отправить комментарий