Энциклопедия АСУ ТП Спонсор проекта: Skip Navigation LinksЭнциклопедия АСУ ТП : 2 Промышленные сети и интерфейсы : 2.6 CAN Соспонсор:




Робот BotEyes




Промышленные контроллеры RealLab!

2.6. CAN

CAN (Controller Area Network - "область, охваченная сетью контроллеров") представляет собой комплекс стандартов для построения распределенных промышленных сетей, который использует последовательную передачу данных в реальном времени с очень высокой степенью надежности и защищенности. Центральное место в CAN занимает протокол канального уровня модели OSI. Первоначально CAN был разработан для автомобильной промышленности, но в настоящее время быстро внедряется в область промышленной автоматизации. Это хорошо продуманный, современный и многообещающий сетевой протокол. Начало развития CAN было положено компанией Bosch в 1983 г., первые микросхемы CANконтроллеров были выпущены фирмами Intel и Philipsв 1987 году, в настоящее время контроллеры и трансиверы CANвыпускаются многими фирмами, в том числе Analog Devices, Inc., Atmel Corp. Cast, Dallas Semiconductor, Freescale, Infineon, Inicore Inc., Intel, Linear Technology, Maxim Integrated Products, Melexis, Microchip, National Semiconductor, NXP, OKI, Renesas Technology Corp., STMicroelectronics, Yamar Electronics, Texas Instruments.

В России интерес к CAN за последние годы сильно возрос, однако контроллерного оборудования для CAN в России крайне мало, в десятки или сотни раз меньше, чем для Modbus или Profibus. Среди протоколов прикладного уровня для работы с CAN наибольшее распространение в России получили CANopen и DeviceNet.

В настоящее время CAN поддерживается 11-ю стандартами ISO, в том числе [ISO - Diagnostics].

CAN охватывает два style='color:red'> уровня модели OSI: физический и канальный (табл. 2.7). Стандарт не предусматривает никакого протокола прикладного (7-го) уровня модели OSI. Поэтому для его воплощения в жизнь различные фирмы разработали несколько таких протоколов: CANopen (организации CiA), SDS (фирмы Honeywell Micro Switch Division), CAN Kingdom (фирмы Kvaser), DeviceNet (фирмы Allen-Bradley, ставший Европейским стандартом в 2002 г.) и ряд других [Грибанов - Третьяков].

CAN характеризуется следующими основными свойствами:

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

К недостаткам можно отнести сравнительно высокую стоимость CAN-устройств, отсутствие единого протокола прикладного уровня, а также чрезмерную сложность и запутанность протоколов канального и прикладного уровня, изложенных в стандартах организации CAN in Automation (CiA).

2.6.1. Физический уровень

Физический уровень [Robert - CAN] модели OSI обеспечивает надежную передачу битов, игнорируя содержание передаваемой информации. Основными понятиями физического уровня являются линии передачи (в большинстве случаев это витая пара, хотя допускается использовать плоский кабель или один провод и "корпусную землю", оптоволокно, радиоканал), временные диаграммы, система синхронизации, формат данных, обеспечение достоверности передачи (контрольная сумма, методы кодирования, обнаружение и восстановление ошибок). Характеристики передатчика и приемника стандартом не устанавливаются, поскольку они могут быть выбраны для каждого конкретного случая исходя из требований применения.

Табл. 2.7. CAN в соответствии с моделью OSI

Название уровня

Подуровни CAN

Примечание

7

Прикладной

Стандартом CAN не установлен. Определен стандартами , CANopen, DeviceNet, SDS, CAN, Kingdom и др.

6

Представления

Нет

Нет

5

Сеансовый

Нет

Нет

4

Транспортный

Нет

Нет

3

Сетевой

Нет

Нет

2

Канальный (передачи данных)

LLC

Подтверждение фильтрации, уведомление о перегрузке, управление восстановлением данных

МАС

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

1

Физический

Физический

Обеспечение надежной передачи на уровне байтов (кодирование, контрольная сумма, временные диаграммы, синхронизация). Требования к линии передачи

Примечание: MAC - Medium Access Control - "управление доступом к каналу"; LLC - Logical Link Control - "управление логическими связями".

Электрические соединения в сети CAN

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

Витая пара может быть в экране или без, в зависимости от электромагнитной обстановки. Топология сети должна быть шинной, максимальная длина отвода от шины при скорости передачи 1 Мбит/с не должна превышать 30 см. Длину отвода можно рассчитать по формуле [CAN]

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

Выводы "земли" всех передатчиков сети должны быть соединены (если интерфейсы гальванически не изолированы). При этом разность потенциалов между выводами заземлений не должна превышать 2 В. Гальваническая изоляция рекомендуется при длине линии более 200 м, но не является обязательным требованием стандарта.

Для электрического соединения устройств с CAN интерфейсом стандарт предусматривает два варианта. Первый вариант состоит в применении Т-образных разветвителей, которые состоят из трех 9-штырьковых разъемов D-sub, расположенных в одном корпусе, одноименные контакты которых соединены между собой. Разветвители имеют один разъем со штырьками и два - с гнездами.

Второй вариант требует наличия в каждом CAN-устройстве двух разъемов. Для включения устройства в сеть кабель разрезают и на его концах устанавливают ответные части разъемов. Устройство включается буквально в разрыв линии передачи. Такой подход позволяет наращивать количество устройств и изменять топологию сети путем добавления в разрыв кабеля новых устройств и кабеля с разъемами на концах. Один из разъемов должен быть со штырьками, второй - с гнездами. Подключение устройств к шине без разъемов не допускается. Согласующий резистор должен располагаться внутри разъема, который подключается к концу кабеля. Для присоединения модулей к CAN-шине должен использоваться 9-штырьковый разъем типа D- Sub. На модуле устанавливается разъем с гнездами, на соединяющем кабеле - со штырьками. Цоколевка разъемов показана в табл. 2.8.

Применение разъемов со штырьками или гнездами определяется следующим правилом: при "горячей" замене модулей питание должно оставаться только на разъемах с гнездами; это позволяет избежать случайного короткого замыкания.

Отметим, что в основанном на CAN стандарте CANopen предусмотрено гораздо большее разнообразие вариантов разъемов, в том числе для плоского кабеля, RJ-10, RJ45, разъемный винтовой клеммник, и еще около десяти вариантов специальной конструкции [Cabling]. Допускается применение и других разъемов.

Табл. 2.8. Цоколевка разъема D-sub для CAN

Контакт

Сигнал

Примечание

1

-

Зарезервирован

2

CAN_ L

Сигнал линии

3

CAN_ GND

"Земля"

4

-

Зарезервирован

5

(CAN_ SHLD)

Экран кабеля (не обязательно)

6

(GND)

"Земля" (не обязательно)

7

CAN_ H

Сигнал линии

8

-

Зарезервирован

9

(CAN_ V+)

Внешнее питание (не обязательно, для питания передатчиков с гальванической изоляцией)

Примечание. В каждом модуле контакты 3 и 6 должны быть соединены

Стандарт устанавливает следующие скорости обмена: 1 Мбит/с, 800 кбит/с, 500 кбит/с, 250 кбит/с, 125 кбит/с, 50 кбит/с, 20 кбит/с. CAN-модули могут поддерживать не все скорости, но желательно, чтобы их количество было наибольшим.

Трансивер CAN

Типовая структура трансивера CAN (на примере микросхемы LT1795 фирмы Linear Technology) приведена на рис. 2.20. При подаче уровня логического нуля на вход  (вход является инвертирующим) оба транзистора выходного каскада передатчика открываются и через нагрузку (два резистора по 120 Ом) течет ток, создающий в линии состояние, соответствующее логической единице. При этом потенциал вывода  всегда будет выше, чем вывода   (рис. 2.21). Значения потенциалов, предусмотренные стандартом, приведены в табл. 2.9. При логической единице на входе передатчика его выход переходит в высокоомное состояние и дифференциальное напряжение на линии становится равным нулю.

Отметим, что наличие терминальных резисторов в CAN необходимо не только для согласования линии (как в случае RS-485), но даже для создания пути протекания тока.

Рис. 2.20. Структурная схема трансивера CAN

CAN передатчик имеет очень важное свойство: если один из передатчиков устанавливает в сети логический ноль, а второй - логическую единицу, то это состояние не является аварийным, как в сети на основе интерфейса RS-485, поскольку сквозного тока не возникает. В случае CAN линия остается в состоянии логической единицы. Иначе говоря, логическая единица всегда доминирует над логическим нулем. Поэтому в стандарте CAN используется понятие " доминантное состояние" (доминирующее) состояние линии для обозначения состояния линии с током, и понятие "рецессивное состояние" как противоположное доминантному (рис. 2.21).

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

Вывод  на рис. 2.20 позволяет установить пороговое напряжение для входа  и уровень синфазного напряжения в линии, когда она находится в рецессивном состоянии. Обычно   = 2,5 В. Чтобы установить уровень синфазного напряжения на линии, терминальные сопротивления делят на два по 60 Ом, соединяют их последовательно, а к точке соединения подключают вывод . При симметричной форме импульсов  и  относительно рецессивного состояния уменьшается уровень излучаемых помех, поскольку приращения токов в каждом из проводов витой пары при переключении логических уровней (см. рис. 2.21) оказываются равными по величине, но обратными по знаку и поэтому компенсируют друг-друга.

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

Рис. 2.21. Пояснение понятий рецессивного и доминантного состояния

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

Стандартом предусмотрена возможность подключения к CAN сети любого количества устройств, однако практически оно ограничивается нагрузочной способностью передатчиков (100...200) или задержкой в повторителях.

В CAN-трансивере имеется генератор синхроимпульсов с частотой 16 МГц ±0,1%. Ширина одного бита программно устанавливается величиной от 8 до 25 импульсов синхрогенератора, обычно 8 импульсов при скорости передачи 1 Мбит/с и 16 импульсов при 20 кбит/с. Синхронизация всех узлов сети происходит  в течение первого такта синхронизации. Процедура обработки битов в приемнике обеспечивает программируемую задержку импульсов синхронизации, необходимую для компенсации времени задержки прохождения сигнала в линии связи и сдвига фазы вследствие дрейфа частоты тактового генератора.

Различают два типа синхронизации: жесткую синхронизацию с помощью стартового бита в начале сообщения и ресинхронизацию во время передачи сообщения. С помощью ресинхронизации можно подстроить интервал времени от начала синхронизации до момента, в который измеряется логический уровень принимаемого импульса данных. Интервал подстройки может быть изменен на 1...4 такта.

Для определения логического состояния шины уровни принимаемых сигналов измеряются на расстоянии 6-ти тактов синхрогенератора от переднего фронта импульса (бита) при скорости 1 Мбит/с и на расстоянии 14-ти тактов при скорости 20 кбит/с [CAN] (для сравнения укажем, что в стандартных UART отсчеты берутся посередине импульса). Количество отсчетов может быть 1 или 3 (устанавливается программно). CAN использует синхронную передачу битов. Это повышает пропускную способность канала связи, но требует усложненного процесса синхронизации.

Табл. 2.9. Значения потенциалов на линии передачи CAN

Параметр

Обозначение

Ед. измерения

Мин.

Ном.

Макс

Условие

Для рецессивного состояния шины

Потенциалы на выходе передатчика

CAN_H

В

2,0

2,5

3

Без нагрузки

CAN_L

В

2,0

2,5

3

Дифференциальное напряжение на выходе передатчика

Vdiff

мВ

-500

0

50

Без нагрузки

Дифференциальное напряжение на входе приемника

Vdiff

В

-1

-

0,5

Без нагрузки

Для доминантного состояния шины

Потенциалы на выходе передатчика

CAN_H

В

2,75

3,5

4,5

С нагрузкой

CAN_L

В

0,5

1,5

2,25

Дифференциальное напряжение на выходе передатчика

Vdiff

В

1,5

2

3

С нагрузкой

Дифференциальное напряжение на входе приемника

Vdiff

В

-0,9

-

5

С нагрузкой

Напряжение питания устройств в сети CAN должно составлять от 18 до 30 В. Выходное напряжение на 9-м контакте разъема (внешнее положительное напряжение питания) должно быть от +7 В до +13 В при токе потребления модуля не более 100 мА. Не допускается, чтобы  модули были источниками тока.

CAN использует NRZ кодирование (Non Return-to-Zero - "без возврата к нулю", "потенциальное кодирование"), при котором логическому нулю соответствует низкий уровень напряжения в линии (рецессивное состояние), логической единице - высокий уровень (доминантное состояние). Такой способ имеет следующий недостаток: в случае, когда через линию передачи транспортируется байт, который содержит все единицы (пауз между ними при NRZ кодировании нет), приемник не может отличить этот байт от паузы. Для устранения этой проблемы используется так называемый бит-стаффинг. Он состоит в том, что после каждой последовательности из 5-ти одинаковых символов подряд вставляется противоположный им символ. Например, после 5-ти единиц подряд вставляется логический ноль. Приемник, обнаружив 5 одинаковых символов подряд, удаляет следующий за ними символ, который является битом стаффинга.

Другими свойствами CAN-трансиверов, которые предусмотрены в стандарте, являются:

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

2.6.2. Канальный уровень

В соответствии с [CAN] канальный уровень CAN состоит из двух подуровней: LLC и MAC (см. табл. 2.7). Ниже описаны только главные идеи, положенные в основу их функционирования.

Адресация и доступ к шине

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

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

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

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

Достоверность передачи

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

Для обнаружения ошибок приняты следующие меры:

  • передатчик сравнивает каждый бит на шине с переданным битом для подтверждения правильности передачи на уровне битов;
  • выполняется контроль циклическим избыточным кодом (CRC - Cyclic Redundancy Check);
  • используется бит-стаффинг (см. выше);
  • используется проверка каждого переданного фрейма.

Механизм обнаружения ошибок характеризуется такими свойствами:

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

Вероятность наличия в сообщении необнаруженных ошибок составляет менее .

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

CAN способен различать сбои и отказы. Если произошел отказ, то отказавшее устройство отключается от сети.

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

Передача сообщений

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

Существует 4 различных типа фреймов:

  • DATA FRAME - "фрейм данных" - переносит данные от передатчика к приемнику;
  • REMOTE FRAME - "дистанционный фрейм" (фрейм вызова) - передается одним из устройств для того, чтобы получить от другого устройства данные в формате DATA FRAME с тем же идентификатором, что и в REMOTE FRAME;
  • ERROR FRAME - "фрейм ошибок" - передается любым устройством, обнаружившим ошибку на шине;
  • OVERLOAD FRAME - "фрейм перегрузки" - используется для запроса дополнительной задержки между предыдущими и последующими данными.

Фрейм данных состоит из следующих полей (рис. 2.22): начало фрейма (Start Of Frame), поле арбитража (Arbitration Field), поле контроля (Control Field), поле данных (Data Field), поле циклического избыточного кода (CRC Field), поле уведомления о приеме (ACKnowledgement Field) и поле конца фрейма (End Of Frame). Поле данных может иметь нулевую длину.

Пространство между фреймами представлено рецессивным состоянием шины (которое соответствует высокому уровню на рис. 2.22, поскольку CAN-передатчики инвертируют логические уровни). Только при рецессивном состоянии шины устройство может начать передачу фрейма.

Начало фрейма кодируется одним доминантным битом. Все устройства сети одновременно синхронизируют свои приемники по переднему фронту импульса этого бита.

Формат поля арбитража различается для стандартного и расширенного формата фрейма. В стандартном фрейме поле арбитража состоит из идентификатора длинной 11 бит и RTR-бита (Remote Transmission Request - "запрос дистанционной передачи").

В расширенном формате поле арбитража имеет идентификатор длиной 29 бит, SRR-бит (Substitute Remote Request - "заменяющий RTR-бит"), IDE-бит (Identifier Extension Bit - "бит идентификации расширенного формата") и RTR-бит. Поле идентификатора в расширенном формате состоит из базового идентификатора и расширенного идентификатора. Базовый идентификатор определяет приоритет расширенного фрейма. RTR-бит служит для того, чтобы отличить фрейм данных от фрейма вызова. IDE-бит служит для различения стандартного и расширенного формата фреймов.

Рис. 2.22. Структура фрейма данных

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

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

Поле CRC содержит циклический избыточный код, служащий для обнаружения ошибок во всех предшествующих ему полях фрейма, включая бит начала фрейма. Поле CRC оканчивается CRC-разделителем (рецессивное состояние) длиной в 1 бит. Стандарт CAN устанавливает алгоритм вычисления CRC [Robert]. Биты стаффинга перед вычислением удаляются.

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

Конец фрейма представляет собой последовательность из семи рецессивных бит.

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

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

Фрейм перегрузки состоит из двух полей: флага перегрузки и поля разделителя. Существуют следующие условия, при наступлении которых начинается передача фрейма перегрузки:

  • перегрузка приемника, которая требует увеличить паузу между принимаемыми им фреймами;
  • обнаружение доминантного бита на месте первого и второго бита в поле перерыва паузы между фреймами.
Пауза между фреймами

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

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

Фильтрация сообщений

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

Валидация сообщений

Под валидацией понимается установление факта, что сообщение не содержит ошибок. Момент времени, в который устанавливается факт правильности сообщения, отличается для передатчика и приемника.

Сообщение считается достоверно переданным, если не было ошибок при передаче от начала до конца фрейма. Если сообщение содержало ошибку, оно автоматически повторяется в соответствии с текущими приоритетами.

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

В CAN рассматривается 5 типов ошибок:

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

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

2.6.3. Прикладной уровень: CANopen

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

К сожалению, разработка CAN закончилась на первых двух уровнях модели OSI. Это привело к появлению множества несовместимых между собой протоколов прикладного уровня, среди которых самыми распространенными и поддерживаемыми организацией CiA являются CANopen [CANopen - CANopen] и DeviceNet

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

Рассмотрим наиболее распространенный стандарт прикладного уровня CANopen [CANopen]. Для упрощения применения стандарта вводятся несколько специфических для CANopen понятий. Все функциональные возможности прикладного уровня делятся между так называемыми сервисами (элементами услуг). Программные приложения взаимодействуют между собой путем вызова соответствующих сервисов прикладного уровня. Сервисы обмениваются данными с равными им (одноранговыми) сервисами через CAN-сеть с помощью определенного протокола. Этот протокол описывается в спецификации протокола сервиса.

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

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

Cервисы также делятся на несколько типов сервисов:

  • локальный сервис - который выполняет запрос приложения без взаимодействия с другими сервисами того же ранга;
  • неподтвержденный сервис - который вовлекает в выполнение запроса один или более других одноранговых сервисов. Приложение посылает запрос к локальному сервису. Этот запрос передается далее сервису (сервисам) того же ранга;
  • подтвержденный сервис может вовлечь только один сервисный объект того же ранга. Приложение издает запрос к его локальному сервису. Этот запрос передается сервису того же ранга, который передает его другому приложению как индикацию. Другое приложение  издает ответ, который передается исходному сервису, который передает его как подтверждение запрашивающему приложению;
  •  сервис, инициированный провайдером - вовлекает только локальный сервис.

CANopen предлагает серию стандартизованных коммуникационных механизмов и функций, выполняемых устройствами в сети (профилей). Серия профилей доступна и поддерживается организацией CiA (CAN in Automation); для ее использования не требуется лицензий.

Устройство в сети CANopen представляется состоящим из трех частей:

  • коммуникационный интерфейс (к шине CAN) и программный протокол обмена;
  • словарь объектов;
  • интерфейс к устройствам ввода-вывода и прикладная программа.

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

Наиболее важной частью устройства в CANopen является словарь объектов. Под объектами понимаются типы данных, профили устройств, коммуникационные объекты, регистр ошибок. Каждый объект в словаре адресуется 16-битным индексом.

В CANopen используются следующие типы данных: Boolean, Integer, UnsignedN, Float, Date, Time, которые имеют общепринятый смысл. Имеется также несколько сложных типов данных для PDO и SDO параметров ( Process Data Object - объект данных технологического процесса и Service Data Object - объект сервисных данных).

Объекты PDO и SDO используются для передачи данных. Сообщения PDO позволяют передавать данные в реальном времени. Существует два типа объектов PDO. Первый из них выполняет передачу данных ( Transmit-PDO или TPDO), второй - прием данных (Receve- PDO или RPDO). Коммуникационные параметры PDO определяют его коммуникационные возможности и описываются в словаре объектов.

Объект SDO обеспечивает доступ к словарю объектов. SDO может использоваться также для передачи групп данных от клиента к серверу и наоборот.

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

Коммуникационные модели

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

В CANopen используют три типа взаимодействий между передающим и принимающим устройством:

  • ведущий/ведомый;
  • клиент/сервер;
  • производитель/потребитель.

2.6.4. Электронные спецификации устройств CANopen

Поскольку устройства, используемые в сети, являются программируемыми, перед их включением в сеть необходимо задать параметры, необходимые для их коммуникаций с сетью и функционирования. CANopen устанавливает для этого стандартизованный метод. Метод предполагает наличие электронного описания устройств в текстовом формате, для обработки которого достаточно несложного компилятора. CANopen определяет формат EDS (Electronic Data Sheet - "электронный список параметров"), который описывает конфигурацию и параметры устройств, в том числе контроллеров с модульной архитектурой.

EDS поддерживается и поставляется производителем устройства. В противном случае используется EDS "по умолчанию", общий для определенного класса устройств, например, модулей аналогового ввода.

EDS является текстовым файлом, использующим ASCII-коды (набор символов по стандарту ISO 646). Длина строки файла - 255 символов, строки должны оканчиваться символами CR или LF.

Файл содержит несколько секций:

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

Полное описание структуры EDS файла дано в стандарте [CAN].


© RLDA Ltd. info@rlda.ru  Рейтинг@Mail.ru Спонсоры проекта: , а также