Технологии
программирования и виртуальное программирование контроллеров в автоматическом
управлении технологических процессов
Основу
автоматических систем управления составляют
различные электронные микроконтроллеры. К их
числу относятся AVR и PIC. Несмотря
на массовое применение, существуют различные
трудности при программировании таких
микроконтроллеров. AVR и PIC-контроллеры имеют
несколько уровней сложности: низкий, средний
и высокий. Такое различие требует и
различные действия при программировании, что
вносит путаницу и отнимает массу времени.
В различных публикациях описывается последовательность
действий для конкретного микрочипа, а среда
разработки программного обеспечения зачастую
недоступна для пользователей. Данную проблему
можно решить на примере микросхемы
PIC-16F877A, которая относится к среднему
уровню сложности [4]. В техническом
описании такие изделия программируются на
языке ASSEMBLER[2]. Вместе с тем на
практике можно применить язык программирования
высокого уровня Си. Необходимо иметь в
виду, что для успешного решения такой
задачи требуется соответствующий программатор.
Дорогим, но надежным является PIC‑KITтм2.
Программирование можно осуществить в среде
MPLABIDE8.46. Используя Интернет-ресурсы применим
компилятор PICCCOMPILER. Большую помощь при этом
могут оказать известные публикации: Шпак
Ю.А. «Программирование на языке С для
AVR и PIC микроконтроллеров» (2011),
Крупник А.Б. «Изучаем Си» (2001).
Интерес к микроконтроллерам высок благодаря
их многофункциональности, компактности, доступности
для изучения. Но вместе с тем такие
электронные технологии для своего применения
требуют и определенных знаний в области
и информатики и электроники. Данная статья
имеет своей целью не только ознакомить читателя
с техническими возможностями микрочипа
PIC-16F877A, но и показать возможность его
программирования, а также распространить уже
имеющийся опыт изготовления робота, в
основе которого имеется такой PIC-контроллер.
Публикаций на данную тему не достаточно
и есть уверенность, что новая информация
поможет развить интерес молодежи к изучению
и программирования таких микрочипов.
PIC-16F877A — это микроконтроллер, который
имеет высокоскоростную RISC архитектуру. Его
технические характеристики достаточно высоки, а
рыночная цена вполне приемлема, что также
определяет повышенный спрос этой микросхемы.
Она имеет: 35 инструкций, 20 МГц
тактовый сигнал, 14 источников прерываний, 8-уровневый
аппаратный стек, 2 В—5,5 В напряжение
питания, малое энергопотребление (20мкА), два
модуля сравнение/захват/ШИМ (CCP), многоканальное
10-разрядное АЦП, последовательный синхронный
порт MSSP, последовательный синхронно- асинхронный
приемопередатчик USARTс поддержкой детектирования
адреса. Микрочип имеет 40 выводов,
несколько входных и выходных портов,
техническое описание переведено на русский язык.
Задача программирования PIC-контроллера не тривиальна.
Трудность заключается в том, что
последовательность его действий должна быть
заранее предопределена, базовая платформа
создана, электронная схема исправна и
работает «в ручном» режиме. Это задача
инженера и она мало беспокоит
программистов. Но такой подход к делу
приносит мало пользы. Нужны такие
специалисты, для которых важен весь процесс
разработки и применения робототехнических
изделий. При такой постановке вопроса
междисциплинарные знания приобретают первостепенное
значение. Не вдаваясь в физическую сущность
работы микроконтроллера, можно предложить уже
опробованный на конкретном образце вариант
действий для программирования PIC-16F877A.
Рассмотрим процесс компиляции программы. Проект
компилируется с помощью подключенного компилятора
CCS-PICC непосредственно в среде MPLAB.
Выполнение команды меню Project Compile
позволит открыть окно состояния компилятора
CSS-PICC. Исходный файл cod, который
требуется при отладке, можно создать,
выполнив несколько манипуляций: в среде
MPLAB необходимо выполнить команду меню
Project-Build Options. В этом диалоговом
окне требуется перейти на вкладку CCSC
Compiler. В группе параметров Debug выбрать
переключатель Expanded COD Format и нажать
«ОК». Конкретный микроконтроллер выбирается на
этапе создания проекта. Для перевода MPLAB
в режим программной эмуляции выбирается
меню Debugger-SelectTool-MPLABSIM. Эти манипуляции
позволяют отобразить панель инструментов Debug
с кнопками для отладки. Для настройки
параметров эмуляции необходимо выполнить команду
меню Debugger-Setting. В данном окне
открыть вкладку OSC,в которой выбирается частота
осциллятора. Останов эмуляции осуществляется с
помощью команд расположенных во вкладке
Break Options. В меню Debugger имеются
команды для отладки программы в случаях
прерывания. Для восстановления или удаления
точки прерывания необходимо дважды кликнуть
мышкой на сером фоне и выполнить
команду меню Set Break Point. Для
перехода в отладочный режим используют
команды меню Debugger. Вызов окон отладчика
осуществляется с помощью меню New. Эти окна
способствуют просмотру содержимого регистров
управления во время выполнения программы.
После активации кнопки Add SFR создается
элемент для просмотра регистра управления.
После всего изложенного уже не трудно
понять весь процесс программирования и, как
следствие, область применения PIC-16F877A.
Фредерик Жимарши в книге «Сборка и
программирование мобильных роботов», анализируя
сложившиеся тенденции программистов в написании
алгоритмов, предостерегает от традиционного
подхода моделирования среды, близкой мобильному
роботу [1]. Такой вывод закономерен, так
как он подразумевает использование сложной
математической системы расчетов и как
следствие большого объема памяти. Используемые
датчики должны при этом обладать
исключительной точностью, что невозможно в
связи с возникающими различными погрешностями.
Предлагается другой подход, а именно
использовать архитектуру приоритетных взаимодействий,
что позволит собрать в единую согласованную
систему все элементы управления мобильным
роботом. Идея заключается в объединении
восприятия и движения, что потребует лишь
незначительных математических ресурсов. В
развитие этой идеи предлагается метод
приоритетного взаимодействия для программирования
роботов. Такая технология предполагает
использование приоритетов: реакции поведения
высших порядков временно блокируют низшие
до исчезновения условий вызвавших этот приоритет.
Таким образом, происходит учет каждого
события и соответствующей реакции. Преимущество
подхода приоритетного взаимодействия очевидно,
так как данный способ программирования
разбивается на отдельные задачи, которые
работают одновременно в параллельном режиме,
что позволит программировать каждую задачу
отдельно, а значит, появится возможность
добавления новых функций без утраты уже
существующих. Трудность может возникнуть при
увязке и расстановке приоритетов. В случае
одновременной работы нескольких программ
необходимо использовать систему работы в
режиме реального времени, что предполагает
использование основной программы, которая будет
выделять одинаковое количество времени для
выполнения каждой задачи. При применении
подхода приоритетного взаимодействия используют
две переменные: одна из них для
команды на микромоторчики, а другая
оповещает систему о желаемой передаче
сигнала на исполнительный элемент. Эта
переменная называется флагом. Соответствующая
программа имеет вид:
int Default command; // Команда на
двигатели
int Default flag// Флаг для системы
void Default () Default command =
Shutdown ; // Робот
остановлен
Defaul tflag=1;// Команда активирована.
Такой подход программирования вполне применим
для PIC-16F877A.
Пример программы PIC-16F877A для системы
слежения: start:low0/ Низкий уровень
шины 0 low1/Низкий уровень шины
1 pot2,255,b0/ Чтение показаний
фотоэлемента 1 pot3,255,b1/ Чтение
показаний фотоэлемента 2 if b0 to b1
then start/ Если показания равны,
то ничего не делать if b0 b1
then greater/ Если больше, то
насколько if b0 b1
then lesser/ Если меньше, то
насколько greater:/ Процедура больше
b2=b0-b1/ Определение разницы показаний
if b2=10t hen cw/ Внутри
границ? Если нет, перейти на cw goto
start:/ Если внутри границ,
измерять снова lesser:/ Процедура меньше
b2=b1–b0/Определение разницы показаний if
b2≠10 then ccw/ Внутри границ?
Если нет, перейти на ccw goto start:/ Если
внутри границ, измерять снова cw:/
Поворот блока по часовой стрелке hig 0/Включить
мост pause 100/ Вращение 0,1
с goto start/ Новая проверка ccw:/
Поворот блока против часовой стрелки hig 1/Включить
мост pause 100/Вращение 0,1 с
goto start/ Новая проверка [3].
В данной программе задействованы два
датчика — фотодиода. При их разной
освещенности происходит поворот всей системы.
При одинаковой освещенности поворота не
происходит.
Конечно, все изложенное требует наличие
конкретных электронных устройств и денежных
затрат. Вместе с тем работу отлаженного
кода можно проверить виртуально, используя
среду Proteus. Запускается Proteus ISIS, в
режиме Component необходимо нажать Pic from
libraries и в списке PIC добавить наш
PIC16F877A, далее выбирается LED-RED, RES и
все другие компоненты схемы, которые
соответственно добавляются в форму.
Включается кнопка «стрелка» и расставляются
все элементы по принципиальной виртуальной
электрической схеме. Для редактирования
параметров необходимо щелкать левой кнопкой
мыши на нужном элементе и в
появляющемся окне выставлять технические
параметры элемента. Все соединения в схеме
выполняются с помощью курсора и левой
кнопкой мыши. Код программы (HEX-файл)
ищется в соответствующей строке свойств
микроконтроллера и производится его запоминание
(рисунок 1).
Рисунок 1. Виртуальная электрическая схема
Перед нажатием «PLAY» нажимается кнопка
обнуления в схеме. После проведенных
манипуляций схема работоспособна. В случае
отказа, необходимо проанализировать работу кода
программы и правильность соединений в
принципиальной схеме, а также расположение компонентов.
Список литературы:
1.Жимарши Ф. Сборка и программирование
мобильных роботов в домашних условиях /
Ф. Жимарши; пер. с фр. М.А. Комаров.
М.: НТ Пресс, 2007. — 288 с. :
ил.
2.Корабельников А.А. Самоучитель по
программированию PIC-контроллеров для начинающих
[Электронный ресурс] — Режим доступа. —
URL: http://ikarab.narod.ru/Kea_20.html (дата обращения
02.10.2013 г.).
3.Ловин Дж. Создаем робота — андроида
своими руками.: Пер. с анг. Мельникова
Г. М.: Издательский дом ДМК-пресс, 2007
— 320 с.: ил.
4.PIC16 MCU Products [Электронный ресурс] —
Режим доступа. — URL:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&mid=10&lang=en&pageId=74
(дата обращения 02.10.2013 г.).
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.