Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Лабораторным ИСТ (1-5).doc
Скачиваний:
10
Добавлен:
14.07.2019
Размер:
2.22 Mб
Скачать

6.2.Вывод ошибок сети

Обнаруженные в процессе работы ошибки выводятся на экран асинхронно наряду с посланными и принятыми кадрами:

  • “ER WTOUT WRITE TIMEOUT" – кадр не был отослан в течении стандартного временного интервала, ошибка может возникнуть если нет соединения с сетью (например, обрыв кабеля, нет других контроллеров в сети, несоответствие выставленных скоростей передачи у контроллеров в сети)

  • "ER EWL ERROR WARNING LIMIT" – один из аппаратных счетчиков ошибок CAN-контроллера превысил уровень предупреждения (по умолчанию 96); кроме указаных в предыдущем пункте (WTOUT), причиной возникновения этой ошибки могут быть помехи в сети (согласно спецификации Bosch CAN 2.0);

  • "ER BOFF BUS OFF" – контроллер отключен от сети из-за ошибок (один из счетчиков ошибок достиг предельного значения 255); при наступлении этого события CAN-контроллер переходит в режим инициализации (CAN_INIT);

  • "ER HOVR HARDWARE OVERRUN" – произошло переполнение аппаратной приемной очереди CAN-контроллера (безвозратно потерян один или несколько полученных кадров), причина – большой поток кадров в сети, ЦПУ не успевает вынимать кадры из аппаратной очереди контроллера;

  • "ER SOVR SOFTWARE OVERRUN" – произошло переполнение программной приемной очереди драйвера (безвозратно потерян один или несколько полученных кадров), причина – большой поток кадров в сети, пользовательское приложение не успевает вынимать кадры из программной очереди драйвера;

6.3.Примеры использования команд

  • Отправить подряд три пакета расширенного формата с идентификатором ID=0x7 и четырьмя байтами данных 0x1 0x2 0x3 0x4 можно командой: send 0x7:0x1,0x2,0x3,0x4 eff repeat 3

  • Отправить пять RTR-пакетов стандартного формата длины 4 байт с идентификатором 0xd можно командой: sendrx 0xd:4 sff repeat 5

  • Включить запись всех отправляемых и принимаемых CAN-пакетов в файл c:\chai-2.4.0\canmon.log можно командой: openlog c:\chai-2.4.0\canmon.log

  • Закрыть лог-файл и выключить запись принимаемых отправляемых пакетов можно командой: closelog

  • Перевести контроллер в режим Listen-Only-Mode, в этом режиме контроллер не участвует в работе шины (не шлет кадры подтверждения и ошибок) но только принимает проходящие по сети кадры, этот режим используется для не возмущающего тестирования CAN-сетей. Команда setlom может вызываться только, если контроллер находится в режиме конфигурирования (команды stop/start). stop setlom start

  • Выключить режим Listen-Only-Mode, Команда clearlom может вызываться только, если контроллер находится в режиме конфигурирования (команды stop/start). stop clearlom start

  • Установить аппаратный фильтр контроллера на прием только кадров с идентификатором 0x1. Команда setfilter может вызываться только, если контроллер находится в режиме конфигурирования (команды stop/start). stop setfilter 0x1 0xffff start Аппаратный фильтр состоит из двух значений: acode - значение фильтра, и amask - значение маски. Значение фильтра задает идентификатор принимаемых кадров (в нашем случае 0x1). Маска задает значащие позиции в значении фильтра, Если бит номер N в маске выставлен в 1, то бит номер N в значении фильтра должен быть равен биту N в идентификаторе принимаемого кадра для успешного прохождения этого кадра через фильтр. Если бит номер N в маске выставлен в 0, то биты номер N в значении фильтра и идентификаторе принимаемого кадра не сравниваются. В нашем случае маска равна 0xffff - все биты идентификатора участвуют в сравнении, что означает, что кадр будет принят, только если все его биты совпадают с соответствующими битами значения фильтра, т.е. кадр будет принят, только если его идентификатор равен 0x1. Текущая версия программы canmon поддерживает аппаратный фильтр только для 11-битных кадров, действие фильтра (если он установлен) на 29-битные кадры - непредсказуемо. Если вам необходимо работать с аппаратным фильтром 29-битных кадров используйте программу CANwise.

  • Установить аппаратный фильтр контроллера на прием только кадров с идентификаторами от 0x0 до 0x7 включительно. stop setfilter 0x0 0xfff8 start здесь маска 0xfff8 указывает, что первые три бита идентификатора не участвуют в сравнении, а остальные должны совпадать с 0. Таким образом, через фильтр будут проходить кадры с идентификаторами от 0x0 до 2 в степени 3 минус 1 (т.е. 0x7).

  • Установить аппаратный фильтр контроллера на прием всех кадров. stop setfilter 0x0 0x0 start

Формат пакета данных

В обычном режиме передачи пакеты данных имеют следующие конфигурации блоков (фреймы):

• Data Frame (фрейм сообщения) для передачи сообщений по шине данных CAN (например: температура охлаждающей жидкости).

• Remote Frame (фрейм запроса) для запроса сообщений по шине данных CAN от другого блока управления.

• Error Frame (фрейм ошибки) все подключённые блоки управления уведомляются о том, что возникла ошибка и последнее сообщение по шине данных CAN является недействительным.

Протокол шины данных CAN поддерживает два различных формата фреймов сообщения по шине данных CAN, которые различаются только по длине идентификатора:

стандартный формат;

расширенный формат.

В настоящее время используется стандартный формат.

Пакет данных для передачи сообщений по шине данных CAN состоит из семи последовательных полей:

• Start of Frame (стартовый бит): Маркирует начало сообщения и синхронизирует все модули.

• Arbitration Field (идентификатор и запрос): Это поле состоит из идентификатора (адреса) в 11 бит и 1 контрольного бита (Remote Transmission Request-Bit). Этот контрольный бит маркирует пакет как Data Frame (фрейм сообщения) или как Remote Frame (фрейм запроса) без байтов данных.

• Control Field (управляющие биты): Поле управления (6 бит) содержит IDE-бит (Identifier Extension Bit) для распознавания стандартного и расширенного формата, резервный бит для последующих расширений и - в последних 4 битах - количество байтов данных, заложенных в Data Field (поле данных).

• Data Field (данные): Поле данных может содержать от 0 до 8 байт данных. Сообщение по шине данных CAN длиной 0 байт используется для синхронизации распределённых процессов.

• CRC Field (контрольное поле): Поле CRC (Cyclic-Redundancy-Check Field) содержит 16 бит и служит для контрольного распознавания ошибок при передаче.

• ACK Field (подтверждение приёма): Поле ACK (Acknowledgement Field) содержит сигнал подтверждения приёма всех блоков-приёмников, получивших сообщение по шине CAN без ошибок.

• End of Frame (конец фрейма): Маркирует конец пакета данных.

• Intermission (интервал): Интервал между двумя пакетами данных. Интервал должен составлять не менее 3 битов. После этого любой блок управления может передавать следующий пакет данных.

• IDLE (режим покоя): Если ни один блок управления не передаёт сообщений, то шина CAN остаётся в режиме покоя до передачи следующего пакета данных.

Лабораторная работа 3

Изучение Universal Serial Bus и FireWire