PDA

Просмотр полной версии : Снова о быстрых выходах



Дмитрий_П
18.12.2017, 19:37
Коллеги, помогите человеку, который не впервые держит ПЛК в руках, но до сих пор не работал с быстрыми входами и выходами. Итак, имеется новый ПЛК110. Требуется простейшая иллюстрация работы его быстрых выходов: при подаче сигнала на вход, неважно быстрый или нет, на выходе должны появляться прямоугольные импульсы с частотой в 1 килогерц. Пока вход запитан, импульсы должны генерироваться. С теорией вроде разобрался, как конфигурировать контроллер понял, но что писать в подпрограмме и как правильно её вызывать, пока до конца не улавливаю. Потому и прошу простой наглядный пример, лучше всего в виде проекта на СFC, он понятнее. Кстати, читал, что такой генератор можно реализовать в режиме ШИМ-контроллера, но по нему информации почему-то крайне мало. Рабочие параметры, как я понял, задаются в оснастке "конфигурация ПЛК" но как потом этими выходами управлять непонятно. Тоже не откажусь от наглядного примера.
Спасибо!

vapik_one
18.12.2017, 22:00
Посмотрите пример по работе с высокочастотным таймером на сайте Овен.
http://kipshop.ru/Primeri/Samples_plc1xx/Samples/17_Timer.Lib.zip

ШИМ проще всего реализовать на основе fast PWM:
http://4.bp.blogspot.com/-JBO8G5TS6Rg/VWLTxZbS4UI/AAAAAAAAACg/b13SLEimJPA/s1600/Untitled-2.png

Пример:
https://drive.google.com/open?id=12WGf3sHJ6B59BIKO3zdHlEnEwrPT83o7

Kirill
19.12.2017, 12:39
Еще один пример работы с быстрыми входами и прерываниями здесь: http://edu.owen.ru/2017/12/01/plc110_steps10/
Быть может, окажется полезным полистать описание конфигурации ПЛК, вот оно: http://www.kipshop.ru/CoDeSys/steps/plc_configuration_owen_2.0.zip

Дмитрий_П
19.12.2017, 13:55
Ролик про подключение энкодера знаком мне хорошо, но в нём упор сделан именно на работу со входами, а не с выходами. А про работу быстрых выходов в режиме ШИМ вообще информации крайне мало. Как задать параметры импульсов в конфигураторе -- ясно, но как потом этим ШИМ управлять из программы -- вот вопрос. Потому я и смиренно прошу наглядный пример их конфигурирования :) А вот за документ спасибо, до сих пор он мне на глаза не попадался. Пойду изучать.

Sulfur
19.12.2017, 14:17
Есть мощнейший инструмент для работы с быстрыми входа\выходами ПЛК110[М2] - Hardella IDE (https://hardella.com/). В нем вы сможете написать собственные алгоритмы работы быстрых входов\выходов, и потом импортировать их в проект КоДеСис.
Вот ТУТ (http://www.owen.ru/forum/showthread.php?t=23013&highlight=Hardella) тема самого разработчика этой среды

vapik_one
19.12.2017, 21:18
Автор.
В "Примеры программ и полезности", посмотрите "Пример работы с "быстрыми" входами и выходами из прерывания высокочастотного таймера (Только для ПЛК110) (1,4 Мб)".
Вашу задачу проще всего реализовать на счетчике методом Fast PWM.

У меня есть пример, но я почему-то не могу выложить ни одну ссылку, ни одно вложение. Как будто забанен.
Напишите мне в ЛС свою почту, я хоть так скину.

Владимир Ситников
19.12.2017, 22:07
Требуется простейшая иллюстрация работы его быстрых выходов: при подаче сигнала на вход, неважно быстрый или нет, на выходе должны появляться прямоугольные импульсы с частотой в 1 килогерц. Пока вход запитан, импульсы должны генерироваться. С теорией вроде разобрался, как конфигурировать контроллер понял, но что писать в подпрограмме и как правильно её вызывать, пока до конца не улавливаю.
Иллюстрация это одно, а реальная программа -- другое.
Вам в реальной программе тоже не будет играть роли сколько импульсов сгенерируется, когда они начнутся и когда закончатся?

Дмитрий_П
19.12.2017, 22:57
Владимир, конечно, в реальной программе всё это будет важно и нужно. Но именно поэтому я и говорю об иллюстрации, а не о реальной программе. Мне нужен не просто килогерц импульсов, а понимание, как эти импульсы генерируются. А понимание проще всего найти в готовом образце, над которым можно посидеть пару часов и изучить, что и как в нём работает. Ведь в самом деле, даже на этом форуме информации о быстрых выходах очень мало и она весьма противоречива.
А в перспективе да, я планирую управлять с ПЛК шаговым двигателем. Частоты небольшие, как раз около килогерца. И мне нужно понять, может ПЛК дать мне этот килогерц, либо я тупо спаяю генератор на 555-м таймере и повешу его рядом с контроллером :)

Владимир Ситников
19.12.2017, 23:56
Владимир, конечно, в реальной программе всё это будет важно и нужно...Мне нужен не просто килогерц импульсов, а понимание, как эти импульсы генерируются.Всё правильно говорите, но "сгенерировать ШИМ через конфигуратор" и "управлять ШД" это несколько разные задачи и, к сожалению, на ПЛК110 они решаются по-разному.

Упоминаемый 1 кГц это немного, при дроблении шага потребуется побольше.

И тут есть 2 варианта:

1) Использовать "прерывания" и управлять быстрыми выходами в режиме direct control. У профессионалов на закрытом треке получается. У простых смертных же подобное приводит к тому, что работа с прерываниями влияет на основной цикл ПЛК, на сетевой обмен и т.п.

2) Создавать программу управления быстрыми входами-выходами в Hardella (http://www.owen.ru/forum/showthread.php?t=23013). Вообще говоря, там один из демонстрационных проектов это и есть управление ШД (https://hardella.com/docs/pru/examples/step-motor/). Плюсами программ на Hardella является то, что это по сути и есть программа для процессора быстрых входов-выходов. Например, можно сделать так, чтобы "ШД переставал работать как только на быстром входе появится сигнал" и т.п. Полученные генераторы тестировали на серво-приводах, ну и просто на осциллографе -- быстрые выходы дрыгаются, и заявленые производителем 100кГц отрабатывают.

Если говорить про ШД, то наверняка понадобится "разгон на старте-торможении" (не каждый ШД сможет сходу дёрнуть на нужную вам скорость) и/или "старт с ненулевой скорости" (чтобы перескочить резонанс на 200Гц). Всё это можно сделать в Hardella (по факту, уже сделано), но я больше к тому, что с другими вариантами сделать такое гораздо сложнее.

Разумеется, есть минусы:
Это отдельный софт (т.е. программа для быстрых выходов пишется не в КДС, а в отдельной среде). Но, по сути, "программа управления быстрыми IO" пишется один раз и потом используется из КДС как библиотека.
Управление быстрыми IO пишется на ST (хотя, кому-то это и плюс)
ОВЕН занимает средне-нейтральную позицию к такому варианту для управления быстрыми IO. Не накладывают запрета, но и не продвигают подход. По внешним признакам, вариант "одобренный ОВЕН'ом" это №1 (но его тяжело использовать) либо №3 (использовать практически невозможно)


3) Есть ещё вариант от ОВЕН (http://www.owen.ru/forum/showthread.php?t=22169), но про него ничего толком не слышно. В той технологии разобраться можно только если очень-очень хотеть.

Разумеется, можете скептически относиться к моим словам (как-никак, я автор Hardella IDE, и по-любому настроен на продвижение), но сейчас Hardella это единственный человекопонятный способ управления быстрыми IO в ПЛК110М02. Тут послушайте Sulfur -- он не просто так пишет, а с опытом пуско-наладки этого самого быстрого IO (http://www.owen.ru/forum/showthread.php?t=23600&page=14&p=234390&viewfull=1#post234390).

Спорягин Кирилл
22.12.2017, 10:13
Вот еще реальный проект, в котором удалось на старом ПЛК110 разогнать до 2,5 КГц быстрые выходы: http://www.owen.ru/forum/showthread.php?t=24153&page=2&p=213557&viewfull=1#post213557
Может быть пригодится.

IVM
22.12.2017, 12:01
Вот еще реальный проект, в котором удалось на старом ПЛК110 разогнать до 2,5 КГц быстрые выходы: http://www.owen.ru/forum/showthread.php?t=24153&page=2&p=213557&viewfull=1#post213557
Может быть пригодится.

Hardella надо использовать. Там основные вопросы управления ШД решены.

Дмитрий_П
24.12.2017, 00:47
Большое спасибо всем откликнувшимся! К сожалению, заветный килогерц я из контроллера так и не добыл и в итоге соорудил из дюжины деталей генератор, который можно включать через релейный выход контроллера по таймеру или по подсчёту импульсов. Эта часть задачи решена, пусть не красиво, но надёжно :) Но это уже совсем другая история и тему быстрого счётчика я подниму в отдельной ветке, чтобы не офтопить здесь.

enyuzer
07.02.2018, 13:24
Добрый день.
В комментариях к решению задачи предполагал увидеть рекомендации или ссылки по применению готового модуля PWM, т.к. есть в планах его использовать. Какие ограничения в его применении не позволяют его рекомендовать?

Доцент
08.02.2018, 18:11
Добрый день. Раз эта тема по выходам то тут и спрошу. Помогите разобраться. Столкнулся с засадой.
Использую прерывания для обработки сигналов с быстрых входов. Подпрограмма обработки корректно работает. Все как бы работает. Но! Выхода ПЛК при этом не управляются программно. Т.е я не могу изменять их состояния из программы. В отладчике состояния меняются а в реале нет. Если отключаю прерывания, все работает...
Если остановить программу - стоп из CoDeSys. То же все нормально. Мышкой, и записью значений, состояния выходов спокойно изменяются. Релюшки щелкают. Что то я делаю не так. А что, не пойму...
Все сделаю как в примере http://edu.owen.ru/2017/12/01/plc110_steps10/, Да собственно других способов работы с прерываниями я и не знаю.
Пример работает. Но выхода ПЛК не доступны для управления. Выхода обычные, не быстрые. Быстрых то у меня и нет. ПЛК 110 -30L реле . Пробовал на ПЛК 110-32М то же самое. Прошивал, нет результата... Может таймер прерывания блокировать управление выходами в ПЛК с выходами на реле?

Филоненко Владислав
08.02.2018, 21:22
Fast discrete outputs вставили?

Доцент
09.02.2018, 05:23
Да, вставлял. И возвращал конфигурацию к стандартной. Все одно. Как только таймер прерывания активирую, выхода перестают управляться. ПЛК старые не М2. Сегодня попробую то же самое проделать на М2 с релейными выходами.

Филоненко Владислав
09.02.2018, 08:43
Проектик бы выложили

Доцент
09.02.2018, 11:00
Владислав, спасибо за реагирование. На новым ПЛК 110-32P (М2) все работает. Проект - стандартный пример с диска в "Примерах и полезностях" взял "hi_timer" Называется. Ничего не менял, ну кроме целевой платформы. и должных настроек. Внес строчку IF x THEN DO_8:=TRUE;ELSE DO_8:=FALSE; end_IF;
Хотел по Х релухой щелкать. Увеличивал время прерывания до безобразия, не помогает.
Как только инициализирую прерывания, выхода перестают управляться. Хотя в CoDeSys на вкладке "Конфигурация ПЛК" все работает. Т.е состояния входов как бы меняются. А в реале нет. Может их ( прерывания) как то программно в нужный мне момент запрещать...а как?

IVM
09.02.2018, 12:41
IF x THEN DO_8:=TRUE;ELSE DO_8:=FALSE; end_IF;

А что такое X ?

Доцент
09.02.2018, 13:04
:) Виноват не то скопировал в пост.

IF x THEN
DO_8:=1;
END_IF;

IF x=FALSE THEN
DO_8:=0;
END_IF;

Ремлю фрагмент инициализации таймера, переваливаю программу - выхода управляются...


Меняя X хотел реле управлять.
Да не имеет назначения этот фрагмент.
Можно его вообще исключить.

PS- Поменял прошивку на старую V.2.10.9 и все заработало. Всем спасибо.