Сети управления и сбора данных в реальном масштабе времени (CAN) - часть 5
В поле флаг ерегрузки записывается 6 бит, равных нулю (как и в поле флаг активной ошибки). Кадры ошибки или перегрузки не требуют межкадровых разделителей. Существует ряд условий перегрузки, каждое из которых вызывает посылку такого кадра:
-
внутренние обстоятельства приемника, которые требуют задержки передачи следующего кадра данных или запроса.
-
Детектирование доминантного бита в начале поля int.
-
Обнаружение узлом доминантного восьмого бита в поле разграничителя ошибки или разграничителя перегрузки.
Время пребывания канала в пассивном состоянии не нормировано. Появление доминантного бита на шине, пребывающей в пассивном состоянии, воспринимается как начало очередного кадра. Предусматривается возможность установления масок в узле на отдельные двоичные разряды идентификатора, что позволяет игнорировать их значения. Маскирование делает возможным мультикастинг-адресацию.
Поля SOF, идентификатор, управляющее поле, данные и CRC кодируются таким образом, что при появлении пяти идентичных бит подряд, в поток вставляется бит противоположного уровня. Так 0000000 преобразуется в 00000100, а 1111110 в 11111010. Это правило не распространяется на CRC-разделители, поля ACK и EOF, а также на кадры сообщения об ошибке или переполнении. Существует 5 разновидностей ошибок (таблица 3.3.4.1).
Таблица 4.1.4.1 Разновидности ошибок.
Тип ошибки | Описание |
bit error | Передающий узел обнаружил, что состояние шины не соответствует тому, что он туда передает |
stuff error | Нарушено правило кодирования (вставка бита противоположного значения после 5 идентичных бит, см. абзац выше). |
CRC error | Приемник обнаружил ошибку в контрольной сумме. |
form error | Обнаружено нарушение формата кадра |
acknowledgment error | Выявлен неверный уровень первого бита поля ack. |
Любой узел CAN должен регистрировать и по запросу сообщать число ошибок при передаче и приеме.
Номинальное время, выделенное для передачи одного бита, включает в себя четыре временные области: sync_seg, prop_seg, phase_seg1, phase_seg2 (рис.3.4.4.3).