ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
29 июля
1367058 Топик полностью
Eddy_Em (30.10.2023 19:58, просмотров: 130) ответил Cкpипaч на Начнем с того, что номер сообщения это не прикладной уровень. И если вы этого не понимаете, то мне вас жаль. Второе - проектировать системы нужно СВЕРХУ - ВНИЗ. И тогда вы с удивлением обнаружите что прикладная программа не может ждать сообщений.
ID сообщения в обычной терминологии CAN - это как раз и есть адрес железяки. Чем не прикладной уровень? 

В CANopen несколько иначе: там целые группы ID на всякую ненужную дрянь тратятся, но в случае SDO/PDO тоже одна железка - один идентификатор (если не нужно параметры постоянно менять, то управление canopen'овским устройством можно как в "обычной" CAN шине делать).

Несомненным плюсом CAN является "мультимастер": любое устройство асинхронно может выдавать в шину сообщения. Нет нужды мастеру постоянно пинать все устройства.

CAN есть в очень большом количестве кристаллов. Даже в STM8! Из используемых мною CAN нет разве что в STM32F030, но и использовал я их лишь в одном-единственном устройстве (примитивнейшие контроллеры шаговиков, сидящие на общей шине UART, где маркером команда/данные является бит четности).

А при чем тут modbus tcp? Мы вообще-то об уровне микроконтроллеров говорим, а не компьютеров, где ethernet есть.

И непонятно, с чего бы вдруг нельзя масштабировать систему на CAN? Можно даже достаточно длинные линии делать, если большая скорость не нужна - просто разделять их CAN-шлюзами (их еще и можно настроить: в какую шину какие группы идентификаторов отправлять).

eddy-em.livejournal.com github.com/eddyem