1

Тема: Как получить данные с нескольких ID?

Пока работал с опросом только одного ID все было понятно. И то работал с шиной где был всего один ID. А если нужно читать данные с 4х ID в общей шине? Не могу понять. Ведь за один цикл в регистры кладутся данные только одного пакета CAN. И какого пакета данные лягут? Который в момент начала цикла пролетал мимо? Как мне получить в регистре пакет с нужного ID? Чет я затупил...

2

Re: Как получить данные с нескольких ID?

См. https://forum.canny.ru/viewtopic.php?pid=10983#p10983

Определить, ID принятого сообщения можно проверив соотвествующие регистры драйвера CAN:
https://canny.ru/docs/c72duo/can/#sec-- … an-primery

3 (16-05-2023 14:28:42 отредактировано Байкалец)

Re: Как получить данные с нескольких ID?

Как определить ID сообщения мне понятно. А вот как принять нужное сообщение? Мне не понятно как из сотни разных ID в регистр попадет именно нужное мне.

4

Re: Как получить данные с нескольких ID?

Не совсем понятен критерий "нужности"

5 (16-05-2023 14:38:51 отредактировано Байкалец)

Re: Как получить данные с нескольких ID?

Или через контроллер проходят все без исключения сообщения которые есть в CAN и в каждый цикл там что-то есть и как только там появляется сообщение с нужным мне ID, то я могу с ним работать? Какой то у меня тут затуп произошел с пониманием процесса.

6

Re: Как получить данные с нескольких ID?

Сравнивая ID принятого сообщения с константой. Если требуется, то сохраняя данные принятого сообщения в Триггер D
См.примеры по ссылке, которую я привел в первом ответе.

7 (16-05-2023 15:15:54 отредактировано Байкалец)

Re: Как получить данные с нескольких ID?

То есть через контроллер проходят все сообщения что есть в CAN шине и пройдет не один цикл пока в регистре появится сообщение с нужным мне ID, правильно я понял?

8

Re: Как получить данные с нескольких ID?

Сколько пройдет циклов до того, как появится сообщение с нужным вам ID зависит в общем случае от скорости и плотности потока сообщений, частоты появления в нем сообщений с нужным вам ID  и продолжительности цикла диаграммы.
Вы можете ограничить поток сообщений попадающих в диаграмму используя фильтры CAN, см. https://canny.ru/docs/c72duo/can/#sec-- … y-drajvera

9

Re: Как получить данные с нескольких ID?

Спасибо, разобрались).

А вот если я посылаю запрос в другой блок, допустим на ID 773 и в ответ с ID 774 должны поступить 4 сообщения подряд. Они так же будут в общей очереди проходить через контроллер или у них будет какой то приоритет перед остальным трафиком?

10

Re: Как получить данные с нескольких ID?

В общей очереди и не обязательно в том порядке, в котором они были отправлены. Кроме того, если вы будете использовать фильтры приема CAN, то для того чтобы не пропустить ни одного из 4 сообщений с ID 774, если они поступают одно за другим вплотную, вам необходимо использовать не менее четырех фильтров приема с ID 774

11

Re: Как получить данные с нескольких ID?

Установить 4 одинаковых фильтра? То есть получается что только в таком случае будет наполняться буфер?