1

Тема: Canny5MD2

Здравствуйте.
Как и многие когда-то, я тоже занялся освоением продукцией CANNY. Интересно, но пока не понятно.
Появилось первое задание - сделать управление мотором люка. Для начала использую обычную кнопку с двумя не фиксируемыми положениями. Необходимо с одного положения кнопки запускать люк на открытие, с возможностью повторными нажатиями делать промежуточные остановки и продолжение движения, со второго все тоже самое, только на закрытие. Плюс к этому, по превышению порогового значения тока останавливать движение (защита от защемления и крайние точки). в представленном Вами примере c5md2_example толком ничего не понял. Если возможно, дайте пожалуйста комментарии к определенным в примере группам. Что означают и для чего заданы значения в "Настройка каналов CANNY 5 NANO для согласования с Входами/выходами разъемов Х1 и Х2"?

Вложений в сообщении

Иконка вложения c5md2_example.zip 3.88 кб, скачивался 5 раз, последний раз 2018-01-08 

Re: Canny5MD2

Canny5MD2 является составным устройством на базе Canny5Nano http://www.canny.ru/c5nano .  "Настройка каналов CANNY 5 NANO для согласования с Входами/выходами разъемов Х1 и Х2" надо читать буквально. Согласно описанию  Canny5MD2 http://www.canny.ru/res/files/c5md2.pdf эти настройки позволяют Canny5Nano правильно считывать  и передавать сигналы на разъемах Х1 и Х2.

3

Re: Canny5MD2

Т.е. в моем случае мне достаточно согласовать Х2.3 с С8 и Х2.4 с С9 учитывая то, что от кнопка управляет по минусу. Я правильно понял?

Re: Canny5MD2

Не совсем так, в прикрепленном файле находится диаграмма согласующая входа/выхода C5MD2 c C5NANO.  Например если кнопки управления подключены к Х2.3 и Х2.4, то при нажатии на них (кнопки) вы получите логическую 1 на именованных линиях "Вход с X2.3  (GND)" и "Вход с X2.4  (GND)" соответственно. В свою очередь подав логическую 1 на именованную линию "упр-е каналом IN_A драйвера мотора 1" вы заставите подключенный к контактам 1 и 2 разема Х3 мотор вращаться в одну сторону, а подав логическую 1 на именованную линию "упр-е каналом IN_В драйвера мотора 1" вращаться в другую сторону. Грубо говоря если Вы соедините между собой именованные линии  "Вход с X2.3  (GND)" и "упр-е каналом IN_A драйвера мотора 1" , а также  "Вход с X2.4  (GND)" и  "упр-е каналом IN_В драйвера мотора 1", то при нажатии  одной кнопки двигатель будет вращаться допустим по часовой стрелке, а при нажатии на другую кнопку против часовой стрелке. В реалии вместо этих простых соединений должна быть диаграмма с вашим алгоритмом.

Re: Canny5MD2

Забыл прикрепить файл

Вложений в сообщении

Иконка вложения c5md2_driver.zip 2.9 кб, скачивался 5 раз, последний раз 2018-01-09 

6

Re: Canny5MD2

Спасибо за разъяснения. На основе примера попробовал создать свою диаграму.
Прокоментируйте пожалуйста Алгоритм такой - нажал на открытие, люк едет, повторно нажал - остановился, еще раз - продолжает движение дальше. То же самое и в обратную сторону. В крайних положениях останавливается по превышеню порогового значения тока.

Вложений в сообщении

Иконка вложения управление.cfd 6.32 кб, скачивался 4 раз, последний раз 2018-01-10 

7

Re: Canny5MD2

Разбираюсь дальше и понял, что ограничение по току работать не будет. И алгоритма нет в диаграме и датчика как такового тоже... Я правильно понял, что необходим внешний датчик и встроеной возможности измерения нет?

8

Re: Canny5MD2

С датчикам разобрался. Алгоритм контроля по току взял из примера. Вот что у меня получилось.

9

Re: Canny5MD2

файл не прикрепился. отправляю повторно.

Вложений в сообщении

Иконка вложения управление2.cfd 8.57 кб, скачивался 8 раз, последний раз 2018-01-10 

Re: Canny5MD2

1) При копировании/вставке линий к их названию добавилось (_1), поиском нашлось 3 таких линии, надо поправить. 2) Присвойте линии "заполнение ШИМ драйвера мотора 1 (в%)" константу, например 100 и вроде как, должно работать. Порекомендовал бы еще использовать линию "тепловая перегрузка" для сброса движения люка. Также не плохо было бы отключать движение люка по превышению максимально допустимого времени, на случай разряженного АКБ не способного выдать ток отсечки.  Удачи.

11

Re: Canny5MD2

Спасибо, буду пробовать.

Re: Canny5MD2

В качестве совета еще порекомендую не реагировать первые миллисекунд 300 на токовые нагрузки, для преодоления стартовых токов мотора.

13

Re: Canny5MD2

В продолжении темы - понадобилось добавить закрытие люка при выключении зажигания. Сигнал читаю в CAN.
00a| 01 00 00 00 00 00 00 00 зажигание выключено
00а| 04 00 00 00 00 00 00 00 зажигание включено
Алгоритм получается такой - отследить включено ли зажигание, если да, то ждать выключения, когда выключено сделать небольшую задержку исключающую срабатывание при простом переключении зажигания и после нее дать команду на закрытие. Завершить работу алгоритма.
Вроде с первой частью справился - шину прочитал, в зависимости от полученных данных получил две линии - включенного и выключенного зажигания. А вот дальше застрял. Никак не могу создать дальнейшую обработку. Подскажите пожалуйста направление по которому надо двигаться для решения моей задачи.

Вложений в сообщении

Иконка вложения ign_on_off.cfd 1.14 кб, скачивался 3 раз, последний раз 2018-01-15 

Re: Canny5MD2

niko пишет:

Подскажите пожалуйста направление по которому надо двигаться для решения моей задачи.

Мне видится, что задача заключается в отслеживании состояния люка во время включенного зажигания и если установлено что люк открыт, то по выключению зажигания имитировать сигнал нажатия кнопки закрытия люка. Хотя в реальной жизни автоматика закрытия люка как правило гораздо сложнее.

15

Re: Canny5MD2

В конструкции привода люка концевых датчиков не предусмотрено. Отследить положение люка можно только по датчикам холла или по току запустив его на закрытие. Самый простой вариант второй - если люк открыт, то он поедет на закрытие, если закрыт то тут же отключится по превышению тока. Начало - получение сигнала из шины, у меня есть. Я получаю две цепи ign_on и ign_off. Застрял я как раз на том, что бы по появлению 1 в первой цепи мне запустить цикл, а при переключении 1 на второй цепи дать сигнал на закрытие и тут же завершить цикл. Далее я уже все это привяжу к тому, что уже есть и люк закроется.

Re: Canny5MD2

niko пишет:

... две цепи ign_on и ign_off. Застрял я как раз на том, что бы по появлению 1 в первой цепи мне запустить цикл, а при переключении 1 на второй цепи дать сигнал на закрытие и тут же завершить цикл. Далее я уже все это привяжу к тому, что уже есть и люк закроется.

Если я правильно понял проблему:

Вложений в сообщении

onoff.png, 12.88 кб, 799 x 151
onoff.png 12.88 кб, скачивался 2 раз, последний раз 2018-01-16 

17

Re: Canny5MD2

Решил немного изменить автоматическое закрытие. Все же кажется более правильным закрывать люк при постановке на охрану. Итог приложен. Собрал на столе. Работать не хочет. Начал выяснять проблему и оказалось что запустить всю схему не дает "тепловая перегрузка". При отключении этого режима начинает мешать полноценной работе "спящий режим"  Разбудить можно только многочисленными нажатиями на движение. После этого схема начинает работать. Пока на столе. CAN и останов по току буду пробовать уже на машине. После того, как получится исправить то, что не работает на столе.
В симуляторе все работает нормально. Прокомментируйте пожалуйста где я ошибся.

Вложений в сообщении

Иконка вложения управление люком.cfd 12.74 кб, скачивался 4 раз, последний раз 2018-01-18 

Re: Canny5MD2

niko пишет:

...Прокомментируйте пожалуйста...

Тепловая перегрузка сделана некорректно. В оригинальном программном драйвере (диаграмме) тепловая перегрузка определяется по инвертированному входному сигналу на канале №6. Используйте вместо блока №3 "Буфер" блок "Логическое НЕ".
Для того чтобы разбудить контроллер с помощью кнопок управления (каналы №8 и №9) нужно, как в оригинальном драйвере включить на них активный режим/режим счетчика, но тогда нужно добавить защиту от дребезга на этих каналах.

Re: Canny5MD2

niko пишет:

...Прокомментируйте пожалуйста...

Также использовать для управления кнопками Триггер Т (блоки №№4 и 10) в данном случае не совсем верно, т.к. автоматическое (аварийное) отключение управления каналом драйвера мотора не изменит состояние выхода Триггера Т. Повторная подача команды от кнопки после автоматического отключения канала драйвера мотора сейчас требует  ручного приведения Триггера Т в исходное состояние. Лучше использовать другой тип триггера.

20

Re: Canny5MD2

Но если после короткого нажатия кнопки состояние выхода триггера будет меняться обратно на исходное, то я получаю движение люка только при нажатой кнопке. Мне же необходимо короткое нажатие кнопки что бы запустить привод люка в автоматическое движение и возможность повторным коротким нажатием остановить привод.

21

Re: Canny5MD2

По тепловой перегрузке и режиму сна поправил по вашему решению и все заработало нормально.
Спасибо.

Re: Canny5MD2

niko пишет:

Но если после короткого нажатия кнопки состояние выхода триггера будет меняться обратно на исходное, то я получаю движение люка только при нажатой кнопке. Мне же необходимо короткое нажатие кнопки что бы запустить привод люка в автоматическое движение и возможность повторным коротким нажатием остановить привод.

После Триггера Т стоит детектор фронта (переднего и заднего), а далее Триггер RS который отрабатывает сам алгоритм. Но при отработке аварийной остановки Триггер Т не обнулится. Чтобы повторно активировать движение люка в ту же сторону, придется сначала в холостую нажать кнопку (чтобы обнулить триггер), а потом уже нажимать для управления.
Во вложении вариант решения этой проблемы.

Вложений в сообщении

Иконка вложения кнопка.cfd 1.07 кб, скачивался 2 раз, последний раз 2018-01-18