Главная страница
qrcode

ВКР Магистра. Программный сложно-функциональный блок


НазваниеПрограммный сложно-функциональный блок
Дата08.10.2019
Размер2.06 Mb.
Формат файлаpdf
Имя файлаВКР Магистра.PDF
оригинальный pdf просмотр
ТипПрограмма
#65602
страница2 из 8
Каталог
1   2   3   4   5   6   7   8
2.1. Описание протокола взаимодействия программного сложно-
функционального модуля управления и телеметрии с системным
контроллером
2.1.1. Физический уровень протокола
Для взаимодействия каждого СФБУТ с системным контроллером используется интерфейс I²C. Вид подключения СФБУТ к BMC представлен на рисунке 2.3.
Рисунок 2.3

Подключение СФБУТ к BMC.
19
Интерфейс I²C предполагает использование двух линий передачи, подтянутые к напряжению питания: линия данных (SDA-serial data) и линия тактов (SCL-serial clock). Все СФБУТ подключены к одной шине I²C.
Любой элемент, инициирующий передачу, является мастером, любой адресуемый элемент является подчиненным. СФБУТ взаимодействует с системным контроллером, как в режиме мастера, так и в режиме подчиненного, т.е. в исходном состоянии инициирующей стороной является системный контроллер (BMC - мастер), а в случае превышения пороговых показаний датчиков, инициирующей стороной является СФБУТ (BMC - подчиненный). Ведущее устройство (работающее в режиме мастера), генерирует тактовый сигнал на линии SCL, тем самым начинает взаимодействие с ведомым устройством (работающим в режиме подчиненного). Каждому устройству, работающему в режиме подчиненного необходим уникальный адрес. Максимальное количество устройств, подключенное к шине I²C, может достигать 127, т.к. поле адреса занимает 7 бит. [5]
Обе линии SCL и SDA - двунаправленные. Начало и конец передачи по шине I²C происходит при определенном положении сигналов на линиях SDA и SCL (―СТАРТ‖ условие и ―СТОП‖ условие соответственно). ―СТАРТ‖ условие начинается, когда сигнал на линии SCL находится в высоком положении, а сигнал на линии SDA изменяется с высокого положения на низкое.
СТОП условие происходит при высоком положении сигнала на линии SCL и изменении сигнала на линии SDA с низкого положения на высокое. Условия "СТАРТ‖ и ―СТОП‖ показаны на рисунке 2.4.
Рисунок 2.4

Условия и СТОП.
20
После выставления ―СТАРТ‖ условия линия считается занятой, и другое устройство, работающее в режиме мастера на этой же шине, сможет использовать ее только после ―СТОП‖ условия. Информация по I²C передается частями по 8 бит. Данные передаются, начиная со старшего бита (MSB). Изменение состояния на линии SDA происходит только при низком состоянии на линии SCL. (Рисунок 2.5)
Рисунок 2.5

Изменение состояния на линии SDA.
После передачи 8 бита от ведомого устройства должно последовать подтверждение (ACK-acknowledge). Подтверждение происходит при отпускании линии SDA ведомым устройством, работающим в режиме подчинѐнного (на рисунке 2.6 выделено серым цветом).
Рисунок 2.6

Вид бита подтверждения.
После подтверждения происходит передача следующих 8 бит. Если подтверждение не последовало, ведущее устройство пересылает последние 8 бит еще раз.
В случае если два или более устройства пытаются начать передачу данных возникает вопрос приоритета. Этот вопрос решается процессом распределения приоритетов (Арбитраж) которое заключается в том, что все ве-
21 дущие устройства после вывода данных на линию SDA контролируют состояние на общей линии. На рисунке 2.7 показано как ведущий А пытается передать данные, но проверяя линию SDA, видит, что она уже занята ведущим
B и приостанавливает передачу. [6]
Рисунок 2.7

Процесс распределения приоритетов.
СФБУТ использует ограниченные возможности I²C:

Используется только транзакции в режиме ―мастерной записи‖
(R/W биты на I²C адресах ведомых устройств всегда 0);

Невозможно использование 10-битной адресации;

В одной транзакции может быть использован только один адрес ведомого устройства;

Не используются повторные старты. Повторные старты определяются в спецификации I²C как средство изменения направления передачи на шине во время передачи;

Механизм подтверждения I²C (ACK бит) указывает только принятие байта ведомым устройством и не приносит никакой дополнительной информации о целостности или правильности полученных данных.
22
2.1.2. Логический уровень протокола
СФБУТ принимает запросы и команды от системного контроллера по последовательной шине I²C. Вид пакета запроса, принимаемого СФБУТ, представлен на рисунке 2.8.
Рисунок 2.8 – Вид пакета запроса, принимаемого СФБУТ.
Пакет состоит из заголовка, длинной 5 байт, основной части передаваемых данных, длина которых может варьироваться и контрольной суммы, длиной 8 бит. Максимальная поддерживаемая длина поля данных 255 байт.
Заголовок состоит из 5 полей, каждое поле по 8 бит. Вид заголовка пакета, поступающего на СФБУТ, представлен на рисунке 2.9.
Рисунок 2.9

Вид заголовка пакета запроса, принимаемого СФБУТ.
Поля "Адрес устройства" и "Адрес системного контроллера" необходимы для адресации по шине I²C и определяются в соответствии с размещением устройств в слотах. Поле "№ запроса" соответствует номеру ответа в пакете ответа и необходимо для повторной передачи пакета при его потере.
Байт "Тип запроса/команда" содержит код команды для функциональных узлов. Поле ―Номер датчика/объем пакета данных‖ содержит либо номер датчика, с которого необходимо передать информацию, либо объем пакета данных, передаваемых для перепрограммирования энергонезависимой памяти.
23
После получения ответов от этих функциональных узлов формируется пакет ответа для системного контроллера, вид которого показан на рисунке 2.10.
Общая длина пакета ответа соответствует 8 байтам.
Рисунок 2.10

Вид пакета ответа, передаваемого от СФБУТ.
Заголовок сообщения ответа состоит из 4 байт. Вид заголовка пакета ответа, передаваемого от СФБУТ к BMC, представлен на рисунке 2.11.
Рисунок 2.11

Вид заголовка пакета ответа, передаваемого от СФБУТ.
Первые 8 бит заголовка занимает поле ―I²C системного контроллера‖
(RD/WR). Это адрес системного контроллера, от которого, было принято сообщение запроса, и на который посылается сообщение ответа от СФБУТ.
Поле "№ ответа" соответствует номеру запроса в пакете запроса, приходящего от BMC. Если на BMC поступит сообщение со значением в поле
―№ ответа‖ не соответствующее значению в поле ―№ запроса‖ в заголовке пакета, приходящего от BMC, то BMC повторит запрос с этим № запроса.
Максимальный объем данных, передаваемый в пакете ответа 3 байта.
Каждый байт данных также сопровождается подтверждением от BMC.
СФБУТ производит мониторинг подключенных к нему датчиков, при превышении какого-либо датчика заданного порогового значения, СФБУТ становится инициирующей стороной передачи и формирует сообщение о событии. Вид пакета сообщения о событии представлен на рисунке 2.12.
24
Рисунок 2.12

Вид пакета сообщения о событии, передаваемого от СФБУТ.
Вид заголовка сообщения о событии представлен на рисунке 2.13.
Рисунок 2.13

Вид заголовка сообщения о событии, передаваемого от СФБУТ.
Вид заголовка сообщения о событии практически полностью соответствует виду сообщения ответа, за исключением поля ―№ события‖.
Поле ―№ события‖ необходимо для повторной передачи пакета события при его потере. При каждом событии значение поля ―№ события‖ инкрементируется.
2.1.3. Циклический избыточный код
Для проверки целостности, передаваемых между СФБУТ и BMC данных используется контрольная сумма. Контрольная сумма представляет собой значение, рассчитанное на основе кодируемого сообщения.
Рассчитанное значение добавляется к передаваемым данным. Устройство на принимающей стороне знает алгоритм вычисления контрольной суммы: следовательно, прихороших характеристиках контрольной суммы ошибка в сообщении приведѐт к изменению его контрольной суммы. Если исходная и вычисленная суммы не равны между собой, принимается решение о недостоверности принятых данных, и запрашивается повторная передача пакета. [7]
25
Основная идея вычисления контрольной суммы состоит в представлении сообщения в виде двоичного числа, делении его на другое фиксированное двоичное число (порождающий полином), полученный остаток является контрольной суммой передаваемого сообщения. Получив сообщение, приемник может выполнить аналогичное действие и сравнить полученный остаток с "контрольной суммой" (переданным остатком).[8]
Одним из основных параметров контрольной суммы является ее порождающий полином. Также важна степень порождающего полинома, которая определяет, сколько бит необходимо использовать для вычисления значения контрольной суммы. Самые распространенные полиномы — это полиномы 8- 16 -32 степени. Степень полинома — это действительная позиция старшего бита, например, полином 11100 это полином 4 степени. [9]
Невозможность применения машинных инструкций деления, имеющиеся на вычислительных устройствах, обусловлено тем, что для ее реализации требуется очень большое количество используемых логических элементов
Поэтому для вычисления контрольной суммы используют следующий принцип вычисления контрольной суммы: из принятого сообщения берется старший бит первого слова. Если этот бит, равен ―1‖ то входная последовательность сдвигается влево на один разряд и выполняется операция XOR (сложение по модулю 2) с порождающим полиномом. Если старший бит поля имеет значение ―0‖, то после сдвига операция сложение по модулю 2 не выполняется. После сдвига старый старший бит теряется, а младший бит освобождается — его значение устанавливается равным нулю. На место младшего бита загружается очередной бит из файла. Операция повторяется до тех пор, пока не загрузится последний бит файла. После прохождения всего файла, в слове остается остаток, который и является контрольной суммой.
[10]
Для протокола взаимодействия СФБУТ и BMC был выбран порождающий полином CRC-8 (последовательность: 100000111), как самый не за-
26 тратный в плане использования логических элементов полином. Таким образом, под контрольную сумму отводится 8 бит в конце сообщения.
Схема формирования контрольной суммы представлена на рисунке 2.14.
Рисунок 2.14

Схема формирования контрольной суммы в СФБУТ.
Рассмотрим пример расчета CRC для последовательности 1010 (0xA).
На вход схемы формирования контрольной суммы последовательно приходят биты исходной последовательности. Все регистры находятся в нулевом состоянии.
Так как первым приходит единица, исходное значение 00000000 сдвигается на один бит и производит вычисление суммы по модулю 2 (XOR) с порождающим полиномом, в результате получается последовательность
00000111. Следующий бит входной последовательности 0, поэтому вычисленная до этого последовательность 00011011 сдвигается на один бит влево, но вычисление суммы по модулю 2 с порождающим полиномом не производится. Ниже представлен пример расчета:
На вход [1]; 00000000<<1; 00000000 XOR 100000111 = 00000111;
На вход [0]; 00000111<<1; 00001110= 00001110;
На вход [1]; 00001110<<1; 00011100 XOR 100000111 = 00011011;
На вход [0]; 00011011<<1; 00110110= 00110110.
Таким образом, после вычисления прохождения всех бит исходной последовательности формируется остаток, который и является контрольной суммой (00110110).
27
2.1.4. Команды
При взаимодействии BMC с СФБУТ используются три типа сообщений:

Сообщение запроса, приходящее от BMC;

Сообщение ответа, которое формирует СФБУТ;

Сообщение о событии, инициатором которого является СФБУТ.
В свою очередь сообщение запроса, приходящее от BMC может быть, как сообщение запроса датчиков, так и сообщение на перепрограммирование энергонезависимой внешней памяти. Команды, приходящие от системного контроллера находящиеся в поле ―Тип запроса‖ сведены в таблицу 1.
Таблица 1

Команды, в сообщении от системного контроллера
Значение поля: Тип запроса/команда
Команда
0x4
Запрос датчиков
0x8
Запись в первый модуль памяти
0x9
Запись во второй модуль памяти
0xA
Запись в третий модуль памяти
0xB
Запись в четвертый модуль памяти
В таблице 2 представлены различные значения полей заголовка: ―Тип команды‖ и трех информационных полей при различных типах ответа
СФБУТ к BMC.
28
Таблица 2

Значения полей заголовка: ―Тип команды‖ и трех информационных полей при различных типах ответа СФБУТ к BMC
Тип ответа
Значение поля
―Тип команды‖
―данные‖
(первый байт)
―данные‖
(второй байт)
―данные‖
(третий байт)
Сообщения ответа при запросе данных с датчиков
Ответ на запрос датчика (порог не превышен), при первом режиме подключения датчика
0x00
Номер датчика
0x00 0x00
Ответ на запрос датчика (порог превышен) при первом режиме подключения датчика
0x01
Номер датчика
0x00 0x00
Ответ на запрос датчика (порог не превышен), при втором режиме подключения датчика
0x00
Номер датчика
Старшие 8 бит значения с датчика
Младшие 8 бит значения с датчика
Ответ на запрос датчика (порог превышен), при втором режиме подключения датчика
0x01
Номер датчика
Старшие 8 бит значения с датчика
Младшие 8 бит значения с датчика
Сообщение о событии, первом режиме подключения датчика
0x02
Номер датчика
0x00 0x00
29
Тип ответа
Значение поля
―Тип команды‖
―данные‖
(первый байт)
―данные‖
(второй байт)
―данные‖
(третий байт)
Сообщение о событии, при втором режиме подключения датчика
0x02
Номер датчика
Старшие 8 бит значения с датчика
Младшие 8 бит значения с датчика
Сообщение о несовпадении контрольной суммы
0x03 0x00 0x00 0x00
Сообщения ответа при перепрограммировании энергонезависимой памяти
Сообщение об успешной записи
0x04
Количество записанных байт
0x00 0x00
Сообщение об ошибке памяти
(с номером памяти)
0x08
Номер модуля памяти
0x00
Количество правильно записанных байт
2.2. Описание функциональных модулей, входящих в состав блока
управления и телеметрии
Согласно описанию в разделе 2, в состав СФБУТ входят три функциональных узла:

Узел обмена данными с системным контроллером (ОДСК);

Узел телеметрии и обмена данными с модулем датчиков
(ТОДМ);

Узел реконфигурации программного обеспечения (РПО).
Рассмотрим каждый функциональный узел, входящий в состав СФБУТ более подробно.
Таблица 2

Продолжение
Таблица 2 - Продолжение
Продолжение таблицы 2
30
2.2.1. Функциональный узел обмена данными с системным
контроллером (ОДСК)
В зависимости от команды входящий в СФБУТ функциональный узел обмена данными с системным контроллером принимает решение о включении и передачи необходимой информации к ТОДМ или РПО. ТОДМ или
РПО в свою очередь передают запрашиваемую информацию к ОДСК. После чего ОДСК формирует ответ к системному контроллеру. Ответ ОДСК формирует в соответствии с протоколом, описанным в подразделе 2.1.
2.2.2. Функциональный узел телеметрии и обмена данными с
модулем датчиков (ТОДМ)
Функциональный узел телеметрии и обмена данными с модулем датчиков с определенным интервалом времени производит выборку показаний всех датчиков модуля. Состав датчиков определяется устройством и может быть уникальным для каждого типа и версии устройства. При превышении одним из датчиков порогового значения, выставляет флаг события и передает его и необходимые данные (такие как номер события, номер датчика и значение на датчике) узлу ОДСК, который в свою очередь формирует сообщение о событии для передачи в BMC.
В ТОДМ реализована поддержка двух режимов работы:

Первый режим: сигнал с датчиков приходит в бинарном виде после компаратора (1 - есть превышение, 0- превышение отсутствует); Считается основным режимом;

Второй режим: Сигнал со значениями датчиков приходит в оцифрованном виде.
На вход ТОДМ от ОДСК поступает единственный сигнал номера датчика N_sens. ТОДМ имеет три информационных сигнала dat_1- dat_3, подключенных к ОДСК. При получении узлом ОДСК сообщения на запрос дат-
31 чиков, ОДСК передает ТОДМ номер датчика (N_sensor), ТОДМ выводит номер датчика в первый информационный сигнал dat_1, и, если выбран второй режим работы, значение этого датчика во второй и третий информационные сигналы: dat_2, dat_3. При выборе первого режима подключения датчика второй и третий информационный сигналы остаются равны нулю.
Вариант включения задается параметром Sensormode. Если данные с датчика будут поступать от компаратора, выбирается режим Sensormode =0, если с АЦП, то Sensormode =1 соответственно. Вид выводов модуля ТОДМ представлен на рисунке 2.15.
Рисунок 2.15

Вид выводов модуля ТОДМ.
В зависимости от подключения ТОДМ сигнал с датчиков приходит либо на входы In1-In8, при подключении датчиков с компаратором или на входы In1_a–In8_a при подключении датчиков через АЦП. Начало опроса датчиков происходит непосредственно при включении модуля СФБУТ, вне зависимости от команды, приходящей от ОДСК. При поступлении команды на запрос датчика, на СФБУТ ОДСК передает узлу ТОДМ сигнал с номером датчика, в свою очередь ТОДМ, передает номер датчика, значение с датчика или его состояние (превышение присутствует / отсутствует). Вне зависимо-
32 сти от режима работы ТОДМ анализирует поступающие сигналы от датчиков. При превышении порога формирует флаг события, который передается в
ОДСК. При каждом событии значение сигнала ―N_event‖ инкрементируется.
Рассмотрим каждый из режимов более подробно.
При первом режиме подключения, датчики подключены к компаратору, к другому входу компаратора подано пороговое значение датчика, сигнал с компаратора поступает на ТОДМ. В случае превышения датчиком значения, установленного компаратором на ТОДМ, приходит бинарный сигнал, 1- есть превышение 0- нет превышения.
Значения информационных сигналов dat1-dat3 при первом режиме работы представлены в таблице 3.
Таблица 3

Значения информационных сигналов dat_1-dat_3
Информационный сигнал
Значение dat_1
Номер датчика dat_2 0x00 dat_3 0x00
При сообщении о событии, ОДСК формирует такой же пакет, как и при ответе, единственным отличием будет поле заголовка ―Тип запроса/ команда‖. В этом поле будет выставлена команда события.
При втором режиме подключения датчиков, сигнал с датчиков оцифровывается на АЦП, после чего оцифрованные значения поступают на ТОДМ, в случае превышения, ТОДМ формирует сигнал события и передает его вместе со значением датчика к ОДСК. В этом режиме порог для датчиков можно изменять программно, во время функционирования модуля. Значения информационных сигналов dat1-dat3 при втором режиме работы представлены в таблице 4.
33
Таблица 4

Значения информационных сигналов dat1-dat3
Информационный сигнал
Значение dat_1
Номер датчика dat_2
Старшие 8 бит значения с датчика dat_3
Младшие 8 бит значения с датчика
На рисунке 2.16 представлена временная диаграмма работы модуля
ТОДМ при втором режиме подключения датчиков (с использованием АЦП), при одновременном возникновении превышения порогового значения сигналов In1_a и In8_a.
Рисунок 2.16

Диаграмма работы модуля ТОДМ при втором режиме подключения датчиков.
При превышении порога формируются флаги Flag1 и Flag8, но флаг события возникает только при совпадении значения счетчика cnt с номером датчика. Таким образом, по флагам о событии event СФБУТ будет формировать сначала сообщение о событии с информацией, о первом датчике, после чего сформирует сообщение о событии с информацией, о восьмом датчике.
При превышении порога формируются флаги Flag1 и Flag8, но флаг события возникает только при совпадении значения счетчика cnt с номером датчика. Таким образом, по флагам о событии event СФБУТ будет формиро-
34 вать сначала сообщение о событии с информацией, о 1-ом датчике, после чего сформирует сообщение о событии с информацией, о 8-ом датчике.
1   2   3   4   5   6   7   8

перейти в каталог файлов


связь с админом