•  

Программирование контроллеров

06/10/2014
Данная статья содержит справочную информацию, с помощью которой пользователи могут не только быстро начать работу в среде PG5, но и активно использовать этот материал для создания производительного и надежного кода.
.
Программируемые контроллеры широко используются в современной автоматике, в частности, в системах автоматизации зданий, благодаря их гибкости и универсальности. Одним из основных преимуществ применения программируемых контроллеров является быстрый возврат инвестиций.
Средства, потраченные на обучение и приобретение ПО, быстро возвращаются благодаря широкому спектру решаемых задач. В современных условиях, когда бизнес должен быть мобильным, такое преимущество может стать решающим для того, чтобы обеспечить компании успех. 
Программирование Saia PCD с помощью программного обеспечения PG5.
Компания Saia-Burgess была одним из основателей отрасли промышленных контроллеров. Постоянно используя новые технологии, компания, в то же время, старается сохранять традиционные подходы. Это один из немногих продуктов, присутствующих на рынке более 25 лет, который регулярно обновляется, содержит в себе конфигураторы сетей, обширную библиотеку функциональных блоков, 4 языка из стандарта МЭК, web-редактор и много других возможностей для наиболее полного использования ресурсов контроллеров Saia PCD. 
После установки PG5, который можно скачать с сайта sbc-support.com, необходимо запустить Project Manager PG5. Откроется окно Менеджера Проектов. Затем можно создать новый или открыть уже существующий проект, содержащий необходимые переменные, параметры конфигурации и файлы, которые задействованы в пользовательской программе. Папки в окне проектов содержат информацию о проекте следующего содержания:
  • название главной папки отображает 
  • название проекта и число используемых устройств;
  • папка TCP/IP settings table появляется, если устройства используют протокол TCP/IP (можно просмотреть список всех
  • устройств с сетевыми параметрами);
  • модули, используемые несколькими Устройствами, могут размещаться в папке Common Files;
  • далее следуют папки Устройств (каждое устройство соответствует контроллеру проекта).
Каждая папка Устройств содержит следующие данные
  • Online Settings содержит параметры связи с контроллером;
  • Device Configurator содержит аппаратную конфигурацию PCD;
  • Program Files содержит файлы программных модулей;
  • Listing Files содержит файлы, генерируемые во время компиляции программы (Build) (информация для опытных пользователей).
Конфигурация
Прежде, чем вы начнете работать с CPU в проекте, необходимо определить параметры конфигурации таким образом, чтобы программные средства и написанная пользователем программа смогли работать с программируемым контроллером (PCD). В Online settings устанавливаются параметры связи между компьютером и PCD. Доступно несколько вариантов: это может быть канал PGU (RS 232), USB, Socket (Ethernet TCP/IP), S-BUS и др.
PCD конфигурируется в меню Device Configurator. В конфигураторе необходимо указать тип PCD, объем используемой памяти, используемые каналы связи, адрес в сети S-Bus (если используется) и многое другое.
Доступно несколько типов модулей программ PCD, из которых пользователь может выбрать наиболее для него подходящий. Язык программирования Fupla с расширением *.fup (соответствует FBD МЭК) используется для решения стандартных задач. Кроме него используются также языки IL (*.src) и Graftec (язык SFC, *.sfc). Язык LD реализован как частный случай Fupla в виде библиотеки. Рассмотрим процесс программирования на простом примере.
Пример
Здание имеет 4 этажа. На каждом этаже есть кнопка для включения света. Кратковременное нажатие на одну из кнопок обеспечивает включение всех четырех светильников на лестнице на 5 минут. Каждая кнопка связана с отдельным входом контроллера PCD: I0, I1, I2 и I3. Включение и выключение светильников управляется с помощью реле, подключенного к выводу контроллера О 32.
Редактирование программы
Функции программы вводятся между входными и выходными коннекторами. Это осуществляется путем размещения графических символов функциональных блоков, используемых для создания программы.
Первая функция, необходимая в нашем примере, служит для включения света по нажатию клавиши выключателя любого этажа. Это функция «ИЛИ», которая находится в библиотеке Binary (двоичные) группы Standard.
Следующая функция, Off delay, задаёт 5-минутную задержку выключения лампочки. Эта функция находится в библиотеке Timer. Дополнительную информацию относительно выбранного блока FBox можно найти, щелкнув правой кнопкой мыши по данному блоку и выбрав в меню команду Info.
Выбрав требуемый функциональный блок в окне FBox Selector «перетащите» его в окно редактирования между столбцами коннекторов. Пример программы приведен на рисунке 1.
Сборка программы (Build)
Перед выполнением программы контроллером PCD необходимо произвести «сборку» программы (ассемблирование, компиляцию и линковку). Сборка выполняется по команде меню CPU → Rebuild All Files или соответствующей кнопкой панели управления.
Загрузка программы в контроллер (Download)
Когда пользовательская программа уже готова, остается только загрузить ее в контроллер PCD. Загрузка выполняется использованием кнопки панели менеджера проектов Download Program или меню Online → Download Program.
Нахождение и исп равление ошибок (Debugging)
Первая версия программы не всегда совершенна. Необходимо ее тестирование и отладка. Тестирование программы производится при помощи того же самого редактора, который использовался для написания программы. Нажмите:
  • кнопку Go On/Offline;
  • запустите программу нажатием кнопки Start (одновременно наблюдайте за светодиодом работы RUN на контроллере PCD).
Когда редактор находится в режиме онлайн и программа выполняется, состояние каждого отдельного символа может быть отслежено: логический уровень дискретного сигнала отображается толщиной линии (толстая линия соответствует 1, и тонкая — 0). Для отображения других типовых данных надо левой кнопкой мыши кликнуть по требуемой лиги связи.
Ресурсы PCD. Входы/выходы
Каждая программа состоит из функций, позволяющих пользователю считывать, записывать и манипулировать различными ресурсами. Те ресурсы, которые позволяют контроллеру взаимодействовать с внешней средой, называются аппаратными ресурсами. Адресация цифровых входов и выходов соответствует месту установки соответствующего модуля ввода-вывода. На каждый модуль отведено 16 каналов, нумерация начинается с 0. Например, если модуль на 16 входов установлен на первое место, то каналы адресуются с 0 до 15. Если на второе, то с 16 до 31 и т.д.
Пример на рисунке 2 устанавливает в «1» выход 0 64 (модуль выходов на 4-ой позиции, первый канал), если на входах I1 и I2 (второй и третий каналы модуля на первом месте) одновременно присутствует логическая «1». Иными словами 064 = I1 AND I2.
Ресурсы PCD.
Время Часы реального времени (Real Time Clock — RTC) встроены в большинство контроллеров PCD. Для загрузки времени и даты в регистр используется специальная команда. На рисунке 3 показано, как считывать время в программе. Эта программа считывает время и дату с часов и копирует значение в регистры R1 и R2. 
Время представляется следующим образом:
  • R 1 = 093510 (9 часов 35 минут 10 секунд),
  • R 2 = 073030210 (неделя 07, день 3 (Среда), 10 февраля 03 (2003)).
Структура программ
Качество программы зависит от разработки ее оптимальной структуры. Структурирование упрощает программу и позволяет ускорить ее поддержку и развитие. Среда программирования SAIA PCD является структурированным языком и использует различные организационные блоки для создания приложений. Каждый тип блока предоставляет пользователю широкий набор функций. Доступны следующие организационные блоки: циклические организационные блоки (COB), блоки функций (FB), программные блоки (PB), организационные блоки исключений (XOB) и последовательные блоки (SB)
Циклические организационные блоки (COB 0…15)
Циклические организационные блоки (COB) — это части программы, которые выполняются без программных циклов и без ожидания внутренних и внешних событий в PCD. При запуске PCD, программа сначала выполняет COB 0. Затем последовательно выполняются остальные блоки с 1 по 15 (если они представлены в программе). Они автоматически вызываются программой, последовательно образуя непрерывный цикл. Все сигналы, с которыми необходимо регулярно иметь дело (например, выключатели моторов, внешнего прекращения подачи электроэнергии или сигналов чрезвычайной остановки, устройств защиты и пр.), должны быть в COB. В PCD должен быть, по меньшей мере, один СОВ! Если используется редактор Fupla, новые файлы автоматически открываются с СОВ. Далее вы уже сами можете изменить тип блока, комментарии, используя вкладку Block, Properties. При использовании редактора IL, блок определяется инструкциями, которые включают в себя код программы.
Программные блоки (PB 0…299)
Программные блоки дают возможность организовать программу в иерархичном виде. Они активируются, только если вызваны из COB, PB, FB или SB. Существует два способа вызова РВ: условный и безусловный. Условный вызов зависит от результата логической операции. Один и тот же РВ может быть вызван несколько раз в одной программе. Один РВ может вызывать другой и так далее до 7-го уровня вложения. При попытке превысить 7-й уровень вложения PCD вызовет исключение XOB 10.
Блоки функций (FB 0…999)
Функциональные блоки (FB) — это почти то же самое, что и программные блоки (РВ). Как и РВ, FB содержат программные части, которые можно вызывать из других блоков. Вызов может быть условным и безусловным. Отличительной их особенностью является то, что блоки функций можно вызывать с параметрами, тогда как с программными блоками это невозможно. FB с параметрами может быт вызван только из IL-программы. Запросы FB могут быть вложены друг в друга в пределах 7-ми уровней. При попытке превзойти 7-й уровень вложения PCD вызовет XOB 10.
Организационные блоки иск лючений (XOB)
Блоки исключений — это программы, которые вызываются автоматически, как только происходит исключительное событие. Каждое событие аппаратных средств или программного обеспечения связано с XOB. Эти события не могут быть изменены пользователем, однако пользователь может запрограммировать действие, выполняемое каждым блоком исключений. В таблице 1 приведено описание некоторых блоков исключений семейства Saia® PCD. Если происходит ошибка, и соответствующий XOB не был запрограммирован, на панели PCD загорится сигнал ошибки, но пользовательская программа продолжит свою работу. Если же соответствующий XOB был запрограммирован, он будет исполнен, а сигнал не загорится. Механизм приоритетов гарантирует первоочередную обработку самого важного XOB. Уровень приоритета 4 является самым высоким.
Последовательные блоки (SB)
Последовательные блоки SB — это совокупность шагов и переходов. В каждом шаге выполняется часть программы, а в каждом переходе происходит ожидание условия для того, чтобы приступить к следующему шагу. Этот процесс называется Graftec-программированием.
Graftec-программирование
Такое мощное средство, как Graftec-программирование также входит в арсенал PG5. Это язык SFC, реализованный в редакторе Graftec. Он предназначен для создания последовательных программ при помощи языков Fupla или IL.
Последовательные блоки (SB 0…31/96)
Данная технология является особенно эффективной для последовательных программ, где необходимо ожидать события, которые могут либо быть запрограммированы, либо поступить в контроллер извне. Эти ожидания имеют неопределенную длину, и невозможно оценить время цикла последовательных программ, поэтому важно полностью отделить циклические программы от последовательных.Ожидание очередного события никогда не должно блокировать непрерывное выполнение циклических программ. Чтобы отвечать этому требованию, последовательные программы расположены в одной из 32-х (96-ти) доступных структур SB, которые можно вызывать в каждом цикле программы. Специфической особенностью блоков SB является то, что, когда последовательная программа, расположенная в пределах SB ждет события, PCD отложит этот SB и продолжит обрабатывать циклические программы. Остальная часть SB будет обработана в течение следующего цикла программы.
Организация последовательных блоков
Чтобы увидеть Graftec-структуру любого SB-блока нужно в Block Navigator выбрать меню контекста Open Block. Меню контекста Properties позволяет вам изменять название и номер любого блока, выбранного в Block Navigator (см. рис. 5). Редактор Graftec позволяет отредактировать структуру последовательных блоков как последовательность шагов и переходов, в которые пользователь пишет код в форме графических функций или списка команд. Как видно из рисунка 5, последовательный блок (SB) начинается с двойного квадрата — символа, который обозначает начало программы, т.е. места, с которого стартует программа, когда блок вызывается впервые (холодный пуск)
Заключение
Среда программирования PG5 специально разработана и идеально подходит для работы со всей линейкой контроллеров Saia PCD, а программирование в этой среде увлекательно и напоминает захватывающее приключение. В следующих номерах мы расскажем о программно-аппаратном обеспечении и методах программирования коммуникаций, составе специализированных библиотек, способах программирования HMI и Web-HMI, средствах диспетчеризации. Так же рассмотрим примеры решения различных практических задач. Ждем вас на форуме в Google-группе «МЦ Квадрат SaiaPCD», на нашем сайте или в офисе на консультации и занятиях.

Продолжение следует.