Тип работы:
Предмет:
Язык работы:


Инструментальная поддержка процессов интерпретации и JIT-компиляции языков стандарта МЭК 61131 -3

Работа №22514

Тип работы

Магистерская диссертация

Предмет

программирование

Объем работы70
Год сдачи2016
Стоимость4900 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
372
Не подходит работа?

Узнай цену на написание


РЕФЕРАТ 2
ВВЕДЕНИЕ 5
1 Характеристика и анализ предметной области 8
1.1 Устройство программируемых логических контроллеров 8
1.2 Программная архитектура МЭК 61131-3 11
1.3 Язык программирования Instruction List (Список инструкций) 14
1.3.1 Формат инструкций 14
1.3.2 Аккумулятор 14
1.3.3 Модификаторы 15
1.3.4 Типы данных 16
1.3.5 Пример кода 16
1.4 Анализ существующих программных решений 17
1.4.1 CODESYS 17
1.4.2 Beremiz 19
2 Анализ общих требований 22
2.1 Лицензия 22
2.2 Модель жизненного цикла разработки ПО 22
2.3 Программные средства, используемые при выполнении работы 23
3 Структурная модель транслятора 25
3.1 Front-end транслятора 25
3.1.1 Лексический анализ 27
3.1.2 Синтаксический анализ 29
3.1.3 Семантический анализ 36
3.1.4 Таблица символов 37
3.1.5 Обработка ошибок 38
3.1.6 Генерация промежуточного представления IR 40
3.2 Back-end транслятора 44
3.2.1 LLVM 44
3.2.2 Внутренняя структура LLVM 46
3.2.3 Промежуточное представление LLVM IR 47
3.2.4 Генерация машинного кода 49
3.2.5 JIT-компиляция 51
4 Программная реализация прототипа транслятора МЭК-языков 54
4.1 Реализация синтаксического анализатора 54
4.2 Реализация генератора IR 56
4.3 Реализация JIT-компилятора 59
5 Функциональное тестирование прототипа транслятора МЭК-языков 61
5.1 Рабочий цикл эмулятора 63
5.2 Организация памяти 64
ЗАКЛЮЧЕНИЕ 66
СПИСОК СОКРАЩЕНИЙ 67
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 68


Программируемые логические контроллеры (ПЛК) используются практически во всех сферах человеческой деятельности для автоматизации технологических процессов, в системах противоаварийной защиты и сигнализации, в станках с числовым программным управлением, для управления дорожным движением, в системах жизнеобеспечения зданий, для сбора и архивирования данных, в системах охраны, в медицинском оборудовании, в системах связи, при постановке физического эксперимента, для автоматизации испытаний продукции и т. д.
В настоящие время для разработки программ для ПЛК используются (в основном) языки стандарта МЭК 61131-3 (МЭК-языки). В состав стандарта МЭК 61131-3 входит 5 независимых языков[3,5]:
- Instruction List (Список Инструкций) - Текстовый язык. Аппаратно¬независимый низкоуровневый ассемблероподобный язык;
- Ladder Diagram (Релейно-Контактные Схемы) - Графический язык. Представляет собой программную реализацию электрических схем на базе электромагнитных реле;
- Function Block Diagram (Функциональные Блоковые Диаграммы) - Графический язык. Программа образуется из списка цепей, выполняемых последовательно сверху вниз;
- Sequential Function Chart (Последовательные Функциональные Диаграммы) - Графический язык. Создан на базе математического аппарата сетей Петри. Описывает последовательность состояний и условий переходов;
- Structured Text (Структурированный текст) - Текстовый язык. По структуре и синтаксису ближе всего к языку программирования Паскаль.
В большинстве комплексов программирования для трансляции МЭК- языков используется принцип статической компиляции [1,7]. В некоторых случаях это неприемлемо, т.к. статический компилятор генерирует машинный код только для конкретной архитектуры. Такой машинный код является архитектурно-зависимым и поэтому его использование на других платформах невозможно. Это значит, что для каждой используемой архитектуры необходимо разрабатывать отдельный компилятор, что является достаточно дорогим решением, если необходимо поддерживать несколько архитектур.
JIT-компиляция построена на использовании принципов динамической компиляции и так называемого промежуточного представления (байт-кода). JIT-система транслирует исходный код программы в байт-код, который затем используется для генерации машинного кода во время исполнения исходной программы.
Байт-код является архитектурно-независимым, что обеспечивает его переносимость на платформы с различными архитектурами, где есть соответствующий JIT-компилятор. Разработка JIT-компилятора для байт¬кода требует меньших затрат, по сравнению с реализацией статического компилятора для исходного программного кода, поскольку байт-код имеет низкоуровневую структуру.
Более того, использование байт-кода значительно упрощает процесс построения перенастраиваемого JIT-компилятора, т.е. такого компилятора, который позволяет генерировать код для нескольких целевых архитектур, а процесс генерации машинного кода из байт-кода гораздо быстрее, чем из исходного.
В настоящее время отсутствуют инструменты трансляции МЭК- языков, использующие принципы интерпретации и JIT-компиляции. Это связано с тем, что отсутствует научно-обоснованная модель процессов интерпретации и JIT-компиляции МЭК-языков.
Целью данной работы является создание такой модели и программная реализация на ее основе работающего прототипа транслятора МЭК-языков.
Для достижения целей были сформулированы следующие задачи:
1) Анализ стандарта МЭК 61131-3;
2) Анализ моделей компиляции МЭК-языков;
3) Проектирование модели транслятора МЭК-языков с учетом особенностей интерпретации и JIT-компиляции;
4) Программная реализация прототипа транслятора МЭК-языка Instruction List;
5) Функциональное тестирование прототипа транслятора МЭК-языков.
Основные положения и результаты работы докладывались и обсуждались на научно-исследовательском семинаре преподавателей, аспирантов и магистрантов кафедры «Информатика» Института космических и информационных технологий СФУ в г. Красноярске в 2017-2018 гг.

Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


В ходе данной работы был произведен обзор существующих средств трансляции языков стандарта МЭК 61131-3. Проведен анализ предметной области, архитектуры программируемых логических контроллеров и программной архитектуры стандарта МЭК 61131-3.
Спроектирована модель транслятора МЭК-языков с учетом особенностей интерпретации и JIT-КОМПИЛЯЦИИ. На основе данной модели разработан прототип транслятора МЭК-языка Instruction List, с использованием компиляторной инфраструктуры LLVM.
Для функционального тестирования прототипа транслятора разработан эмулятор среды выполнения МЭК-языков, учитывающий разделы 1, 2, 3 и 5 международного стандарта МЭК 61131 и программной архитектуры МЭК- языков.
На основании полученных результатов можно сформулировать следующий вывод:
Использование модели ЛТ-компиляции и интерпретации при трансляции МЭК-языков с применением универсального промежуточного представления, позволяет разрабатывать перенастраиваемые JIT- компиляторы, которые поддерживают широкий диапазон архитектур ПЛК, а процесс их реализации требует гораздо меньше усилий, чем разработка статических компиляторов такого же типа.



1. Петров, И.В. Программируемые контроллеры. Стандартные языки и примеры прикладного проектирования / Под ред. проф. В.П. Дьяконова. - М.: СОЛОН-Пресс, 2004. - 256 с.
2. Минаев, И.Г. Программируемые логические контроллеры в автоматизированных системах управления / И.Г. Минаев, В.М. Шарапов,
B. В. Самойленко, Д.Г. Ушкур. - 2-е изд., перераб. и доп. - Ставрополь: АРГУС, 2010. - 128 с.
3. IEC 61131-3, 2 ed. Programmable Controllers - Programming Languages. - Введ. 2001 International Electrotechnical Commission, 2001. - 156 с.
4. Introduction into IEC 61131-3 Programming Languages [Электронный ресурс]. - Режим доступа: https://plcopen.org/pages/tc1_standards/iec_61131_3/.
5. John, Karl-Heinz. IEC 61131-3: Programming Industrial Automation Systems / Karl-Heinz John, M. Tiegelkamp. - Springer Science & Business Media, 2010. - 390 с.
6. Руководство пользователя по программированию ПЛК в CODESYS / Пер. ПК Пролог. - 3S Smart Software Solutions GmbH. - 453 с.
7. Баранов, И.А. Разработка прикладных программ для вычислительных комплексов на базе отечественных микропроцессоров с архитектурой SPARC с использованием языков стандарта IEC 61131-3 [Текст] / И.А. Баранов. - Всероссийская молодежная научно-техническая конференция ОАО «Концерн «Вега». - 2013.
8. Ахо, А.В. Компиляторы. Принципы, технологии и инструментарий: учебное пособие / А.В. Ахо, М.С. Лам, Р. Сети. - Вильямс, 2008. - 1184 с.
9. Свердлов, С.З. Конструирование компиляторов: Учебное пособие /
C. З. Свердлов. - LAP LAMBERT Academic Publishing, 2015. - 571 c.
10. Хантер, P. Проектирование и конструирование компиляторов / Пер. с англ. С.М. Круговой. - М: Финансы и статистика, 1984. - 232 с.
11. Parr, T. Language Implementation Patterns / T. Parr. - Pragmatic Bookshelf, 2010. - 374 с.
12. Croce, L. Just in Time Compilation [Электронный ресурс]. - Режим доступа: http://www.cs.columbia.edu/~aho/cs6998/Lectures/14-09-22_Croce_JIT. pdf/.
13. lark-parser Documentation Wiki [Электронный ресурс]. - Режим доступа: https: //github. com/lark-parser/lark/wiki/.
14. Shinan, E. Create a stand-alone LALR(1) parser in Python [Электронный ресурс]. - Режим доступа: http://blog.erezsh.com/create-a-stand- alone-lalr1-parser-in-python/.
15. Лопес, Б.К. LLVM. Инфраструктура для разработки компиляторов / Б.К. Лопес, Р. Аулер. - ДМК Пресс, 2015. - 342 с.
16. Боровский, A. LLVM: Генератор быстрого кода / Linux Format. - Выл. 2010. - № 2 (128). - с. 76-79.
17. LLVM Documentation [Электронный ресурс]. - Режим доступа: http://llvm.org/docs/.
18. llvmlite documentation [Электронный ресурс]. - Режим доступа: https://llvmlite.readthedocs.io/.
19. Bendersky, E. Building and using llvmlite [Электронный ресурс]. - Режим доступа: https://eli.thegreenplace.net/2015/building-and-using-llvmlite-a- basic-example/.
20. Python 3 Documentation. Process-based parallelism [Электронный
ресурс]. - Режим доступа: https://docs.python.org/3.4/library/multiprocessing.
html/.

Работу высылаем на протяжении 30 минут после оплаты.




©2024 Cервис помощи студентам в выполнении работ