С – системное ПО;
П – прикладное ПО;
А – код модуля (возможно частично) генерируется автоматически Конструктором А3 на основе схемы межзадачного обмена или других настроек;
* – код модуля модифицирован для данного проекта;
+ – код модуля заново разработан.
Описание структуры межзадачного обмена всех микропроцессоров для Конструктора А3 приведено в
Функции микропроцессора PIC_SPT:
- Обмен с теплосчетчиком по интерфейсу RS-232;
- Обмен с микропроцессором PIC_Master по интерфейсу I2С (выполнение команд, принятых микропроцессором PIC_Master с ПК, поддержка информационного обмена между ПК и теплосчетчиком);
- Управление силовыми устройствами (по командам с PIC_Master).
Список всех модулей, входящих в состав ПО микропроцессора PIC_SPT представлен в таблице 3.2.
Таблица 3.2 – Список модулей, входящих в состав ПО микропроцессора PIC_SPT
Модуль | Тип ПО | Описание |
Main. asm | СА | Главный модуль проекта. |
CmdDisp. inc | П+ | Диспетчер команд, пришедших от PIC_Master |
Define. inc | СА | Модуль констант и объявлений. |
Init. inc | СА | Процедуры начальной инициализации микропроцессора |
Kernvar. inc | СА | Модуль объявления переменных ядра. |
Macros. inc | С* | Набор макросов, используемых ядром мОСРВ и библиотечными модулями. |
Procs. inc | С* | Набор стандартных процедур, используемых ядром мОСРВ и библиотечными модулями. |
Resetbufsbytos. inc | П+ | Сброс буферов межзадачного обмена по условию |
SI2C. inc | С | Обмен данными по интерфейсу I2С в режиме слейв с PIC18, работающим в режиме мастер |
SlaveCMD. inc | П+ | Выполнение команд пользователя (пришедших с ПК), предназначенных для выполнения микропроцессором PIC_SPT |
TaskCond. inc | СА | Условия запуска задач в мОСРВ. |
Usart. inc | С* | Обмен данными по интерфейсу RS-232 с внешним устройством с формированием пакета по таймауту |
Userdef. inc | СА | Модуль констант и объявлений пользователя. |
Функции микропроцессора PIC_Danf:
- Обмен с терморегулятором ECL Comfort 300 по интерфейсу RS-232;
- Обмен с процессором PIC_Master по интерфейсу I2С (выполнение команд, принятых процессором PIC_Master с ПК, поддержка информационного обмена между ПК и терморегулятором).
Состав модулей ПО микропроцессора PIC_Danf аналогичен составу модулей PIC_SPT. Отличие модулей в различных константах и определениях.
3.1.3 Обмен данными
3.1.3.1 Обмен данными между контроллером и ПК
![]() |
Структурная схема обмена данными между контроллером ASK-Lab и ПК приведена на рисунке 3.3.
Контроллер ASK-Lab поддерживает необходимые уровни протокола обмена до сетевого уровня. Остальные уровни поддерживаются внешним модемом. Как видно из рисунка 3.3, независимо от режима работы контроллера, данные, всегда проходят через транспортный уровень, который обеспечивает доставку сообщений. Режим простой трансляции данных (от ПК к периферии контроллера и обратно) реализован таким же способом. За основу транспортного уровня протокола взят протокол ASK-Bus v3.1. Описание протокола ASK-Bus v3.1 приведено в
Параметры обмена:
- скорость передачи данных 2400 бит/сек (до 115200 бит/сек);
- Биты данных 8;
- Четность нет;
- Стоповые биты 1;
- Управление потоком нет.
3.1.3.2 Обмен данными между контроллером и периферийными устройствами
Связь ПК с теплосчетчиком и теплорегулятором обеспечивается в режиме трансляции данных. Формирование/разбор пакетов при обмене данными с теплосчетчиком и теплорегулятором в данном режиме производится непосредственно на ПК.
Сформированный пакет на ПК для теплосчетчика (либо теплорегулятора) вкладывается в поле данных пакета ASK-Bus. После разбора принятого контроллером ASK-Lab пакета поле данных передается на конечное устройство. Ответ от устройства принимается контроллером и без дополнительной обработки так же вкладывается в поле данных пакета ASK-Bus, и отправляется обратно на ПК, где и происходит разбор ответа устройства.
Примечание – данный режим работы контроллера ASK-Lab позволяет относительно быстро собрать систему на базе практически любых устройств с поддержкой последовательного интерфейса USART, т. к. весь протокол обмена с данным устройством будет реализован на ПК. Этот режим может быть так же использован как отладочный.
Работа контроллера ASK-Lab с теплосчетчиком СПТ942
Режимы обмена данных контроллера с теплосчетчиком:
- Режим прозрачности – данные с ПК передаются на контроллер по интерфейсу RS-232 и протоколу обмена с теплосчетчиком. Контроллер, распознав начальный и конечный символы данного протокола, передает полученный пакет на теплосчетчик.
- Режим команд – данные с ПК передаются на контроллер по интерфейсу RS-232 и протоколу ASK-Bus. Пакет данных для теплосчетчика вкладывается в поле данных пакета ASK-Bus. Команда 0x00 протокола ASK-Bus - передача данных на периферийное устройство. Контроллер, по этой команде извлекает поле данных из пакета и передает на периферийное устройство.
Параметры обмена:
- скорость передачи данных 2400 бит/сек.;
- Биты данных 8;
- Четность нет;
- Стоповые биты 1;
- Управление потоком сигнал DTR (всегда активен).
Работа контроллера с ECL Comfort 300
Регулятор температуры ECL Comfort 300 Danfoss является полностью самостоятельным устройством, регулирующим температуру воды в контуре горячего водоснабжения и в контуре водяного отопления. Основными функциями контроллера при работе с ECL Comfort 300 являются функции удаленного мониторинга и изменения режимов работы регулятора. При наличии дополнительного коммуникационного модуля ECA87 для ECL Comfort 300 появляется возможность получать дополнительную информацию с ECL Comfort 300 и непосредственно управлять исполнительными устройствами данного регулятора.
Для обмена данными контроллера с регулятором температуры ECL Comfort 300 Danfoss используется режим команд (описан выше).
Параметры обмена:
- скорость передачи данных 1200 бит/сек.;
- Биты данных 8;
- Четность да;
- Стоповые биты 1;
- Управление потоком нет.
3.1.4 Обеспечение робастности и защита информации
Важность аспекта защиты информации применительно к ИС обсуждалась в работах [1], [2]. Там же была предложена концепция использования многоуровневой системы защиты информации в распределенных системах коммерческого учета. Эта концепция с рядом модификаций была реализована в проекте.
При посылке команд записи (изменения) сетевые пакеты с командами и ответные пакеты должны быть преобразованы. Пакет, посылаемый с ПК, преобразуется с использованием ключа, производного от пароля, введенного инженером АРМ.
При получении пакета ПО контроллера делает обратное преобразование с использованием ключа, производного от пользовательского пароля (введенного на контроллере, аналогичному паролю ПО АРМ). Если контрольная сумма преобразованного блока корректна, производится проверка условия: принятое значение времени больше записанного в памяти контроллера. Если условие выполняется, контроллер выполняет команду. Ответный пакет преобразуется с использованием того же (пользовательского) ключа, содержит значение времени контроллера (значение системного таймера микропроцессора мастера сети).
Для преобразования данных используется алгоритм ГОСТ с постоянной таблицей замен. Контроллер ASK-Lab обеспечивает реализацию преобразования данных в режиме реального времени.
При передаче сообщений длина посылки искусственно увеличивается для обеспечения зашиты от сканирования. Для защиты от перехвата команд применен ряд дополнительных мер.
Ключи шифрации в контроллер ASK-Lab вводит администратор системы, и он же имеет возможность его изменения. Разработчики системы обеспечивают лишь первоначальный код доступа и лишены возможности считывания использованных кодов шифрации после введения ключей администратором системы.
Для защиты от атак при наличии сообщника в составе персонала, в контроллере ведется журнал, учета команд управления. Журнал доступен лишь для просмотра с АРМ инженера, но не может быть откорректирован. Эта информация позволяет фиксировать время и источник команд управления. Эта же информация обеспечивает возможность арбитража в случае незлонамеренных ошибок персонала.
3.1.4.1 Преобразование данных
Выше было сказано, что для передачи информации используется протокол ASK-Bus. Далее все упоминания полей касаются только протокола ASK-Bus.
Преобразованию подвергается поле STA (статус), CD (код команды) и поле DATA. Поле флагов протокола ASK-Bus должно содержать только признак необходимости преобразования, одинаковый для всех команд, требующих преобразования (старший бит = 1).
Состав преобразуемой информации приведен в таблице 3.3.
Таблица 3.3 – Состав преобразуемой информации
информация | поле ASK-Bus | длина |
Поле статуса | STA | 1 |
код команды | CD | 1 |
параметры команды или пакет для внешнего устройства | DATA | N |
системное время | DATA | 4 |
дополнение до кратности 8 байт | DATA | L |
Длина параметров команды N | DATA | 1 |
DATA | 2 |
Для длины преобразуемых данных Len должны выполняться условия: Len mod 8 = 0 и Len >= 16. Контрольная сумма – это сумма всех байтов данных, подвергаемых преобразованию, расположенных до нее (младшими вперед). Дополнение до кратности 8 байт производится заполнением пространства значением системного таймера.
3.1.4.1.1 Служебный и пользовательский пароль
Пароль, вводимый администратором в контроллер с помощью клавиатуры и дисплея, используется для получения ключа преобразования данных. Тот же пароль вводится при работе с инженерным ПО верхнего уровня.
Существует два типа пароля: служебный и пользовательский. Служебный пароль записывается при программировании контроллера и не подлежит изменению. Он используется при первоначальной настройке и техническом обслуживании системы, а также для смены пользовательского пароля. Пользовательский пароль задается с клавиатуры контроллера, и используется при формировании ключа для преобразования данных, передаваемых по сети при командах записи.
При изменении пароля сначала вводится старый пароль, при его правильности (т. е. при совпадении введенного значения с пользовательским паролем) предлагается ввести новый пользовательский пароль. Длина пароля – от 3 до 6 символов, пароль хранится в энергонезависимой памяти EEPROM контроллера. При успешном изменении пароля обнуляется счетчик времени, служащий для проверки корректности приходящих сетевых пакетов (при приеме каждой новой корректной команды, имеющей преобразованные данные, данный счетчик изменяется на значение поля «время сетевого пакета»).
3.1.4.1.2 Ключ преобразования данных
Для получения ключа преобразования данных должен использоваться пароль, вводимый пользователем в контроллер с помощью клавиатуры и дисплея.
На основе пароля формируется ключ, используемый для преобразования данных. Длина ключа – 256 бит. Расширение пароля до длины ключа осуществляется следующим образом:
1) преобразование пароля в BCD;
2) копирование получившейся строки на всю длину ключа;
3) выполнение операции XOR с неизменяемой константой, хранимой в энергонезависимой памяти контроллера, длина которой равна длине ключа.
3.1.4.1.3 Системное время
Текущее время вычисляет ПО на ПК, посылающее команду, это время должно возрастать для каждой следующей команды (например, число секунд с начала 2000 года). ПО контроллера проверяет порядок следования времени в командах и выполняет только команду со значением времени большим, чем предыдущая. Принятое значение времени хранится в энергонезависимой памяти контроллера. Механизм записи времени исключает порчу значения при пропадании питания. Значение времени записывается до начала реакции на команду.
3.1.4.2 Защита от сбоев и протоколирование событий
мОСРВ A3 обеспечивает некоторые функции по защите от сбоев и протоколированию событий, а именно:
- контроль корректности функционирования программной системы;
- контроль времени выполнения задач;
- запись контекста ПО контроллера в случае исключительной ситуации для последующего анализа;
- запись дампа памяти;
- ведение журнала событий.
3.1.5 Методы отладки программного продукта
Очевидно, что написание работоспособного ПО – весьма трудоемкая задача. Написать сложное ПО без ошибок с первого раза практически невозможно. Поэтому очень важным является вопрос отладки ПО с целью быстрого, эффективного и надежного поиска и исправления ошибок. В следующих подразделах будут рассмотрены вопросы технических возможностей и особенностей отладки, используя среду программирования Microchip MPLab IDE v6.xx и специализированный инструментарий Конструктор А3.
3.1.5.1 Основные средства отладки среды программирования
Среда программирования Microchip MPLab IDE v6.xx предоставляет программисту довольно мощные средства отладки. В частности, MPLab содержит интегрированный отладчик и Object Browser для контроля за результатом процесса компиляции, а также ряд других сервисов нацеленных на поддержку процесса отладки. Использованные при разработке сервисы и методы отладки перечислены и описаны ниже.
Режимы запуска программы:
- программная симуляция микропроцессора (MPLAB SIM)
- использование аппаратного эмулятора (MPLAB ICE 2000)
Первый режим позволяет симулировать работу реального микропроцессора, но имеет ряд существенных ограничений. Так, например, отсутствует возможность работы с прерываниями, периферийными устройствами, встроенной энергонезависимой памятью (EEPROM) и памятью программ для операций чтения и записи. Этот режим можно использовать для запуска и отладки программ (фрагментов кода), не использующих вышеперечисленных ресурсов. Например, этот способ будет хорош при отладке различных математических функций, функций непосредственной обработки данных и д. р. При этом, процесс написания и отладки ПО может происходить с использованием одного ПК, без каких-либо других аппаратных средств.
Второй режим подразумевает, что к ПК через специальный интерфейс подключен аппаратный эмулятор, в данном случае MPLAB ICE 2000. Этот режим позволяет практически полностью воспроизвести работу реального микропроцессора. Запуск программ с использованием аппаратного эмулятора позволяет проводить отладку и тестирование ПО при работе с любыми аппаратными ресурсами микропроцессора и подключенными периферийными устройствами.
Режимы запуска программы выбираются из меню Debugger->Select Tool
По своей сути, работа с остальными инструментами и сервисами отладки, практически не зависит от режима запуска программы (нужно лишь учитывать ограничения для режима симуляции, приведенные выше).
Запуск и останов программы. Запуск программы осуществляется из меню Debugger->Run. Останов выполнения программы осуществляется из меню Debugger->Pause. После останова программы, средствами среды программирования могут быть доступны для просмотра и изменения данные (переменные), содержимое встроенной памяти EEPROM, значение регистров и портов ввода-вывода, а также положение программного указателя. Программа может быть запущена вновь с того места, в котором произошел останов из меню Debugger->Run. Полный останов программы осуществляется из меню Debugger->Halt. В этом случае, при запуске, программа выполняется с начала.
Пошаговое выполнение программы. После остановки программы можно осуществить пошаговое ее выполнение. Возможно два варианта:
- Пошаговое выполнение всех без исключения команд (Debugger->Step Into)
- Пошаговое выполнение команд без “захода” в тело функций (Debugger->Step Over)
В первом случае выполняются все без исключения команды по очереди, один шаг – одна команда. Это удобно при полной отладке какой либо части программы. Во втором случае, если встречается вызов функции, то она выполняется за один шаг. Этот способ удобен при отладке части программы, в которой используются заранее отлаженные функции и правильность их выполнения не вызывает сомнения.
Указание точек останова. Точки останова программы позволяют установить те места программы, при выполнении которых будет сделан останов. Этот способ похож на пошаговый, однако позволяет более рационально использовать временные ресурсы при отладке. Программа при выполнении останавливается только в тех местах, которые непосредственно подлежат проверке, и уже в этих местах можно применять пошаговый способ отладки.
Существует два способа для указания точек останова в MPLab. Первый заключается в следующем: щелкнуть в окне редактора слева от кода (между текстом и рамкой окна). При этом появляется пиктограмма (красная точка) в окне редактирования, и данная строка отображается другим цветом. Установка точки останова допустимо, если в данной строке выполняется какой-либо код.
При размещении множества точек останова можно использовать пункт меню Debugger->Breakpoints, чтобы открыть окно Breakpoint List. Окно Breakpoint List позволяет управлять присутствующими точками останова (добавлять, удалять, разрешать, запрещать).
Программный указатель. При любом останове программы, в левой части окна редактирования появляется пиктограмма (зеленая стрелка). Она указывает на строку (команду), на которой остановилось выполнение программы. Это и есть программный указатель. Программный указатель можно выставить в любом месте программы, нажав правую кнопку мыши в нужной строке программы в окне редактора и выбрав в контекстном меню пункт Set PC at Cursor. Таким образом, после запуска программы, она будет выполнятся с места, в котором установлен программный указатель.
Проверка значений. Если программа остановлена в отладчике, можно проверить, а также изменить значение любого идентификатора, регистра, порта ввода-вывода, ячейки памяти EEPROM и памяти данных и т. д. Для этого в MPLab существуют несколько панелей, вызываемых из меню View:
- Hardware stack;
- Watch;
- Program memory;
- File Registers;
- EEPROM.
Hardware stack – позволяет просмотреть последовательность точек возврата после прерываний и вызова функций. Отображается номер точки и адрес возврата.
Watch – позволяет установить наблюдение за любой ячейкой памяти данных (переменные, регистры, значение портов ввода-вывода). Объекты для наблюдения можно добавлять и удалять. Значения объектов можно изменять.
Program memory – позволяет просмотреть память программ микропроцессора. В панели может отображаться номер команды, ее физический адрес в памяти программ, код команды и ее текст на языке ассемблера (с входными параметрами), а также программный указатель на текущую команду (на которой остановилось выполнение программы).
File Registers – позволяет просмотреть память данных. В памяти данных размещаются все регистры, порты ввода-вывода, пользовательские переменные. Имеется возможность задавать ячейкам памяти данных новые значения.
EEPROM – позволяет просмотреть и изменить значение ячеек памяти EEPROM.
3.1.5.2 Особенности отладки, связанные с использованием технологии мОСРВ
Использование технологии мОСРВ при разработке ПО контроллера приносит некоторые особенности процесса отладки конечного кода.
Выше было сказано, что для описания структуры ПО под мОСРВ А3 используется специализированный инструментарий Конструктор А3. В конечном счете, Конструктор А3 позволяет описать взаимодействие задач системы, сделать настройку параметров их выполнения и т. д. Код самих задач пишется отдельно (например, в текстовом редакторе или в среде MPLab), задачи собираются в библиотеку или отдельные модули. Проект из Конструктора А3 транслируется в среду MPLab, и уже там может быть окончательно отлажен и протестирован.
Таким образом, целесообразным будет использование следующей схемы написания и отладки ПО контролера:
1) Определение укрупненной структуры ПО и необходимых задач;
2) Написание в текстовом редакторе или среде MPLab задач-заглушек (т. е. задачи, которые не выполняют полезного действия, а просто на входное воздействие отвечают некоторым выходным, и которые впоследствии будут заменены другими задачами);
3) Описание структуры взаимодействия задач в Конструкторе А3 и трансляция проекта в среду MPLab;
4) Отладка получившейся структуры ПО в среде MPLab, проверка того, что все взаимосвязи правильные и используются все ветви алгоритма;
5) Детализация структуры ПО, разбиение задач на подзадачи;
6) Замена некоторых задач-заглушек на задачи, выполняющие требуемые функции;
7) Переход к пункту 3 до тех пор, пока не будет описана полная структура ПО и задействованы все необходимые задачи (совместно с задачами-заглушками);
8) Окончательная замена всех задач-заглушек на задачи, выполняющие требуемые функции;
9) Окончательная отладка ПО в среде MPLab. Возможное исправление кода задач;
10) Формирование (изменение) библиотеки функции и драйверов на основе задач отлаженного ПО.
3.1.5.3 Проверка работоспособности ПО на примере серийного изделия “контроллер ASK-Lab”
На некотором этапе создания ПО возникает необходимость производить его отладку и тестирование с использованием реальных устройств в условиях их эксплуатации. В нашем случае это контроллер ASL-Lab, который программируется разрабатываемым ПО при помощи программатора PRO MATE II. Тестирование контроллера проходит в два этапа:
1) Тестирование и отладка ПО на “столе”, т. е. в помещении, где ведется разработка ПО, с использованием специализированного стенда-макета;
2) Тестирование на объекте Заказчика в реальных условиях эксплуатации.
Для тестирования контроллера применялось специально разработанное сотрудником СКБ приложение “Тестирование”, установленное на ПК. Приложение “Тестирование” обеспечивает обмен данными между ПК и контроллером ASK-Lab, а также позволяет проверить обмен данными со всеми устройствами, подключенными к контроллеру, и д. р. функциональные возможности контроллера.
На первом этапе проводились следующие типы тестирования:
- Функциональное тестирование;
- Нагрузочное тестирование.
Функциональное тестирование – тестирование функций ПО для поиска различий между разработанным ПО и его внешней спецификацией. Проверяются наличие всех функциональных требований технического задания; корректность и полнота выполняемых функций. Проводятся многократное тестирование каждой функции системы, множества их сочетаний, имитация и проверка на наличие сбоев применительно к каждому функциональному требованию.
В рамках функционального тестирования выполнялись следующие проверки (многократные):
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |




