Hardella надо использовать. Там основные вопросы управления ШД решены.
Вид для печати
Большое спасибо всем откликнувшимся! К сожалению, заветный килогерц я из контроллера так и не добыл и в итоге соорудил из дюжины деталей генератор, который можно включать через релейный выход контроллера по таймеру или по подсчёту импульсов. Эта часть задачи решена, пусть не красиво, но надёжно :) Но это уже совсем другая история и тему быстрого счётчика я подниму в отдельной ветке, чтобы не офтопить здесь.
Добрый день.
В комментариях к решению задачи предполагал увидеть рекомендации или ссылки по применению готового модуля PWM, т.к. есть в планах его использовать. Какие ограничения в его применении не позволяют его рекомендовать?
Добрый день. Раз эта тема по выходам то тут и спрошу. Помогите разобраться. Столкнулся с засадой.
Использую прерывания для обработки сигналов с быстрых входов. Подпрограмма обработки корректно работает. Все как бы работает. Но! Выхода ПЛК при этом не управляются программно. Т.е я не могу изменять их состояния из программы. В отладчике состояния меняются а в реале нет. Если отключаю прерывания, все работает...
Если остановить программу - стоп из CoDeSys. То же все нормально. Мышкой, и записью значений, состояния выходов спокойно изменяются. Релюшки щелкают. Что то я делаю не так. А что, не пойму...
Все сделаю как в примере http://edu.owen.ru/2017/12/01/plc110_steps10/, Да собственно других способов работы с прерываниями я и не знаю.
Пример работает. Но выхода ПЛК не доступны для управления. Выхода обычные, не быстрые. Быстрых то у меня и нет. ПЛК 110 -30L реле . Пробовал на ПЛК 110-32М то же самое. Прошивал, нет результата... Может таймер прерывания блокировать управление выходами в ПЛК с выходами на реле?
Fast discrete outputs вставили?
Да, вставлял. И возвращал конфигурацию к стандартной. Все одно. Как только таймер прерывания активирую, выхода перестают управляться. ПЛК старые не М2. Сегодня попробую то же самое проделать на М2 с релейными выходами.
Проектик бы выложили
Владислав, спасибо за реагирование. На новым ПЛК 110-32P (М2) все работает. Проект - стандартный пример с диска в "Примерах и полезностях" взял "hi_timer" Называется. Ничего не менял, ну кроме целевой платформы. и должных настроек. Внес строчку IF x THEN DO_8:=TRUE;ELSE DO_8:=FALSE; end_IF;
Хотел по Х релухой щелкать. Увеличивал время прерывания до безобразия, не помогает.
Как только инициализирую прерывания, выхода перестают управляться. Хотя в CoDeSys на вкладке "Конфигурация ПЛК" все работает. Т.е состояния входов как бы меняются. А в реале нет. Может их ( прерывания) как то программно в нужный мне момент запрещать...а как?
IF x THEN DO_8:=TRUE;ELSE DO_8:=FALSE; end_IF;
А что такое X ?
:) Виноват не то скопировал в пост.
IF x THEN
DO_8:=1;
END_IF;
IF x=FALSE THEN
DO_8:=0;
END_IF;
Ремлю фрагмент инициализации таймера, переваливаю программу - выхода управляются...
Меняя X хотел реле управлять.
Да не имеет назначения этот фрагмент.
Можно его вообще исключить.
PS- Поменял прошивку на старую V.2.10.9 и все заработало. Всем спасибо.