Благодаря применению технологии электронного управления в тракторе большой мощности технология шины CAN широко используется в передаче данных и диагностике неисправностей тракторного двигателя, шасси и коробки передач. Она проводит предварительный анализ состава, получения, добычи и анализа данных кода неисправности сельскохозяйственной техники по протоколу ISO11783 и системы CAN-шины. Согласно протоколу сельскохозяйственной сети CAN-шины, используется программное обеспечение для анализа данных о неисправностях через шину CAN трактора John Deere. Коды неисправностей проверяются на идентичность согласно инструкции по эксплуатации по кодам неисправностей John Deere, на основе подтвержденных данных выполняется соответствующая операция по устранению неисправностей.
Обработка ошибок встроена в протокол CAN и очень важна для производительности системы CAN. Обработка ошибок нацелена на обнаружение ошибок в сообщениях, передающихся по шине CAN, для возможности передатчика повторно выслать неверно принятое сообщение. Каждый CANконтроллер на шине будет пытаться обнаружить ошибку в сообщении. Если ошибка найдется, обнаруживший ее узел будет передавать флаг ошибки, таким образом разрушая трафик шины. Другие узлы обнаружат ошибку, вызванную флагом ошибки (если еще не обнаружили оригинальную ошибку), и предпримут соответствующие действия, т. е. отбракуют текущее сообщение.
Каждый узел обслуживается двумя счетчиками ошибок: счетчиком ошибок передачи (Transmit Error Counter) и счетчиком ошибок приема (Receive Error Counter). Существуют правила, регламентирующие повышение и/или понижение значения этих счетчиков. По существу, передатчик определяет повышение числа сбоев в счетчике ошибок передачи быстрее, нежели слушающие узлы увеличат значения своих счетчиков ошибок передачи. Это необходимо для исключения вероятности сбоя именно в передатчике. Когда значение любого счетчика ошибок превышает определенную величину, узел сначала становится Error Passive — это значит, что он не будет активно разрушать трафик шины при обнаружении ошибки; а затем переходит в состояние Bus Off — это значит, что узел вообще не будет принимать участия в передаче данных по шине.
При помощи счетчиков ошибок узел CAN может не только обнаруживать сбои, но и ограничивать ошибки.
Протокол CAN описывает не менее пяти различных способов обнаружения ошибок. Два из них работают на уровне бита, а остальные три — на уровне сообщения:
— мониторинг битов (Bit Monitoring);
— вставка битов (Bit Stuffi ng);
— проверка кадра (Frame Check);
— проверка распознавания (Acknowledgement Check);
— проверка циклической избыточности (Cyclic Redundancy Check).
Каждый передатчик шины CAN осуществляет мониторинг в виде повторного прочтения переданного уровня сигнала. Если уровень прочитанного бита отличается от уровня переданного, подается сигнал ошибки бита (Bit Error), при этом роста бита ошибок в процессе разрешения конфликтов не происходит.
После того как узел передаст пять непрерывно следующих друг за другом битов одного уровня, он добавит к исходящему потоку битов шестой бит противоположного уровня. Получатели будут удалять этот дополнительный бит. Это делается для предупреждения появления излишнего количества компонентов DC на шине, но также дает получателям дополнительную возможность обнаружения ошибок, при передаче более пяти непрерывно следующих друг за другом битов одного уровня подается сигнал ошибки вставки.
Некоторые части сообщения CAN имеют фиксированный формат, т. е. стандарт четко определяет, какие уровни должны произойти и когда. [Эти части — ограничитель CRC (CRC Delimiter), ограничитель ACK (ACK Delimiter), конец кадра (End of Frame), а также пауза (Intermission), однако для них существуют дополнительные специализированные правила проверки на ошибки.] Если контроллер CAN обнаружит неверное значение в одном из этих полей, он подаст сигнал ошибки формы (Form Error).
Проверка распознавания предполагает, что все узлы шины, которые получили сообщение корректно (независимо от того, было ему это сообщение «интересно» или нет), отправят доминантный уровень в так называемой области распознавания (Acknowledgement Slot) кадра. Передатчик будет передавать рецессивный уровень. Если передатчик не сможет обнаружить доминантный уровень в области распознавания, он подаст сигнал ошибки распознавания (Acknowledgement Error).
Каждое сообщение содержит 15-битную контрольную сумму циклической избыточности (Cyclic Redundancy Checksum, CRC), и любой узел, обнаруживший, что CRC в сообщении отличается от посчитанного им, подаст сигнал ошибки CRC (CRC Error).
Каждый контроллер CAN-шины мониторит описанные выше ошибки в каждом сообщении. Если ошибка обнаружится, нашедший ее узел передаст флаг ошибки, таким образом разрушая передачу данных по шине. Другие узлы обнаружат ошибку, вызванную флагом ошибки (если они еще не обнаружили оригинальную ошибку) и предпримут соответствующее действие, т. е. сбросят текущее сообщение.
Каждый узел обслуживают два счетчика ошибок: счетчик ошибок передачи и счетчик ошибок приема. Существуют правила, описывающие условия повышения и/или понижения значений этих счетчиков. Передатчик, обнаруживший сбой, повышает значение своего счетчика ошибок передачи быстрее, чем слушающие узлы повысят значения своих счетчиков ошибок приема, но есть большая вероятность, что сбоит сам передатчик.
Узел начинает работу в режиме Error Active. Когда значение любого из двух счетчиков ошибок превысит 127, узел перейдет в состояние Error Passive, а когда значение счетчика ошибок передачи превысит 255, узел перейдет в состояние Bus Off .
— Узел в режиме Error Active при обнаружении ошибки будет передавать флаги активной ошибки (Active Error Flags).
— Узел в режиме Error Passive при обнаружении ошибки будет передавать флаги пассивной ошибки (Passive Error Flags).
— Узел в режиме Bus Off не будет передавать ничего.
Правила повышения и понижения значений счетчиков ошибок довольно сложные, но принцип прост: ошибка передачи добавляет 8 пунктов, а ошибка прием — 1 пункт. Правильно переданные и/или принятые сообщения вызывают понижение значения счетчиков.
Большинство контроллеров CAN будут предоставлять биты статуса (и соответствующие прерывания) для двух состояний:
— «Предупреждение об ошибке» (Error Warning) — значение одного или обоих счетчиков ошибок превысило 96 пунктов.
— Bus Off , как описано выше.
Некотрые, но не все (!), контроллеры также предоставляют бит для состояния Error Passive. Немногие контроллеры также предоставляют прямой доступ к счетчикам ошибок.
Режимы сбоев кабеля шины CAN:
1. CAN_H прерван.
2. CAN_L прерван.
3. CAN_H короткозамкнутый на напряжение батареи.
4. CAN_L короткозамкнутый на землю.
5. CAN_H короткозамкнутый на землю.
6. CAN_L короткозамкнутый на напряжение батареи.
7. CAN_L короткозамкнутый на провод.
8. CAN_H и CAN_L прерваны в одном и том же месте.
9. Потеря соединения с оконечной нагрузкой сети.
Для сбоев 1–6 и 9 «рекомендовано», чтобы шина сохраняла работоспособность путем снижения соотношения «сигнал/шум» (S/N), а в случае сбоя 8 — чтобы исходная подсистема сохранила работоспособность. Для сбоя 7 существует «опциональная» возможность сохранения работоспособности путем снижения соотношения «сигнал/шум» (S/N).