Giter VIP home page Giter VIP logo

plc-uploader's Introduction

г. Королёв, 2022 г
Колледж космического машиностроения и технологий

КУРСОВОЙ ПРОЕКТ

по дисциплине МДК.01.02. Программирование в мехатронных системах ПРОЕКТИРОВАНИЕ И ПРОГРАММИРОВАНИЕ СИСТЕМЫ СБОРКИ И ДОСТАВКИ ОТПРАВЛЯЕМЫХ ПРОГРАММНЫХ ПАКЕТОВ ДЛЯ ПЛК НА БАЗЕ ВСТРАИВАЕМЫХ ОПЕРАЦИОННЫХ СИСТЕМ Пояснительная записка КП.15.02.10. 22. 09 .ПЗ Обучающийся группы МР– 19 : Краснов А. С. Руководитель курсового проекта: Фатеев Д. И.

### ГЛОССАРИЙ

Программируемый логический контроллер (ПЛК) — специальная разно-
видность электронной вычислительной ма ины. Чаще всего ПЛК используют
для автоматизации технологических процессов. В качестве основного ре има
работы ПЛК выступает его длительное автономное использование, зачастую в
неблагоприятных условиях окру ающей среды, без серьёзного обслу ивания и
практически без вме ательства человека.
Встраиваемая операционная система — любая компьютерная операцион-
ная система, имеющая специализированное назначение или рассчитанное на ис-
пользование вместе с конкретным встраиваемым прило ением. Конечный поль-
зователь, как правило, не мо ет изменять такие системы.
Кроссплатформенность — способность программного обеспечения рабо-
тать с несколькими аппаратными платформами или операционными системами,
в данном случае с различными ПЛК.
Ма инный код — система команд (набор кодов операций) конкретной вы-
числительной ма ины, которая интерпретируется непосредственно процессо-
ром или микропрограммами этой вычислительной ма ины, в том числе и вирту-
альной ма иной.
Виртуальная ма ина — программная и/или аппаратная система, эмулиру-
ющая аппаратное обеспечение некоторой платформы и исполняющая про-
граммы для guest-платформы на host-платформе (host — хост-платформа, плат-
форма-хозяин) или виртуализирующая некоторую платформу и создающая на
ней среды, изолирующие друг от друга программы и да е операционные си-
стемы, так е спецификация некоторой вычислительной среды (например: «вир-
туальная ма ина языка программирования Си»). Виртуальная ма ина испол-
няет некоторый ма инно-независимый код (например, байт-код, итый код)
или ма инный код реального процессора. Помимо процессора, ВМ мо ет эму-
лировать работу как отдельных компонентов аппаратного обеспечения, так и це-
лого реального компьютера (включая BIOS, оперативную память, ёсткий диск
и другие периферийные устройства).


Сетевая модель OSI — сетевая модель стека сетевых протоколов OSI/ISO.
Посредством данной модели различные сетевые устройства могут взаимодей-
ствовать друг с другом. Модель определяет различные уровни взаимодействия
систем. Ка дый уровень выполняет определённые функции при таком взаимо-
действии.
Транспиляция — преобразование программы, при котором используется
исходный код программы, написанной на одном языке программирования в ка-
честве исходных данных, и производится эквивалентный исходный код на дру-
гом языке программирования.
Компилируемый язык программирования — язык программирования, ис-
ходный код которого преобразуется компилятором в ма инный код и записыва-
ется в файл с особым заголовком и/или рас ирением для последующей иденти-
фикации этого файла, как исполняемого операционной системой (в отличие от
интерпретируемых языков программирования, чьи программы выполняются
программой-интерпретатором).
Фреймворк — программная платформа, определяющая структуру про-
граммной системы; программное обеспечение, облегчающее разработку и объ-
единение разных компонентов боль ого программного проекта. Мо но так е
говорить о каркасном подходе как о подходе к построению программ, где любая
конфигурация программы строится из двух частей: постоянная часть — каркас,
не меняющийся от конфигурации к конфигурации и несущий в себе гнёзда, в
которых размещается вторая, переменная часть; сменные модули (или точки рас-
ирения).
Ядро Linux — ядро операционной системы, соответствующее стандартам
POSIX, составляющее основу операционных систем семейства Linux, а так е
ряда операционных систем для мобильных устройств, в том числе Android, Tizen,
KaiOS.


### ОБОЗНА ЕНИЯ И СОКРАЩЕНИЯ

Управляющая программа ПЛК — программа, реализующая основной ал-
горитм работы ПЛК.
Платформа ПЛК — совокупность характеристик, параметров, особенно-
стей аппаратного и программного обеспечения, правил работы, парадигм и спо-
собов взаимодействия, использующихся при работе с конкретным ПЛК, а так е
других составляющих производственной экосистемы.
ПО — программное обеспечение (программа или мно ество программ, ис-
пользуемых для управления компьютером).


### ВВЕДЕНИЕ

В данной работе рассмотрена проблема отсутствия стандартизации интер-
фейсов и способов загрузки оправляющих программ в ПЛК различных произво-
дителей и рассматривается способ ре ения данной проблемы путем создания
кроссплатформенного программного обеспечения, предоставляющего единый
интерфейс и способ загрузки для ПЛК различных производителей.
Программируемые логические контроллеры ироко применяются в сфере
промы ленной автоматизации разнообразных технологических процессов на
боль их и малых предприятиях. Популярность контроллеров легко объяснима.
Их применение значительно упрощает создание и эксплуатацию как сло ных
автоматизированных систем, так и отдельных устройств, в том числе — быто-
вого назначения. ПЛК позволяет сократить этап разработки, упрощает процесс
монта а и отладки за счет стандартизации отдельных аппаратных и программ-
ных компонентов, а так е обеспечивает повы енную наде ность в процессе
эксплуатации, удобный ремонт и модернизацию при необходимости. [ 3 ]
Существует мно ество различных видов ПЛК, в том числе и свободно про-
граммируемые, в которые программа загру ается через специальный интерфейс
с персонального компьютера используя специальное ПО производителя. Такие
ПЛК, как правило, работать на базе встраиваемых операционных систем. Ка -
дый производитель подобных ПЛК разрабатывает собственный интерфейс и
программное обеспечение для загрузки программного обеспечения на ПЛК, и
подобные ре ения от разных производителей, как правило не совместимы. От-
сутствие стандартизации и унификации так е создает мно ество проблем и
сло ностей при построения автоматизированных промы ленных систем.
Из-за отсутствия стандартизации и индивидуальной, несовместимой с дру-
гими производителями реализации способа загрузки управляющий программы
на ПЛК, перед внедрением подобной системы производственной автоматизации
необходимо тратить мно ество времени и средств для ознакомления именно с
внедряемой системой, узнать все параметры и особенности аппаратной части
ПЛК и освоить программное обеспечение для его программирования.


Подобная несовместимость ме ду различными ПЛК мо ет поме ать об-
новлению инфраструктуры предприятия. Еще одна проблема, которую влечет за
собой отсутствие обратной совместимости и сильные различия в платформах, на
базе которых построены ПЛК – это необходимость переобучения ин енеров
производственной автоматизации при переходе или использование незнакомой
им платформы, а так как платформы ме ду собой не совместимы это процесс
мо ет быть довольно долгим. Так е при поддер ке у е имеющийся автомати-
зированной инфраструктуры какого-либо предприятия требуются специалисты,
хоро о знакомые именно и используемой на предприятии платформой, что
умень ает количество возмо но нанятых специалистов на рынке труда, и воз-
мо но, требует их дальней его переобучения. Подобные проблемы сильно
усло няют внедрение современных технологий на производство и создают про-
блему при поддер ке устарев их технологий.
Актуальность работы обусловлена отсутствием стандартизации способов
загрузки управляющих программ на ПЛК ме ду различными производителями,
что облегчит переход и модернизацию производства, а так е предоставит ин е-
нерам и разработчикам единый интерфейс и способ взаимодействия для боль ей
части ПЛК на рынке.
Цель работы заключается в разработке программного обеспечения для за-
грузки управляющих программ на ПЛК различных производителей предостав-
ляя для этого единый и стандартизированный интерфейс.
Предметом данной работы является технология и интерфейс доставки фай-
лов на удаленный ПЛК.


Задачи проекта:

1. Провести анализ существующих на данный момент ре ений и выявить
их основную проблему
2. Выбрать существующее ре ение, провести исследование его устрой-
ства и работы
3. Найти оптимальный способ ре ения выявленной проблемы
4. Разработать собственное ре ение на основе ранее найденного опти-
мального способа
5. Произвести анализ результатов работы и тестирование программного
обеспечения
Курсовая работа состоит из 33 страниц, 13 рисунков, 1 таблицы и 2 прило-
ений. Данная работа включает в себя глоссарий, обозначения и сокращения,
заключение, список используемых источников и 2 прило ения.


### 1 АНАЛИТИ ЕСКАЯ АСТЬ

**1 1 Анали сущест у щих решений**
Современный ПЛК имеет развитый комплекс программных средств, состо-
ящих из системного программного обеспечения ПЛК, предоставляемого произ-
водителем контроллера и сторонних или собственных программных средств,
предназначенных для разработки, отладки и записи в контроллер пользователь-
ских программ.
Системное программное обеспечение ПЛК, состоящее из операционной
системы с интегрированным в нее набором драйверов, отвечает за выполнение
контроллером пользовательского прило ения, обслу ивает низкоуровневую си-
стему ввода-вывода контроллера, интерфейсы передачи данных, управляет рас-
пределением памяти, ре имами энергопотребления, таймерами, осуществляет
обработку о ибок, позволяя пользователю, разрабатывающему прило ение,
полностью сосредоточиться на алгоритмической части ре ения прикладной за-
дачи. [ 5 ]
Средства разработки и отладки пользовательских программ позволяют со-
здавать и корректировать программы, реализующие алгоритмы работы контрол-
лера, моделировать на ПК процесс выполнения программы контроллером,
наблюдать за проме уточными результатами вычислений, а так е записывать
программное обеспечение в контроллер.
**1 1 1 Органи ационная структура предприятия**
ПЛК мо ет использоваться повсеместно там, где есть производство – лю-
бая задача, которая требует использования электрических устройств управления,
имеет потребность в ПЛК. А для внедрения ПЛК на любое производство требу-
ется его программирование и администрирование, в том числе и загрузка управ-
ляющей программы. Особенно остро данная проблема проявляет себя при работе
и обслу ивании мно ества ПЛК, при том, что данные контроллеры, а вместе с
тем и программное обеспечение для работы с ними, мо ет довольно сильно от-
личаться, что создает дополнительные трудности при их эксплуатации.


Данное программное обеспечение мо но применять на всех предприятиях
использующих ПЛК для упрощения их эксплуатации и ускорения обслу ивания
мно ества ПЛК, а так е использовать данное ПО (Программное обеспечение)
как универсальную систему взаимодействия с ПЛК.
**1 1 2 Сущест у щие средст а ра работки**
На рынке ПЛК существует мно ество различных производителей. Одними
из таких производителей, представленных на Российском рынке, являются ком-
пании: «Овен», «Siemens», «Mitsubishi», «Beckhoff».
Боль ая часть производителей ПЛК имеет собственное программное обес-
печение, обычно базирующиеся на программном комплексе «CoDeSyS». Но ин-
терфейс и способ взаимодействия различного программного обеспечения бази-
рующегося на «CoDeSyS» довольно сильно отличается и, как ранее упоминалось,
модифицированные версии различных производителей несовместимы ме ду со-
бой.
**1 2 Исследо ание работ CoDeSyS**
Название CoDeSyS сегодня созвучно с профессиональным проектирова-
нием прило ений в сфере промы ленной автоматизации. Более 100 известных
компаний во всем мире избрали CoDeSyS своим инструментом программирова-
ния. CoDeSyS применяется изготовителями средств автоматизации, системными
интеграторами, а так е ин енерами и техниками на производстве. Е едневно
тысячи пользователей во всем мире с успехом используют его. Сегодня CoDeSyS
является самым распространенным инструментом МЭК 61131 - 3 программирова-
ния в Европе. [ 1 ] Фактически он сам у е давно слу ит стандартом систем МЭК
программирования, именно по этой причине он и был взят за основу при проек-
тировании собственного программного обеспечения не только боль инством
производителей ПЛК, но и мной.


**1 3 Устройст о CoDeSyS**
CoDeSyS является ведущим программным инструментом разработки про-
ектов в соответствии с МЭК 61131–3. Он сочетает в себе классическое програм-
мирование контроллеров с возмо ностью профессиональной разработки ПО для
устройств автоматизации.
CoDeSyS (сокращение от слов Controller Development System) это инстру-
мент программирования промы ленных компьютеров и контроллеров опираю-
щийся на ме дународный стандарт МЭК 61131-3. Изящный функциональный
набор и простота применения, обеспечили CoDeSyS первое место на Европей-
ском рынке программных инструментов. [ 2 ]
CoDeSyS предоставляет программисту удобную среду для программиро-
вания контроллеров на языках стандарта МЭК 61131-3. Используемые редак-
торы и отладочные средства базируются на ироко известных и хоро о себя
зарекомендовав их принципах, знакомых по другим популярным средам про-
фессионального программирования.
**1 3 1 Средст а ра работки**
Основой комплекса CoDeSyS является среда разработки прикладных про-
грамм для программируемых логических контроллеров (ПЛК). Она распростра-
няется бесплатно и, мо ет быть, без ограничений установлена на нескольких ра-
бочих местах.
**1 3 2 Система исполнения «CoDeSyS»**
Встроенные компиляторы CoDeSyS генерируют IL код, компилируемый в
ма инный код (двоичный код), выполняющийся на аппаратной платформе ПЛК.
Но на ПЛК с операционной системой подобный код луч е выполнять на вирту-
альной ма ине, что обеспечивает совместимость ме ду различными платфор-
мами и предсказуемость результатов выполнения программы. Виртуальная ма-
ина для выполнения IL кода называется «Control Runtime System», она устанав-
ливается в контроллер в процессе его изготовления его производителем. Суще-
ствует специальный инструмент (Software development kit), позволяющий адап-
тировать её к различным аппаратным и программным платформам. [ 4 ]


Благодаря выполнению программы на виртуальной ма ине мо но сосре-
доточить все внимание на создании исполняемой программы, а разработчик ПЛК
позаботиться о ее выполнении в используемом контроллере.
**1 3 3 Система агру ки программ на ПЛК**
Загрузить программу в ПЛК мо но из интерфейса среды разработки
CoDeSyS, но производители, как правило предлагают модифицированный ин-
терфейс, а использование оригинальной, не модифицированной версии не всегда
представляется возмо ным из-за наличия различных программных модулей про-
изводителей ПЛК, которые отсутствуют в оригинальной версии программы.
**1 3 4 Сра нение интерфейсо сред программиро ания ПЛК**
Сравнивая интерфейс различных сред разработки от производителей ПЛК,
таких как «Овен» (рисунок 1. 2 ), «Siemens» (рисунок 1. 1 ) и «Mitsubishi» (рисунок
1. 4 ) с оригинальной версией CoDeSyS (рисунок 1. 1 ) мо но заметить мно ество
различий.
Подобные различия затрудняют переход операторов ПЛК ме ду этими
средами разработки, требуется время для освоения и привыкания к новым интер-
фейсам. Это влечет за собой простой производства и сло ности при обновлении
инфраструктуры предприятия. Ре ением подобных проблем является создание
среды разработки с унифицированным интерфейсом.
**1 4 Поиск оптимального решения**
Для ре ения описанных вы е проблем разрабатываемый программный
комплекс дол ен обеспечивать единый интерфейс для взаимодействия с ПЛК
вне зависимости от его платформы и способа запуска управляющей программы.
Для этого ПО дол но быть кроссплатформенным как со стороны клиента (дис-
петчерской), так и со стороны сервера (ПЛК).


Рисунок 1. 1. Загрузка программы в ПЛК в стандартной версии CoDeSyS

Рисунок 1. 2. Загрузка программы в ПЛК в среде программирования OwenLogic


**1 4 1 Кроссплатформенность**
Кроссплатформенность разрабатываемого программного комплекса обес-
печивает высокоуровневый интерпретируемый язык программирования, что
обеспечит работу ПО на любом компьютере с установленным интерпретатором
такого языка, а в случае необходимости присутствует возмо ность транспиля-
ции созданного программного обеспечения для работы на встраиваемых опера-
ционных системах, установленных на ПЛК. При том программный комплекс не
обеспечивает выполнение управляющий программы на ПЛК самостоятельно, а
реализует стандартизированный зало енный производителем способ запуска от-
правленной на ПЛК управляющей программы.
**1 4 2 Един й интерфейс**
Боль ая часть ПЛК на предприятии объединена или подключена к компь-
ютерной сети, в связи с чем за основной способ взаимодействия с ПЛК был вы-
бран доступ через используемую на предприятии компьютерную сеть.
Так как разрабатываемое программное обеспечение рассчитано на работу
во встраиваемой операционной системе ПЛК, то реализация всех ни естоящих
уровней модели OSI ле ит именно на используемой операционной системе. Ис-
пользование стандартных способов взаимодействия и интеграции в у е суще-
ствующие системы обеспечивает кроссплатформенность и простоту работы про-
граммного комплекса.
**1 4 3 В полнение программ**
Создание качественного транслятора языка программирования высокого
уровня является сло ной и трудоемкой задачей. Поэтому выполнение управля-
ющей программы на ПЛК происходит на виртуальной ма ине «Control Runtime
System» или любой другой совместимой с ней, т.к. именно она является стандар-
том для боль инства производителей ПЛК. Данная виртуальная ма ина и е ин-
тегрирована в ПЛК, поддер ивающий стандарт МЭК 61131-3. В случае отсут-
ствия данного программного ре ения производителем ПЛК будет предусмотрен
иной способ выполнения программы, но совместимый с МЭК 61131-3, а значит
и с разрабатываемым программным комплексом.


Рисунок 1. 3. Загрузка программы в ПЛК в среде программирования
Siemens TiaPorta

Рисунок 1. 4. Загрузка программы в ПЛК в среде программирования
GX Works 3


### 2 ПРАКТИ ЕСКАЯ АСТЬ

**2 1 Ра работка собст енного программного комплекса**
На основе описанных ранее проблем было разработано программное обес-
печение, предоставляющее унифицированный интерфейс загрузки управляющей
программы на ПЛК. К данному программному обеспечению были выдвинуты
следующие требования:

1. Универсальность – программа дол на предоставлять единый интерфейс
и способ загрузки вне зависимости от используемого ПЛК
2. Простота развертывания – внедрение программы на производство
дол но быть максимально простым и быстрым
3. Кроссплатформенность – программа дол на работать на актуальных
операционных системах (Windows, Linux, MacOS)
**2 1 1 Архитектура**
Разработанный программный комплекс состоит из 2 программ: сервера, за-
пущенного на ПЛК и клиента на компьютере для взаимодействия с ПЛК. В ка-
честве клиента мо ет применяться программа «BuilderPLC» или любой совре-
менный браузер. Управляющая программа доставляется на ПЛК в виде отправ-
ляемого программного пакета, в состав которого входит:
1. Управляющая программа для выполнения на виртуальной ма ине
ПЛК или любым другим способом
2. Исполняемый файл для загрузки виртуальной ма ины или выпол-
нения управляющей программы
3. Любые другие необходимые файлы
Отправляемый программный пакет (рисунок 2. 1 ) представляет из себя с а-
тый запакованный zip архив и собирается при помощи прило ения «BuilderPLC»,
которое так е мо ет быть использовано для отправки и удаленного выполнения
управляющей программы на ПЛК. Подобный пакет мо ет включать в себя ис-
полняемый файл, файл с управляющей программой для ПЛК и другие файлы.


**2 2 Особенности реали ации программного комплекса
2 2 1 Уни ерсальность**
Универсальность данного программного комплекса и возмо ность ис-
пользования на различных ПЛК реализуется за счет выполнения управляющей
программы в среде «Control Runtime System» или на любой другой виртуальной
ма ине, реализующей стандарт IEC 61131-3 (МЭК 61131-3). Запуск управляю-
щей программы на виртуальной ма ине обеспечивается выполнением исполня-
емого файла, доставляемого в отправляемом программном пакете, что так е
обеспечивает универсальность программы и возмо ность запуска и развертыва-
ния любого программного обеспечения на ПЛК вне зависимости от его аппарат-
ной платформы.

Рисунок 2. 1. Содер ание отправляемого пакета (zip архива)
**2 2 2 Реали ация кроссплатформенности**
Программный комплекс написан на языке программирования Python вер-
сии 3.9 и вы е, что позволяет запускать его на любой поддер иваемой операци-
онной системе (Windows, Linux, MacOS) с установленным интерпретатором.
Так е сохраняется возмо ность произвести транспиляцию программы (рисунок
2. 2 ) на компилируемый язык программирования, что ускорит работу программы
и обеспечит более удобный способ ее распространения в виде самодостаточного
исполняемого двоичного файла под выбранную при последующей компиляции
операционную систему.


Рисунок 2. 2. Транспилированная на си версия «BuilderPLC» на ос Linux
**2 2 1 В бор протокола подкл чения к ПЛК**
Обмен данными происходит на прикладном уровне модели OSI, что обес-
печивает работу программы в любых сетях, в том числе и промы ленных вне
зависимости от транспортного протокола и физической реализации ины об-
мена данных. В качестве протокола используется HTTP/HTTPS. Подобное ре е-
ние обеспечивает работоспособность программы вне зависимости от аппаратной
платформы используемого оборудования, в том числе и ПЛК. Так е подобная
сетевая архитектура позволяет размещать несколько ПЛК в одной сети. Пример
возмо ной конфигурации сети представлен на

Рисунок 2. 3. Архитектура промы ленной сети

Диспетчерская

ПЛК 1

ПЛК 2

ПЛК 3

Коммутатор


2 3 Особенности реали ации «BuilderPLC» Основные особенности программы:

1. Программа выполнена в виде отдельного прило ения не привязанного
к редактору кода или IDE, но оставляющая такую возмо ность
2. Кроссплатформенность (работа на основных популярных ОС - Windows,
Linux, MacOS)
3. Использование актуального и поддер иваемого языка программирова-
ния
4. Минимизация вне них зависимостей
5. Подробный вывод отладочной информации о работе программы
6. Проверка и подробный вывод возмо ных о ибок, связанных с отсут-
ствием возмо ности выполнения команд
7. Возмо ность обработки боль ого количества файлов
8. В приоритете наде ность и скорость работы
При разработке данной программы было принято ре ение руководство-
ваться философией GNU, т.е. создать маленькое монолитное прило ения, кото-
рое выполняет одну функцию и делает это хоро о.
Для упрощения кодовой базы и ре ения проблем с зависимостями исполь-
зуется монолитная архитектура, ООП не применяется, сторонние зависимости,
не входящие в состав языка Python не используются.
Все действия над файлами производятся в директории, из которой запущен
«BuilderPLC». В ходе работы программы используются только относительные
пути, а значит нет ограничений на путь до рабочей директории, в которой запу-
щено прило ение. Так е нет ограничений и на имя файла.
**2 3 1 Интерфейс и исполь о ание**
Для удобства использования предусмотрено несколько ре имов работы:
1. Пользовательский ре им
2. Ре им терминала


Пользовательский ре им (рисунок 2. 4 ) наиболее прост в использовании и
применяется по умолчанию при запуске программы без как-либо флагов, т. е.
традиционным для ОС Windows способом (двойной клик по иконке программы).
В данном ре име происходит сборка всех пакетов, находящихся в директории,
из которой была запущена программа, при этом выводится вся информация о со-
стоянии работе программы. После сборки всех пакетов программа о идает за-
крытия пользователем.
Ре им терминала (рисунок 2. 5 ) предназначен для более продвинутых
пользователей или для интеграции с редактором кода или другим ПО. В данном
ре име программа принимает флаги, позволяющие настроить поведение про-
граммы при ка дом запуске и принимает путь до файла с исходным кодом, что
позволяет использовать всего одну копию программы для сборки пакетов в лю-
бой директории файловой системы компьютера, при этом нет ограничений на
использование символов в пути и названии файлов. В данном ре име программа
принимает флаги, позволяющие настроить поведение программы. После оконча-
ния работы программы она автоматически закрывается, не о идая действия от
пользователя. Луч е всего такой ре им работает в UNIX операционных систе-
мах, вроде Linux и Mac OS.

Рисунок 2. 4. Снимок экрана «BuilderPLC» в пользовательском ре име


**2 3 2 Работа с файлами**
«BuilderPLC» работает не с одним файлом, а со всеми файлами в директо-
рии, за счёт чего происходит обработка мно ества файлов с минимальными уси-
лиями со стороны пользователя.
После выполнения сборки всех файлов в рабочей директории программа
переходит в автоматический ре им (рисунок 2. 6 ), т.е. проверяет время послед-
него сохранения файла и при изменении времени сохранения заново собирает
пакет. Данный ре им облегчает работу с программой и увеличивает скорость
обработки файлов, не ели при ручной сборке и позволяет взаимодействовать с
файлом в автоматическом ре име без интеграции в редактор кода.
**2 4 Особенности реали ации сер ера**
Основные особенности программы:

1. Использование прикладного уровня модели OSI и протокола
HTTP/HTTPS
2. Кроссплатформенность (работа на основных встраиваемых ОС - Linux,
возмо ность запуска транспилированного варианта на Windows CE)
3. Использование актуального и поддер иваемого языка программирова-
ния и высокопроизводительного веб-фреймворка
4. Использование простого и быстрого API
5. Проверка и подробный вывод возмо ных о ибок, связанных с отсут-
ствием возмо ности выполнения команд
6. Автоматическое генерирование документации
7. Перезагрузка во время работы
Программа написана на веб-фреймворке FastAPI с использованием веб
сервера Uvicorn. Программа в первую очередь ориентирована на работе в UNIX
подобных операционных системах и разрабатывалась для ОС на базе ядра Linux,
но мо ет быть портирована на Windows CE при необходимости путем транспи-
ляция python кода в компилируемый язык программирования.


**2 4 1 Удобст о ра ерт ания**
Для удобства развертывания сервера (рисунок 2. 7 ) был написан bash
скрипт, при запуске которого на целевой платформе (ПЛК) автоматически уста-
навливается, запускается и автоматически добавляется в автозагрузку сервер,
что сильно упрощает его внедрение на производство.
**2 4 2 Конфигуриро ание сер ера**
В ходе своей работы сервер выводит мно ество отладочных сообщений
(рисунок 2. 8 ), что позволяет легко следить за его состоянием и найти проблему
в случае неполадок. Поток отладочных сообщений мо но перенаправить в файл
для анализа не татных ситуаций в случае отсутствия постоянного наблюдения
за работой сервера. Так е сервер мо ет выводить отладочные сообщения от
управляющий программы ПЛК, выполняемый на нем.
**2 4 3 Особенности исполь о ания еб фрейм орка**
Встроенные функции веб-фреймворка FastAPI дают серверу перезагру-
аться во время работы «на лету», т.е. быстро вернуться к состоянию и конфи-
гурации, действующей до перезагрузки.
Еще одно преимущество использования FastAPI является автоматически
генерирующаяся документация (рисунок 2. 8 ). При помощи подобной докумен-
тации мо но вручную выполнять какие-либо команды на сервере, а так е мо-
ментально получить доступ к документации и изучить все возмо ные ответы
сервера на запросы пользователя во время его работы.


Рисунок 2. 5. Работа «BuilderPLC» в ре име терминала (автоматическое закрытие после выполнения сборки) с интеграцией Visual Studio Code на ОС Manjaro Linux

Рисунок 2. 6. Работа «BuilderPLC» в автоматическом ре име на ОС Linux


Рисунок 2. 7. Процесс автоматического развертывания сервера на ОС Linux

Рисунок 2. 8. Вывод отладочных сообщений и результат запуска управляющей
программы «Hello World» на удаленном сервере (ПЛК)


Рисунок 2. 9. Пример автогенерируемой документации, используемой как па-
нель управления удаленным сервером (ПЛК)


### 3 ЭКОНОМИ ЕСКАЯ АСТЬ

**3 1 Экономическое обосно ание**
При разработке программного пакета использовалось преимущественно
программное обеспечение с открытым исходным кодом, в связи с чем боль ую
часть расходов составляет оборудование. Но боль ая часть оборудования было
предоставлено «Технологическим университетом», поэтому количество реаль-
ных расходов составило около 5000 рублей. На создание данного программного
пакета было затрачено 168 часов.
No Статья расхода Кол-во Стоимость за
т, руб..

Сумма, руб. 1 Компьютер на Windows 1 т. 50 000 50 000 2 Компьютер на Linux 1 т. 50 000 50 000 3 Компьютер на Mac OS 1 т. 110 000 110 000 4 Заработная плата разра- ботчика

1 час 150 25 200 5 Мелкие и непредвиден- ные расходы

### 5 000

Итог 240 200

**3 2 Лицен иро ание ра работанного программного обеспечения**
Исходный код сервера распространяется под лицензией MIT и представлен
в прило ении 1, любой елающий бесплатно мо ет воспользоваться основными
возмо ностями разработанного ПО. Программа «BuilderPLC» имеет закрытый
исходный код и является отдельной составляющей программного пакета. И не-
смотря на то, что при использовании только сервера программный пакет будет
не полным, его использование возмо но и без «BuilderPLC». Оригинальный
текст лицензии MIT и неофициальный перевод на русский язык представлены в
прило ении 2.


### ЗАКЛЮ ЕНИЕ

Современный ПЛК стал чрезвычайно востребованным универсальным ра-
бочим инструментом в системах автоматизации производственных процессов, а
так е для управления отдельными устройствами различного назначения. Это
особый тип программируемых логических автоматов, отличающийся повы ен-
ной наде ностью, легко встраиваемый и модернизируемый, способный длитель-
ное время работать практически без обслу ивания. Не смотря почти на полную
стандартизацию и унификацию языков программирования и наличию универ-
сальных средств разработки, одна из проблем при использовании ПЛК – это от-
личие интерфейсов различных программных пакетов от мно ества производи-
телей ПЛК, и в ходе данной курсовой работы было разработано одно из ре ений
данной проблемы.
В результате выполнения курсовой работы был создан программный ком-
плекс, состоящий из 2 программ: система сборки и отправки программных паке-
тов на ПЛК «BuilderPLC» и сервер, реализующий единый интерфейс загрузки и
запуска управляющих программ, при том не зависящий от используемого ПЛК.
На данный момент программный комплекс про ел тестирование и испытание на
виртуальной ма ине с установленной ОС Linux, в связи с чем мо но сказать,
что цель данной работы была достигнута.
В ходе выполнения данной работы мною было изучено создание прило е-
ний и программирование на python и bash, основные веб технологии, API и
фреймворки для создания веб прило ений, использование системы контроля
версий git, системное программирование, основы работы и настройка ОС
GNU\Linux, научился конфигурировать и разворачивать веб сервера в автомати-
ческом ре име.
Так е хочется отметить, что данный проект являлся в первую очередь
учебным, и в дальней ем на его основе мо но будет создать более мощное и
конкурентоспособное коммерческое программное обеспечение.


### СПИСОК ИСПОЛЬЗУЕМЫХ ИСТО НИКОВ

1. **CoDeSyS Интегриро анн й комплекс МЭК 61 131 3
программиро ания** [В Интернете] / авт. ПК Пролог,. - ПК Пролог. - 20 06 2022
г.. - [http://www.prolog.smolensk.ru/.](http://www.prolog.smolensk.ru/.)
2. **CODESYS Профессиональн е средст а ра работки приложений
МЭК 61131– 3** [В Интернете] / авт. ПК ПРОЛО. - ПК ПРОЛО. - 20 06 2022 г.. -
[http://www.prolog–plc.ru.](http://www.prolog–plc.ru.)
3. **В едение ПЛК: что такое программируем й логический
контроллер** [В Интернете] / авт. АО «КОМПЭЛ». - 14 12 2018 г.. - 20 06 2022
г.. - https://www.compel.ru/lib/95591.
4. **Программируем е контроллер Стандартн е я ки и приём
прикладного проектиро ания** [Книга] / авт. В. Петров И.. - Москва : СОЛОН-
Пресс, 2004. - Под ред. проф. В. П. Дьяконова..
5. **Программируем е логические контроллер для упра ления
технологическими процессами** [Книга] / авт. Ю. Е. Лив иц В. И. Лакин, Ю. И.
Монич. - Минск : БНТУ, 2014.


**Приложение 1
Исходн й код сер ера**
1 from fastapi import FastAPI, File, UploadFile
2 import multiprocessing
3 import subprocess
4 import zipfile
5 import shutil
6 import os
7 import uvicorn
8 import socket
9 import settings
10 from colorama import init
11
12
13 init()
14
15
16 from colorama import Fore, Back, Styleᅠ
17 host, port = settings.init ()ᅠ
18 if __name__ == '__main__':
19 print (Fore.GREEN + "IP" + Style.RESET_ALL + ": " +
str(host))
20 print (Fore.GREEN + "PORT" + Style.RESET_ALL + ": " +
str(port)) ᅠ
21 uvicorn.run(
22 "server:app",
23 host=host,
24 port=port,
25 reload=True
26 )
27
28
29 app = FastAPI()
30
31
32 def runfile (filename):
33 print ("Filename: " + str(filename))
34 shortfile = filename [::-1]
35 shortfile = shortfile [4:]
36 shortfile = shortfile [::-1]
37 print ("Short name: " + str (shortfile))
38
39 print ("Extracting file")
40 zipfile.ZipFile (filename).extractall (shortfile)
41 zipfile.ZipFile (filename).close ()
42
43 os.chdir (shortfile)
44 print ("Using directoy: " + str (os.getcwd()))
45 print ("Starting subprocess: " + "main.sh")


46 print ("Obtaining file execution rights")
47 os.system ('chmod +x %s.sh'% "main")
48 print ("Starting subprocess: " + "main.sh")
49 process = subprocess.run ("./%s.sh"% "main",
capture_output=True)
50 out = process.stdout
51
52
53 print ("Process STDOUT:" + str (out))
54 print ("Stop subprocess: \n" + str (process) +
"\nPROCESS STDOUT: " + str (out))
55
56 print ("Clearing cache")
57 os.chdir ("../")
58 print ("Work direcotory: " + str (os.getcwd ()))
59 os.system ("rmdir --ignore-fail-on-non-
empty %s" %shortfile)
60 return {"ExitCode": out, "STDOUT": out}
61
62
63 @app.post("/load")
64 async def create_load_file(file: UploadFile = File (...)):
65 with open (f"{file.filename}", "wb") as buffer:
66 shutil.copyfileobj (file.file, buffer)
67
68 @app.post("/load/run")
69 async def create_upload_file(file: UploadFile = File (...)):
70 with open (f"{file.filename}", "wb") as buffer:
71 shutil.copyfileobj (file.file, buffer)
72 runfile (file.filename)
73
74 @app.get("/remove/{zipfile_name}")
75 async def remove_item(zipfile_name: str):
76 out = os.remove (zipfile_name)
77 return out
78
79
80 @app.get("/filelist")
81 async def file_list():
82 return os.listdir (os.getcwd ())
83
84 @app.get("/run/{zipfile_name}")
85 async def read_item(zipfile_name: str):
86 runfile (zipfile_name)


**Приложение 2
Оригинальн й текст лицен ии MIT и неофициальн й пере од на
русский я к
Оригинальн й текст лицен ии**
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the Soft-
ware without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PUR-
POSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHER-
WISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


**Неофициальн й пере од**
Данная лицензия разре ает лицам, получив им копию данного программ-
ного обеспечения и сопутствующей документации (в дальней ем именуемыми
«Программное обеспечение»), безвозмездно использовать Программное обеспе-
чение без ограничений, включая неограниченное право на использование, копи-
рование, изменение, слияние, публикацию, распространение, сублицензирова-
ние и/или прода у копий Программного обеспечения, а так е лицам, которым
предоставляется данное Программное обеспечение, при соблюдении следующих
условий:
Указанное вы е уведомление об авторском праве и данные условия
дол ны быть включены во все копии или значимые части данного Программ-
ного обеспечения.
ДАННОЕ ПРО РАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ
«КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО АРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ
ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ АРАНТИИ ТОВАРНОЙ ПРИ ОДНО-
СТИ, СООТВЕТСТВИЯ ПО Е О КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТ-
СТВИЯ НАРУШЕНИЙ, НО НЕ О РАНИЧИВАЯСЬ ИМИ. НИ В КАКОМ СЛУ-
ЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ
ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В
ТОМ ЧИСЛЕ, ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУ-
АЦИИ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРО РАММНО О ОБЕС-
ПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРО РАММНЫМ ОБЕСПЕЧЕНИЕМ.

plc-uploader's People

Contributors

sasha0000kr avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.