Алгоритмическое и программное обеспечение задач автоматизации управления. Лекции по дисциплине Алгоритмическое и программное обеспечение з. Лекция 1 программируемые контроллеры 1 Определение плк
![]()
|
3. СЕМЕЙСТВО ЯЗЫКОВ МЭК 3.1 Релейные диаграммы (LD) 3.1.1 Цепи Релейная схема представляет собой две вертикальные шины питания, между ними расположены горизонтальные цепи, образованные контактами и обмотками реле. Количества контактов в цепи произвольно, реле одно. Если последовательно соединенные контакты замкнуты, ток идет по цепи и реле включается (в примере на рис.3.1 Lampl). При необходимости можно включить параллельно несколько реле, последовательное включение не допускается. Рис.3.1 Схема LD из одной цепи В LD каждому контакту ставится в соответствие логическая переменная» определяющая его состояние. Если контакт замкнут, то переменная имеет значение ИСТИНА. Если разомкнут – ЛОЖЬ. Имя переменной пишется над контактом и фактически служит его названием. Последовательное соединение контактов или цепей равноценно логической операции И. Параллельное соединение образует монтажное ИЛИ. Цепь может быть либо замкнутой (ON), либо разомкнутой (OFF). Это как раз и отражается на обмотке реле и соответственно на значении логической переменной обмотки (ИСТИНА/ЛОЖЬ). Зрительное восприятие LD-диаграмм должно быть интуитивно понятным. Для России этому несколько мешает принятая система условных графических обозначений, базирующаяся на американском стандарте NEMA. Преимущество таких обозначений состоит в возможности применения символов псевдографики для построения LD- диаграмм. Табл.3.1 – Сопоставление обозначений базовых элементов LD и обозначений ЕСКД 22 Сопоставление обозначений базовых элементов LD и обозначений ЕСКД приведено в таблице 3.1. Контакт может быть инверсным – нормально замкнутым. Такой контакт обозначается с помощью символа |/| и замыкается, если значение переменной ЛОЖЬ, Инверсный контакт равнозначен логической операции НЕ. Переключающий контакт образуется комбинацией прямого и инверсного контактов (рис.3.2). Рис.3.2 Переключающий контакт Обмотки реле также могут быть инверсными, что обозначается символом (/). Если обмотка инверсная, то в соответствующую логическую переменную копируется инверсное значение состояния цепи. 3.1.2 Реле с самофиксацией Помимо обычных реле, в релейных схемах часто применяются поляризованные реле. Такое реле имеет две обмотки, переключающие его из одного положения в другое. Переключение производится импульсами тока. При отключении тока питания поляризованное реле остается в заданном положении, что реализует элементарную ячейку памяти. В LD такое реле реализуется при помощи двух специальных обмоток SET и RESET. Обмотки типа SET обозначаются буквой S внутри круглых скобок (S). Обмотки типа RESET обозначаются буквой R. Если соответствующая обмотке (S) переменная принимает значение ИСТИНА, то сохраняет его бесконечно. Вернуть данную переменную в ЛОЖЬ можно только обмоткой (R). Очевидно, что полной аналогии с поляризованным реле программно достичь невозможно. Даже если значение логического выхода сохраняется в энергонезависимой памяти, состояние самой электрической цепи при выключенном питании ПЛК определяется его схематикой. Фиксация безопасного положения аппаратуры при аварии питания системы управления может быть достигнута только аппаратно. Рис.3.3. Реле с самофиксацией Условие выключения реле не всегда равносильно отсутствию условия включения. Благодаря (R) и (S) обмоткам условия включения и выключения реле можно 23 формировать совершенно независимо, причем в любой цепи и сколько угодно раз. Обмотки (R) и (S) обеспечивают фиксацию условий управления, что необходимо при реализации автоматов с памятью. Самофиксацию несложно организовать и на простом реле, используя дополнительный контакт в цепи питания. Пример этого представлен на рис.3.3. Контакт S_R1 включает, a R_R1 выключает реле R1, благодаря контакту R1 реле получает питание после размыкания SR1. Применение SET/RESET-обмоток не дает ничего принципиально нового, но делает LD-диаграмму проще. 3.1.3 Порядок выполнения и обратные связи Идеология релейных схем подразумевает параллельную работу всех цепей. Ток во все цепи подается одновременно. В LD решение диаграммы выполняется последовательно слева направо и сверху вниз. В каждом рабочем цикле однократно выполняются все цепи диаграммы, что и создает эффект параллельности работы цепей. Любая переменная в рамках одной цепи всегда имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле. Цепи расположенные ниже, получат новое значение переменной сразу. Цепи расположенные выше – только в следующем цикле. Строгий порядок выполнения схемы очень важен. Случайный или даже истинно параллельный порядок выполнения цепей мог бы приводить к эффекту «гонок», встречающемуся в электронных схемах с триггерами. Благодаря жесткому порядку выполнения LD-диаграммы сохраняют устойчивость при наличии обратных связей. Рис.3.4. LD диаграмма с обратной связью В приведенной на рис.3.4 схеме включение Key вызовет мгновенное (в том же цикле) включение Р2 и отключение РЗ. Реле Р1 будет включено только в следующем цикле, причем даже если Key уже в обрыве (ЛОЖЬ). Рис.3.5. Генератор единичных импульсов 24 Используя вышеописанный принцип цикличности выполнения LD-диаграмм, очень легко построить генератор единичных импульсов. Пример такого построения дан на рис.3.5 Период импульсов на реле Р1 будет равен удвоенной длительности рабочего цикла ПЛК. 3.1.4 Управление порядком выполнения Порядок выполнения цепей диаграммы можно принудительно изменять, используя метки (labels) и переходы (jumps). Метку можно ставить только в начало цепи. Имена меток подчинены правилам наименования переменных. Для наглядности можно закончить метку двоеточием. Двоеточие не образует новой метки. Так, Ml: и Ml это одно и то же. Цепь может иметь только одну метку и один переход. Переход равнозначен выходному реле и выполняется, если выходная переменная имеет значение ИСТИНА. Переход может быть инверсным, в этом случае он выполняется при значении цепи ЛОЖЬ. Используя переход» можно пропустить выполнение части диаграммы. Пропущенные цепи не сбрасываются, а именно не выполняются – замирают в том положении, в котором были ранее. Переход вверх допускается и позволяет создавать циклы (рис.3.6). Рис.3.6 Простейший бесконечный цикл Идеологически переходы противоречат аналогии LD с релейными схемами, нарушая законы электрических цепей. В схеме LD с переходами разобраться бывает сложно. Желательно не заниматься управлением порядком выполнения LD-диаграммы в ней самой, а использовать для этого более выразительные средства. Например, разделить LD-диаграмму на модули (действия), а порядок выполнения описать в SFC. Специальный переход RETURN прекращает выполнение LD диаграммы. Если RETURN встречается в основной программе (PLC_PRG), рабочий цикл прерывается. В функциях и функциональных блоках происходит возврат в место вызова. Иными словами, использование перехода RETURN аналогично по смыслу оператору RETURN в текстовых языках. 3.1.5 Расширение возможностей LD В LD-диаграмму можно вставить функции и функциональные блоки. Функциональные блоки должны иметь логические вход и выход. На рис.3.7 показан пример организации цикла на 10 повторов на базе функционального блока декрементный счетчик. Первая цепь загружает счетчик числом повторов. Вторая цепь – генератор единичных импульсов. Третья – декрементный счетчик с проверкой условия окончания цикла. Тело цикла на рисунке 3.7 не показано. 25 Рис.3.7. Цикл на 10 повторов на базе функционального блока декрементный счетчик Для включения в диаграмму функций в них искусственно вводится добавочный логический вход, обозначаемый EN (Enable) (рис.3.8). Логическое значение на входе EN разрешает или запрещает выполнение функции. Сама функция не терпит никаких изменений при добавлении входа EN. Рис.3.8. Использование оператора EQ, управляемого по входу EN В первой редакции стандарт МЭК определял контакты и обмотки» управляемые фронтами импульсов: контакт |Р| и обмотка (Р) переднего фронта» контакт |N| и обмотка (N) заднего фронта. В настоящее время поддержка таких контактов и обмоток не является обязательной» так как аналогичную цепь легко можно построить при помощи функциональных блоков R_TRIG и F_TRIG. 3.1.6 LD-диаграммы в режиме исполнения В режиме Online обмотки реле, контакты и проводники, находящиеся в состоянии On (под током), окрашены голубым (цвета по умолчанию) цветом. CoDeSys позволяет менять значения логических переменных (ИСТИНА/ЛОЖЬ) непосредственно в графической диаграмме двойным щелчком мыши на имени переменной. Значения входов-выходов функциональных блоков отображаются числовыми значениями. Точка останова может устанавливаться только целиком на цепь. Для установки или сброса точки останова необходимо щелкнуть мышью по номеру цепи. В режиме останова номер цепи подсвечен красным. Пошаговое – по одной цепи выполнение достигается командами «Step over» и «Step in». 26 3.2 Функциональные блоковые диаграммы (FBD) 3.2.1 Отображение POU Диаграмма FBD строится из компонентов, отображаемых на схеме прямоугольниками. Входы POU изображаются слева от прямоугольника, выходы справа. Внутри прямоугольника указывается тип POU и наименования входов и выходов. Для экземпляра функционального блока его наименование указывается сверху, над прямоугольником. В графических системах программирования прямоугольник компонента может содержать картинку, отражающую его тип. Размер прямоугольника зависят от числа входов и выходов и устанавливается графическим редактором автоматически. Пример графического представления экземпляра Blinker функционального блока BLINK дан на рис.3.9. Рис.3.9 Графическое представление экземпляра функционального блока Программа в FBD не обязательно должна представлять большую единую схему. Как и в LD, диаграмма образуется из множества цепей» которые выполняются одна за другой. В CoDeSys все цепи одного POU отображаются в едином графическом окне, пронумерованные и разделенные горизонтальными линиями. Значения переменных, вычисленные в одной цепи, доступны в последующих цепях сразу в том же рабочем цикле. 3.2.2 Соединительные линии Прямоугольники POU в FBD соединены линиями связи. Соединения имеют направленность слева направо. Вход блока может быть соединен с выходом блока, расположенного слева от него. Помимо этого, вход может быть соединен с переменной или константой. Соединение должно связывать переменные или входы и выходы одного типа. В отличие от компонента переменная изображается на диаграмме без прямоугольной рамки. Ширина соединительной линии в PBD роли не играет. Стандарт допускает использование соединительных линий разной ширины и стиля для соединений разного типа. 3.2.3 Порядок выполнения FBD Выполнение FBD-цепей идет слева направо, сверху вниз. Блоки, расположенные левее, выполняются раньше. Блок начинает вычисляться только после вычисления значений всех его входов. Дальнейшие вычисления не будут продолжены до вычисления значений на всех выходах. Другими словами, значения на всех выходах графического блока появляются одновременно. Вычисление цепи считается 27 законченным только после вычисления значений на выходах всех входящих в нее элементов. В некоторых системах программирования пользователь имеет возможность свободно передвигать блоки с сохранением связей. В этом случае ориентироваться нужно исходя из порядка соединений. Редактор FBD CoDeSys автоматически расставляет блоки в порядке выполнения. 3.2.4 Инверсия логических сигналов Инверсия логического сигнала в PBD изображается в виде окружности на соединении, перед входом или переменной. Инверсия не является свойством самого блока и может быть легко добавлена или отменена непосредственно в диаграмме- В CoDeSys это делается командой «Negate». 3.2.5 Соединители и обратные связи Соединители (connectors) представляют собой поименованное соединение, которое можно разорвать и перенести в следующую цепь. Такой прием может понадобиться при ограниченной ширине окна редактора FBD. В CoDeSys ширина окна не ограничена, поэтому соединители здесь не нужны. Стандарт не запрещает соединения, идущие с выхода блока на свой вход или вход ранее исполняемых блоков. Обратная связь не образует цикл, подобный FOR, просто некоторое вычисленное значение поступит на вход при следующем вызове диаграммы. Фактически это означает неявное создание переменной, которая сохраняет свое значение между вызовами диаграммы. Для устранения неоднозначности необходимо присвоить безопасное начальное значение переменной обратной связи. В редакторе FBD CoDeSys обратные соединения запрещены. Для создания обратной связи используйте явно объявленную внутреннюю переменную. При необходимости переноса или разветвления соединения в другие цепи также необходимо использовать промежуточные локальные переменные. 3.2.6 Метки, переходы и возврат Порядок выполнения FBD-цепей диаграммы можно принудительно изменять, используя метки и переходы, точно так же, как и в релейных схемах. Метка ставится в начале любой цепи, являясь, по сути, названием данной цепи- Цепь может содержать только одну метку. Имена меток подчинены общим правилам наименования идентификаторов МЭК. Графический редактор автоматически нумерует цепи диаграммы. Эта нумерация применяется исключительно для документирования и не может заменять метки. Переход обязательно связан с логической переменной и выполняется, если переменная имеет значение ИСТИНА. Для создания безусловного перехода используется константа ИСТИНА, связанная с переходом. Метки и переходы в FBD представлены в примере, показанном на рис.3.10. Последняя цепь является пустой. Пустая цепь обозначается единственной константой TRUE. Оператор возврата RETURN можно использовать в FBD так же, как и переход на метку» т. е. в связке с логической переменной. Возврат приводит к немедленному 28 окончанию работы программного компонента и возврату на верхний уровень вложений. Для основной программы это начало рабочего цикла ПЛК. Рис. 7.17. Метки и переходы в FBD Вопросы для самоконтроля 1. Семейство языков программирования ПЛК. 2. Язык программирования релейные диаграммы (LD) 3. Порядок выполнения и обратные связи в языке программирования релейные диаграммы. 4. Управление порядком выполнения в языке программирования релейные диаграммы. 5. Расширение возможностей языка программирования релейные диаграммы. 6. LD-диаграммы в режиме исполнения. 7. Язык программирования функциональные блоковые диаграммы (FBD). 8. Отображение POU в языке программирования функциональные блоковые диаграммы. 9. Порядок выполнения FBD 10. Соединители и обратные связи в языке программирования функциональные блоковые диаграммы. СПИСОК ЛИТЕРАТУРЫ Основная 1. Минаев, И.Г. Программируемые логические контроллеры : практическое руководство для начинающего инженера [Текст] / И.Г. Минаев, В.В. Самойленко. – Ставрополь: АРГУС, 2009. – 100 с. 2. Парр, Э. Программируемые контроллеры : руководства для инженера. – М.: Бином; Лаборатория знаний, 2007. – 516 с. 29 3. Костров Б.В. Микропроцессорные системы и микроконтроллеры [Текст] / Б.В. Костров, В.Н. Ручкин. – М.: «ТехБук», 2007. – 320 с. Дополнительная 4. Петров, И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования. – М.: СОЛОН-Пресс, 2004. – 246 с. 5. Басалин, П.Д. Архитектура вычислительных систем [Текст]: Учебник. – Нижний Новгород: Изд-во Нижегородского госуниверситета, 2003. – 243 с. 6. Иванов, И.Ю. Микропроцессорные устройства систем управления [Текст]: Учебное пособие / Ю.И. Иванов, В.Я. Ягай. – Таганрог: Изд-во ТРТУ, 2005. – 133. 7. Бойко, В.И. Схемотехника электронных систем. Микропроцессоры и микроконтроллеры [Текст]: Учебник. – БХВ-Петербург, 2004. – 464 с. 8. Корнеев, В.В. Современные микропроцессоры [Текст] / В.В. Корнеев, А.В. Киселёв. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2003. – 448 с. 30 Лекция 4 4. СТАНДАРТНЫЕ КОМПОНЕНТЫ КОМПЛЕКСОВ МЭК-ПРОГРАММИРОВАНИЯ 4.1 Операторы и функции 4.1.1 Арифметические операторы Почти все арифметические операторы имеют символьную форму для записи в выражениях языка ST. В других языках МЭК используются вызовы операторов в виде функции. Арифметические операторы являются перегружаемыми: тип результата операции определяется типом операндов (табл.4.1). Табл.4.1 – Стандартные арифметические операторы Оператор Символ Действие Типы параметров ADD + Сложение ANY_NUM, TIME SUB – Вычитание ANY_NUM, TIME MUL * Умножение ANY_NUM, TIME DIV / Деление ANY_NUM, TIME MOD MOD Остаток от деления ANY_INT EXPT Возведение в степень INI ANY_NUM IN2 ANYJNT MOVE := Присваивание ANY В графических языках блоки MUL и ADD можно расширять, т.е. добавлять произвольное число параметров. Реализация примера в FBD представлена на рис.4.1. Рис.4.1 Пример графического представления арифметических блоков Переменные типа TIME можно складывать между собой, вычитать. Одну переменную типа TIME можно умножать и делить на число. Результат во всех случаях будет иметь тип TIME. Операция MOD применима только на множестве целых чисел. Смысл выражения OUT := INI MOD IN2 можно раскрыть на языке ST так: IF (IN2 = 0) THEN OUT := 0; ELSE OUT : -IN1 – (IN1/IN2) * IN2 ; END IF Операция OUT : - EXPT(IN1/IN2) означает OUT = IN1 IN2 . Параметр IN2 должен быть целого типа. Операция MOVE может иметь только один параметр совместимого типа. В явном виде MOVE встречается только в графических языках. В IL присваивание значения 31 одной переменной или константы другой переменной выполняется парой инструкций LD, ST. 4.1.2 Операторы битового сдвига Операторы сдвига применимы для типов ANY_BIT. Все они имеют 2 параметра: OUT := OIIEPATOP(IN,N); Табл.4.2 – Операции битового сдвига Оператор Действие SHL Побитный сдвиг операнда IN влево на N бит, с дополнением нулями справа SHR Побитный сдвиг операнда IN вправо на N бит» с дополнением нулями слева ROR Циклический сдвиг операнда IN вправо на N бит» старшие биты замещаются младшими ROL Циклический сдвиг операнда IN влево на N бит» младшие биты замещаются старшими Пример применения операций сдвига в графической схеме представлен на рис.4.2. Рис.4.2. Перестановка байт в слове (режим online) |