Большое спасибо всем откликнувшимся! К сожалению, заветный килогерц я из контроллера так и не добыл и в итоге соорудил из дюжины деталей генератор, который можно включать через релейный выход контроллера по таймеру или по подсчёту импульсов. Эта часть задачи решена, пусть не красиво, но надёжно Но это уже совсем другая история и тему быстрого счётчика я подниму в отдельной ветке, чтобы не офтопить здесь.
Добрый день.
В комментариях к решению задачи предполагал увидеть рекомендации или ссылки по применению готового модуля 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 и все заработало. Всем спасибо.
Последний раз редактировалось Доцент; 11.02.2018 в 11:35.