Основы программирования контроллеров на языках высокого уровня. Программирование плк. А что у этих железок внутри

Контролер – это управляющее устройство. Действительно функциональным он становится только тогда, когда вы создаете и запускаете программу по его использованию.

Отсюда вытекает главная задача программируемого логического контролера – исполнение программы, которая осуществляет руководство технологического процесса.

Какой набор программ доступен для ПЛК? В принципе любой набор возможен. Главное, чтобы размер свободных ресурсов, данного инструмента, вам был не помехой. Разработчик получает широкие возможности по написанию программ.

Что же необходимо, чтобы осуществить программирование контроллера? Во – первых нужен программист, который бы досконально разбирался в данном вопросе. Во – вторых необходим сам компьютер и конечно пакет разработки.

Функционал средств разработки

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

Какой функционал предлагает среда разработки?

  1. Большой набор библиотек, программные блоки, определенные процедуры и готовые шаблоны.
  2. Инструментарий для проверки, тестированию и запуску программы на компьютере минуя контроллер.
  3. Также предложен инструмент для автоматизации документирования программы, которая была создана, в пределах принятых стандартов.

И наконец необходимо отметить главное достоинство – это поддержка порядка шести языков программирования. Единственным недостатком является то, что совместимость программ реализована на низком уровне. Производители ПЛК не пришли к унификации и каждый выпускает, данное устройство, со своей программной средой.

Виды языков программирования для ПЛК

  • Язык LD

LD (Ladder) – это среда разработки, которая основана на графике. Своего рода, она представляет собой подобие релейной схемы. Разработчики данного стандарта считают, что использование такого вида программной среды существенно облегчает переобучение инженеров релейной автоматики на ПЛК.

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

  • Язык FBD

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

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

  • Язык SFC

SFC (Sequential Function Chart) – может использоваться с языками ST и IL, он также основан на графике. Принцип его построения близок к образу конечного автомата, данное условие относит его к самым мощным языкам программирования.

Технологические процессы, в данном языке, построены по типу определенных шагов. Структура шагов состоит из вертикали, которая идет сверху вниз. Каждый шаг – это конкретные операции. Описать операцию можно не только с помощью SFC, но и с помощью ST и IL.

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

  • Язык ST

ST (Структурированный Текст) – относится к языкам высокого уровня и имеет много сходного с Pascal и Basic.

ST позволяет интерпретировать более шестнадцати типов данных и имеет возможность работать с логическими операциями, циклическими вычислениями и т.д.

Небольшим недостатком можно определить отсутствие графической среды. Программы представлены в виде текста и данное условие усложняет освоение технологии.

  • Язык IL

IL (Список Команд) – язык подобен Ассемблеру, обычно используется для кодировки блоков по отдельности. Плюсом является то, что данные блоки имеют большую скорость работы и низкую требовательность к ресурсам.

  • Язык CFC

CFC (Continuous Flow Chart) – относится к языкам высокого уровня. В принципе – это явное продолжение языка FBD.

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

Каждый блок – это управление определенным технологическим процессом. Здесь идет основной уклон на технологический процесс, математика уходит на второй план.

На производстве выполняется технологическим персоналом, поэтому общепринятые языки программирования микропроцессоров и персональных компьютеров не подходят для программирования промышленных контроллеров, так как требуют от персонала особых навыков и знаний. Привлечение к программированию сторонних инжиниринговых компаний зачастую приводит к привязанности конечного пользователя к конкретному исполнителю. Поэтому для программирования необходимы более понятные, простые и наглядные языки программирования, открытые для общего использования. В 1979 г. в рамках Международной Электротехнической Комиссии (МЭК или английская аббревиатура IEC) была создана специальная группа технических экспертов по проблемам , включая аппаратные средства, монтаж, тестирование, документацию и связь. Результатом работы данной комиссии был выпуск в 1982 г. стандарта IEC 1131. Современная редакция стандарта (который с 1997 г. называется IEC 61131) включает 8 разделов:

  1. Общая информация.
  2. Требования к оборудованию и тестам.
  3. Языки программирования.
  4. Руководства пользователя.
  5. Спецификация сообщений.
  6. Полевые сети.
  7. Программирование с нечеткой логикой.
  8. Руководящие принципы применения и реализации языков ПЛК.

Раздел 3 данного стандарта МЭК (IEC 61131-3) регламентирует использование пяти стандартных языков программирования ПЛК (промышленных контроллеров): язык функциональных блоков (FBD), язык релейной логики (LD), язык последовательных функциональных схем (SFC), язык инструкций (IL) и язык структурированного текста (ST). Выбор этих языков обусловлен простотой и наглядностью представления с их помощью алгоритмов управления. Внедрение стандарта IEC 61131 дало основу для создания единой школы подготовки специалистов в области программирования ПЛК. Также после появления стандарта появилась возможность создавать аппаратно-независимые библиотеки.

Краткая характеристика стандартных языков программирования промышленных контроллеров (ПЛК)

Язык релейной логики (LD)

Язык релейной логики используется для описания логических выражений различного уровня сложности с помощью электромеханических элементов (реле и контактов). На языке релейной логики проще всего и наглядней реализуются логические операции, такие как И, ИЛИ, НЕ. Язык программирования LD предусматривает также выполнение условных переходов между блоками программы.

Язык последовательных функциональных схем (SFC)

Реализует последовательность процедурных шагов и условных переходов. На каждом шаге выполняется конкретное действие, запрограммированное пользователем. Переход между шагами осуществляется после выполнения логических условий, назначенных данным условным переходам.

Язык инструкций (IL)

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

<Метка> : <Оператор> + <Модификатор> <Операнд> <Комментарий>

Метка, модификатор и комментарий в строке инструкции необязательны и указываются по необходимости. Оператор должен присутствовать в строке всегда, а операнд иногда может отсутствовать. Метка - это символическое имя (адрес) некоторой области памяти, в которой хранится номер отмеченной меткой строки в списке команд. После метки обязательно ставится знак двоеточия. Совместно с метками используются команды условного (исполняемые при выполнении определенных условий) и безусловного (выполняемые всегда) перехода (соответственно, операторы JMPC или JMP) . Переходы необходимо использовать достаточно аккуратно, чтобы не получить бесконечный цикл. Оператор - это непосредственно команда, которая выполняет определенное действие над операндом. Совместно с оператором может присутствовать модификатор, который предназначен для преобразования оператора к необходимому виду. Так модификатор N выполняет инверсию операнда до выполнения самой команды, а модификатор С - добавляет проверку содержимого аккумулятора и выполняет оператор только в том случае, если значение в аккумуляторе соответствует true (истина).

Язык структурированного текста (ST)

Язык структурированного текста - текстовый язык программирования высокого уровня для создания гибких процедур обработки данных. По структуре этот язык похож на Паскаль. Основу языка структурированного текста (ST) составляют выражения, каждое из которых должно заканчиваться точкой с запятой. Для присвоения значений переменным используется оператор «:=». Для описания математических выражений используются общепринятые символы: +, *, /, (,), <, <=, >=, > и др. Порядок вычисления выражений такой же, как и в алгебре - действия выполняются слева направо. Сначала выполняются действия, заключенные в скобки, затем - операции умножения или деления, и только после этого - сложение или вычитание. Для увеличения функциональных возможностей языка структурированного текста в нём предусмотрены операторы выбора (IF ... THEN ... ELSE ... ENDIF) , операторы множественного выбора (CASE ... OF ... ELSE ... ENDCASE) , операторы цикла (WHILE ... DO ... ENDWHILE, REPEAT ... UNTIL ... ENDREPEAT или FOR ... TO ... BY ... DO ... ENDFOR) .

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

15 09.2016

Перед тем, как программировать ПЛК в среде разработки CoDeSyS 2.3 новички часто задаются вопросом: А какие системы требуется установить для корректной работы с аппаратом?? А как конфигурировать входы и выходы контроллера?? А каким образом связать устройство с ПК?? И снова, а как, а как?? Все мы с вами понимаем, устройства сложные и алгоритмы объёмные, и на изучение потребуется время. Я вот думаю, может написать небольшую книжку и назвать codesys для чайников? А вы согласны?

Из этой статьи вы узнаете:

Здравствуйте уважаемые коллеги и гости. Пишет вам автор блога сайт, Гридин Семён, и в этой статье я вам расскажу, как правильно программировать контроллер. Тема достаточно актуальная, я надеюсь после прочтения статьи, некоторые вопросы отпадут самим собой. =)

Как работает ПЛК?

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

Вычисления в устройстве выполняются циклически. То есть одни и те же действия выполнения программы выполняются в короткий промежуток времени.

В один цикл осуществляемый прибором выполняются следующие операции:

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

Не буду больше разглагольствовать по теории. Давайте сразу перейдём к практике.

Из чего состоит программный комплекс для полноценной работы с ПЛК

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

Для начала нам нужно установить основной дистрибутив CoDeSyS 2.3 c официального сайта ОВЕН . А, я предлагаю во многих постах, касающихся программирования, использовать устройство ОВЕН ПЛК63 . Так как это универсальное устройство с экраном. У него на борту есть и дискретные входы, и аналоговые входы, и релейные выходы.

Итак, скачиваем программу:

Затем следует стандартная процедура установки. Указываем путь и все время жмём “Далее”, “Далее”.

Следующим этапом будет установка таргетов для плк. Таргет — это некое описание о конфигурации ПЛК. Инструкция подсказывает CoDeSyS 2.3, какое количество и какие входы/выходы имеет устройство.
Скачиваем также с сайта ОВЕН . Рекомендую установить все таргеты, которые там есть. Чтобы потом не искать и не думать об этом, если придется писать алгоритм на другой ПЛК.

Запускаем автоматический установщик, устанавливаем инструкции. Всё, половину пути мы с вами уже сделали в этой работе! После этих всех процедур можно устанавливать библиотеки, но о них позже. Переходим к следующему пункту.

Рабочее окно программы

Дистрибутив мы с вами установили, таргеты тоже. Давайте мы с вами рассмотрим рабочее окно среды разработки, элементы меню и основные вкладки.

Основное поле на рисунке выше делится на три области:

  1. Редактор переменных и их типов;
  2. Дерево объектов;
  3. Редактор основного алгоритма программы;

Редактор переменных — здесь мы с вами вводим переменные и присваиваем им типы данных. Для тех, кто не знает, переменная — это имя, к которому будет обращаться программа и возвращать результат. А тип данных определяет род информации, диапазон представления чисел и множество других операций.

Дерево объектов — в этом окне располагаются такие объекты, как функции, функциональные блоки, подпрограммы, конфигурация ПЛК, библиотеки. Об этом я расскажу позже.

Редактор программы — тут мы с вами описываем основной алгоритм программы работы контроллера. Пишется на любом языке стандарта МЭК. Более подробно, можете статью .

Простой пример на ST

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

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

Код codesys2.3

PROGRAM PLC_PRG VAR T1:TON; ("таймер") Timer_Ust:WORD:=5; ("уставка таймера") Time_tekuch:TIME; ("текущее время") END_VAR T1(IN:=Start , PT:=DWORD_TO_TIME(Timer_Ust*1000)); Time_tekuch:=T1.ET; IF T1.Q THEN Out:= 1; ELSE Out:=0; END_IF;

PROGRAM PLC_PRG

T1 : TON ; ("таймер" )

Timer_Ust : WORD : = 5 ; ("уставка таймера" )

Time_tekuch : TIME ; ("текущее время" )

END_VAR

T1 (IN : = Start , PT : = DWORD_TO_TIME (Timer_Ust * 1000 ) ) ;

Time_tekuch : = T1 . ET ;

IF T1 . Q THEN Out : = 1 ; ELSE Out : = 0 ;

END_IF ;

Запускаем наш дистрибутив, создаём новый проект, указываем нужный нам таргет. Не забудьте предварительно проверить, что у вас установлены драйвера на преобразователь USB-COM, он нам понадобится для связи.

В листинге присутствуют две глобальные переменные Start и Out. Они связаны с физическими входами и выходами. Настройки все мы осуществляем во вкладке конфигурация ПЛК.

Компилируем проект (проверяем его на актуальность кода, чтобы не было ошибок). Можно нажать кнопку F11.

Вводим нужные настройки связи, как на картинке.

Собираем нашу схему логического программируемого контроллера. Подключаем интерфейс RS-232 с одной стороны и USB с другой. Жмём “подключение”. Ощущаем радость от процесса. =)) Если произошла ошибка связи , то проверьте ещё раз все подключения и параметры. Часто бывает, что провод преобразователя оборван.

Весь процесс я записал на видео, если будет что-то непонятно.

В следующей статье я напишу о , не пропустите. Будет интересно.

Успешных вам внедрений, дорогие читатели и гости. Если понравилась статья, подписывайтесь на новости блога и расскажите друзьям. А на каком языке и оборудовании вы предпочитаете строить систему автоматизации?

С уважением, Гридин Семён.

Для программирования ПЛК Международная электрическая комиссия (МЭК) разработала стандарт IEC 6-1131/3, в котором определены 6 языков программирования:

· CFC (Continuous Function Chart);

· SFC (Sequential Function Chart);

· FBD (Function Block Diagram);

· LD (Ladder Diagram);

· ST (Structured Text);

· IL (Instruction List).

Четыре первых языка CFC, SFC, LD и FBD используют графическую нотацию – выполняемые команды, операции и функции представляются графическими средствами, как схемы.

Два последних языка (ST, IL) являются текстовыми. Они расширяют возможности программистов .

С помощью языков IEC 61131-3 программируются не только задачи автоматики, но и алгоритмы человеко-машинного интерфейса (HMI).

Языки IEC 6-1131/3 сочетают в себе функциональность и простоту. Они также предохраняют пользователя от большинства ошибок, которые нередко возникают при использовании обычных языков программирования. Реализация IEC 6-1131/3 в интегрированной HMI-системе не только удовлетворяет требованиям стандарта , но и предоставляет пользователю дополнительный сервис в виде расширенного набора библиотек функциональных блоков, реализующих типовые алгоритмы управления.

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

Программирование и отладка программ на языках IEC 6-1131/3 производится в интегрированной среде разработки , включающей в себя несколько различных редакторов. Программы на языках FBD, LD, CFC и SFC создаются и отлаживаются в специальных визуальных редакторах , а ST и IL – в текстовом редакторе .

Несмотря на различия, программы на разных языках стандарта IEC 6-1131/3 могут взаимодействовать между собой. Например, программа на FBD может вызывать функциональный блок, написанный на языке ST, а внутри этого блока может вызываться подпрограмма на LD и т.д. Такая гибкость в выборе средств описания алгоритмов позволяет эффективно работать над одной задачей и программисту, и технологу, и инженеру-наладчику и бизнес-консультанту, когда каждый из них выполняет свою часть работы удобным ему способом .

Язык SFC. В семействе МЭК-языков диаграммы SFC (Sequential Function Chart) являются высокоуровневым графическим инструментом, в котором использованы идеи сетей Петри. Благодаря SFC графическое представление модели системы превращается в законченную программу.

Начало практической реализации языка SFC для ПЛК принадлежит французским фирмам. Совместная работа изготовителей ПЛК и пользователей привела к появлению национального стандарта «Графсет», а затем и международного стандарта МЭК 848 (1988 г.). Последний стандарт IEC 61131-3 заимствовал «Графсет» с некоторыми доработками.

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

Рисунок 2.1 – Пример представления программы на языке SFC

Переходы в SFC имеют выраженную направленность сверху вниз и отражаются прямыми линиями. Позиции в SFC называют шагами или этапами. На диаграмме они отображаются в виде прямоугольников. Благодаря такому представлению существует возможность реализации диаграмм в символах псевдографики. Задать несколько стартовых шагов в SFC нельзя, начальным является только один шаг диаграммы. Каждый программный блок, как и каждое условие перехода – это подпрограмма на любом из языков стандарта IEC 6-1131/3. Диаграмма SFC дает возможность быстрого построения прототипа системы без программирования, так как для представления системы на верхнем уровне не требуется детальное описание действий и привязка к конкретным аппаратным средствам.

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

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

Рисунок 2.2 – Пример программы на языке FBD

В программных комплексах имеется более 150 типовых функциональных блоков, реализующих широкий набор функций – от простейших логических операций до готового адаптивного регулятора. В стандартных FBD-блоках реализованы функции фильтрации, ПИД-регулирования, модального, нечеткого и позиционного регулирования, ШИМ-преобразования, а также блоки управления клапаном, задвижкой, мотором и др.

Язык релейных диаграммLD (Ladder Diagram) или релейно-контактных схем (РКС) – графический язык, реализующий структуры электрических цепей.

РКС – это американское изобретение, предназначенное для замены релейной автоматики сборочных конвейеров программируемыми контроллерами. Язык РКС позволил решать задачи прозрачного переноса релейных схем в ПЛК. Различные варианты программной реализации релейных схем создавались практически всеми ведущими производителями ПЛК. Благодаря простоте представления язык РКС обрел популярность, что и стало основной причиной включения его в стандарт МЭК.

Слова «релейная логика» звучат сегодня достаточно архаично, однако релейная техника все еще широко применяется.

Графически LD-диаграмма представлена в виде двух вертикальных шин питания. Между ними расположены цепи, образованные соединением контактов (рис. 2.3). Нагрузкой каждой цепи служит реле. Каждое реле имеет контакты, которые можно использовать в других цепях.

Рисунок 2.3 – Представление релейной схемы на языке LD

Логически последовательное (И), параллельное (ИЛИ) соединение контактов и инверсия (НЕ) образуют базис Буля. Поэтому язык LD идеально подходит не только для построения релейных автоматов, но и для программной реализации комбинационных логических схем. Благодаря возможности включения в программу на языке LD функций и функциональных блоков, выполненных на других языках, сфера применения языка LD практически не ограничена.

Язык инструкций IL. Язык IL (Instruction list, дословно “список инструкций”) – это типичный ассемблер с аккумулятором и переходами по меткам (рис. 2.4). Набор инструкций стандартизован и не зависит от конкретной целевой платформы.

До принятия стандарта МЭК существовало ряд разновидностей этого языка, в том числе и с русскоязычными аббревиатурами.

Наибольшее влияние на формирование современного IL оказал язык программирования STEP контроллеров фирмы Siemens.

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

Рисунок 2.4 – Вид IL-программы в окне редактора CoDeSys

В составе МЭК-языков IL применяется при создании компактных компонентов, требующих тщательной проработки, на которую не жалко времени. При работе с IL гораздо понятнее, чем с другими языками, можно представить, как будет выглядеть оттранслированный код. Благодаря этому IL выигрывает там, где нужно достичь наивысшей эффективности.

Язык структурированного текста ST. Язык ST (Structured Text) – это язык высокого уровня. Синтаксически ST представляет собой несколько адаптированный язык Паскаль. Вместо процедур Паскаля в ST используются компоненты программ стандарта МЭК.

Для специалистов, знакомых с языком С, освоение ST также не вызовет никаких сложностей. В качестве иллюстрации сравним эквивалентные программы на языках ST и С:

WHILE CounteroO DO while (Counter – ! = 0)

Counter:= Counter-1; {

Varl:= Varl*2; Varl *= 2;

IF Varl > 100 THEN if (Varl > 100)

Var2:= Var2 + 1; Varl = 1;

В большинстве комплексов программирования ПЛК язык ST по умолчанию предлагается для описания действий и условий переходов SFC.

2.4 Комплексы проектирования, поддерживающие стандарт
МЭК 61131-3

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

Благодаря открытости МЭК-стандарта возникло ряд специализированных фирм, занятых исключительно инструментами программирования ПЛК. Системы программирования этих фирм имеют определенные отличия, которые сосредоточены лишь в реализации интерфейса – в стиле графики, в наборе сервисных функций, в содержании дополнительных библиотек и в реализации системы исполнения, то есть в том, что не касается применения стандарта.

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

Simatic Step 7 (производитель – немецкая фирма Siemens http://www.siemens.de/).

Программное обеспечение STEP 7 содержит центральный инструмент Simatic Manager, с помощью которого можно реализовать широкий набор функций программирования аппаратных средств фирмы Siemens .

Все аппаратные и программные требования процесса автоматизации в SIMATIC S7 выполняются внутри одного проекта.

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

CoDeSys (производитель немецкая фирма 3S Smart Software Solutions http://www.3s-software.com).

CoDeSys – это один из самых развитых функционально полных инструментов программирования в стандарте МЭК 61131-3.

TRACE MODE (производитель – AdAstra Research Group, Ltd, Россия).

TRACE MODE – это интегрированная информационная система для управления промышленным производством. Программа содержит средства разработки операторского интерфейса (SCADA/HMI), программирования контроллеров (Softlogic), управления основными фондами (EAM), персоналом (HRM) и производственными процессами (MES).

Главная задача инструментов комплекса программирования ПЛК состоит в автоматизации работы разработчика прикладной системы. Он должен быть избавлен от рутинной работы и постоянного «изобретения велосипеда».

В интегрированных комплексах программирования ПЛК сложился определенный набор возможностей, позволяющий относить их к средствам быстрой разработки. Интегрированная среда предполагает наличие встроенных редакторов текстовой и графической информации.

Интеграция текстового редактора в единую среду программирования предполагает:

· возможность быстрого ввода стандартных текстовых элементов, мгновенную вставку в текст операторов, функций, функциональных блоков;

· возможность быстрого автоматического дополнения ввода. Например, строка: «INP1 I 3;Вход 1» по окончании ввода (CoDeSys) преобразуется в соответствии с требованиями МЭК в строку:

INP1: INT:= 3; (* Вход 1 *);

· автоматическое объявление переменных;

· представление раздела объявлений переменных в виде текста или картотеки таблиц, разделенных и отсортированных по функциональному значению (входные переменные, локальные и т. д.);

· проверка синтаксиса и автоматическое форматирование ввода;

· автоматическая нумерация строк, что упрощает описание и сопровождение программы.

Эти возможности в существенной мере способствуют ускорению процесса подготовки программ и уменьшению числа ошибок в программах.

Интеграция графического редактора обеспечивает следующие возможности при проектировании :

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

· автоматическая расстановка компонентов (этим свойством обладают графические редакторы CoDeSys и OpenPCS);

· автоматическая нумерация цепей;

· копирование и перемещение выделенной графической группы компонентов с учетом их индивидуальной специфики;

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

В режиме исполнения встроенные редакторы отображают «ожившие» тексты и графические диаграммы. Для графических диаграмм наглядно отражается последовательность выполнения.

В целом программный комплекс должен обеспечивать :

· Унифицированный механизм соединения с ПЛК. Работа инструментов отладки не должна зависеть от способа соединения контроллера с отладчиком. Не имеет значения, эмулируется ли контроллер на том же самом компьютере, подключен ли контроллер через последовательный порт компьютера или же связан через Интернет.

· Загрузку кода управляющей программы в память контроллера.

· Автоматический контроль версий кода (проверку соответствия кода, содержащегося в памяти ПЛК, и кода, полученного после текущей компиляции.

· Выполнение управляющей программы в режиме реального времени.

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

· Сброс ПЛК. Может быть несколько видов сброса. В стандарте МЭК предусмотрено два вида сброса «горячий» и «холодный». Первый включает перевод управляющей программы в исходное состояние и выполнение начальной инициализации переменных. Во втором виде сброса добавляется начальная инициализация переменных, размещенных в энергонезависимой области памяти. Кроме того, в ПЛК может произойти аппаратный сброс путем выключения питания или перезапуска микропроцессора. Система программирования должна адекватно реагировать в случае аппаратного сброса. Детальная реакция на команды сброса определяется системой исполнения. Поэтому здесь возможны некоторые отличия для разных ПЛК, даже в одной среде программирования.

· Мониторинг и изменение мгновенных значений всех переменных проекта, включая входы-выходы ПЛК. Для удобства работы значения представляются в заданной пользователем системе счисления.

· Фиксацию переменных, включая входы-выходы. Фиксированные переменные будут получать заданные значения в каждом рабочем цикле независимо от реального состояния ПЛК и действий управляющей программы. Данная функция позволяет имитировать элементарные внешние события в лабораторных условиях и избегать нежелательной работы исполнительных механизмов при отладке на «живом» объекте управления. Неуправляемая работа механизмов может привести к поломке и представлять опасность для окружающих людей.

· Выполнение управляющей программы шагами по одному рабочему циклу. Применяется при проверке логической правильности алгоритма.

· Пошаговое выполнение команд программы и задание точек останова.

· Просмотр последовательности вызовов компонентов в точке останова.

· Графическую трассировку переменных. Значения нужных переменных запоминаются в циклическом буфере и представляются на экране ПК в виде графиков. Запись значений можно выполнять в конце каждого рабочего цикла либо через заданные периоды времени. Трассировка запускается вручную или синхронизируется с заданным изменением значения определенной (триггерной) переменной.

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

У ПЛК есть несколько основных языков программирования. Во-первых, это что-то похожее на языки программирования высокого уровня. Называется язык структурированного текста (по-буржуйски ST). Исключительно удобная штука, если есть навыки программирования. Собственно, для программистов и придумана. Однако когда ПЛК разрабатывался и внедрялся, профессия программиста (в смысле толкового программиста с хорошей технической подготовкой) была еще более дефицитной, чем в наши суровые времена. Посему практичные янки и весь мир следом разработали несколько видов графических языков. Для электриков создали язык релейных диаграмм (по-буржуйски LD). Ничего в общем сложного – шина входов, шина выходов, между ними – схема из релюшек, нормально замкнутых или разомкнутых, ну и таймеров, конечно, триггеров всяких. Плюс в простоте – была бы схема, а программа напишется. Минус в трудностях работы с аналоговыми сигналами.

Другой вид графических языков – язык функциональных блоков (по-буржуйски FBD). Мне он очень напоминает работу, например, с пакетом Simulink программного комплекса Matlab, товарищу напротив — Vissim. Да, в общем, получить техническое образование ни разу не столкнувшись с такого рода ПО трудно. Основа всего — блоки, соединенные в нужной последовательности линиями связи. Если вы – технарь, пожалуй, наиболее прост для освоения и активного использования. Плюс – наглядность, интуитивная понятность реализуемых алгоритмов. Минусы – работа с циклами. Можно, конечно, но на ST такого рода программки и пишутся легче и короче.
Последний вариант графического языка – алгоритмический (SFC). Это наиболее высокий по уровню графический язык. Каждый его шаг – маленькая (или большая) программа. Очень красивый язык, справедливо обожаемый технологами всех мастей. Позволяет создавать жестко структурированные, удобные для отладки проекты. Минус всего один – браться за его изучение стоит, лишь в достаточной степени освоив язык ST, LD или FBD. Программы для отдельного шага все равно писать на них.

Ах, да. Чуть не забыл. Есть еще что-то похожее на ассемблер. Называется списком инструкций (по-буржуйски IL). Если вы фанат бесконечной работы с аккумулятором – это для вас. Минусы – длинный программный код, хорошо смотрящийся только в приложениях к диссертации, проблемы отладки. Короче в моем понимании – пятое колесо в телеге программирования ПЛК. Могу быть не прав.

Программа или проект?

Давайте сразу отделим котлеты от мух. Тот код, который мы героически пишем – это конечно программа. Вернее, более точно, программа – это код определяющий цикл работы ПЛК. Их у контроллера может быть не одна, не две, а много. Меняться они могут по времени, внешнему или программному событию. То есть программа – вещь достаточно частная. Совокупность же того, что «залито» в контроллер, принято называть проект. Помимо набора программ проект включает в себя подключенные библиотеки, типы данных, визуализации, конфигурации, настройки конкретного ПЛК и многое другое.


Top