Файл: Системы программирования (Теоретические основы систем программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 22.05.2023

Просмотров: 226

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Как средство программирования программируемые логические контроллеры 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, сможет работать с программируемыми логическими контроллерами любой фирмы. В то же время, если он имел ранее опыт работы с любыми программируемым логическим контроллером, его навыки окажутся полезными и существенно упростят изучение новых возможностей.