Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Микропроцессорные средства автоматизации энергетических систем. Сети автоматизации

.pdf
Скачиваний:
5
Добавлен:
12.11.2023
Размер:
20.13 Mб
Скачать

деляющее битовое поле называется межкадровым пространством

(Interframe Space) (рис. 7.13).

Кадрам перегрузки и кадрам ошибки не предшествует межкадровое пространство. Несколько кадров перегрузки также не отделяются межкадровым пространством.

Межкадровое пространство содержит поля «Перерыв» и «Простой шины», и для узла в состоянии пассивной ошибки, который был передатчиком предыдущего сообщения, дополнительное поле – «Приостановка передачи» (находится между полями «Перерыв» и «Простой шины»).

Рис. 7.13. Межкадровое пространство

Поле перерыва (Intermission) состоит из 3 бит с логической единицей. В течение перерыва никакому узлу нельзя начинать передачу кадра данных или кадра удаленного запроса данных. Единственно возможноедействие– этосигнализацияосостоянииперегрузки.

Простой шины (Bus Idle) может иметь произвольную длину. Если шина опознана как свободная, любой узел, который имеет чтолибо для передачи, может начать передачу. Сообщение, которое было задержано для передачи другого сообщения, начинает передаваться в первом бите после поля перерыва.

Обнаружение бита с логическим нолем на шине в течение этого поля интерпретируется как поле «Начало кадра».

Приостановка передачи. Узел в состоянии пассивной ошибки после передачи сообщения посылает 8 бит с логической единицей после поля перерыва перед началом передачи дальнейших сообще-

361

ний или определением занятости шины. Если тем временем началась передача (вызванная другим узлом), узел станет приемником этого сообщения.

7.6.7. Кодирование битового потока

Поля «Начало кадра», «Поле арбитража», «Поле контроля», «Поле данных» и «Поле CRC» кодированы методом разрядного заполнения. Всякий раз, когда передатчик передает пять последовательных битов идентичной величины в битовом потоке, он автоматически вставляет дополняющий бит противоположного значения в фактически передаваемый битовый поток.

Оставшиеся битовые поля кадра данных или кадра удаленного запроса данных (разделитель CRC, поле подтверждения и конец кадра) имеют фиксированную форму и не кодируются. Кадр ошибки и кадр перегрузки также имеют фиксированную длину и не кодируются методом разрядного заполнения.

7.7. КОНТРОЛЬ ОШИБОК

Особое внимание при разработке CAN-протоколов уделялось нахождению и надежной обработке ошибок, возникающих при передаче данных. Это связано с техникой безопасности эксплуатации автомобилей и других транспортных средств. Наряду с типичной для других Fieldbus-систем защитой информационного кадра тестовой последовательностью здесь предусмотрены также другие механизмы. В информационном кадре есть бит подтверждения приема (Acknowledge-Bit), который должен выставлять каждый узел, получивший данные без ошибок. Проверяется также структура информационного кадра. Если узел обнаруживает ошибку, он уничтожает сообщение, переписывая его целым рядом низкоуровневых битов, которые теряются при существующем в CAN правиле подстановки битов (в новой версии не может встречаться более пяти одинаковых последовательно идущих битов данных).

362

Ввиду возможности уничтожения ошибочных сообщений существует опасность, что узлы, передающие данные с ошибками, заблокируют шину, поэтому в каждом узле существует счетчик ошибок, который увеличивает свое значение в случае передачи или приема данных с ошибками и уменьшает в случае отсутствия ошибок. По состоянию этого счетчика можно сделать выводы о надежности узла. Таким образом, узел может принимать активное или ограниченное участие в передаче данных по шине. В крайнем случае он отключается от шины. Прежде всего следует обратить внимание на это свойство. В технике оно обозначается как демократичность, так как отключение нефункционирующего модуля происходит по собственной инициативе, чтобы не мешать другим узлам на шине.

Следующий шаг в повышении помехоустойчивости состоит в том, чтобы обнаружить по крайней мере одиночную ошибку, возникающую при разрыве провода. Сеть CAN использует дифференциальный метод передачи данных, основанный на стандарте RS-485. При выходе из строя сигнального провода можно переключиться с дифференциальной на массовую передачу данных. Аварийный режим возможен даже при худшем качестве передачи. Однако не все контроллеры обладают такой возможностью. Далее более подробно рассмотрен контроль ошибок.

CAN содержитпятиступенчатыймеханизмобнаруженияошибок:

1)циклический контроль по избыточности (CRC);

2)контроль передаваемого поля битов;

3)контроль сигнала «Подтверждение приема»;

4)текущий контроль логического уровня битов;

5)контроль заполнения битов.

Первые три механизма реализованы на уровне сообщений: 1. Циклический контроль по избыточности (CRC). При ис-

пользовании этого метода в конце передачи добавляются биты контрольного циклического избыточного кода CRC. При приеме сообщения происходят его повторное вычисление и сравнение с полученным кодом циклического контроля. Если эти два значения не

363

совпадают, то выявляется ошибка CRC. Приемники помечают обнаруженные ошибки и устанавливают соответствующие флаги. В случае совпадения приемник передает доминантный бит в промежутке подтверждения.

2. Приемники производят контроль кадра. Ошибка формы возникает, когда недопустимое разрядное значение обнаружено в области, в которую должно быть передано предопределенное значение. В CAN-протоколе существуют некоторые предопределенные разрядные значения, которые должны быть переданы

вопределенных местах. Если недопустимое разрядное значение обнаружено в одной из этих областей, имеет место ошибка формы (формата).

3.Ошибка подтверждения возникает, когда передатчик определяет, что сообщение не было подтверждено. Слот подтверждения существует внутри кадров данных и кадра запроса удаленных данных. Внутри этого слота все приемные узлы, независимо от того, являются они пунктом назначения или нет, должны подтвердить получение сообщения. Если передатчик не получил никакого подтверждения, это может означать, что приемники обнаружили ошибку (искажено поле АСК) либоприемникивообщеотсутствуютвсети.

Следующие два механизма определения ошибок реализованы

впротоколе CAN на битовом уровне.

4.Разрядная ошибка. Одна из уникальных особенностей сети CAN состоит в том, что передающий узел может контролировать свой собственный сигнал на шине во время передачи. Таким образом, каждый узел может наблюдать за уровнем сигнала на шине и определять различие переданного и принятого с шины бита (мониторинг шины). Это позволяет надежно выявлять глобальные ошибки и ошибки, связанные с передатчиком. При этом обнаружение доминантного бита, когда передается рецессивный бит, не выдает ошибку в течение передачи поля арбитража, поля ACK Slot или флажка пассивной ошибки.

5.Ошибка заполнения появляется, когда узел обнаруживает шесть последовательных битов одного и того же значения. В CAN

364

используется представление битов способом NRZ (Non Return to Zero – без возврата к нулю), гарантирующим максимальную эффективность битового кодирования. Однако, если подряд идет слишком много битов с одним и тем же значением, то возможен сбой синхронизации.

Для избежания подобной ситуации CAN использует методику добавления заполняющего бита (bit stuffing) для дополнительного контроля передаваемых сообщений. В процессе нормальной работы, когда передатчик обнаруживает, что он послал пять последовательных битов одного и того же значения, он заполняет следующий бит противоположным значением (это называется заполнением бита). Все приемники удаляют заполненные биты до вычисления CRC (контрольного кода). Таким образом, когда узел обнаруживает шесть последовательных битов того же значения, возникает ошибка заполнения. Так кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.

Флаг ошибки. В случае если найдена ошибка, узел, обнаруживший ее, прерывает передачу посылкой флага ошибки. При этом передатчик автоматически реинициализирует передачу сообщения, что предотвращает все узлы от возникновения ошибок и гарантирует непротиворечивость данных в сети. Как правило, повторная передача начинается в течение периода времени, соответствующего передаче 23 бит, отсчитываемого с момента обнаружения ошибки. В специальных случаях время восстановления системы составляет 31-битный период.

Однако какими бы эффективными ни были вышеописанные методы обнаружения ошибок, если не будет предпринято никаких мер по самодиагностике, одна неисправная станция может прекращать передачу любых, в том числе и безошибочных, сообщений, блокируя, таким образом, всю систему.

Для этих целей в протоколе CAN предусмотрен механизм, позволяющий отличить случайные ошибки от постоянных и локализовывать неисправности станций. Механизм использует стати-

365

стические оценки сбойных ситуаций на станции для распознавания неисправностей самой станции и возможного ее перевода в операторный режим, при котором работа остальной части сети не страдает. Кроме того, станция может отключаться полностью, для того чтобы не прерывать передачу сообщения, ошибочно распознаваемого как некорректное.

Узел может быть в одном из трех состояний ошибки:

1.Ошибка активная – фиксируется, когда активный узел обнаруживает одну из упомянутых ошибок. Он передает активный кадр ошибки, который состоит из шести последовательных доминантных битов. Эта передача отменит любую другую передачу, проходящую в то же самое время, и заставит все другие узлы обнаружить ошибку наполнения, которая, в свою очередь, заставляет их отбрасывать текущий кадр. Когда узел в состоянии активной ошибки обнаруживает проблему с передачей, он предотвращает получение всех других данных из пакета сообщений, передавая кадр активной ошибки. Этот процесс выполняется независимо от того, был ли узел, обнаруживший ошибку, получателем данных или нет.

2.Ошибка пассивная – фиксируется, когда пассивный узел обнаруживает одну из упомянутых ошибок: он передает кадр пассивной ошибки, который состоит из шести последовательных рецессивный битов. Этот фрейм может быть наложен на передачу, которая ведется в то же самое время, при этом данные из передачи не теряются, если другие узлы не обнаруживают ошибку.

3.Шина выключена – узел на шине находится в выключенном состоянии и не откликается на любое воздействие на шине. Это логическое отключение от сети.

Опишем кратко действия, имеющиеся в механизме минимизации неисправностей:

1.Узлыследят, передаютиполучаютзначениясчетчиковошибок.

2.Узел начинает передачу в состоянии активной ошибки со счетчиками ошибок, равными нулю. Узел в этом состоянии «понимает», что любая обнаруженная ошибка не является неисправностью.

366

3.Типы ошибок и точки, в которых они были обнаружены, имеют различный код, который добавляется к текущему общему количеству в зависимости от того, является ошибка передаваемой или принимаемой. Значимые величины получения и передачи вызывают декремент этих счетчиков, при этом ноль является минимальным значением. Когда любой из данных счетчиков проходит соответствующий порог, определенный в CAN-протоколе, узел фиксирует пассивное состояние ошибки. В таком состоянии узел полагает, что это он причина ошибки.

4.Когда переданное состояние счетчика ошибки в другом узле проходит определенный порог, узел вводит шину в отключенное состояние. Эта спецификация определяет механизмы перехода из состояния отключения шины к состоянию активной ошибки.

5.Когда и передающий, и приемный счетчики пассивной ошибки узла декрементируются ниже определенного порога, узел еще раз подтверждает состояние активной ошибки.

Для типизации ошибок у каждого узла CAN есть два счетчика:

– счетчик ошибок передачи;

– счетчик ошибок приема.

Правила модификации счетчиков в данном учебном пособии не приводятся. Однако обратим внимание на то, что при наличии ошибок счетчики увеличиваются быстрее, чем уменьшаются при приемах или передачах без ошибок.

Узел находится в состоянии пассивной ошибки, если счетчик ошибокпередачии/илисчетчикошибокприемабольшеилиравен128.

Узел отключается от шины, если счетчик ошибок передачи или приема больше или равен 256.

Узел, находящийся в состоянии пассивной ошибки, переходит в состояние активной ошибки, если счетчик ошибок передачи и счетчик ошибок приема меньше или равен 127.

Узлу, который находится в состоянии отключения от шины, разрешается перейти в состояние активной ошибки, с установкой обоих счетчиков в 0 после того, как на шине будут проконтролированы 128 прохождений 11 последовательных битов с логической единицей.

367

Обратите внимание:

1.Величина счетчика ошибки большая, чем 96, указывает на серьезные нарушения на шине. Это можно использовать для проверки состояния шины.

2.Запуск/пробуждение: если в некоторый момент времени активен только один узел и если этот узел передает некоторое сообщение, он не получит подтверждения, обнаруживается ошибка, и происходит повтор сообщения. Из-за этого он может перейти в состояние пассивной ошибки, нонеможетперейтивсостояниеотключенияот шины.

С учетом действия всех механизмов контроля разработчики

оценивают реальное значение возникновения необнаруженной ошибки в CAN-системе, равное 4,7·10–11.

7.8.ИНТЕРВАЛ ПРЕРЫВАНИЙ CAN-КОНТРОЛЛЕРОВ

ИСИНХРОНИЗАЦИЯ

Проектировщики должны учитывать интервал возможных прерываний их CAN-контроллеров при проектировании своих изделий. Поскольку кадр данных в CAN-протоколе короткий (от 0 до 8 байт), скорость поступления прерываний на процессор может быть высокой. В связи с этим следует рассматривать CAN как высокоскоростную сеть. На рис. 7.14 продемонстрированы два передаваемых подряд CAN-кадра данных с минимальным интервалом между кадрами, называемым межкадровым пространством (интервалом межфрейма).

Рис. 7.14. Непрерывная передача кадров в режиме back-to-back

368

В табл. 7.4 показан самый жесткий режим прерывания для случая, если CAN-приемник получает все кадры во время текущей связи (непрерывные кадры в режиме back-to-back).

Таблица 7 . 4

Трафик прерываний для случая приема кадров в режиме back-to-back

Количествобайтовданных

0

1

2

3

4

5

6

7

8

КоличествобитоввCAN-фрейме

47

55

63

71

79

87

95

103

111

Интервалмежду прерываниями

Скорость– 125 кбит/с,

376

440

504

568

632

696

760

824

888

периодбита– 8 мс

 

 

 

 

 

 

 

 

 

Скорость– 250 кбит/с,

188

220

252

284

316

348

380

412

444

период1 бита– 4 мс

 

 

 

 

 

 

 

 

 

Скорость– 500 кбит/с,

94

110

126

142

158

174

190

206

222

период1 бита– 2 мс

 

 

 

 

 

 

 

 

 

Строка «Число битов в CAN-протоколе» в табл. 7.4 принимается с условием, что заполнение дополнительными битами отсутствует (естественно, что такое заполнение увеличило бы время между прерываниями). Видно, что трафик прерываний достаточно интенсивен. На скорости 500 кбит/с прерывания могут происходить каждые 94 мкc при отсутствии информации в кадрах данных.

Большинство микроконтроллеров нижнего уровня не могут поддерживать такую высокую скорость обработки прерываний. Следовательно, нужно находить компромисс между возможностями CAN-контроллера и его стоимостью. Следует выбирать CAN-кон- троллер, который обеспечивает соответствующий уровень предварительной фильтрации. Контроллер должен иметь достаточное время для обработки прикладной программы и успевать обслуживать запросы от CAN-сети, или необходимо выделять отдельный микроконтроллер для обслуживания CAN-приемника.

Следует также помнить, что некоторые CAN-микросхемы маскируют только восемь наиболее значащих битов поля идентификатора (не все 11 битов) и имеют один фильтр маски/соответствия.

369

Рассмотрим параметры синхронизации.

Номинальная скорость передачи информации в битах – число битов за секунду, передаваемое в отсутствии пересинхронизации идеальным передатчиком.

Номинальное время передачи бита равно единице, деленной на номинальную скорость передачи информации. Номинальное время передачи бита можно представить как время, разделенное на отдельные неперекрывающиеся сегменты времени (рис. 7.15):

сегмент синхронизации (SYNC_SEG);

сегмент времени распространения (PROP_SEG);

сегмент TSEG1 (PHASE_SEG1);

сегмент TSEG2 (PHASE_SEG2).

Рис. 7.15. Сегменты номинального времени передачи бита

SYNC SEG – эта часть времени передачи бита, используемая, чтобы синхронизировать различные узлы на шине. Ожидается, что фронт сигнала находится внутри этого сегмента.

PROP SEG – эта часть времени передачи бита, используемая, чтобы компенсировать физическую задержку времени внутри сети. Это удвоенная сумма времени распространения сигнала по шине, входной задержки компаратора и выходной задержки формирователей.

TSEG1 и TSEG2 – эти сегменты используются, чтобы компенсировать ошибки смещения фазы сигнала. Они могут быть удлинены или укорочены пересинхронизацией.

370

Соседние файлы в папке книги