Научная статья на тему 'ПРАКТИЧЕСКАЯ АПРОБАЦИЯ ПРОЦЕСС-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ НА ОТКРЫТЫХ МИКРОКОНТРОЛЛЕРНЫХ ПЛАТФОРМАХ'

ПРАКТИЧЕСКАЯ АПРОБАЦИЯ ПРОЦЕСС-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ НА ОТКРЫТЫХ МИКРОКОНТРОЛЛЕРНЫХ ПЛАТФОРМАХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1
1
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВСТРАИВАЕМЫЕ СИСТЕМЫ / ПРОЦЕСС-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ / ПРОМЫШЛЕННАЯ АВТОМАТИЗАЦИЯ / ПРЕДМЕТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Краснов Д.В., Нефедов Д.В., Санжиев Е.С., Лях Т.В., Розов А.С.

Традиционные методы программирования микроконтроллеров, такие как процедурное и объектно-ориентированное программирование на Си/Си++ и языке ассемблера, не предназначены для описания систем со сложным поведением. Перспективным подходом к описанию таких систем является процесс-ориентированное программирование. В статье рассматриваются процесс-ориентированные подходы к программированию открытых микроконтроллерных платформ. Представлена реализация процесс-ориентированной технологии программирования средствами языка Си. Методика апробирована на задаче разработки метеосервера. Описана реализация процесс-ориентированной технологии программирования на языке IndustrialC. Изложены результаты апробации языка IndustrialC на примере задачи автоматизации управления установкой вакуумного напыления УВН-71П-3. Приведены недостатки транслятора языка IndustrialC, позволившие обозначить дальнейшее развитие языка и транслятора. Проведен сравнительный анализ двух методов. По итогам анализа выявлены достоинства и недостатки каждого подхода.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Краснов Д.В., Нефедов Д.В., Санжиев Е.С., Лях Т.В., Розов А.С.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

APPROBATION OF A PROCESS-ORIENTED TECHNOLOGY FOR MICROCONTROLLER (MCU) PROGRAMMING

Traditional methods of microcontroller programming, such as procedural and object-oriented programming in C/C++ and Assembler languages, are not intended to describe systems with complex behavior. A promising approach to the description of such systems is the process-oriented programming. In this paper process-oriented approaches to the microcontroller programming are examined. The implementation of the technique proposed is presented by means of the C and Industrial C languages. In the first case the technique is tested on the task of a meteoserver development. The results of the approbation of the Industrial C language are given on the example of the vacuum deposition unit UVN-71P-3 control automation. The article presents the shortcomings of the Industrial C language translator, which made it possible to denote the further development of the language and the translator. A comparative analysis of the two methods is given. It revealed advantages and disadvantages of each approach.

Текст научной работы на тему «ПРАКТИЧЕСКАЯ АПРОБАЦИЯ ПРОЦЕСС-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ НА ОТКРЫТЫХ МИКРОКОНТРОЛЛЕРНЫХ ПЛАТФОРМАХ»

Д.В. Краснов, техник-программист Института автоматики и электрометрии СО РАН,

студент Новосибирского государственного университета Д.В. Нефедов, техник-программист Института автоматики и электрометрии СО РАН, студент Новосибирского государственного университета

Е.С. Санжиев, техник-программист Института автоматики и электрометрии СО РАН, студент Новосибирского государственного университета, e-mail: egorsanzhiev@gmail.com

Т.В. Лях, инженер-программист Института автоматики и электрометрии СО РАН А.С. Розов, младший научный сотрудник Института автоматики и электрометрии СО РАН

г. Новосибирск

УДК 004.424

ПРАКТИЧЕСКАЯ АПРОБАЦИЯ ПРОЦЕСС-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ НА ОТКРЫТЫХ МИКРОКОНТРОЛЛЕРНЫХ ПЛАТФОРМАХ

Традиционные методы программирования микроконтроллеров, такие как процедурное и объектно-ориентированное программирование на Си/Си++ и языке ассемблера, не предназначены для описания систем со сложным поведением. Перспективным подходом к описанию таких систем является процесс-ориентированное программирование. В статье рассматриваются процесс-ориентированные подходы к программированию открытых микроконтроллерных платформ. Представлена реализация процесс-ориентированной технологии программирования средствами языка Си. Методика апробирована на задаче разработки метеосервера. Описана реализация процесс-ориентированной технологии программирования на языке IndustrialC. Изложены результаты апробации языка IndustrialC на примере задачи автоматизации управления установкой вакуумного напыления УВН-71П-3. Приведены недостатки транслятора языка IndustrialC, позволившие обозначить дальнейшее развитие языка и транслятора. Проведен сравнительный анализ двух методов. По итогам анализа выявлены достоинства и недостатки каждого подхода.

Ключевые слова: встраиваемые системы, процесс-ориентированное программирование, открытые микроконтроллерные платформы, IndustrialC, промышленная автоматизация, предметно-ориентированные языки.

D.V. Krasnov, Software Technician, Student

D.V. Nefedov, Software Technician, Student

E.S. Sanzhiev, Software Technician, Student T.V. Lyakh, Programmer Engineer

A.S. Rozov, Junior Researcher

APPROBATION OF A PROCESS-ORIENTED TECHNOLOGY FOR MICROCONTROLLER (MCU) PROGRAMMING

Traditional methods of microcontroller programming, such as procedural and object-oriented programming in C/C+ + and Assembler languages, are not intended to describe systems with complex behavior. A promising approach to the description of such systems is the process-oriented programming. In this paper process-oriented approaches to the microcontroller programming are examined. The implementation of the technique proposed is presented by means of the C and Industrial C languages. In the first case the technique is tested on the task of a meteoserver development. The results of the approbation of the Industrial C language are given on the example of the vacuum deposition unit UVN-71P-3 control automation. The article presents the shortcomings of the Industrial C language translator, which made it possible to denote the further development of the language and the translator. A comparative analysis of the two methods is given. It revealed advantages and disadvantages of each approach.

Key words: embedded systems, process-oriented programming, open-source hardware, IndustrialC, industrial automation, domain-specific languages.

Введение

На сегодня системы на базе AVR микроконтроллеров широко используются в робототехнике [1], медицине [2], при создании управляющих и встраиваемых систем [3]. Это обусловлено появлением на рынке открытых микроконтроллерных платформ (ОМП), таких как Arduino, предоставляющих готовые аппаратные решения для реализации проектов так называемой малой автоматизации. В силу низкой стоимости аппаратной части стоимость разработки на базе ОМП определяется стоимостью разработки программного обеспечения (ПО) микроконтроллера. Эти расходы могут быть существенно сокращены за счет использования подходящей методики программирования.

Разработка программ для микроконтроллеров преимущественно ведется на языках Си/Си++ и языке ассемблера в процедурном или объектно-ориентированном стиле. Такие методики не предназначены для решения задач промышленной автоматизации и неэффективны при описании систем со сложным поведением [4, 5].

Встраиваемые системы по специфике алгоритмов во многом схожи с алгоритмами управления технологическими объектами: присутствуют событийность, параллельно исполняющиеся процессы, операции с временными интервалами и неопределенная продолжительность функционирования [6]. Отличительная особенность программирования встраиваемых систем на основе микроконтроллеров - активное использование аппаратных прерываний, что, с одной стороны, выделяет эту область программирования в отдельный класс, а с другой стороны, обусловливает интерес к исследованиям применимости к ней подходов, уже апробированных на задачах промышленной автоматизации, в первую очередь технологии процесс-ориентированного программирования.

В статье рассматриваются два подхода процесс-ориентированного программирования микроконтроллеров: программирование на языках Си/Си++ в процесс-ориентированном стиле и технология программирования на языке IndustrialC [7]. Описываются их отличительные особенности, излагаются результаты использования подходов на примере задач разработки метеосервера и автоматизации установки вакуумного напыления, на базе которых проводится их сравнительный анализ.

Реализация процесс-ориентированной технологии программирования

средствами языка Cu

Процессы реализуются с помощью конструкции switch-case, при этом каждый оператор case описывает одно состояние процесса.

switch(psw[P_TCP_IP].fsp)

{

case FS_START: {

break;

}

case READ_REQUEST: {

break;

}

case RESPONCE: {

break;

}

}

Описание состояния может содержать операторы перехода в другое состояние, старта/останова процесса, проверки его активности и обработки события тайм-аута.

Идентификаторы процессов и состояний задаются перечисляемыми типами (enum).

enum PROCESSES {

P_RS4 85,

P_TCP_IP,

P_RS4 8 5_TRANSMIT,

P_RS4 8 5_RECEIVE,

P_PRINT

};

enum TCP_IP_STATES {

FS_START, FS_STOP, READ_REQUEST, RESPONSE

};

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

struct {

unsigned int fsp; unsigned long T; } procs[PROC_NUM];

Операторы switch, соответствующие процессам, активируемым прерываниями, размещаются в функциях-обработчиках прерываний.

ISR(USART0_UDRE_vect) {

switch(procs[P_PRINT].fsp) {

case FS_START: {

break;

}

case FS_STOP:

{

break;

}

}

}

Операторы перехода в другое состояние, старта/останова/проверки активности процесса и обработки события тайм-аута реализуются макросами (директивами препроцессора).

#define set newfs(p, fs) procs[p].fsp = fs; procs[p].T = SysTime cur;

#define startp(p) procs[p].fsp = FS_START; procs[p].T = SysTime_cur;

#define stopp(p) procs[p].fsp = FS_STOP

#define check_stop(p) (procs[p].fsp == FS_STOP)

#define check error(p) (procs[p].fsp == FS ERROR)

#define timeout(p, N) ((SysTime cur - procs[p].T) >= N)

Подход позволяет описывать программу в виде совокупности взаимодействующих процессов, реализуемых switch-конструкциями, как это принято в процесс-ориентированном программировании, в том числе процессов, обеспечивающих обработку прерываний.

Реализация процесс-ориентированной технологии программирования на IndustrialC

Процесс-ориентированный язык IndustrialC основан на языках Си и Reflex, в которых программа задается как набор взаимодействующих процессов. В отличие от языка Reflex язык IndustrialC позволяет активировать процессы не только периодически, в фоновом режиме, но и по прерываниям. Кроме того, синтаксис языка расширен конструкциями, облегчающими работу с аппаратными прерываниями и регистрами микроконтроллера.

В IndustrialC гиперпроцессы задаются вектором прерывания, регистром и битом. Вектор задает прерывание, которым будет активироваться гиперпроцесс, регистр и бит используются для включения/выключения прерывания операторами start hyperprocess и stop hyperprocess.

hyperprocess TIMER_INTERRUPT

{

vector = TIMER1_COMPA_vect; register = TIMSK1; bit = OCIE1A;

}

При объявлении процесса указывается гиперпроцесс, активирующий этот процесс. Процесс описывается набором состояний.

process Temperature : TIMER_INTERRUPT

{

state FS_START {

PORTB &= ~(1<<thermoCLK); to state readData;

}

state SCKsignalLow {

PORTB &= ~(1<<thermoCLK); to state readData;

}

}

IndustrialC предоставляет возможность использования директив препроцессора языка Си и использования вставок на языке Си. В качестве среды разработки предлагается программа Notepad++, расширенная плагином для сборки и загрузки программ на микроконтроллер.

Практическая апробация процесс-ориентированной технологии программирования средствами языка Си

Подход был апробирован на задаче создания метеосервера на открытой микроконтроллерной платформе, реализуемого в виде интернет-адаптера электронного табло ПК-Электро-никс ОЗАК-280-?^485, оснащенного датчиками температуры и давления. Метеосервер, подключаемый к табло по последовательному каналу RS-485 и к отладочному ПК через микросхему FTDI FT232R, подключается также к сети Интернет через плату расширения (Ethernet-shield) на основе микросхемы Wiznet W5100 и в ответ на веб-запросы, посылаемые через браузер, посылает картинку-баннер с текущей информацией о погоде. Предусмотрена возможность вывода отладочной информации на ПК.

Архитектурно ПО метеосервера состоит из трех гиперпроцессов и пяти процессоров. Передача данных на табло и отладочный ПК реализованы в гиперпроцессах, обслуживающих прерывания от соответствующих USART. Процессы приема данных с табло, формирования изображения с информацией о погоде и обработки веб-запросов реализованы в фоновом гиперпроцессе. Обработка конструктивно обусловленных сбоев Wiznet W5100 обеспечивается через механизм watch-dog, реализованный через прерывание от таймера.

Созданное ПО прошло стресс-тестирование и внедрено на сайте Института автоматики и электрометрии СО РАН [8]. За более чем годовой срок автономной эксплуатации сбоев не зафиксировано, что позволяет говорить о высокой надежности разработанной программно-аппаратной системы. Сопровождаемость кода подтверждается недавним внедрением механизма архивирования метеоданных [9].

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

Практическая апробация языка IndustrialC

Практическая апробация языка IndustrialC проводилась на задаче разработки системы автоматизации установки вакуумного напыления УВН-71П-3. Система автоматизации имеет двухуровневую архитектуру, состоящую из персонального компьютера (ПК) и микроконтроллерной части. ПО микроконтроллера разработано в процесс-ориентированном стиле на языке IndustrialC и состоит из четырех гиперпроцессов и семи процессов. В программе активно используются прерывания таймера и USART, которые обрабатываются выделенными процессами [10]. Программа считывает данные с термопары, регулирует температуру нагревателя по ПИД-алгоритму, управляет мощностью нагревателя по алгоритму Брезенхема и осуществляет интенсивный обмен данными с ПК оператора через микросхему FTDI FT232R по расширенному протоколу Modbus через USB-UART. ПО ПК оператора (рис.) выполнено средствами пакета LabVIEW и предоставляет пользователю графический интерфейс, возможность ввода заданий в контуры регулирования и возможность автоматической отработки технологических программ напыления халькогенидных пленок [11]. Проведены комплексные испытания системы на физическом имитаторе.

Ш Л м j» 501 у1К* Гр*4м 1—жмм щшшил 9 -> 1 •—' <WUej

w

1 "

МкИИО К

/ Ж J*UMMW 1 *

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

J 1 ten JL

» П ) 0 4М М М УЖ ВТ.1 Щ 1111 о т in

i.-^?? 1 1

Рисунок - Графический интерфейс оператора установки

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

время выявлена необходимость дальнейшего расширения функциональности транслятора IndustrialC диагностикой недостижимых состояний. Практически обоснована потребность в расширении синтаксиса языка встроенным механизмом преобразования типов, возможностью использования переменных при спецификации тайм-аутов. Выявлена проблема с использованием timeout внутри гиперпроцесса, активируемого через прерывание, и предложен механизм обработки тайм-аутов в процессах-близнецах, автоматически создаваемых в фоновом гиперпроцессе.

Решение выявленных проблем лежат в рамках общей концепции процесс-ориентированной технологии программирования и запланировано к реализации в следующей версии языка и транслятора.

Сравнительный анализ подходов

Наименование подхода Плюсы Минусы

Программирование средствами языка Си Бесшовность описания алгоритма (в отличие от структурного и объектно-ориентированного программирования структура алгоритма в процесс-ориентированном стиле соответствует технологическому описанию алгоритма работы системы). Простота реализации (для использования подхода достаточно штатных средств трансляции компилятора языка Си). Наличие большого числа рутинных операций при программировании, нелокальность правок кода при модификации и, как следствие, низкая читаемость исходного кода программы. Возможность неконтролируемых нарушений в стиле программирования и целостности процесс-ориентированной архитектуры. Относительно быстрая (по сравнению с IndustrialC) потеря сопровож-даемости проекта.

IndustrialC Бесшовность описания алгоритма (в отличие от структурного и объектно-ориентированного программирования структура алгоритма в процесс-ориентированном стиле соответствует технологическому описанию алгоритма работы системы). Поддержка специфики программирования встроенных систем, реализуемых на ОМП, (параллелизм, событийность, синхронизм, активное использование прерываний и т.д.) на понятийном уровне. Высокий уровень сопровождаемости программ. Необходимость использования специализированных лингвистических и инструментальных средств.

Заключение

Рассмотрены подходы к программированию микроконтроллеров в процесс-ориентированном стиле - программирование на языке Си с оформлением функций-обработчиков прерываний в виде набора конечных автоматов и использование специализированного языка IndustrialC. Проведена апробация подходов на задачах разработки метеосервера и автоматизации установки вакуумного напыления. Было практически показано, что оба подхода приме-

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

Программирование на языке Си с использованием операторов switch-case и макросов позволяет обеспечить взаимодействие компонентов системы без значительных накладных расходов и не требует использования специализированных инструментов разработки.

Использование языка IndustrialC по сравнению с предыдущим подходом позволяет значительно уменьшить объем исходного кода и обеспечивает расширяемость и сопровождае-мость системы за счет локальности правок кода, возникающих при изменении архитектуры. Статические проверки на этапе трансляции позволяют диагностировать значительное число ошибок до получения исполняемого кода.

Решение проблем, выявленных при выполнении работы, лежит в рамках общей концепции процесс-ориентированной технологии программирования и запланировано к реализации в следующей версии языка и транслятора.

Библиография

1. Масюк В.М., Кодубенко В.И., Симонова Л.С. Обзор и классификация современных микроконтроллеров в области мехатроники и робототехники // Материалы всерос. науч.-техн. конф. «Наукоемкие технологии в приборо- и машиностроении и развитие инновационной деятельности в вузе». - Калуга, 2016. - Т. 5. - С. 40-44.

2. Ямпилов С.С., Галсанов Б.Р., Копылова Е.И. и др. Разработка устройства для проведения импедансной спектрометрии биологических объектов // Вестник ВСГУТУ. - 2016. - № 6. - С. 90-94.

3. Пьявченко Т.А. Проектирование АСУ ТП в SCADA-системе: учеб. пособие. - Таганрог: Изд-во Технологического института ЮФУ, 2007. - 84 с.

4. Розов А.С., Зюбин В.Е. Расширенная модель гиперпроцесса для программирования микроконтроллеров // Промышленные АСУ и контроллеры. - 2016. - № 9. - С. 34-38.

5. Лях Т.В., Зюбин В.Е., Сизов М.М. Опыт применения языка Reflex при автоматизации Большого солнечного вакуумного телескопа // Промышленные АСУ и контроллеры.- 2016. - № 7. - С. 37-43.

6. Зюбин В.Е. Программирование информационно-управляющих систем на основе конечных автоматов: учеб.-метод. пособие. - Новосибирск: Изд-во Новосиб. гос. ун-та, 2006. - 96 с.

7. RozovA.S., Zyubin V.E. Process-oriented programming language for MCU-based automation // IEEE International Conference on Control and Communications, SIBCON-2013. - Krasnoyarsk, 2008.

8. Сайт Института автоматики и электрометрии СО РАН: [сайт]. - URL: https://www.iae.nsk.su

9. Нефедов Д.В. Разработка подсистемы хранения и отображения данных метеосервера на открытой микроконтроллерной платформе // Материалы LV Междунар. науч. студ. конф. МНСК-2017: Информационные технологии. - Новосибирск, 2017. - С. 88.

10. Краснов Д.В., Санжиев Е.С. Программный комплекс автоматизированного управления термостатированным испарителем // Сб. науч. тр. XIV Междунар. конф. студ., аспирантов и молодых ученых «Перспективы развития фундаментальных наук». - Томск, 2017. - Т. 7. - С. 66-68.

11. Санжиев Е.С., Краснов Д.В. Разработка программного комплекса автоматизированного управления напылительной установкой УВН-71П-3 // Материалы LV Междунар. науч. студ. конф. МНСК-2017: Информационные технологии. - Новосибирск, 2017. - С. 92.

Bibliography

1. Masyuk V.M., Kodubenko V.I., Simonova L.S. Overview and classification of modern microcontrollers in the field of mechatronics and robotics // High technology in instrument engineering and mechanical engineering and the development of innovative activities in the university. - Kaluga, 2016. -Vol. 5. - P. 40-44.

2. Yampilov S.S., Galsanov B.R., Kopylova E.I. et al. Development of a device for impedance spectrometry of biological objects // Bulletin of ESSUTM. - 2016. - N 22. - P. 90-94.

3. Pyavchenko T.A. Design of process control systems in the SCADA system. Taganrog: Southern Federal University, 2007. - 78 p.

4. Rozov A.S., Zyubin V.E. Extended process-oriented model for MCU Programming // Industrial Automatic Systems and Controlles. - 2016. - N 9. - P. 34-38.

5. Lyakh T.V., Zyubin V.E., SizovM.M. The reflex language usage to automate the large solar vacuum telescope // Industrial Automatic Systems and Controlles. - 2016. - N 7. - P. 37-43.

6. Zyubin V.E. Programming of control systems based on finite state machines: Textbook. -Novosibirsk: Novosibirsk state university, 2006. - 96 p.

7. RozovA.S., Zyubin V.E. Process-oriented programming language for MCU-based automation // IEEE International Conference on Control and Communications, SIBCON-2013. - Krasnoyarsk, 2008.

8. Institute of Automation and Electrometry. - URL: https:// www.iae.nsk.su

9. NefedovD.V. Development of a subsystem for storage and display of weather server data on an open microcontroller platform // 55th International scientific student conference. - Novosibirsk, 2017. - P. 88.

10. Krasnov D.V., Sanzhiev E.S. Software for automated control of a thermostated evaporator // XIVth International conference of students, graduate students and young scientists "Prospects for the development of fundamental science". - Tomsk, 2017. - Vol. 7. - P. 66-68.

11. Sanzhiev E.S., Krasnov D.V. Development of a software package for automated control of the sputtering plant UVN-71P-3 // Proceedings of the 55th International scientific student conference. -Novosibirsk, 2017. - P. 92.

i Надоели баннеры? Вы всегда можете отключить рекламу.