Материал: Программное обеспечение модуля управления и отладки комплекса систем железнодорожной автоматики

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

·        Блок «Auto Test» позволяет управлять работой задействованных в процессе моделирования устройств в автоматическом режиме. В этом блоке для пользователя отражена служебная информация о параметрах моделирования (системное время, тактовая задержка и т.п.). Органы управления процессом автоматического тестирования: кнопка «AutoTest Manager» - запуск автоматического тестирования (данную функцию можно вызвать из вкладки «AutoTest» главного меню проекта); кнопка «All devs clk» - имитация такта работы для всех задействованных в моделировании устройств.

2.2 Форма просмотра памяти данных устройства - Form_view


Внешний вид разработанной формы показан на рисунке 2.8.

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

Поле формы графически разделено на два блока:

) Блок «Program Counter and W Register» содержит 2 поля, в которых отображаются соответственно регистр Program Counter (программный счетчик) и регистр-аккумулятор W Register.

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

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



На вкладках для каждого из регистров пользователю доступна следующая информация:

·        Адрес регистра в памяти данных в 16-ричном виде (поле Address).

·        Имя регистра (поле Name).

·        Значение регистра в 16-ричном виде (поле HexValue).

·        Значение регистра в двоичном виде (поле BinValue). Каждая из ячеек этого поля отображает бит регистра. Если ячейка красная, значит соответствующий бит установлен в «1», если ячейка погашена - бит в «0».

2.3 Форма просмотра энергонезависимой памяти устройства - Form_eeprom


Внешний вид разработанной формы показан на рисунке 2.9.



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

Сама память отображается в виде матрицы, где в качестве индексов находится 16-ричное значение адреса.

Для редактирования памяти пользователь должен выполнить следующие действия:

·        Выделить ячейку памяти, в которой требуется изменить значение;

·        С клавиатуры ввести требуемое 16-ричное значение в область ячейки;

·        После нажатия кнопки «Enter» введенное значение записывается в выбранную ячейку памяти EEPROM.

2.4 Форма просмотра памяти программ устройства - Form_prog


Внешний вид разработанной формы показан на рисунке 2.10.



Данная форма позволяет пользователю просматривать всю доступную память программ выбранного устройства. Размер памяти зависит от конфигурации устройства.

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

Сама форма содержит несколько информационных полей:

·        Поле «Address» - адрес ячейки памяти программ;

·        Поле «Instruction» - ассемблерный код команды, содержащийся по соответствующему адресу;

·        Поле «HexValue» - код соответствующей инструкции в 16-ричном виде;

·        Поле «BinValue» - код этой инструкции в двоичном виде.

В крайне левом поле формы размещен указатель «*», отображающий текущую позицию программного счетчика в выполняемой устройством программе.

2.5 Форма выборочного просмотра памяти данных устройства - Form_watch

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

Работа этой формы тесно связана с формой просмотра памяти данных Form_view. Порядок работы с формой Form_watch следующий:

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



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



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



Если подтверждение получено, то данный регистр удаляется, иначе диалог просто пропадает.

Форма Form_watch (рисунок 2.12) содержит следующие поля:

·        Поле «DDL’s Name» отражает имя модели устройства, в котором находится регистр памяти данных. Форма может работать одновременно с множеством участвующих в моделировании устройств, поэтому для распознавания принадлежности регистра используется имя конкретного устройства.

·        Поле «Address»- содержит адрес регистра в модели устройства;

·        Поле «Register's Name» - содержит имя регистра памяти данных;

·        Поле «HexValue» - значение регистра в 16-ричном виде;

·        Поле «BinValue» - значение регистра в двоичном виде.

2.6 Форма отображения состояния выводов устройства - Form_pins


Внешний вид формы Form_pins представлен на рисунке 2.14.

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

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

Над корпусом устройства расположена информационная панель, в которой записано номер модели устройства.

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

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



Структуру данной формы можно представить следующим образом:

) Блок «Constant Mistakes» - блок формирования константных ошибок. Содержит поля:

·        Поле «Address» - адрес регистра, в который требуется внести ошибку;

·        Поле «Register's Name» - имя регистра, в который требуется внести ошибку;

·        Поля «7»-«0» - поля каждого бита регистра. Эти поля являются редактируемыми. Они имеют три состояния: «х» - ошибка в бит не вносится; «0» - бит всегда будет установлен в ''0''; «1» - бит всегда будет установлен в ''1''. Изменение состояния происходит по клику левой кнопкой мыши в соответствующем поле.

) Блок «Montage Mistakes» - блок формирования монтажных ошибок. Содержит поля:

·        Поле «Address» - адрес регистра, в который требуется внести ошибку;

·        Поле «Register's Name» - имя регистра, в который требуется внести ошибку;

·        Поля «7»-«0» - поля каждого бита регистра. Эти поля являются редактируемыми. Они имеют три состояния: «х» - ошибка в бит не вносится; «&» - в бит вносится ошибка монтажное ''И''; «|» - в бит вносится ошибка монтажное ''ИЛИ''. Изменение состояния происходит по клику левой кнопкой мыши в соответствующем поле.

) Блок «View Mistakes» - блок отображения уже внесенных в работу устройства ошибок. Содержит поля:

·        Поле «Address» - адрес регистра, в который внесена ошибка;

·        Поле «Register's Name» - имя регистра, в который внесена ошибка;

·        Поля «7»-«0» - поля каждого бита регистра. Они имеют пять состояний: «х» - ошибка в бит не вносилась; «0» - бит установлен в ''0''; «1» - бит установлен в ''1''; «&» - в бит внесена ошибка монтажное ''И''; «|» - в бит внесена ошибка монтажное ''ИЛИ''.

·        Поле «Type» - характеризует тип ошибки. Может содержать следующие показания: «С_And» - константная ошибка ''И''; «С_Or» - константная ошибка ''ИЛИ''; «М_And» - ошибка монтажное ''И''; «М_Or» - ошибка монтажное ''ИЛИ''.

Органы управления формой Form_mistakes:

·        Кнопка «Add mistakes» - осуществляет внесение сформированных в блоках «Constant Mistakes» и «Montage Mistakes» ошибок в работу устройства;

·        Кнопка «Update» - обновление информации об уже внесенных в устройство ошибках.

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

) Форма Form_mistakes тесно связана с формой просмотра памяти данных Form_view. Для добавления необходимого регистра на форму внесения ошибок требуется вызвать форму Form_view. С помощью клика левой кнопкой мыши в отведенной для выбранного регистра области открывается диалог, запрашивающий подтверждение на добавление этого регистра на Form_mistakes (рисунок 2.16).



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

) Пользователем производится формирование и внесение ошибок (принцип пояснен выше).

) Для удаления регистра с формы требуется кликнуть левой клавишей мыши на область, отведенную под данный регистр в блоке «View Mistakes». Появится диалог, запрашивающий подтверждение на удаление этого регистра из Form_mistakes (рисунок 2.17).



Если подтверждение получено, то данный регистр удаляется, иначе диалог просто пропадает.

2.8 Форма «Об авторе» - Form_author


Внешний вид формы представлен на рисунке 2.18.



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

3. ТЕСТИРОВАНИЕ МОДЕЛИ PIC16


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

3.1 Тестирование системы команд


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

Для удобства и упрощения реализации тест системы команд разделили на следующие части:

·        тестирование команд;

·        тестирование работы портов ввода-вывода (подача входных воздействий на ножки портов, обработка их моделью микроконтроллера, выдача данных в порт);

·        тестирование перемещений по памяти данных (перемещения по ячейкам памяти внутри страниц и между страницами памяти).

Рассмотрим методику выполнения процесса тестирования на примере теста на правильное функционирование команд микроконтроллера.

Все тесты были разработаны в среде моделирования MPLab IDE, которая является специализированным эмулятором работы микроконтроллеров.

Код разработанного теста на ассемблере представлен ниже.

LIST P=16F877A

#include <P16F877A.INC>

ORG 0x00STATUS,RP0;выбор нулевого банка регистров

BCF STATUS,RP1

;Команда ADDWF0x050x200xAA0x20,00x210xAA0x20,1

;Команда ADDLW0xAA0x010x22

;Команда SUBWF0xFB0x230xAA0x23,00x240xAA0x23,1

;Команда SUBLW0xAA0x970x25

;Команда DECF0xAA0x260x26,00x270x26,1

;Команда DECFSZ+MOVF0x020x280x290x28,00x300x28,10x28,00xEE0x29

;Команда INCF0xCD0x310x31,00x320x31,1

;Команда INCFSZ0xFE0x330x340x33,10x33,00xEE0x34

;Команда ANDWF0xC40x350xAA0x35,00x360xAA0x35,1

;Команда ANDLW0xAA0xD70x37

;Команда IORWF0xC50x380xAA0x38,00x390xAA0x38,1

;Команда IORLW0xAA0xD80x40

;Команда XORWF0x630x410xAA0x41,00x420xAA0x41,1

;Команда XORLW0xAA0xF10x43

;Команда CLRF0xA70x440x44

;Команда CLRW0xA70x450x45

;Команда COMF0xA70x460x46,00x470x46,1

;Команда RLF0xA70x480x48,0

MOVWF 0x490x48,1

;Команда RRF

BCF STATUS,C0x48,00x510x48,00x500x50,1

;Команда SWAPF0xA70x520x52,00x530x52,1NOPsled

;Команда GOTO0xA70x54M1

GOTO nach

Пример выполнения этого теста в среде MPLab показан на рисунке 3.1.

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



Выполнение программы теста комплексом КИИБ представлено на рисунке 3.2.


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

3.2 Тестирование периферийных устройств


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

Тестирование проводилось для следующих периферийных устройств:

·        таймер TMR0 (работа в режиме таймера и режиме асинхронного счетчика);

·        таймер TMR1 (работа в режиме таймера, режимах асинхронного и синхронного счетчиков);

·        таймер TMR2 (работа в режиме таймера).

Рассмотрим методику выполнения процесса тестирования на примере теста на правильное функционирование таймера TMR2.

Все тесты были разработаны в среде моделирования MPLab IDE, которая является специализированным эмулятором работы микроконтроллеров.

Код разработанного теста на ассемблере представлен ниже.

LIST P=16F877A

#include <P16F877A.INC>0x00main0x04PIR1,TMR2IFmain0x330x50PIR1,TMR2IFm10x1000xC0INTCONSTATUS,RP0PIE1,TMR2IESTATUS,RP00x04T2CONMOVLW 0xF0TMR20x40,1 $-1

end

Пример выполнения этого теста в среде MPLab показан на рисунке 3.3.

Тест построен следующим образом: по адресу 0х04 (см. директиву ORG 0x04) размещена подпрограмма обработки прерывания от таймера TMR2. В главной программе, размещенной по адресу 0х100, TMR2 настраивается в режим таймера без предделителя, в его значащий регистр записывается константа.