Тема: Инструментальная поддержка процессов интерпретации и JIT-компиляции языков стандарта МЭК 61131 -3
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
ВВЕДЕНИЕ 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 гг.
✅ Заключение
Спроектирована модель транслятора МЭК-языков с учетом особенностей интерпретации и JIT-КОМПИЛЯЦИИ. На основе данной модели разработан прототип транслятора МЭК-языка Instruction List, с использованием компиляторной инфраструктуры LLVM.
Для функционального тестирования прототипа транслятора разработан эмулятор среды выполнения МЭК-языков, учитывающий разделы 1, 2, 3 и 5 международного стандарта МЭК 61131 и программной архитектуры МЭК- языков.
На основании полученных результатов можно сформулировать следующий вывод:
Использование модели ЛТ-компиляции и интерпретации при трансляции МЭК-языков с применением универсального промежуточного представления, позволяет разрабатывать перенастраиваемые JIT- компиляторы, которые поддерживают широкий диапазон архитектур ПЛК, а процесс их реализации требует гораздо меньше усилий, чем разработка статических компиляторов такого же типа.



