Файл: Системы программирования (Теоретические основы систем программирования).pdf
Добавлен: 22.05.2023
Просмотров: 225
Скачиваний: 2
1.2. Роль синтаксиса и семантики в системах программирования
Каждый язык программирование обладает своими лексическими, синтаксическими и семантическими правилами, которые необходимо соблюдать при составлении компьютерной программы.
Синтаксис – описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию).
Пример синтаксической ошибки приведен на рис.2.
Рис.2. Пример синтаксической ошибки
Синтаксическая ошибка в приведенном примере заключается в том, что отсутствует знак равенства в приведенной на рисунке программе. Также была бы допущена синтаксическая ошибка, если бы оператор цикла For употреблялся бы без To или Next.
Синтаксические ошибки распознаются встроенным синтаксическим анализатором.
Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
Семантика – определяет смысловое значение предложений алгоритмического языка.
Примеры семантических ошибок представлены на рис.3.
Рис.3. Примеры семантических ошибок
Как видно из рис.3, допущены две семантических ошибки:
1) For i As Integer = 1 To 10 Step -2
2) Если надо вычислить
, то запись x = a / b * c содержит семантическую ошибку, т.к. приоритет операций деления и умножения одинаков, то вначале а делиться на b, а затем полученный результат умножает на с.
Поиск этих ошибок происходит с помощью логического анализа работы программы и ее тестирования.
2. Возможности системы программирования CoDeSys при разработке программного обеспечения и проектировании микропроцессорных систем управления
2.1. Сущность микропроцессорных систем управления
Задачи управления системами различного типа, вероятно, потерять своей актуальности не смогут ни в настоящее время, ни в будущем. Технический прогресс, совершенствование технологических баз, бурное развитие микросхемотехники требуют от систем управления сегодняшнего дня соответствующих изменений в принципах подхода к управлению и регулированию характеристик систем управления. И если на уровнях, где в решаемых задачах нет ограничений на моменты инерций и сопротивлений на валах силовых агрегатов, представлены шаговые машины с устоявшимися алгоритмами их управления, то в вопросах контроля и управления двигателями постоянного и переменного токов с переменными нагрузками на валах эти задачи становятся все более актуальными. Как очевидный факт мы принимаем системы микропроцессорного управления такими приводами, но оставляем за собой право иметь возможность изучать и исследовать поведение таких систем.
В последние годы все более широко для управления такими системами применяются комбинированные схемы программно-аппаратного управления. В их основе лежат стандартные микропроцессорные наборы, выпускаемые отечественной и зарубежной промышленностью. Возможности микропроцессорных контроллеров сегодня практически неограниченны. Ведущие западные компании разрабатывают унифицированные способы создания микроконтроллеров, возможности эмуляции вновь создаваемых систем управления в реальном масштабе времени, разработку пакетов математического сопровождения на языках низкого уровня и многие другие моменты для все более простого и менее затратного производства управляющих контроллеров.
И тем не менее не стоит забывать, что изначально микропроцессоры были созданы не столько для работы в персональных компьютерах (ПК), сколько в качестве программно-управляемых устройств для автоматизации промышленности и бытовой техники. На их основе были созданы программируемые логические контроллеры (ПЛК) – устройства, автоматизирующие работу как отдельных аппаратов, например станков с программным управлением или стиральных машин и микроволновых печей, так и огромных производственных комплексов. Таким образом, программируемые логические контроллеры – даже более распространенные устройства, чем ПК, количество которых во всем мире недавно превысило магическую цифру в 1 млрд.
В настоящее время основное внимание уделяется технологиям создания программного обеспечения для систем управления промышленной автоматикой, построенных на базе ПЛК, и практическому программированию на языках стандарта Международной электротехнической комиссии (МЭК) 61131-3.
К сожалению, период широкого распространения стандарта МЭК 61131-3 пришелся на годы перестройки. Отсутствие спроса промышленности на средства автоматизации производства привело к распаду большинства коллективов, занятых применением программируемых логических контроллеров, что отразилось и на уровне подготовки специалистов. В настоящее время наблюдается существенный рост потребности в современных инструментах производства и автоматики. Широкое распространение и доступность персональных компьютеров привели к появлению большого числа специалистов, профессионально владеющих компьютерными технологиями. Поэтому неудивительно, что сегодня персональные компьютеры массово применяют на всех уровнях промышленной автоматизации, включая классические контроллерные задачи. Между тем, во многих случаях применение промышленных ПК не оправдано экономически и технически сложно. Даже там, где задача на программируемых логических контроллерах решается «в одно действие» и на два порядка дешевле, нередко применяют дорогостоящие промышленные ПК, операционные системы реального времени и заказное программное обеспечение. Единственной причиной такого подхода является наличие подготовленных специалистов. Однобокости решений немало сопутствует и почти полное отсутствие современной литературы по применению программируемых логических контроллеров на русском языке. При знакомстве с доступными источниками 10-летней давности создается впечатление, что применение программируемых логических контроллеров связано с примитивным и неуклюжим программированием при помощи специализированных пультов, что выглядит чрезвычайно архаично.
Любая машина, способная автоматически выполнять некоторые операции, имеет в своем составе управляющий контроллер – модуль, обеспечивающий логику работы устройства. Контроллер – это мозг машины. Естественно, чем сложнее логика работы машины, тем «умнее» должен быть контроллер. Технически контроллеры реализуются по-разному. Это могут быть механическое устройство, пневматический или гидравлический автомат, релейная или электронная схема или даже компьютерная программа. В случае, когда контроллер встроен в машину массового выпуска, стоимость его проектирования распределена на большое число изделий и мала в отношении к стоимости изготовления. В случае машин, изготавливаемых в единичных экземплярах, ситуация обратная. Стоимость проектирования контроллера доминирует по отношению к стоимости его физической реализации.
Физически типичный программируемый логический контроллер представляет собой блок, имеющий определенный набор выходов и входов, для подключения датчиков и исполнительных механизмов (рис. 4). Логика управления описывается программно на основе микрокомпьютерного ядра. Абсолютно одинаковые программируемые логические контроллеры могут выполнять совершенно разные функции. Причем для изменения алгоритма работы не требуется каких-либо переделок аппаратной части. Аппаратная реализация входов и выходов программируемых логических контроллеров ориентирована на сопряжение с унифицированными приборами и мало подвержена изменениям.
Рис. 4. Принцип работы программируемых логических контроллеров
Задачей прикладного программирования программируемых логических контроллеров является только реализация алгоритма управления конкретной машиной. Опрос входов и выходов контроллер осуществляет автоматически, вне зависимости от способа физического соединения. Эту работу выполняет системное программное обеспечение. В идеальном случае прикладной программист совершенно не интересуется, как подсоединены и где расположены датчики и исполнительные механизмы. Кроме того, его работа не зависит от того, с каким контроллером и какой фирмы он работает. Благодаря стандартизации языков программирования прикладная программа оказывается переносимой. Это означает, что ее можно использовать в любом программируемом логическом контроллере, поддерживающем данный стандарт.
Изначально программируемые логические контроллеры предназначались для управления последовательными логическими процессами, что и обусловило слово «логический» в названии устройства. Современные программируемые логические контроллеры, помимо простых логических операций, способны выполнять цифровую обработку сигналов, управление приводами, регулирование, функции операторского управления и т. д.
Для программируемых логических контроллеров существенное значение имеет не только быстродействие самой системы, но и время проектирования, внедрения и возможной оперативной переналадки.
2.2. Принципы работы программируемых логических контроллеров
Абсолютное большинство программируемых логических контроллеров работают по методу периодического опроса входных данных (сканирования). Программируемые логические контроллеры опрашивает входы, выполняет пользовательскую программу и устанавливает необходимые значения выходов. Специфика применения программируемых логических контроллеров обусловливает необходимость одновременного решения нескольких задач. Прикладная программа может быть реализована в виде множества логически независимых задач, которые должны работать одновременно.
Программируемый логический контроллер обычно имеет один процессор и выполняет несколько задач псевдопараллельно, последовательными порциями. Время реакции на событие оказывается зависящим от числа одновременно обрабатываемых событий. Рассчитать минимальное и максимальное значения времени реакции, конечно, можно, но добавление новых задач или увеличение объема программы приведет к увеличению времени реакции. Такая модель предпочтительна для систем мягкого реального времени. Современные программируемые логические контроллеры имеют типовое значение времени рабочего цикла, измеряемое единицами миллисекунд и менее. Поскольку время реакции большинства исполнительных устройств значительно выше, с реальными ограничениями возможности использования программируемых логических контроллеров по времени приходится сталкиваться редко.
В некоторых случаях ограничением служит не время реакции на событие, а обязательность его фиксации, например работа с датчиками, формирующими импульсы малой длительности. Это ограничение преодолевается специальной конструкцией входов. Так, счетный вход позволяет фиксировать и подсчитывать импульсы с периодом во много раз меньшим времени рабочего цикла программируемых логических контроллеров. Специализированные интеллектуальные модули в составе программируемых логических контроллеров позволяют автономно отрабатывать заданные функции, например модули управления сервоприводом.
Контроллеры традиционно работают в нижнем звене автоматизированных систем управления предприятием (АСУ) – систем, непосредственно связанных с технологией производства (ТП). Программируемые логические контроллеры обычно являются первым шагом при построении систем АСУ. Это объясняется тем, что необходимость автоматизации отдельного механизма или установки всегда очевидна. Она дает быстрый экономический эффект, улучшает качество производства, позволяет избежать физически тяжелой и рутинной работы. Контроллеры по определению созданы именно для такой работы.
Далеко не всегда удается создать полностью автоматическую систему. Часто «общее руководство» со стороны квалифицированного человека – диспетчера – необходимо. В отличие от автоматических систем управления такие системы называются автоматизированными. Еще 10–15 лет назад диспетчерский пульт управления представлял собой табло с множеством кнопок и световых индикаторов. В настоящее время подобные пульты применяются только в очень простых случаях, когда можно обойтись несколькими кнопками и индикаторами. В более «серьезных» системах применяются ПК.
Появился целый класс программного обеспечения реализующего интерфейс «человек – машина» (MMI). Это так называемые системы сбора данных и оперативного диспетчерского управления (Supervisory Control And Data Acquision System – SCADA). Современные SCADA-системы выполняются с обязательным применением средств мультимедиа. Помимо живого отображения процесса производства, хорошие диспетчерские системы позволяют накапливать полученные данные, проводят их хранение и анализ, определяют критические ситуации и производят оповещение персонала по каналам телефонной и радиосети, позволяют создавать сценарии управления (как правило, Visual Basic), формируют данные для анализа экономических характеристик производства.
Создание систем диспетчерского управления является отдельным видом бизнеса. Разделение производства программируемых логических контроллеров, средств программирования и диспетчерских систем привело к появлению стандартных протоколов обмена данными. Наибольшую известность получила технология ОРС (OLE for Process Control), базирующаяся на механизме DCOM Microsoft Windows. Механизм динамического обмена данными (DDE) применяется пока еще достаточно широко, несмотря на то что требованиям систем реального времени не удовлетворяет.
Одной из систем для разработки программного обеспечения для программируемых логических контроллеров является программный комплекс CoDeSys. Он разработан компанией 3HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"SHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"-HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"SmartHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com" HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"SoftwareHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com" HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"SolutionsHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com" HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"GmbHHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com" (3HYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"SHYPERLINK "http://www.prolog-plc.ru/www.3s-software.com"). Его основное назначение – программирование ПЛК и промышленных компьютеров в стандарте МЭК 61131-3. Ряд неординарных решений 3S привел к тому, что CoDeSys стал штатным инструментом программирования ПЛК ведущих европейских изготовителей: ABB, Beckhoff, Beck IPC, Berger Lahr, Bosch Rexroth, ifm, Keb, Kontron, Lenze, Moeller, WAGO, Fastwel и др. Некоторые из них используют CoDeSys как базовое ядро собственных систем программирования, известных под собственными торговыми марками.