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

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

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

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

7.6. КАДРЫ ПЕРЕДАЧИ И ИХ ХАРАКТЕРИСТИКА

7.6.1. Виды кадров передачи

Выделяют следующие виды кадров передачи:

кадр данных (data frame) – содержит данные, передаваемые передатчиком приемнику;

кадр удаленного запроса передачи (remote frame) – служит для запроса на передачу кадра данных с тем же идентификатором;

кадр перегрузки (overload frame) – обеспечивает промежуток (дополнительную задержку) между предшествующим и последующим кадрами данных или запроса;

кадр ошибки (error frame) – передается узлом, обнаружившим в сети ошибку.

Кадры данных и кадры запроса отделяются от предшествующих кадров межкадровым промежутком.

Формат CAN-кадра. Стандартный CAN-протокол(версия2.0A) поддерживаетформат сообщения с 11-разряднымиидентификаторами, т.е. в системе может быть 2048 сообщений (стандартное сообщение

BasicCAN) (табл. 7.2).

Расширенный CAN-протокол (версия 2.0B) поддерживает 11- и 29-битовый формат идентификаторов – до 536 млн сообщений (расширенное сообщение FullCAN) (табл. 7.3).

Большинство контроллеров версии 2.0A передают и принимают только сообщения стандартного формата, хотя часть из них может только получать сообщения расширенного формата.

351

 

 

Таблица 7 . 2

Базовый формат кадра данных

 

 

 

Поле

Длина

Описание

(вбитах)

 

 

Началокадра

1

Сигнализируетначалопередачикадра

Идентификатор

11

Уникальныйидентификатор

Запроснапередачу(RTR)

1

Долженбытьдоминантным

Битрасширенияиденти-

1

Долженбытьдоминантным

фикатора(IDE)

 

 

Зарезервированныйбит(r0)

1

Резерв

Длинаданных(DLC)

4

Длинаполяданныхвбайтах(0–8)

Поледанных

0–8 байт

Передаваемыеданные(длинаполяDLC)

Контрольнаясумма(CRC)

15

Контрольнаясуммавсегокадра

Разграничитель

1

Долженбытьрецессивным

контрольнойсуммы

 

 

Промежуток

1

Передатчикшлетрецессивныйбит,

подтверждения(ACK)

приемниквставляетдоминанту

 

Разграничитель

1

Долженбытьрецессивным

подтверждения

 

 

Конецкадра(EOF)

7

Долженбытьрецессивным

 

 

Таблица 7 . 3

Расширенный формат кадра данных

 

 

 

Поле

Длина

Описание

(вбитах)

 

 

Началокадра

1

Сигнализируетначалопередачикадра

ИдентификаторA

11

Перваячастьидентификатора

Подменазапроса

1

Долженбытьрецессивным

напередачу(SRR)

 

 

Битрасширения

1

Долженбытьрецессивным

идентификатора(IDE)

 

 

ИдентификаторB

18

Втораячастьидентификатора

Запроснапередачу(RTR)

1

Долженбытьдоминантным

Зарезервированныебиты

2

Резерв

(r1 иr0)

 

 

Длинаданных(DLC)

4

Длинаполяданныхвбайтах(0–8)

Поледанных

0–8 байт

Передаваемыеданные(длинаполяDLC)

352

 

 

Окончание табл. 7 . 3

 

 

 

Поле

Длина

Описание

(вбитах)

 

 

Контрольнаясумма(CRC)

15

Контрольнаясуммавсегокадра

Разграничитель

1

Долженбытьрецессивным

контрольнойсуммы

 

 

Промежуток

1

Передатчикшлетрецессивныйбит,

подтверждения(ACK)

приемниквставляетдоминанту

 

Разграничитель

1

Долженбытьрецессивным

подтверждения

 

 

Конецкадра(EOF)

7

Долженбытьрецессивным

Контроллеры версии 2.0B могут посылать и получать сообщения в обоих форматах. Здесь поле битов идентификатора состоит из двух частей:

первая часть (основная часть идентификатора) имеет длину 11 бит для совместимости с версией 2.0A;

вторая часть имеет длину 18 бит (расширение идентификатора), что дает общую длину идентификатора 29 бит.

Первые 7 бит идентификатора не должны быть все рецессивными.

Идентификатор получается путем объединения частей A и B. Для различения форматов используются биты Identifier Exten-

sion (IDE) и Substitute Remote Request (SRR) в поле арбитража.

7.6.2. Кадр данных

Кадр данных состоит из семи различных полей (рис. 7.6): стартового поля (SOF), поля арбитража (Arbitration Field), управляющего поля (Control Field), поля данных (Data Field), поля контрольной суммы (СRC), поля подтверждения (ACK Field), поля конца фрейма (EOF).

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

353

Рис. 7.6. Кадр данных: а – расширенный фрейм; б – стандартный фрейм

354

Начало кадра (SOF – Start of Frame) находится в начале кадра данных или кадра удаленного запроса данных и содержит один доминирующий бит (логический ноль). Узлу разрешено начинать передачу только при свободной шине. Все узлы должны быть синхронизированы по началу фронта, вызванного полем «Начало кадра» узла, начавшего работу первым.

Поле арбитража (рис. 7.7) содержит 11-битовый идентификатор и RTR-бит, показывающий, является данный кадр кадром данных или кадром удаленного запроса (в кадре данных RTR-бит – 0; внутри кадра удаленного запроса данных – 1).

Биты идентификатора должны быть переданы в порядке от ID10 до ID4. Самый старший бит – ID0. Все семь старших битов не должны быть битами с логической единицей.

Рис. 7.7. Поле арбитража

Управляющее поле контроля (рис. 7.8) содержит 6 бит, из ко-

торых 4 бита (DLC0–DLC4) составляют поле данных DLC (Data Length Code), показывающее количество байтов данных, которое будет передаваться в поле данных. Два других бита 0 зарезервированы для следующих редакций протокола. Допустимые значения DLC – 0–8. Другие значения использоваться не могут.

Поле СRC (рис. 7.9) обеспечивает механизм избыточного контроля по четности передаваемых данных. Для вычисления CRC (CRC Sequence) полином, коэффициенты которого задаются потоком, состоящим из значений, бит полей «Начало кадра», «Поле арбитража»,

355

Рис. 7.8. Управляющее поле контроля

Рис. 7.9. Поле СRC (CRC Field)

«Поле контроля», «Поле данных» (если имеется) (самые младшие 15 коэффициентов полинома = 0), должен быть разделен на полином следующего вида:

x^15 + x^14 + x^10 + x^8 + x^7 + x^4 + x^3 + 1.

Остаток этого полиномиального деления есть CRC-последо- вательность, передаваемая по шине.

CRC-разделитель (CRC Delimiter) всегда равен логической единице.

Поле подтверждения (рис. 7.10) содержит участки ACK Slot (1 бит) – область подтверждения – и ACK Delimiter (1 бит) – разделитель подтверждения. Передающий узел посылает по одному рецессивному биту на каждом из участков (два бита 1). Приемник, если он принял сообщение без сбоев, устанавливает на линии доминирующий бит (0) в поле области подтверждения. Приемник, полу-

356

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

Рис. 7.10. Поле подтверждения

Разделитель подтверждения (ACK Delimiter) должен быть логической единицей. Следовательно, область подтверждения окружена битами с логической единицей (CRC-разделитель и разделитель подтверждения).

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

7.6.3. Кадр удаленного запроса данных

Узел может инициализировать передачу кадра данных другим узлом, посылая кадр удаленного запроса данных (Remote Frame). Последний совпадает с кадрами данных стандартного или расширенного формата, за исключением когда:

в поле RTR рецессив вместо доминанты;

отсутствует поле данных.

357

Этот кадр состоит из шести полей: «Начало кадра», «Поле арбитража», «Поле контроля», «Поле CRC», «Поле подтверждения», «Конец кадра».

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

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

7.6.4. Кадр ошибки

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

Рис. 7.11. Кадр ошибки

Для корректного завершения кадра ошибки узлу в состоянии пассивной ошибки может быть необходим доступ к шине, поэтому шина должна быть свободной по крайней мере три времени передачи бита. Следовательно, шинанедолжнабытьзагруженана100 %.

Существуют две формы флага ошибки (Error Flag): активная и пассивная. Активный флаг ошибки состоит из шести последовательных битов с логическим нолем. Пассивный флаг ошибки состоит из шести последовательных битов с логической единицей, если они не перезаписаны битами с логическим нолем других узлов.

358

Узел в состоянии активной ошибки при обнаружении ошибки передает активный флаг ошибки. Форма флага ошибки нарушает закон кодирования битового потока методом разрядного заполнения (см. раздел «Кодирование битового потока»). Вследствие этого все узлы обнаруживают условие ошибки и начинают передавать флаг ошибки. В результате последовательность битов с логическим нолем, контролируемая на шине, является суперпозицией флагов ошибок отдельных узлов. Общая длина этой последовательности – от 6 до 12 бит с логическим нолем.

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

Разделитель ошибки (Error Delimiter) состоит из 8 бит с логи-

ческой единицей. После передачи флага ошибки каждый узел посылает биты с логической единицей и контролирует шину, пока не обнаружит бит с логической единицей. Впоследствии он начинает передавать 7 бит с логической единицей.

7.6.5. Кадр перегрузки

Кадр перегрузки (Overload Frame) содержит два битовых поля (рис. 7.12): флаг перегрузки и разделитель перегрузки.

Имеются два вида перегрузки, оба из которых приводят к передаче кадра перегрузки:

1)внутреннее состояние приемника, которое требует задержки следующего кадра данных или кадра удаленного запроса данных;

2)обнаружение бита с логическим нолем в течение поля пе-

рерыва (гл. 7.6.6).

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

359

Рис. 7.12. Кадр перегрузки

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

Флаг перегрузки (Overload Flag) состоит из 6 бит с логическим нолем. Формат соответствует активному флагу ошибки. Форма флага перегрузки нарушает фиксированную форму поля перерыва, поэтому другие узлы также обнаруживают состояние перегрузки и, в свою очередь, начинают передавать флаг перегрузки.

В случае обнаружения бита с логическим нолем в течение третьего бита перерыва некоторые узлы не будут корректно интерпретировать флаг перегрузки, первый (из шести) бит с логическим нолем будет принят за поле «Начало кадра». Шестой бит флага перегрузки с логическим нолем нарушает закон кодирования битового потока методом разрядного заполнения.

Разделитель перегрузки (Overload Delimiter) состоит из 8 бит слогической единицей. Разделитель перегрузки имеет такую же форму, как и разделитель ошибки. После передачи флага перегрузки узел контролирует шину, пока не обнаружит бит с логической единицей. Вэтой точке времени все узлы уже закончили передавать флаг перегрузкииначинаютпередавать7 битслогической единицей.

7.6.6. Межкадровое пространство

Кадры данных и кадры удаленного запроса данных отделяются от предшествующих кадров любого типа (кадра данных, кадра удаленного запроса данных, кадра ошибки, кадра перегрузки). Это раз-

360

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