1

Тема: CannyLab и CAN шаг за шагом (для начинающих)

Отнеситесь с пониманием к новичку, раньше ни с чем подобным дела не имел. Думаю будет полезно для таких, как я.
При самостоятельном освоении программы возникают простые вопросы, которые хочется понять, а не использовать готовые решения.
Необходимо отправить данные в шину CAN по отрицательной команде 8-го канала, данные должны передаваться пока на 8-м канале присутствует сигнал. Пусть шина будет 500 kbit/s. Идентификатор устройства (ID) 01A. Отправляем данные для 1, 2, 3 и 4 бата  11 21 3A  4B соответственно.  Диаграмму необходимо составить так, что бы её можно было дополнять  различными другими задачами:  для других входов/выходов, других ID, взаимосвязях и т.п.
Открыл программу.
1. Задал параметры/конфигурацию  шины с которой будет работать моя диаграмма.  Добавил  константу: «Выбрать из списка/Конфигурация CAN/CAN 500 kbit/s» ( шина 500 kbit/s) , задал адрес: «Выбрать из списка/Драйвер CAN/Установки CAN/Регистр установки конфигурации CAN»
2.По аналогии создал константу для 8-го канала: Стандартный отрицательный вход-Регистр конфигурации канала №8.
Я задал постоянные, которые не будут меняться в данной диаграмме. И не могу сообразить как сделать алгоритм для дальнейших действий: активный канал №8-ID:01A-11 21 3A 4B хх хх хх хх, так, чтобы это касалось конкретного канала, конкретного ID и конкретных данных.

2

Re: CannyLab и CAN шаг за шагом (для начинающих)

Для того, чтобы изначально строить более-менее универсальную диаграмму с возможностью дальнейшего расширения, необходимо сразу же определиться куда будем расширяться. Мне это не совсем ясно из вашего описания, однако попробую предположить:
Если я правильно понял, то расширение планируется в сторону отправки различных сообщений по наличию сигналов на различных каналах, то можно взять за основу пример №4 отсюда http://forum.canny.ru/viewtopic.php?id=12 при этом по входу коммутатора №12 использовать вместо констант регистры входных значений соответствующих каналов контроллера.
Если мое предположение не верно, если пример не совсем подходит или если модификация этого примера под ваши нужды требует дополнительных пояснений - давайте разбираться с направлением расширения диаграммы и реализовывать её по шагам.

3

Re: CannyLab и CAN шаг за шагом (для начинающих)

Спасибо за совет, частично разобрался.
Проблема:
1. Необходимо отправлять различные данные для 10-ти ID 100 раз в сек для каждого ID.
2. Для каждого ID свои динамические данные.
Вопрос:
Как это сделать ?

4

Re: CannyLab и CAN шаг за шагом (для начинающих)

По всей видимости необходимо будет экспериментально определить максимальную производительность контроллера в задаче отправки сообщений CAN для вашей задачи. Затем либо снизить требования по трафику либо использовать несколько контроллеров.
То же и по динамическим данным, в зависимости от их источника (внешние данные или данные представленные в диаграмме во внутренней памяти контроллера): эксперимент, затем изменение требований или числа контроллеров.
Кроме того, есть возможность разработки специализированного контроллера / программного обеспечения, если решение вашей задачи с помощью универсального контроллера(ов) вас не удовлетворит.

5

Re: CannyLab и CAN шаг за шагом (для начинающих)

Если я правильно понял, в случае 100 отправок в сек для каждого ID максимальное число ID=5.
Тогда ещё вопрос, возможно уже туплю под вечер, но всё же. Как отправить сообщения?
Условие: есть три аналоговых входа: Вход 1, Вход 2 и Иход 3.
Необходимо: При наличии сигнала на Входе 1 отправить сообщение 0х0001, на Входе 2 собщение 0х0002 и соответственно на Входе 3  0х0003

6

Re: CannyLab и CAN шаг за шагом (для начинающих)

 Извините, ступил. Воспользовался последовательностью из коммутаторов.

7

Re: CannyLab и CAN шаг за шагом (для начинающих)


Доброго дня, есть вопрос:

Имеем данные в CAN о скролил в одном байте  (00 01, 00 02, 00 03, 00, 04 и т.д., до 00 09). Соответственно  данные принимают значения в зависимости от интенсивности вращения ручки. Так например если вращать медленно, то байт будет принимать значение 00 01, 00 01 и т.д. если вращать быстрее, то последовательность будет 00 03, 00 05, 00 05, 00 01. Если вращать ещё быстрее, то  00 05, 00 06, 00 08.
Вопрос: Как можно преобразовать эти данные для получения ШИМ, где период заполнения будет равен значению байта (например 00 03 = 300мс период, 50мс заполнение, получаем 3 посылки или 00 05 = 500мс период, 25мс заполнение, получаем 5 посылок.)  А так же как преобразовать эти данные для управления внешним устройством по ИК порту или UART, где значение из CAN будет соответствовать количеству нажатий соответствующей кнопки пульта Д,У ( например 0x0500 = 5 нажатий/импульсов). Соответственно с учётом того, что шестнадцатеричное значение 0x0500 не равно десятеричному 5.

8

Re: CannyLab и CAN шаг за шагом (для начинающих)

Входные данные похожи на отображение числа событий произошедших между двумя посылками CAN, которые поступают по всей видимости через равные промежутки времени.
Про ШИМ:
Не понятно как расчитывалось заполнение и продолжительность работы ШИМ.
Период как я понял расчитывался умножением полученного значения на 100, в CANNY Lab  есть блок "Умножение", посмотрите его описание в документации CANNY Lab, там же есть про режим ШИМ драйвера ввода-вывода, с примерами.
Для CANNY 7 пока не реализован драйвер ИК передатчика, работает только прием. Для того, чтобы понять как организовать передачу в UART нужен хотя бы образец передаваемых данных.

9

Re: CannyLab и CAN шаг за шагом (для начинающих)


Пожалуйста сделайте, что ни будь с автосохранением сообщения. 15 мин формулировал и писал сообщение, после попытки отправить

форум снова запросил пароь и соответственно сообщение снова пустое! В этот раз попробую быть лаконичным.

С ШИМ разобрался, правда получилось громоздко: Деление - Умножение - D триггер с задержкой ВЫКЛ. - ШИМ с постоянной заполнения.

Вот к примеру UART:

UART Конфигурация:

Baud rate 115.2Kbps/others

Data Bit 8bits

Stop Bit 1bit

Parity Bit none

Cmd type = 0xA6

Команда 518 = 0x206

Cmd type(0xA6) Data 0 Data1 Check sum

Где Check sum = byte0(Cmd type) + Data0+Data1

Получается: 0xA6 0x02 0x06 0xAE

10

Re: CannyLab и CAN шаг за шагом (для начинающих)

Вариант диаграммы для решения задачи отправки сообщений в UART. Отправляемые значения обозначены именованными сетями. Можно изучить работу диаграммы в симуляторе CannyLab.
Исходный файл диаграммы: http://forum.canny.ru/files/uart_cmd_send.cfd
Функциональная диаграмма:
http://forum.canny.ru/files/uart_cmd_send.png

11

Re: CannyLab и CAN шаг за шагом (для начинающих)

Спасибо, попробую.
Образовалось ещё два вопроса:
1.Требуется что бы контроллер находился в режиме чтения CAN и выполнял алгоритм отправки данных только при наличии в CAN определённого идентификатора (0х001). НО! в случае отсутствия данных 00 00 00 00 00 00 00 00 идентификатора 0х001 не только не передавал данные, но ещё и находился в Автономном режиме пониженного электропотребления.
2. Требуется автоматическое стирание диаграммы в контроллере при подключении контроллера к USB. Т. е. если кто то даже попатается подключить питание к USB, диаграмма удаляется и контроллер не имеет диаграммы. Но при этом всегда есть возможность записать диаграмму снова.
Это возможно?
 

12

Re: CannyLab и CAN шаг за шагом (для начинающих)


1.  Находиться в режиме только чтения CAN до наступления произвольного события контроллер может, однако любая активность  CAN выводит контроллер из режима пониженного энергопотребления в обычный режим.
2. При подключении к CANNY Lab по USB можно определить факт наличия в контроллере системного ПО и диаграммы, однако считать записанное системное ПО или диаграмму из контроллера нельзя.

13

Re: CannyLab и CAN шаг за шагом (для начинающих)

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

14

Re: CannyLab и CAN шаг за шагом (для начинающих)

Возможно дело в отсутствии общей массы, возможно в отсутствии терминирующих сопростивлений, возможно в диаграмме. Высылайте диаграмму или её скриншот.
 

15

Re: CannyLab и CAN шаг за шагом (для начинающих)

Вопрос такой.  Если посылка из  5ти байт. а мне нужен только старший. Допустим FF 00 00 00 00 мне какой байт ловить 4й или 7й.

16

Re: CannyLab и CAN шаг за шагом (для начинающих)

См. с 5:37
http://www.youtube.com/watch?feature=pl … wjt4#t=337

17

Re: CannyLab и CAN шаг за шагом (для начинающих)

http://forum.canny.ru/files/oldpic/fe3781ec-0103-4cd6-b8b0-75e97abf3de3.png

18

Re: CannyLab и CAN шаг за шагом (для начинающих)

Вот диаграмма по отдельности события green2  и red есть.  А общее событие вкл. зел. светодиода на 2 сек нет. Как фильтровать события от нескольких ID, один канал работает, на диаграмме нет указал втрой не работающий.

19

Re: CannyLab и CAN шаг за шагом (для начинающих)

Блок №8 замените на "Логическое И". Перед блоком №7 поставьте "Побитовое И" с числом 0х00FF, если реагировать нужно только на значение шестого байта. Фильтры у вас настроены верно. помните о том, что зеленый и красный светодиод контроллера подключены к одному выходу и приоритет у зеленого. Т.е. если вы запишете по единице в регистр зеленого и в регистр красного одновременно, то включится зеленый.

20

Re: CannyLab и CAN шаг за шагом (для начинающих)

Заменил  побитное и на логическое (ошибка вышла). Но детектирование  посылок через лог. И так и не получилось заменил последний элемент на D триггер, как в видео работа с кан. Работает но есть задержка в выделении посылки.

21

Re: CannyLab и CAN шаг за шагом (для начинающих)

Блок №10 действительно был не к месту. Прилагайте скриншот того что получилось и кусок лога по  этому ID,  если задержки в данных нет, то задержки в обработке быть не должно.

22

Re: CannyLab и CAN шаг за шагом (для начинающих)

Подскажите какой уровень напряжения необходим для лог. 1. Вчера подключал датчик холла с выходами 0-7В канни 7 работал? Вот если напряжение будет меньше 12В, сработает ли.

23

Re: CannyLab и CAN шаг за шагом (для начинающих)

+3В..+3.5В будет достаточно.

24

Re: CannyLab и CAN шаг за шагом (для начинающих)

Доброго дня. Есть проблемка, необходимо подключиться к UART со скоростью 115200.
Планируется ли расширение скоростей для Canny7 ?

25

Re: CannyLab и CAN шаг за шагом (для начинающих)

Withe пишет:

Доброго дня. Есть проблемка, необходимо подключиться к UART со скоростью 115200.
Планируется ли расширение скоростей для Canny7 ?

Ввиду аппаратных особенностей CANNY7, скорость передачи по UART ограничена 57600.
Для CANNY5 nano - реализуемо.