Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Системы программирования (Теоретические основы систем программирования)

Содержание:

Введение

С появления первых компьютеров программисты серьезно задумывались над проблемой кодирования компьютерных программ. Уже с конца 40-х годов стали появляться первые примитивные языки программирования высокого уровня. В них программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа (впоследствии названная интерпретатором) превращала эти коды в двоичный машинный код. Первый компилятор был разработан Г. Хоппер в начале 50-х годов; он осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. В дальнейшем компиляторы и интерпретаторы для языков Ассемблера стали развиваться и прочно вошли в практику компьютерного дела.

Идеи трансляции (перекодирования) одних символов в другие легли в основу создания различных языков программирования с соответствующими трансляторами - компиляторами и/или интерпретаторами. Отличие компиляторов от интерпретаторов заключается в процедуре трансляции текста в машинный код. Компилятор преобразует весь текст программы в последовательный набор машинных команд, который в дальнейшем отправляется на выполнение (пример компилятора с языка Паскаль). Интерпретатор же осуществляет трансляцию по принципу синхронного перевода. Каждая отдельная строка программного текста транслируется, а затем, после ее интерпретации, команды этой строки выполняются (пример языка Бейсик). Современные трансляторы с языков программирования высокого уровня, систем управления базами данных интегрируют в себе возможности и достоинства компиляторов и интерпретаторов, а в системы программирования добавляют различные сервисные утилиты по трансляции и отладке создаваемых программ.

Объектом исследования в курсовой работе является исследование развития программирования.

Предмет исследования – системы программирования.

Цель исследования – углубленное исследование особенностей систем программирования и их применения.

Для достижения поставленных целей сформулированы следующие задачи:

  • изучить теоретические основы системы программирования;
  • рассмотреть особенности системы программирования CoDeSys при разработке программного обеспечения.

Методологической основой исследования являются учебная и методическая литература по информатике и по сновам программирования, статьи в периодической печати и Интернет – ресурсы.

1. Теоретические основы систем программирования

1.1. Сущность систем программирования и их состав

Системы программирования представляют собой программы, предназначенные для разработки ПО. Данные программы обеспечивают среду (технологию) разработки компьютерных программ на том или ином языке программирования. При этом под программой следует понимать совокупность указаний автоматизированной вычислительной системе, в результате выполнения которой получается требуемый результат.

Согласно ГОСТ 19781-90, система программирования (programming system) — система, образуемая языком программирования, компиляторами или интерпретаторами программ, представленных на этом языке, соответствующей документацией, а также вспомогательными средствами для подготовки программ к форме, пригодной для выполнения.

Современные системы программирования представляют пользователям широкие возможности и удобные программные средства разработки компьютерных программ и являются в основном интегрированными средами разработки приложений (IDE, Integrated Development Environment), ориентированными на определенный входной язык программирования. В состав современных систем программирования наряду с соответствующей документацией входят обычно следующие программные средства (рис.1):

  • интегрированная среда разработчика программ;
  • транслятор языка программирования;
  • компоновщик или редактор связей;
  • библиотеки стандартных программ (подпрограмм) и функций;
  • вспомогательные программные средства — программы отладки;
  • справочная система.

Интегрированная среда разработчика программы включает программные средства, реализующие интерфейс программиста (пользовательский интерфейс, например, графический (оконный) или интерфейс командной строки), средств поддержки интерфейса пользователя (программиста) с системными средствами (ОС) для выполнения различных сервисных функций (например, открытия файла программы или его сохранения), а также текстового редактора, позволяющего создавать и редактировать исходные тексты написанных компьютерных программ.

текстовый редактор

Программа - отладчик

Транслятор (программа переводчик с конкретного алгоритмического языка на машинно- ориентированный)

Компоновщик (редактор связей)

программа, обеспечивающая запуск программы

текст программы, написанный на конкретном алгоритмическом языке.

отладка исходного текста программы (поиск и устранение ошибок)

программа на машинно- ориентированном языке

объединяются оттранслированные модули в единые загрузочные, готовые к выполнению

+ библиотека подпрограмм, + Help

Рис.1. Состав системы программирования

Транслятор (от англ. translator — переводчик) языка программирования представляет собой программу, реализующую трансляцию написанной программы с одного языка программирования в другой. Конечным результатом трансляции является перевод исходной программы на машинный (компьютерный) язык. Таким образом, в современных системах программирования программа, подготовленная на языке более высокого уровня, претерпевает процедуру трансляции. Процесс трансляции в современных системах программирования реализуется тремя способами — путем компиляции, интерпретации и их комбинации.

В процессе компиляции, которую реализует программа-компилятор (от англ. compiler — собиратель, составитель), исходный текст программы, написанной на языке программирования (исходный программный код), как правило, на языке более высокого уровня, целиком преобразуется в код программы на машинном языке в так называемый объектный код, или объектный файл. В процессе компиляции осуществляется поиск синтаксических ошибок (т.е. ошибок, не соответствующих системе правил, определяющих допустимые конструкции языка программирования из букв алфавита), анализ семантических конструкций языка программирования, состоящий в определении соответствия каждой языковой конструкции исходной программы системе правил их однозначного толкования; далее осуществляется перевод исходного кода в объектный. Перевод в объектный код производится только в том случае, если исходный код программы соответствует правилам данного языка. Таким образом, результатом компиляции является получение объектного файла, представляющего собой часть программы на машинном языке с необходимыми ссылками для компоновщика (редактора связей) и служебной таблицы для загрузчика ОС.

После завершения процесса компиляции исходная программа и система программирования, в частности компилятор, становятся ненужными, поскольку исполняемый файл исходной программы запускается непосредственно в ОС и имеет расширение *.EXE и *.COM.

В процессе интерпретации, которую реализует программа называемая интерпретатором (от англ. interpreter — комментатор, истолкователь, устный переводчик), вводимый в редакторе системы программирования исходный текст программы, написанный на языке более высокого уровня, переводится в машинный код и исполняется построчно, т.е. интерпретатор выполняет последовательно каждую команду (оператор) исходного кода отдельно, а не транслирует его целиком, как компилятор. В процессе интерпретации также производится анализ языковой конструкции исходного программного кода на наличие синтаксических и семантических ошибок, и в случае их отсутствия осуществляет перевод исходного кода в машинный. Только после того как текущая команда будет успешно выполнена, интерпретатор перейдет к следующей команде и т.д. Системы программирования, в состав которых входит интерпретатор, предоставляют пользователю многооконный режим работы, позволяющий вводить и редактировать исходный код программы, использовать конструктор пользовательского интерфейса (например, конструктор форм), пользоваться отладчиком программ и т.д.

В отличие от процесса компиляции, при котором полученный исполняемый файл исходной программы может быть перенесен на другой компьютер без установки на нем системы программирования, при условии, что микропроцессор этого компьютера поддерживает соответствующий машинный код, процесс интерпретации требует установки такой системы программирования. Однако, несмотря на то что исходные программы, подвергшиеся интерпретации, работают медленнее, чем откомпилированные программы, поскольку каждый раз при запуске исходной программы необходимо проводить ее трансляцию, у них есть ряд преимуществ, связанных с возможностью остановки работы программы в любой момент и внесения в нее изменений, проверки работы каждой команды и т.д., что особенно важно на этапе отладки программы.

Недостатком трансляторов компилирующего типа является невозможность проверить работу отдельной команды во время программирования.

В настоящее время в системах программирования применяется и комбинированный способ трансляции, при котором используются одновременно два вида трансляции: компиляция и интерпретация. Такой способ позволяет использовать преимущества обоих способов трансляции при разработке компьютерных программ. В процессе отладки исходной программы она транслируется по шагам (интерпретируется), а затем текст полученной программы подвергается компиляции. Примером такой системы программирования может служить среда программирования Microsoft Visual Basic.

Программа-компоновщик, или редактор связей, как отмечалось ранее, предназначена для связывания объектного и машинного кодов. Данная программа компонует исполняемую программу (исполняемый код) из объектных файлов (модулей) и стандартных программ, взятых из библиотеки стандартных программ. Таким образом, компоновщик — это программа для подготовки объектной программы (файла) к работе в конкретной программной среде микропроцессора и основной памяти компьютера.

Библиотеки стандартных программ (подпрограмм) и функций представляют собой совокупность файлов, в которых хранятся подпрограммы, реализующие стандартные процедуры численных методов решения стандартных задач и функций для работы с графикой, сетевым окружением и т.д.

В состав системы программирования входят также вспомогательные программные средства — программы отладки, предназначенные для упрощения процесса отладки разработанной программы. Данные программы дают возможность пошагово выполнять исходные программы, просматривать значения объявленных переменных, устанавливать контрольные точки, трассировку и т.д., что необходимо для идентификации места и вида ошибок в разработанной программе. При этом под трассировкой понимается отображение результатов выполнения каждой команды отлаживаемой программы. Отображение результатов отладки может выводиться на экран монитора компьютера или на печать в виде числовых значений переменных, функций и выражений. Справочная система, входящая в состав системы программирования, предназначена для предоставления пользователю справочной информации по конкретной системе программирования.

Среди фирм — разработчиков систем программирования можно выделить наиболее крупные: Microsoft, Symantec, Borland.

Развитие инструментальных средств технологии программирования наряду с разработкой новых систем программирования связано также с разработкой методов и средств автоматизированного проектирования и сопровождения прикладных программ. Данное направление называется автоматизированным программированием, в котором выделяют CASE-технологию (Computer Aided Software Engineering — автоматизированный инжиниринг программных средств). Данная технология предназначена для автоматизации процессов разработки и реализации информационных систем. За счет использования CASE-технологии стоимость разработки программного обеспечения уменьшается в несколько раз.

Как отмечалось выше, системы программирования ориентированы на определенный язык программирования.

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 как базовое ядро собственных систем программирования, известных под собственными торговыми марками.

Как средство программирования программируемые логические контроллеры CoDeSys можно разделить на две части: среду программирования и систему программирования. Среда программирования функционирует на персональном компьютере в среде Windows.

Поскольку CoDeSys дает машинный код, поддержка его программирования достаточно проста и по минимуму сводится к набору функций поддержки ввода-вывода и отладки. Система программирования функционирует в программируемых логических контроллерах и обеспечивает загрузку кода прикладной программы, «горячее» обновление кода, отладку, управление задачами и некоторые сервисные функции. Система программирования поставляется 3S изготовителям программируемых логических контроллеров (OEM) в виде исходных текстов. Это позволяет максимально эффективно реализовать поддержку аппаратных средств, без каких либо промежуточных механизмов. Изготовителю оборудования требуется дописать аппаратно-зависимые функции ввода-вывода, возможно, отредактировать функции поддержки канала связи на физическом уровне (через API при наличии ОС) и функции записи кода прикладной программы в ППЗУ (Flash, диск и др.). Далее он компилирует готовую систему программирования и помещает ее код в ПЗУ (или на загрузочный диск) своего программируемого логического контроллера. Теперь программируемый логический контроллер готов для поставки заказчикам.

Из отладочных функций CoDeSys интересен инструмент графической трассировки значений переменных. С его помощью можно проводить отладку не только ПО, но и оборудования, причем без написания программы. Весьма удобно и наличие встроенной системы визуализации, функционирующей как в инструментальной среде, так и в программируемом логическом контроллере (имеющем дисплей) и Web. На практике пользователи выполняют достаточно сложные проекты автоматизации в CoDeSys без необходимости приобретения SCADA. Система программирования CoDeSys может работать как поверх операционной системы, так и на «голом железе». Естественно во втором случае адаптация несколько сложнее, поскольку приходится писать собственный начальный загрузчик, системные тесты, обработчик таймера, т. е. типовую минимальную поддержку аппаратуры. Но на 8- и 16-разрядных платформах это дает существенный выигрыш по быстродействию и необходимым ресурсам. Существуют четыре разновидности систем программирования CoDeSys: CSP8, CSP16, CSP32E и CSP32F. Они предназначены для 8-, 16-, 32-разрядных процессоров без ОС соответственно. Система CSP32F ориентирована на 32-разрядные платформы с ОС РВ. Она опирается на механизмы вытесняющей многозадачности ОС, первые три включают собственный монитор многозадачности (без вытеснения). Пользователь может создавать многозадачные проекты даже в ПЛК, построенном на 8051.

В настоящее время CoDeSys поддерживает семейства: Intel 8051, Intel 80x86 / 80186 / Pentium, семейство ARM, MIPS, Motorola MC68000 / MC68332 / ColdFire, PowerPC, Hitachi SH 2/3/4, H8, Infineon C16x, Infineon TriCore и Texas Instruments TMS32028x.

Особняком стоит система программирования CoDeSys SP RTE для Windows XP/NT/2000. Она включает в себя собственное ядро жесткого реального времени, функционирующее под Windows. Эта система не требует адаптации. Связь с оборудованием происходит через драйверы. SDK включен в комплект поставки.

Технические преимущества CoDeSys с аналогичными системами разработки и моделирования:

  • рекордное быстродействие прикладных МЭК программам. Встроенный компилятор непосредственно формирует машинный код для целевого микропроцессора. Пользователь может писать даже обработчики аппа-ратных прерываний на МЭК языках (если это разрешено изготовителем ПЛК) и синхронизировать параллельные процессы с микросекундной точностью;
  • для создания библиотек быстрых функций не обязательно использовать внешние средства (C-компилятор). Как результат – переносимость и нормальная работа в режиме эмуляции;
  • возможность включения собственных программных расширений наравне со стандартными, включая встроенную систему подсказки;
  • доступны исходные тексты системы программирования;
  • полная и даже расширенная реализация стандарта МЭК 61131-3;
  • упрощенный SFC, CFC;
  • интегрированные средства эмуляции и визуального моделирования;
  • встроенные конфигураторы модульных систем и распределенных fieldbus систем (CANopen, DeviceNet, Profibus и др.);
  • три механизма создания распределенных приложений: высокоуровневое связывание переменных (network variables), объектная master-slave модель (аналогично PDO в CANopen), библиотеки нестандартных сетей или распределенный ввод/вывод (реализуется изготовителем программируемых логических контроллеров);
  • встроенная, целевая и web визуализация;
  • ряд дополнительных возможностей (библиотеки CANopen, Modbus, система управления версиями ENI. SoftMotion).

Допустим, вы написали и отладили автономный проект на контроллере при помощи системы подготовки программ CoDeSys. Как теперь нужно доработать программу, чтобы связать программируемые логические контроллеры с системой диспетчерского управления, базой данных или Интернет-сервером? Ответ: никак. Никакого программирования далее вообще не потребуется. В комплекс программирования ПЛК входит ОРС-сервер.

Он умеет получать доступ к данным программируемых логических контроллеров также прозрачно, как и отладчик. Достаточно обеспечить канал передачи данных программируемым логическим контроллерам –ОРС-сервер. Обычно такой канал уже существует, вы использовали его при отладке. Вся дальнейшая работа сводится к определению списка доступных переменных, правильной настройке сети, конфигурированию ОРС-сервера и SCADA-системы. В целом операция очень напоминает настройку общедоступных устройств локальной сети ПК.

Вторая задача – интеграция нескольких программируемых логических контроллеров с целью синхронизации их работы. Здесь появляются сети, обладающие рядом специфических требований. В целом эти требования аналогичны требованиям к программируемым логическим контроллерам: режим реального времени, надежность в условиях промышленной среды, ремонтопригодность, простота программирования. Такой класс сетей получил название промышленных сетей (fieldbus). Существует масса фирменных реализаций и достаточно много стандартов таких сетей (Bitbus, Modbus, Profibus, CANopen, DeviceNen), позволяющих интегрировать аппаратуру различных фирм, но ни один из них нельзя признать доминирующим.

Благодаря продуктивному развитию средств сетевой интеграции появилась возможность создания распределенных систем управления. В 80-е годы XX века доминировали программируемые логические контроллеры с числом в несколько сотен входов-выходов. В настоящее время большим спросом пользуются микропрограммируемые логические контроллеры с количеством входов-выходов до 64. В распределенных системах каждый программируемый логический контроллер решает локальную задачу. Задача синхронизации управления выполняется компьютерами среднего звена АСУ. Распределенные системы выигрывают по надежности, гибкости монтажа и простоте обслуживания.

Задачи управления требуют непрерывного циклического контроля. В любых цифровых устройствах непрерывность достигается за счет применения дискретных алгоритмов, повторяющихся через достаточно малые промежутки времени. Таким образом, вычисления в программируемых логических контроллерах всегда повторяются циклически. Одна итерация, включающая замер, обсчет и выработку воздействия, называется рабочим циклом программируемого логического контроллера. Выполняемые действия зависят от значения входов контроллера, предыдущего состояния и определяются пользовательской программой.

По включению питания программируемый логический контроллер выполняет самотестирование и настройку аппаратных ресурсов, очистку оперативной памяти данных (ОЗУ), контроль целостности прикладной программы пользователя. Если прикладная программа сохранена в памяти, программируемый логический контроллер переходит к основной работе, которая состоит из постоянного повторения последовательности действий, входящих в рабочий цикл.

Рабочий цикл программируемого логического контроллера состоит из нескольких фаз:

  1. Начало цикла.
  2. Чтение состояния входов.
  3. Выполнение кода программы пользователя.
  4. Запись состояния выходов.
  5. Обслуживание аппаратных ресурсов программируемых логических контроллеров.
  6. Монитор системы программирования.
  7. Контроль времени цикла.
  8. Переход на начало цикла.

В самом начале цикла программируемый логический контроллер производит физическое чтение входов. Считанные значения размещаются в области памяти входов. Таким образом, создается полная одномоментная зеркальная копия значений входов.

Далее выполняется код пользовательской программы. Пользовательская программа работает с копией значений входов и выходов, размещенной в оперативной памяти. Если прикладная программа не загружена или остановлена, то данная фаза рабочего цикла, естественно, не выполняется. Отладчик системы программирования имеет доступ к образу входов-выходов, что позволяет управлять выходами вручную и проводить исследования работы датчиков.

После выполнения пользовательского кода физические выходы программируемых логических контроллеров приводятся в соответствие с расчетными значениями (фаза 4).

Обслуживание аппаратных ресурсов подразумевает обеспечение работы системных таймеров, часов реального времени, оперативное самотестирование, индикацию состояния и другие аппаратно-зависимые задачи.

Монитор системы программирования включает в себя большое число функций, необходимых при отладке программы и обеспечении взаимодействия с системой программирования, сервером данных и сетью. В функции системы программирования обычно включается: загрузка кода программы в оперативную и электрически перепрограммируемую память, управление последовательностью выполнения задач, отображение процесса выполнения программ, пошаговое выполнение, обеспечение просмотра и редактирования значений переменных, фиксация и трассировка значений переменных, контроль времени цикла и т. д.

Пользовательская программа работает только с мгновенной копией входов. Таким образом, значения входов в процессе выполнения пользовательской программы не изменяются в пределах одного рабочего цикла. Это фундаментальный принцип построения программируемых логических контроллеров сканирующего типа. Такой подход исключает неоднозначность алгоритма обработки данных в различных его ветвях. Кроме того, чтение копии значения входа из ОЗУ выполняется значительно быстрее, чем прямое чтение входа. Аппаратно чтение входа может быть связано с формированием определенных временных интервалов, передачей последовательности команд для конкретной микросхемы или даже запросом по сети.

Если заглянуть глубже, то нужно отметить, что не всегда работа по чтению входов полностью локализована в фазе чтения входов. Например, АЦП обычно требуют определенного времени с момента запуска до считывания измеренного значения. Часть работы системное программное обеспечение контроллера выполняет по прерываниям. Грамотно реализованная система программирования нигде и никогда не использует пустые циклы ожидания готовности аппаратуры. Для прикладного программиста все эти детали не важны. Существенно только то, что значения входов обновляются автоматически исключительно в начале каждого рабочего цикла.

Общая продолжительность рабочего цикла программируемых логических контроллеров называется временем сканирования. Время сканирования в значительной степени определяется длительностью фазы кода пользовательской программы. Время, занимаемое прочими фазами рабочего цикла, практически является величиной постоянной. Для задачи среднего объема в программируемых логических контроллерах с системой программирования CoDeSys время распределится примерно так: 98 % – пользовательская программа, 2 % – все остальное.

Существуют задачи, в которых плавающее время цикла существенно влияет на результат, например это автоматическое регулирование. Для устранения этой проблемы в развитых программируемых логических контроллерах предусмотрен контроль времени цикла. Если отдельные ветви кода управляющей программы выполняются слишком быстро, в рабочий цикл добавляется искусственная задержка. Если контроль времени цикла не предусмотрен, подобные задачи приходится решать исключительно по таймерам.

Инженер, спроектировавший машину, должен иметь возможность самостоятельно написать программу управления. Никто лучше его не знает, как должна работать данная машина. Инженер, привыкший работать с электронными схемами, гораздо легче сможет выражать свои мысли в LD или FBD. Если он знаком с языками PASCAL или С, то использование языка ST не составит для него сложности.

За время развития программируемых логических контроллеров размер средней программы возрос более чем в 100 раз. Многие решения, требовавшие раньше аппаратной поддержки, реализуются сегодня программно. Соответственно требования к качеству программного обеспечения очень высоки. Поэтому сложную программу должны писать специалисты. Но для ответственных проектов очень важно, чтобы программа алгоритма была понятна техническому персоналу, осуществляющему настройку, сопровождение и ремонт оборудования. Они не обязаны изучать программу досконально, но понимать, что происходит, безусловно, должны.

Таким образом, внедрение стандарта послужит фундаментом для создания единой школы подготовки специалистов. Человек, прошедший обучение по программе, включающей стандарт МЭК 61131, сможет работать с программируемыми логическими контроллерами любой фирмы. В то же время, если он имел ранее опыт работы с любыми программируемым логическим контроллером, его навыки окажутся полезными и существенно упростят изучение новых возможностей.

Заключение

Важнейшим элементом в развитии систем программирования выступили подпрограммы. Появление аппарата подпрограмм существенно облегчило процесс разработки системных и прикладных программ. Подпрограммы позволили формировать библиотеки из наиболее часто употребляемых в программах алгоритмов - процедур и функций. В системах программирования обязательно присутствуют стандартные (встроенные в систему) библиотеки подпрограмм. Например, в их число входят подпрограммы вычисления математических функций sin(х), cos(x), abs(х) и др.

В настоящее время распространены пользовательские и прикладные библиотеки подпрограмм. Их число увеличивается. Меняется структура библиотечных подпрограмм. В современных языках получили распространение модули (Unit), представляющие специализированные пакеты взаимосвязанных подпрограмм определенного предназначения, например по работе с клавиатурой, с графикой и пр. Развитие объектно-ориентированного программирования позволило создавать библиотеки объектов и подпрограмм с объектными типами данных (Object). Примером могут служить оболочки типа TurboVision.

Список использованных источников

  • Каймин В. А. Информатика: Учебник / Каймин В. А. - 6-е изд. - М.: НИЦ ИНФРА-М, 2015. - 285 с.
  • Основы общей теории и методики обучения информатике [Электронный ресурс] : учебное пособие / под ред. А.А. Кузнецова. - 2-е изд. - М.: БИНОМ. Лаборатория знаний, 2013. - 207 с.
  • Острейковский, В. А. Информатика [Электронный ресурс] : Учебник / В. А. Острейковский - М.: Высш. шк., 2014. - 511 с.:
  • Программные и аппаратные средства информатики / ЦаревР.Ю., ПрокопенкоА.В., КнязьковА.Н. - Краснояр.: СФУ, 2015. - 160 с.:
  • Стариченко Б. Е. Теоретические основы информатики: Учебник для вузов/, 3-е изд., перераб. и доп. - М.: Гор. линия-Телеком, 2016. - 400 с.
  • http://www.prolog-PLC.ru
  • http://www.3s-software.com