Помогите посчитать 23 импульса в секунду
Промышленные Логические Контроллеры SIMATIC S7-300/-400, SIMATIC S7-1500, C7, WinAC, S5, станции распределенной периферии ET 200
Модераторы: gulenok_andrey, Кухаренко Сергей, pavel_puchkov
Добрый день!
Имеется мигающий бит (в производстве это будет дискретный вход I3.3 на контроллере S7-1511) порядка 23 раз в секунду.
По характеристикам дискретный вход воспринимает частоту до 1кГц, нас вполне устраивает.
Но проблема посчитать эти импульсы в программе. Видимо из-за цикличности программы вместо 23 раз в секунду получается программе посчитать около 20 импульсов.
Чтобы просиммулировать, в качестве мигающего бита был написан нетворк, в котором участвуют два таймера (один за ноль: T#22ms, а другой за единицу: T#22ms)


Программа была написана в OB30 и в свойствах выставил параметр Cyclic time: 500

Подскажите как посчитать более 20 импульсов в секунду?
Спасибо.
Имеется мигающий бит (в производстве это будет дискретный вход I3.3 на контроллере S7-1511) порядка 23 раз в секунду.
По характеристикам дискретный вход воспринимает частоту до 1кГц, нас вполне устраивает.
Но проблема посчитать эти импульсы в программе. Видимо из-за цикличности программы вместо 23 раз в секунду получается программе посчитать около 20 импульсов.

Чтобы просиммулировать, в качестве мигающего бита был написан нетворк, в котором участвуют два таймера (один за ноль: T#22ms, а другой за единицу: T#22ms)


Программа была написана в OB30 и в свойствах выставил параметр Cyclic time: 500

Подскажите как посчитать более 20 импульсов в секунду?
Спасибо.
А вы количество импульсов, период, частоту не путаете в одну кучу?
22мс+23мс = период 50 мс, Это и будет 20 импульсов в с секунду? То есть частота 50 Гц?
Что тогда не так?
Когда перейдете к реальному входу, учтите, что обращение пойдет к таблице, а не реальному входу, и ее надо как то обновить со скоростью в 0,5 мс. Сама по себе она обновляется с указанной в настройках частотой.
22мс+23мс = период 50 мс, Это и будет 20 импульсов в с секунду? То есть частота 50 Гц?
Что тогда не так?
Когда перейдете к реальному входу, учтите, что обращение пойдет к таблице, а не реальному входу, и ее надо как то обновить со скоростью в 0,5 мс. Сама по себе она обновляется с указанной в настройках частотой.
Читайте внимательно чтобы не быть глупым.POV писал(а): ↑02 мар 2020, 13:08А вы количество импульсов, период, частоту не путаете в одну кучу?
22мс+23мс = период 50 мс, Это и будет 20 импульсов в с секунду? То есть частота 50 Гц?
Что тогда не так?
Когда перейдете к реальному входу, учтите, что обращение пойдет к таблице, а не реальному входу, и ее надо как то обновить со скоростью в 0,5 мс. Сама по себе она обновляется с указанной в настройках частотой.
Я же написал, что мне нужно 23раза в секунду, значит 23Гц. Для этого я и сделал, чтобы импульс был раз в 22ms.
В минуту должно придти 1364 импульса, а приходит 1200. Следовательно часть импульсов программа не успевает считывать. Поэтому и создал данную тему, чтобы разобраться и сделать так, чтобы программа успевала обрабатывать все импульсы.
POV обвинил меня, что я напутал все в кучу, хотя сам не разобрался и написал про какие то 50Гц
Вы тоже втираете какую-то теорему. Это никак не относится к делу. Умничаете только, по факту ничего полезного не говорите.
Попробуйте в качестве симуляции взять другой сигнал с какого-нибудь генератора. Возможно у Вас все работает.
Подозреваю что Ваш генератор не лучшее решение т.к. при отработке времени первого таймера он подает команду второму, но второй запустится лишь во время опроса в цикле. Что прибавит к его времени часть времени цикла, то-же и со вторым таймером. В итоге получится что этот генератор и выдает около 20 импульсов в секунду вместо 23.
Подозреваю что Ваш генератор не лучшее решение т.к. при отработке времени первого таймера он подает команду второму, но второй запустится лишь во время опроса в цикле. Что прибавит к его времени часть времени цикла, то-же и со вторым таймером. В итоге получится что этот генератор и выдает около 20 импульсов в секунду вместо 23.
а что нельзя это в OB1 вызывать? он ведь намного чаще выполняется, чем OB30 намного меньше вероятность пропустить импульс