В статье описываются основы работы на языке SFC (Sequential Function Chart).
ООО “ХОЛИТ Дэйта Системс”, Украина, г. Киев

Вопрос выбора языковых средств всегда остро стоял в среде программистов. Очень часто он служил причиной раздоров и ссор, размахивания руками и достаточно нелицеприятных высказываний. Так было и так будет, таковы люди. Конечно, не все придерживаются максималистских принципов, и большая часть людей согласится с высказыванием - “каждому языку - свои задачи”. Пишите драйвера или сервисы на C, создавайте пользовательские интерфейсы на Java или Tk, занимайтесь обработкой данных с помощью MathScript или LabVIEW. Да, языков очень много и у каждого из них своя специфика, отражающая и облегчающая решения задач, для решения которых он, собственно, и был предназначен.
От сего дня мы будем говорить о языках, применяемых для написания систем управления. Прежде всего, давайте определим, что характеризует данный класс задач, и выделим его специфические стороны. В центре находится контроллер промышленной автоматизации(PLC или PAC), обладающий даже в базовом варианте устройствами ввода/вывода сигналов. Со стороны объекта автоматизации через датчики в PAC поступает информация о его (объекте) состоянии, устройства вывода дают возможность оказывать воздействие на объект. Согласитесь, схема достаточно простая, но ее в любой момент можно расширить взаимодействием типа “контроллер-контроллер”, “контроллер-SCADA”, добавить различные варианты резервирования и горячей замены. И вот здесь уже будет над чем подумать классическому программисту на C.
Системам управления также присущ целый ряд специфических параметров построения алгоритма работы программы - это событийность, цикличность, логический параллелизм, механизмы абстрагирования от аппаратного обеспечения.
PAC работает с реальными данными, которые могут поступать из внешнего мира в совершенно непредсказуемом порядке. В задачу системы управления входит обработка входящих данных и принятие решения на их основе, таким образом, ход течения программы будет меняться в зависимости от состояния объекта.
Подавляющее большинство систем в промышленной автоматизации работают по замкнутому циклу - считали данные с устройства ввода, обработали, приняли решение, обновили устройства вывода сигналов.
Алгоритмы управления могут быть произвольной сложности, начиная от мониторинга одного входного канала и заканчивая приложениями с десятками тысяч внешних переменных и параллельно выполняющихся частей программы. Наличие параллелизма может быть обусловлено как событийностью, так и требованием к самой программе, когда некоторые участки кода нужно выполнять одновременно. Конечно, можно было построить алгоритм на основе единого блока с выполнением по условию, однако это может сделать программы громоздкими и трудно читаемыми.
Требования, учитывающие все перечисленные выше требования, вылились в создание целого ряда специальных языков, нашедших применение в виде самостоятельных продуктов, или же входящих в интегрированные среды разработки.
Стандарт IEC 61131 объединил в себе несколько языков, в той или иной степени соответствующих перечисленным требованиям. Три графических (SFC, FBD, LD) и два текстовых (ST и IL) языка, входящих в стандарт, теоретически должны позволить инженеру-программисту - и даже скорее инженеру, чем программисту, решить любые задачи в области создания систем управления. Некоторые считают, что часть языков там присутствует в виде наследия, такого себе “привета из прошлого”, однако наш опыт показывает, что все они в большей или меньшей степени нашли применение на практике.
На страницах журанала “ИСУП” мы познакомим Вас с основными возможностями всех языков IEC 61131, давая основные знания, а вот что использовать в реальной деятельности, предстоит уже решать Вам.
Статья опубликована в журнале «ИСУП», № 1(13)_2007
С.В. Гулько,
ООО “Холит Дейта Системс”, Украина, г. Киев,
e-mail: s.gulko@isagraf.com.ua,
info@isagraf.com.ua