Я работаю над проектом с главным компьютером, подключенным через сеть CANOpen к 4 подчиненным.
На каждом временном шаге компьютер получает сообщение измерения от каждого ведомого устройства и отправляет им управляющее сообщение. Всего принимается 4 сообщения и 4 сообщения отправляются в каждый отсчет времени.
Отправленное сообщение представляет собой PDO с 6 байтами данных (8 байтов, включая COB-ID). Полученное сообщение представляет собой PDO с 8 данными. байт (10 байт, включая COB-ID)
Моя сеть CAN настроена на 1 Мбит / с, и я запускаю программу на частоте 1000 Гц (время выборки 1 мс). Поскольку общая нагрузка, полученная в результате описанных сообщений, составляет 576 бит / цикл, общая ожидаемая нагрузка в сети составляет 576 кбит / с, или 57% .
. Однако я вижу, чточто:
- Управляющий компьютер измеряет нагрузку ~ 86% (при минимуме 68% и пиках 100%).
- Шина USB CANанализатор, который я подключаю к сети, регистрирует трафик сообщений (в пересчете на счет), который составляет примерно половину от того, что я номинально ожидаю (т. е. 4 отправлено, 4 получено в каждом цикле, в течение 50 секунд должно получиться 50 000 сообщений)пока я вижу только 18-25к). Кроме того, я получаю 1-2 сообщения об ошибках за цикл от ведомых устройств, что сеть перегружена. Прежде чем это указать, даже подсчет размера этих сообщений как части трафика не приблизится к объяснению аномалии в нагрузке.
Что я хотел бы знать, так это мой ли способРасчет загрузки сети CANOpen является правильным. Например, существуют ли какие-либо специфичные для протокола рукопожатия, CRC или какие-либо дополнительные байты, отправляемые для того, чтобы сеть просто работала? Я ничего не видел на вики-странице CANOpen , но я знаю, что есть такие дополнения к сообщениям в оригинальном шине CAN стандарт.