1 (15-03-2021 19:10:08 отредактировано Nap13)

Тема: Организация передачи 45 и более сообщений в Can

Доброго времени суток! Столкнулся с задачей передавать 45 и более сообщений с различными временными интервалами. При 30 сообщениях ощутимы задержки в передаче, второй блок передачи из 15 сообщений по логике перекрывается первым через цепь коммутаторов. Нужно добавить еще один блок передачи 15 сообщений.
1. Каким образом можно упорядочить отправку, чтобы сообщения не пропадали, и при этом таймиги не выходил за рамки разумного, так сильно как в приложенном примере.
2. Имеется ли зависимость от интервалов счетчика генератора ШИМ(10/5)? 
3. В наличии 2 контроллера - 7ка и 7.2Duo, работать будут в паре, с разными задачами, может перераспределить между ними нагрузку каким либо образом?

Заранее спасибо за ответ.

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

Иконка вложения 2x15 Timing.cfd 121.56 кб, скачивался 181 раз, последний раз 2021-03-15 

2

Re: Организация передачи 45 и более сообщений в Can

1. Упорядочить отправку можно, пожалуй, только правильной организацией каскада коммутаторов. При использовании текущего подхода сообщения теряться не должны, но отправка наименее приоритетных сообщений будет происходить с большими отставаниями от заданных таймингов. Можно попробовать применить вариант, когда более часто идущие сообщения будут иметь более низкий приоритет.
2. В нынешнем варианте диаграмма выполняется около 3мс. Использованные параметры ШИМ не должны сильно влиять - контроллер должен успевать отслеживать все фронты блока Генератор ШИМ.
3. Распределение трафика между несколькими контроллерами было бы хорошим решением. Если у CANNY 7.2 Duo используется только 1 CAN интерфейс, то можно было бы также задействовать и второй, подключив их к одной шине и распределив трафик между интерфейсами.

Для решения подобной задачи наиболее подошло бы использование драйвера асинхронной передачи CAN, но он, к сожалению, пока есть только у CANNY 7.2 Alfa (см. https://canny.ru/docs/c72alfa/acan/).

3

Re: Организация передачи 45 и более сообщений в Can

Денис, спасибо огромное за ответ! Как всегда оперативно!
1. Как я понимаю, каскад коммутаторов должен быть построен по принципу - сообщения с меньшей скоростью отправки (1000мс, 500мс)  должны иметь меньший порядковый номер в каскаде коммутаторов, чем более часто отправляемые? тогда задержки в отправке будут более сбалансированы?
2. Если я изменю параметр генератора шим с 10/5 на 2/1 это только усугубит ситуацию? так как время выполнения 3мс диаграммы будет превышать временной параметр генератора шим и тогда сообщения начнут пропадать?
3. Если я использую оба канала CAN параллельно, как это отразиться на задержках? Как лучше распределить сообщения? Например - более частые сообщения отправлять в CAN0, менее частые в CAN1? Либо разделить поровну количество сообщений между каналами?
4. При одновременной отправке сообщения по 2 каналам один из каналов ожидает завершения отправки и начинает передачу, нужно ли будет организовывать физический порядок в диаграмме между 2 каналами CAN?

4

Re: Организация передачи 45 и более сообщений в Can

Планируется внедрения драйвера асинхронной передачи CAN в 7.2Duo и другие контроллеры?

5

Re: Организация передачи 45 и более сообщений в Can

1. В данном случае да, хотя точнее было бы сказать, что наиболее приоритетный тот, кто находится ближе к выходу из каскада коммутаторов (в данном случае к блоку №233), т.е. чье значение будет передано в качестве индекса для формирования отправляемого сообщения CAN, при этом само значение передаваемой константы может быть любым.
2. Да, уменьшение периода и заполнение генератора ШИМ может ухудшить ситуацию с пропусками сообщений.
3..4. Это позволит при совпадении условий передачи 2х сообщений одновременно заполнить буферы отправки и дать команду на передачу, далее, драйвер, асинхронно диаграмме, будет предпринимать попытку отправить сообщения в шину. Мне кажется лучше распределить часто идущие и редко идущие сообщения более менее равномерно, поровну, между интерфейсами, т.е. чтобы распределить нагрузку на них.

Планируется внедрения драйвера асинхронной передачи CAN в 7.2Duo и другие контроллеры?

В настоящее время этот вопрос прорабатывается.

6

Re: Организация передачи 45 и более сообщений в Can

Спасибо огромное! Жду с нетерпением возможности асинхронной передачи для Duo)))

Модераторское: такая возможность добавлена начиная с версии CannyLab 2.11