PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты. Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления. Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы. Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах. • Характеристики миниатюрного PIC контроллера PIC12F629
Основы программирования контроллеров за 5 минут
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3
Характеристики миниатюрного PIC-контроллера
Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл. Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].
• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В ( >path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:
4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl. Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис.
10), который должен быть включен в состав модели. Рис. 16. Выбор типа контроллера в блоке Master модели.
5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters . В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования. Рис.
17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation». 6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18. Рис. 18.
Учимся писать прошивки.
Запуск компилятора Simulink модели. В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).
Рис. 19. Результаты компиляции модели.
Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.
4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель. 5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.
Подключение программатора PIC-KIT3
Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).
Перечень программаторов для прошивки микроконтроллера. Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22). Рис. 22.
Информация об установленном драйвере программатора PIC-KIT3.
Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23. Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3. Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24.
Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3]. Рис. 24. Выводы PGM PIC контроллеров. Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:
Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера
Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания. При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25. Примечание.
При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.
Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.
Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92. Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.
Рис. 27.
Сообщение MPLAB об успешном подключении микроконтроллера к программатору. Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].
Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.
Малоразрядные PIC-контроллеры имеют широкий диапазон питания, низкое потребление и малые габариты. Они программируются на языках низкого уровня. Разработка программ на языке графического программирования Simulink с использованием многочисленных библиотек значительно сокращает время разработки и отладки в сравнении с программированием на уровне ассемблера. Разработанные для PIC-контроллеров Simulink структуры можно использовать и для компьютерного моделирования динамических систем с участием контроллеров. Однако, из-за избыточности кода такой подход применим только для семейств PIC контроллеров с достаточными ресурсами. Источник статьи: http://habr.com/ru/post/321542/
Программирование микроконтроллеров PIC. Часть 1. Необходимые инструменты и программы. Основы MPLAB
Итак, вы решили научиться программировать pic-контроллеры. Для начала поговорим о том, что вам для работы с этими контроллерами понадобится. Контроллер работает по определённой программе, которая должна как-то в него попасть. Обычно программу в машинных кодах, готовую для записи в контроллер, называют прошивкой.
Следовательно нужно какое-то устройство, которое будет записывать (на сленге обычно говорят заливать или прошивать) программу в контроллер. Такое устройство называется программатор. Подробнее о программаторах и заливке программы мы поговорим позднее, в последней части нашей эпопеи (когда уже будет что заливать), а пока давайте по-порядку — как нам эту программу написать.
Программа для контроллера — это, как я уже сказал, набор машинных кодов, записанный в файле с расширением «hex» (здесь можно почитать про формат *.hex), который и нужно заливать в контроллер с помощью программатора. Никакого другого языка контроллер не понимает.
Следовательно, нужна специальная программа, которая будет переводить текст программы, написанный на каком-либо языке программирования, в машинные коды. Наиболее удобными в этом плане являются интегрированные среды разработки (IDE — integrated development environment), поскольку они могут не только осуществлять перевод текста программы в машинный код, но и производить симуляцию её работы. Причём симуляцию можно проводить пошагово, при этом можно наблюдать состояние регистров или даже менять их состояние по своему желанию. Короче, интегрированные среды помимо, собственно, компиляции (перевода в машинные коды) предоставляют отличные возможности для отладки программы.
IDE, как и программаторов, существует много. Лично я пользуюсь MPLAB и вам рекомендую, по той простой причине, что MPLAB — это IDE от самого производителя PIC-контроллеров — фирмы Microchip, поэтому имеет отличную поддержку (в том числе на русском языке, что особенно приятно). С официального сайта Microchip можно скачать и сам этот пакет, и подробное описание по работе с ним.
Если не нашли или ломает искать — ссылки для скачивания здесь, правда это уже не самая свежая версия. В описании на русском языке про всё рассказано: от установки и настройки до удаления.
В большинстве случаев вся установка заключается в том, чтобы запустить setup и ответить на пару вопросов, типа куда ставить драйверы и тому подобное, от себя лишь добавлю, что во избежание глюков ставить пакет надо в такую папку, чтобы в пути были только английские буквы (а не в какую-нибудь, типа C:ПрограммыPICMPLAB). Вообще, кириллицу в путях к файлам или в названиях файлов лучше не использовать, иначе возможны глюки.
MPLAB позволяет писать программы на двух языках: СИ и Ассемблер. Интернет просто ломится от разборок СИ-шников и ассемблерщиков, которые с пеной у рта доказывают друг другу, какой язык лучше. Я отношу себя к ассемблерщикам, поэтому, естественно, расскажу почему лучше именно Ассемблер. Ассемблер представляет собой набор элементарных команд, выполняемых контроллером.
Каждая команда трактуется в машинный код совершенно однозначно, а результат её выполнения и время выполнения всегда одинаковы. То есть, если вы имеете листинг на ассемблере, то вы можете совершенно точно сказать, что делает контроллер в каждый момент времени и каким именно образом достигается нужный результат.
Программа на языке СИ (да и вообще на любом языке высокого уровня) — это уже набор команд не контроллера, а соответствующего языка. При компиляции каждая такая команда заменяется набором команд для контроллера, но каким именно набором команд она заменяется, — этого вы уже не знаете, это знает только разработчик языка программирования. Соответственно, невозможно понять, каким именно образом контроллер выполняет желаемое действие. Короче говоря, в случае с языком высокого уровня вы изучаете как какой-то дядя обозвал свои способы реализации необходимых вам функций и по каким правилам их надо записывать. В данном случае можно провести следующую аналогию: вы хотите поговорить с китайцем, но вам говорят: «Китайский слишком сложный язык, но есть один дядя в Болгарии, который 20 лет жил в Китае и отлично его выучил. А болгарский язык с русским очень похожи и русскому человеку он интуитивно понятен, так что выучите болгарский, а уж дядя переведёт.»
В случае с ассемблером, вы изучаете сам контроллер и правила, по которым надо разговаривать с контроллером. При этом контроллер имеет всего-то несколько десятков команд, которые умещаются на одном листке и их легко можно окинуть одним взглядом. Надеюсь, к этому моменту вы уже сделали выбор языка программирования, так что пойдём дальше.
Что нужно сделать в MPLAB, чтобы получить желанную прошивку? Как я уже сказал — подробности читайте в руководстве к IDE MPLAB, оно на русском и там всё понятно (если не понятно — идём на форум), я же только кратко перечислю самое основное и дам некоторые рекомендации. Итак, мы установили MPLAB, хотим написать в нём программу для контроллера и получить готовую прошивку.
Сначала нужно создать проект. Для каждого проекта рекомендую заводить отдельную папку, потому что, во-первых, в проект может входить несколько файлов, а, во-вторых, сам MPLAB создаст ещё несколько вспомогательных файлов (*.lst, *.err, *.cod, *.bkx). Если несколько проектов будут в одной папке, то легко можно запутаться какие файлы к какому проекту относятся.
Короче, создаём для проекта новую папку, потом запускаем MPLAB и выбираем меню Project -> New Project… В появившемся окошке, в проводнике справа, выбираем нашу папку, в левой части (в поле под надписью File Name) пишем название будущего проекта, например my1.pjt (не забываем указать расширение), и жмём ОК. Появляется окно с названием Edit Project. Это менеджер проекта, в котором указываются параметры проекта (какие файлы и библиотеки нужно подключить к проекту, какой будет использоваться камень, будет ли использоваться симуляция и многое другое). Находим поле ввода с названием Development Mode. Справа от этого поля есть кнопочка Change… Нажимаем.
Источник: poisk2.ru
Как пишется программа для контроллера
Но всеэто не относится к мелкоконтроллерам, к сожаленью. Нечто отдаленно похожее — algoritm builder от atmel, flow code, как было замечено выше,больше не знаю.
A почему именно TMS выбрал для освоения?
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
Re: Графическое программирование контроллеров.
__________________
Я, думаю, нужно подумать.
Гражданин KAZUS.RU
Регистрация: 24.11.2006
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
Re: Графическое программирование контроллеров.
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
Re: Графическое программирование контроллеров.
__________________
Я, думаю, нужно подумать.
Регистрация: 24.03.2005
Сообщений: 138
Сказал спасибо: 1
Сказали Спасибо 23 раз(а) в 12 сообщении(ях)
Re: Графическое программирование контроллеров.
—————
Почему AVR не нравится?
1. 8 разрядов
2. Скорость маловата
3. Перезапись данных во флешку ограничено, с бросками питания сбивается..
TMS как аналог PDP 11 более знаком, малое энерго потребление, красиво отрабатывает прерывания
хорошо лепить реальные системы, супервизор
Регистрация: 24.03.2005
Сообщений: 138
Сказал спасибо: 1
Сказали Спасибо 23 раз(а) в 12 сообщении(ях)
Re: Графическое программирование контроллеров.
[quote=»rubel»][quote=»U9″]Сотрудник видимо составлял прогу на так называемом
ЯЗЫКЕ ФУНКЦИОНАЛЬНЫХ ДИАГРАММ (FBD) — стандартизированный язык программирования для промышленных контроллеров. Лет 5 назад встречался с таким на примере SIMATIKов от Ф. Simens(пакет STEP7). Там, где такое делается, обычно речь идет о серьезной автоматизации и крупных АСУ.
Программа нарисована не в виде алгоритма, а в виде принципиальной схемы: таймеры, счетчики и т.п. , поэтому получается ну очень наглядно. К тому же классная фича — отладка проги в реалтайме при работающем контроллере, когда подсвечиваются работающие блоки программы, переменные, входы-выходы. Зливка кода — безболезненная процедура без останова контроллера!
quote]
как раз Фирмы Simens контроллеры и программировал знакомый.
(Кажется, для малых очистительных сооружений.)
Можно подробнее, о них. Или где скачать описание.
Может взятся за освоение этих контроллеров?
Если там 16 -32 разряда и скорость хорошая.
Источник: kazus.ru
Beckhoff. Программируем контроллер
В этой статье я возьму самый простой пример, чтобы показать как это делается и какое программное обеспечение используется. Дальше уже будем погружаться в разные алгоритмы реальной автоматизации освещения. Также я не буду сильно вдаваться в детали — если кого заинтересует — читайте документацию или пишите письма, что знаю — расскажу.
1. Достаем контроллер из коробки
Перво-наперво, подключаем контроллер к питанию. Для этого находим в закромах блок питания на 24VDC и подключаем провода к клеммам питания. Так как конструктив от WAGO, то все соединения исполнены зажимными клеммами, ничего завинчивать не надо. Одножильные провода можно вставлять в клеммы так, многожильные следуя правилам хорошего тона, лучше обжать гильзой.
В документации к контроллеру написано, как расчитать требуемую мощность блока питания в зависимости от количества подключенных модулей. Для экспериментов подойдет любой. В рабочий шкаф я воткнул блок питания на дин-рейку на 2А.
У контроллера два разделенных ввода на 24VDC. Первый — питание самого контроллера и всех подключенных к нему модулей. Второй — питание контактов входа/выхода у модулей. Подаем 24 и туда и туда.
Контроллер подключен и радостно мигает огоньками. С помощью шаманских заклинаний, описанных в документации сбрасываем все настройки контроллера на «заводские». После этого контроллер получает IP адрес сети 172.16.17.*. Последнее число адреса узла мы задаем с помощью восьми джамперов на передней панели.
2. Конфигурирование контроллера
Все, IP адрес есть. Подключаем контроллер в сеть, проверяем, что он благополучно пингуется и подключаемся к контроллеру с компьютера. Для этого используем программу KS2000 от Beckhoff. После загрузки программы создаем новое подключение, вводим IP адрес контроллера и нажимаем кнопку CONNECT. В считанные доли секунды программа находит контроллер и выдает нам такую картинку: