Кодогенератор из графического представления детерминированного конечного автомата алгоритма управления
|
Оглавление
Реферат 13
Содержание 14
Термины и определения 17
Обозначения и сокращения 18
Введение 19
1 Техническое задание 22
1.1. Назначение программного обеспечения 22
1.2. Основные цели и задачи разработки ПО 22
1.3. Требования к программному обеспечению 24
2. Основная часть 25
2.1. Описание принципов построения программного обеспечения на основе
автоматного программирования 25
2.2. Пользовательский интерфейс программного обеспечения 29
2.3. Обеспечение вывода таблицы списка ребер на основе графов 36
2.3.1. Генерация кода на языке ST 39
2.4. Применение разработанного программного обеспечения 39
2.4.1. Реализация алгоритма работы станка 39
2.4.2. Генерация кода из алгоритма работы станка 46
2.4.3. Применение сгенерированного кода на языке ST в программном
обеспечении Owen Logic 46
2.4.4. Перспективы дальнейшего развития программного обеспечения 48
3. Концепция стартап-проекта 50
3.1 Основные качества продукта, решаемая продуктом проблема 50
3.2 Защита интеллектуальной собственности 50
3.3 Объем и емкость рынка 52
3.4 Анализ современного состояния и перспектив отрасли 55
3.5 Расчет себестоимости продукта 56
3.6 Конкурентные преимущества продукта и обзор технико-экономических
характеристик аналогов 58
3.7 Описание целевых сегментов потребителей 61
3.8 Бизнес-модель проекта и стратегия продвижения 62
3.9 Экономическое обоснование стартап-проекта 63
3.9.1 Инвестиционные издержки 63
3.9.2 Ценовая политика 64
3.9.3 Показатели эффективности проекта 66
4. Социальная ответственность 72
4.1 Правовые и организационные вопросы обеспечения безопасности 73
4.1.1 Специальные (характерные для проектируемой рабочей зоны) правовые
нормы трудового законодательства 73
4.1.2 Организационные мероприятия при компоновке рабочей зоны 73
4.2 Производственная безопасность 74
4.2.1 Отклонение показателей микроклимата 76
4.2.2 Превышение уровня шума 77
4.2.3 Недостаточная освещенность рабочей зоны 77
4.2.4 Повышенное значение напряжения в электрической цепи, которое может
пройти через тело человека 78
4.2.5 Умственное перенапряжение 79
4.2.6 Перенапряжение зрительного анализатора 79
4.2.7 Эмоциональные перегрузки 79
4.2.8 Отсутствие естественного света 80
4.3 Экологическая безопасность 81
4.3.1 Влияние объекта исследования на гидросферу 81
4.3.2 Влияние объекта исследования на литосферу 82
4.3.3 Влияние объекта исследования на атмосферу 82
4.4 Безопасность в чрезвычайных ситуациях 83
4.4.1 Анализ вероятных ЧС, которые может инициировать объект исследований 83
4.4.2 Обоснование мероприятий по предотвращению ЧС 83
Вывод по разделу 84
Заключение 86
Conclusion 87
Список публикаций студента 88
Список литературы 89
ПРИЛОЖЕНИЕ А 97
Листинг А.1 - Сгенерированный код на языке ST 97
ПРИЛОЖЕНИЕ Б 99
Пульт управления фрезером наклонных поверхностей 99
ПРИЛОЖЕНИЕ В 100
Граф-схема алгоритма управления станком для автомата №1 (часть 1) 100
ПРИЛОЖЕНИЕ Г 101
Граф-схема алгоритма управления станком для автомата №1 (часть 2) 101
ПРИЛОЖЕНИЕ Д 103
Граф-схема алгоритма управления станком для автомата №1 (часть 3) 103
ПРИЛОЖЕНИЕ Е 105
Граф-схема алгоритма управления станком для автомата №2 105
ПРИЛОЖЕНИЕ Ж 106
Листинг Ж.1 - Сгенерированный код на языке ST для станка-фрезера 106
ПРИЛОЖЕНИЕ И 113
Регистрация программы для ЭВМ (продукт FSMLogGen) 113
ПРИЛОЖЕНИЕ К 114
Таблица конкурентных решений 114
ПРИЛОЖЕНИЕ Л 120
Модель по А. Остервальдеру и И. Пинье 120
Реферат 13
Содержание 14
Термины и определения 17
Обозначения и сокращения 18
Введение 19
1 Техническое задание 22
1.1. Назначение программного обеспечения 22
1.2. Основные цели и задачи разработки ПО 22
1.3. Требования к программному обеспечению 24
2. Основная часть 25
2.1. Описание принципов построения программного обеспечения на основе
автоматного программирования 25
2.2. Пользовательский интерфейс программного обеспечения 29
2.3. Обеспечение вывода таблицы списка ребер на основе графов 36
2.3.1. Генерация кода на языке ST 39
2.4. Применение разработанного программного обеспечения 39
2.4.1. Реализация алгоритма работы станка 39
2.4.2. Генерация кода из алгоритма работы станка 46
2.4.3. Применение сгенерированного кода на языке ST в программном
обеспечении Owen Logic 46
2.4.4. Перспективы дальнейшего развития программного обеспечения 48
3. Концепция стартап-проекта 50
3.1 Основные качества продукта, решаемая продуктом проблема 50
3.2 Защита интеллектуальной собственности 50
3.3 Объем и емкость рынка 52
3.4 Анализ современного состояния и перспектив отрасли 55
3.5 Расчет себестоимости продукта 56
3.6 Конкурентные преимущества продукта и обзор технико-экономических
характеристик аналогов 58
3.7 Описание целевых сегментов потребителей 61
3.8 Бизнес-модель проекта и стратегия продвижения 62
3.9 Экономическое обоснование стартап-проекта 63
3.9.1 Инвестиционные издержки 63
3.9.2 Ценовая политика 64
3.9.3 Показатели эффективности проекта 66
4. Социальная ответственность 72
4.1 Правовые и организационные вопросы обеспечения безопасности 73
4.1.1 Специальные (характерные для проектируемой рабочей зоны) правовые
нормы трудового законодательства 73
4.1.2 Организационные мероприятия при компоновке рабочей зоны 73
4.2 Производственная безопасность 74
4.2.1 Отклонение показателей микроклимата 76
4.2.2 Превышение уровня шума 77
4.2.3 Недостаточная освещенность рабочей зоны 77
4.2.4 Повышенное значение напряжения в электрической цепи, которое может
пройти через тело человека 78
4.2.5 Умственное перенапряжение 79
4.2.6 Перенапряжение зрительного анализатора 79
4.2.7 Эмоциональные перегрузки 79
4.2.8 Отсутствие естественного света 80
4.3 Экологическая безопасность 81
4.3.1 Влияние объекта исследования на гидросферу 81
4.3.2 Влияние объекта исследования на литосферу 82
4.3.3 Влияние объекта исследования на атмосферу 82
4.4 Безопасность в чрезвычайных ситуациях 83
4.4.1 Анализ вероятных ЧС, которые может инициировать объект исследований 83
4.4.2 Обоснование мероприятий по предотвращению ЧС 83
Вывод по разделу 84
Заключение 86
Conclusion 87
Список публикаций студента 88
Список литературы 89
ПРИЛОЖЕНИЕ А 97
Листинг А.1 - Сгенерированный код на языке ST 97
ПРИЛОЖЕНИЕ Б 99
Пульт управления фрезером наклонных поверхностей 99
ПРИЛОЖЕНИЕ В 100
Граф-схема алгоритма управления станком для автомата №1 (часть 1) 100
ПРИЛОЖЕНИЕ Г 101
Граф-схема алгоритма управления станком для автомата №1 (часть 2) 101
ПРИЛОЖЕНИЕ Д 103
Граф-схема алгоритма управления станком для автомата №1 (часть 3) 103
ПРИЛОЖЕНИЕ Е 105
Граф-схема алгоритма управления станком для автомата №2 105
ПРИЛОЖЕНИЕ Ж 106
Листинг Ж.1 - Сгенерированный код на языке ST для станка-фрезера 106
ПРИЛОЖЕНИЕ И 113
Регистрация программы для ЭВМ (продукт FSMLogGen) 113
ПРИЛОЖЕНИЕ К 114
Таблица конкурентных решений 114
ПРИЛОЖЕНИЕ Л 120
Модель по А. Остервальдеру и И. Пинье 120
Выпускная квалификационная работа посвящена разработке графического инструмента для автоматизации разработки программного обеспечения с использованием формальных моделей. На сегодняшний день разрабатывается большое количество программных средств для различных типов задач, в частности, существующих в области автоматики. Разрабатываемый инструмент позволит упростить процессы написания программного кода для АСУ ТП.
Основным этапом разработки ПО является написание исходного кода. Один из возможных подходов к автоматизации данного процесса - использование автоматного программирование. Данная парадигма подразумевает формализацию поведения будущего продукта в виде конечного автомата. Такая формализация позволяет автоматизировать как процесс написания исходного программного кода, так и этап тестирования.
Автоматное программирование [1], иначе называемое «программирование от состояний» или «программирование с явным выделением состояний» - это парадигма программирования, при использовании которой программа или ее фрагмент осмысливается как модель какого-либо формального автомата. Является методом создания программ, поведение которых можно описать через автомат. В автоматном программировании используются такие понятия, как: входное воздействие, состояние и выходная реакция. Связь этих понятий осуществляется при построение графов-переходов автоматов.
Определяющими для автоматного программирования являются следующие особенности:
1. временной период выполнения программы разбивается на шаги автомата, каждый из которых представляет собой выполнение определенной (одной и той же для каждого шага) секции кода с единственной точкой входа; такая секция может быть оформлена, например, в виде отдельной функции и может быть разделена на подсекции, соответствующие отдельным состояниям или категориям состояний
2. передача информации между шагами автомата осуществляется только через явно обозначенное множество переменных, называемых состоянием автомата; между шагами автомата программа, не может содержать неявных элементов состояния. Полностью выполнение кода в автоматном стиле представляет собой цикл (возможно, неявный) шагов автомата.
Одним из терминов автоматного программирования является «Switch- технология» [1, 2], предназначенная для разработки систем логического управления на базе конечных автоматов. Она охватывает процесс спецификации, проектирования, реализации, отладки, верификации, документирования и сопровождения. В программной реализации switch- технология реализуется с использованием case-операторов (например, в C, C++).
Автоматное программирование находит свое применение и в области автоматизации при написании программного кода для программируемых логических контроллеров.
Одними из основных языков программирования таких устройств, как ПЛК, ПР, предназначенных для управления технологическими процессами, являются языки стандарта МЭК 61131-3-2016. Каждый из языков обладает недостатками при написании кода. Такой язык, как FBD, используемый для построения блоковых диаграмм, характеризуется сложностью внесения исправлений в последовательную логику работы алгоритма и громоздкостью схем. Язык LD является наглядным средством программирования последовательных операций (срабатывания реле, ключей), но с возрастанием сложности алгоритма понимание его принципов затрудняется. Разработка кода на языке ST отличается монотонностью процесса и не обладает достаточной наглядностью для человека с минимальными навыками программирования. Язык IL считается устаревшим и не рекомендуется к использованию. Более того, он исключен в третьей редакции IEC 61131-3:2013 [3]. И последним языком современного стандарта ГОСТ Р МЭК 61131-3-2016 является SFC. Данный язык обладает достаточной наглядностью, но при этом отображает лишь структуру организации кода алгоритма, промежуточные шаги и переходы которого пишутся на других языках программирования стандарта МЭК 61131-3-2016. Таким образом, при использовании данных языков не исключаются возможности допущения ошибок из-за отсутствия наглядности или человеческого фактора.
Описание систем со сложным поведением - довольно непростая задача и без использования диаграмм приводит к трудностям на всех этапах жизненного цикла [4]. Достоинство автоматного программирования по сравнению с языками стандарта МЭК 61131-3-2016 заключается в том, что с использованием данной парадигмы существует возможность создания программного обеспечения, позволяющего пользователю задавать диаграммы (графы переходов), что делает логику того или иного алгоритма наглядной и прозрачной. Более того, с использованием автоматных программ упрощается внесение изменений в них специалистами в предметной области, не являющихся профессиональными программистами. Ещё одним достоинством автоматного программирования с точки зрения графического отображения алгоритма, является возможность для программиста на время забыть особенности программного обеспечения, графически отобразив их с тем, чтобы спустя определенное время, вспомнить принципы построения кода.
После создания графической схемы процесса производится её преобразование в программный код по заранее заданному шаблону, что позволяет значительно ускорить разработку ПО для автоматизированных систем управления.
Актуальность выбранной темы обусловлена тем, что в настоящее время необходимо внедрять более эффективные методы разработки программного обеспечения, направленные на увеличение производительности создания программ для АСУ и минимизации человеческого фактора при написании кода. Стоит также отметить, что в настоящее время существует нехватка специалистов в области IT. С применением кодогенерации в перспективе можно существенно сократить потребность компаний в IT-специалистах. Предлагаемое решение можно считать эффективной современной технологией разработки программного обеспечения.
Основным этапом разработки ПО является написание исходного кода. Один из возможных подходов к автоматизации данного процесса - использование автоматного программирование. Данная парадигма подразумевает формализацию поведения будущего продукта в виде конечного автомата. Такая формализация позволяет автоматизировать как процесс написания исходного программного кода, так и этап тестирования.
Автоматное программирование [1], иначе называемое «программирование от состояний» или «программирование с явным выделением состояний» - это парадигма программирования, при использовании которой программа или ее фрагмент осмысливается как модель какого-либо формального автомата. Является методом создания программ, поведение которых можно описать через автомат. В автоматном программировании используются такие понятия, как: входное воздействие, состояние и выходная реакция. Связь этих понятий осуществляется при построение графов-переходов автоматов.
Определяющими для автоматного программирования являются следующие особенности:
1. временной период выполнения программы разбивается на шаги автомата, каждый из которых представляет собой выполнение определенной (одной и той же для каждого шага) секции кода с единственной точкой входа; такая секция может быть оформлена, например, в виде отдельной функции и может быть разделена на подсекции, соответствующие отдельным состояниям или категориям состояний
2. передача информации между шагами автомата осуществляется только через явно обозначенное множество переменных, называемых состоянием автомата; между шагами автомата программа, не может содержать неявных элементов состояния. Полностью выполнение кода в автоматном стиле представляет собой цикл (возможно, неявный) шагов автомата.
Одним из терминов автоматного программирования является «Switch- технология» [1, 2], предназначенная для разработки систем логического управления на базе конечных автоматов. Она охватывает процесс спецификации, проектирования, реализации, отладки, верификации, документирования и сопровождения. В программной реализации switch- технология реализуется с использованием case-операторов (например, в C, C++).
Автоматное программирование находит свое применение и в области автоматизации при написании программного кода для программируемых логических контроллеров.
Одними из основных языков программирования таких устройств, как ПЛК, ПР, предназначенных для управления технологическими процессами, являются языки стандарта МЭК 61131-3-2016. Каждый из языков обладает недостатками при написании кода. Такой язык, как FBD, используемый для построения блоковых диаграмм, характеризуется сложностью внесения исправлений в последовательную логику работы алгоритма и громоздкостью схем. Язык LD является наглядным средством программирования последовательных операций (срабатывания реле, ключей), но с возрастанием сложности алгоритма понимание его принципов затрудняется. Разработка кода на языке ST отличается монотонностью процесса и не обладает достаточной наглядностью для человека с минимальными навыками программирования. Язык IL считается устаревшим и не рекомендуется к использованию. Более того, он исключен в третьей редакции IEC 61131-3:2013 [3]. И последним языком современного стандарта ГОСТ Р МЭК 61131-3-2016 является SFC. Данный язык обладает достаточной наглядностью, но при этом отображает лишь структуру организации кода алгоритма, промежуточные шаги и переходы которого пишутся на других языках программирования стандарта МЭК 61131-3-2016. Таким образом, при использовании данных языков не исключаются возможности допущения ошибок из-за отсутствия наглядности или человеческого фактора.
Описание систем со сложным поведением - довольно непростая задача и без использования диаграмм приводит к трудностям на всех этапах жизненного цикла [4]. Достоинство автоматного программирования по сравнению с языками стандарта МЭК 61131-3-2016 заключается в том, что с использованием данной парадигмы существует возможность создания программного обеспечения, позволяющего пользователю задавать диаграммы (графы переходов), что делает логику того или иного алгоритма наглядной и прозрачной. Более того, с использованием автоматных программ упрощается внесение изменений в них специалистами в предметной области, не являющихся профессиональными программистами. Ещё одним достоинством автоматного программирования с точки зрения графического отображения алгоритма, является возможность для программиста на время забыть особенности программного обеспечения, графически отобразив их с тем, чтобы спустя определенное время, вспомнить принципы построения кода.
После создания графической схемы процесса производится её преобразование в программный код по заранее заданному шаблону, что позволяет значительно ускорить разработку ПО для автоматизированных систем управления.
Актуальность выбранной темы обусловлена тем, что в настоящее время необходимо внедрять более эффективные методы разработки программного обеспечения, направленные на увеличение производительности создания программ для АСУ и минимизации человеческого фактора при написании кода. Стоит также отметить, что в настоящее время существует нехватка специалистов в области IT. С применением кодогенерации в перспективе можно существенно сократить потребность компаний в IT-специалистах. Предлагаемое решение можно считать эффективной современной технологией разработки программного обеспечения.
Результатом выполнения ВКР стало разработанное программное обеспечение для проектирования автоматных моделей и их преобразования в программный код.
В ходе работы были реализованы: отрисовка состояний и переходов между ними, редактирование графических примитивов, сохранение и загрузка проектов, конвертер автоматных моделей на язык ST для программирования ПЛК и ПР. Помимо этого, осуществлена возможность создания параллельных конечных автоматов.
С использованием разработанного функционала программы был спроектирован алгоритм на основе автоматных моделей для управления станком: фрезером наклонных поверхностей надрессорной балки железнодорожной тележки грузового вагона. В результате из модели работы станка сгенерирован код на языке ST и применен к макросу на языке ST для модели устройства ПР200 программного обеспечения Owen Logic.
В результате формального описания алгоритма конечными автоматами синтезирована программа на языке FBD с применением макросов на языке ST в среде разработки Owen Logic. Возможность использования макросов на языке ST позволила осуществить применение программного кода, полученного из автоматных моделей, на относительно дешевом программируемом реле взамен более дорогого промышленного контроллера ПЛК160.
Таким образом, было предложено более эффективное и экономичное решение в виде программного обеспечения для проектирования автоматных моделей и генерации кода.
В ходе работы были реализованы: отрисовка состояний и переходов между ними, редактирование графических примитивов, сохранение и загрузка проектов, конвертер автоматных моделей на язык ST для программирования ПЛК и ПР. Помимо этого, осуществлена возможность создания параллельных конечных автоматов.
С использованием разработанного функционала программы был спроектирован алгоритм на основе автоматных моделей для управления станком: фрезером наклонных поверхностей надрессорной балки железнодорожной тележки грузового вагона. В результате из модели работы станка сгенерирован код на языке ST и применен к макросу на языке ST для модели устройства ПР200 программного обеспечения Owen Logic.
В результате формального описания алгоритма конечными автоматами синтезирована программа на языке FBD с применением макросов на языке ST в среде разработки Owen Logic. Возможность использования макросов на языке ST позволила осуществить применение программного кода, полученного из автоматных моделей, на относительно дешевом программируемом реле взамен более дорогого промышленного контроллера ПЛК160.
Таким образом, было предложено более эффективное и экономичное решение в виде программного обеспечения для проектирования автоматных моделей и генерации кода.



