Программа ptusa_main
непосредственно управляет технологическим процессом.
- Общая архитектура системы
- Общее описание
- Как собрать проект
- Использование набора инструментов PLCnext Technology C++ для ОС Windows
- Как запустить проект
- Используемые библиотеки
Общая архитектура автоматизированной система управления технологическим процессом (АСУТП) изображена на рисунке ниже:
Управляющая логика реализуется в виде скрипта Lua. В ходе выполнения программы управление передается в отдельные специальные функции Lua, которые отвечают за отдельные этапы.
- Общая схема работы программы контроллера (в Drakon diagram language)
- Выполнение технологического процесса:
%%{ init: {'theme': 'neutral'} }%%
flowchart TD
A(["<b>2 Выполнение <br/> технологического процесса</b>"])
---
B[/"Для каждого <br/> аппарата (unit)"\]
B --- C[["<p style='width:150px'>3 Выполнение <br/> аппаратной <br/> процедуры"]]
C --- D[\"Следующий <br/> аппарат (unit)"/]
D --- E([Конец])
%%{ init: {'theme': 'neutral'} }%%
flowchart TD
A(["<b>3 Выполнение <br/> аппаратной процедуры</b>"]) --- B[/Для каждой операции\]
B --- C[[4 Выполнение операции]]
C --- D[\Следующая операция/]
D --- E([Конец])
%%{ init: {'theme': 'neutral'} }%%
flowchart TD
A([<b>5 Выполнение шагов</b>]) --- A1[[<p style='width:150px'>6 Выполнение <br/> главного шага]]
A1 --- B[/Для каждого <br/> дополнительного шага\]
B --- C[[<p style='width:150px'>6 Выполнение шага]]
C --- D[\"Следующий <br/> дополнительный шаг"/]
D --- E([Конец])
%%{ init: {'theme': 'neutral'} }%%
flowchart TD
A([<b>6 Выполнение шага</b>]) --- B[/Для каждого действия\]
B --- C[[7 Выполнение действия]]
C --- D[\Следующее действие/]
D --- E([Конец])
%%{ init: {'theme': 'neutral'} }%%
flowchart TD
A([<b>7 Выполнение действия</b>]) --- B[<p style='width:150px'> Логика действия]
B --- E([Конец])
- При включении/выключении операции происходит следующее:
- При выполнении команды происходит следующее:
Вы можете клонировать репозиторий при помощи следующей команды:
git clone --recurse-submodules https://github.com/savushkin-r-d/ptusa_main.git
Или, если вы клонировали проект без инициализированных и обновленных подмодулей, попробуйте следующее:
git submodules update --init --recursive
Требования:
- Microsoft Visual Studio Community 2019
Вы должны открыть (в Visual Studio) корневой каталог. Таким образом, вы получаете проект на основе CMake.
- Qt Creator
В Qt вы можете открыть файл CMakeList.txt клонированного репозитория.
Или клонировать репозиторий используя Qt: Добавить -> Импортировать проект -> Клонирование Git указать ссылку на репозиторий и поставить галочку для рекурсивного клонирования.
- Microsoft Visual Studio Community 2022
Перед запуском проекта необходимо убедиться в том, что у вас установлен C++ CMake tools for Windows. Средства C++ CMake для Windows устанавливаются с помощью:
Visual Studio Installer -> Разработка классических приложений на C++ -> Средства CMake C++ для Windows
Подробную информацию по установке можно получить здесь. Версия CMake, необходимая для сборки: 3.13 и выше.
После этого вы должны открыть (в Visual Studio) корневой каталог. Таким образом, вы получаете проект на основе CMake. Если после запуска возникла ошибка, то следует очистить кэш CMake: Проект -> Удалить кэш и выполнить перенастройку
.
Eclipse IDE с проектом на базе CMake в Linux.
Загрузите последние версии с веб-сайта Phoenix Contact https://www.phoenixcontact.com/products (например, из области AXC F 2152) PLCnext Technology C++ Toolchain для Windows
(текущая 2023.0 LTS) и sdk для Windows 64 bit
(текущая 2022.0.4 LTS) , в разделе Загрузки->Программное обеспечение
Перейдите в папку, где находятся загрузки (типичный путь %userprofile%/Downloads
), распакуйте архив (SDK_2021.9_Windows_AXC_F_2152.tar.xz.zip
).
Перейдите в папку, в которую ранее был распакован архив, вызовите CLI в консоли, используя следующую команду:
plcncli.exe install sdk –d [путь установки] –p [путь к архивному файлу]
Если вы устанавливаете несколько SDK, Phoenix Contact рекомендует использовать структуру папок "целевое имя/версия встроенного ПО".
Также ваш путь установки должен совпадать с путем в CMake.
Например:
plcncli.exe install sdk -d C:\CLI\sdks\AXCF2152\2022_0 \ -p pxc-glibc-x86_64-mingw32-axcf2152-image-mingw-cortexa9t2hf-neon-axcf2152-toolchain-2022.0.tar.xz
SDK указан для контроллера. Полный список контроллеров можно найти на сайте PHOENIX CONTACT (Главная страница > Продукция > ПЛК и системы ввода-вывода > Управление PLCnext > Список продуктов Технология PLCnext components)
Для запуска демо проекта вы должны использовать эту команду:
- После сборки и развертывания
windows-default
конфигурации cmake:
bin\install\windows-default\Release\ptusa_main.exe demo_projects/T1-PLCnext-Demo/main.plua path demo_projects/T1-PLCnext-Demo/ sys_path demo_projects/T1-PLCnext-Demo/sys/ debug
- Запуск проекта в Microsoft Visual Studio Community 2022:
Выбрать элемент запуска -> ptusa_main.exe
.
Lua
Так, все составные пользовательские типы данных (массивы, структуры, множества, очереди, списки) реализуются через механизм таблиц, а механизмы объектно-ориентированного программирования, включая множественное наследование — с использованием метатаблиц, которые также отвечают за перегрузку операций и ряд других возможностей.
Lua — это процедурный динамически типизированный модульный язык с автоматическим управлением памятью. Включает базовые элементы для поддержки функционального и объектного стилей программирования. Таким образом, Lua можно называть мультипарадигменным языком. Встроенные средства параллельного программирования позволяют писать многопоточные программы только средствами языка, не обращаясь к API операционной системы или внешним библиотекам. Так как основным назначением Lua является встраивание, он имеет эффективные средства межъязыкового взаимодействия, ориентированные, главным образом, на вызов библиотек Си и на работу в Си-окружении. Язык поддерживает небольшое количество встроенных типов данных: логические значения, числа, строки, функции, потоки. Типичные комбинированные структуры данных, такие как массивы, наборы, списки и записи, отсутствуют, вместо всех их используется одна базовая структура Lua — таблица.
Отдельный тип userdata предназначен специально для низкоуровневого программирования и обмена данными с внешним кодом на других языках. Функции в Lua являются объектами первого класса, могут присваиваться и передаваться в параметрах. Поддерживаются замыкания, есть возможность создания функций высших порядков. Объектная система прототипная, отсутствует явная поддержка наследования, однако оно легко реализуется с помощью метатаблиц.
Подробную информацию можно получить здесь.
Tolua
Подробную информацию можно получить здесь.
Zlib
Подробную информацию можно получить здесь.
Subhook
Подробную информацию можно получить здесь.
Cxxopts - это облегченная библиотека анализатора параметров C++, поддерживающая стандартный синтаксис стиля GNU для параметров.
Подробную информацию можно получить здесь.
Google Test
Подробную информацию можно получить здесь.
Google benchmark
Подробную информацию можно получить здесь.