Показать сообщение отдельно
Старый 02.02.2010, 10:17   #5
ManMadeGod
Юнга
 
Аватара для ManMadeGod
 
Регистрация: Jul 2008
Сообщения: 9
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Косяк со счётчиком

Дело в том, что программа на контроллере работает циклами установленной вами длительности (в конкретном случае - 50 мс). Состояние входов проверяется один раз в начале цикла, и на протяжении всего цикла считается неизменным. Блок FALL не может срабатывать каждый цикл (блок срабатывает по переходу 0->1, то есть после перехода входного сигнала блока из лог.1 в лог.0 перед следующим срабатыванием должна снова появиться лог. единица на входе блока). Таким образом, максимальная измеренная частота будет 1/(2хВремя цикла), в вашем случае - 1/(2х0,05) = 10 Гц. Это раз.
Кроме того, по тем же причинам (обновление входных сигналов раз в цикл) если в момент начала цикла сигнал на дискретном входе равен, скажем, лог.1, в течение цикла этот сигнал совершает хоть тысячу переходов 1->0->1->0..., а в момент начала следующего цикла снова равен 1, контроллер это просто не зафиксирует. Поэтому для измерения частоты используются т.н. счетные дискретные входы, непрерывно следящие за изменениями сигнала на выходе. Таких входов на SMH2010 нет, для измерения частоты совместно с SMH2010 используется устройство FS (http://www.segnetics.com/main.aspx?Page=296). Кроме того, счетные входы есть на модуле расширения для контроллера Pixel MR120 (http://www.segnetics.com/main.aspx?Page=324) и модуле MC (http://www.segnetics.com/main.aspx?Page=364), применяемом совместно с SMH2g.
ManMadeGod вне форума   Ответить с цитированием