Тема 4. Языки программирования промышленных систем управления
Стандарт МЭК 61131
В данной лекции раскрыты причины, приведшие к необходимости стандартизации ПЛК, кратко описана структура МЭК 61131, обоснован выбор языков программирования контроллеров включенных в стандарт МЭК 61131-3. Открытые системы Привязать потребителей к своим изделиям — мечта любого производства. С этой целью секреты технологии, позволяющие получить высокие качественные показатели продукции, должны тщательно охраняться. Это классический закрытый подход. Для потребителя желательно иметь возможность совместно использовать изделия разных фирм. Но с точки зрения производителя это не выгодно, поскольку повышает вероятность того, что заказчик откажется от некоторых покупок в пользу конкурентов. На самом деле это поверхностное заключение справедливо не всегда. Так, если продукция является достаточно технически сложной и имеет широкую сферу применений, то удовлетворить каждое конкретное пожелание индивидуального заказчика почти невозможно и дорого. Недовольство даже одной малосущественной для большинства деталью может привести к отказу от продукции данной фирмы вообще. При производстве же совместимой продукции (подчиненной требованиям открытого стандарта) фирма производитель может сконцентрировься на развитии наиболее удачных своих решений. Не опасаясь потерять заказчика, производитель может отказаться от невыгодных для себя изделий или частей работы. Кроме того, благодаря совместимости появляется возможность внедрять свои передовые изделия даже в полностью захваченных областях рынка. Так начинающие коллективы получают шанс проявить себя и найти свое, пусть даже не очень большое место среди промышленных гигантов. Тем самым расширяется и сам рынок. Выгоду открытого подхода наглядно доказала фирма IBM на примере своих ПК. В 1979 году в рамках Международной Электротехнической Комиссии (МЭК) была создана специальная группа технических экспертов по проблемам ПЛК, включая аппаратные средства, монтаж, тестирование, документацию и связь. Первый вариант стандарта был опубликован в 1982 году. Ввиду сложности получившегося документа было решено разбить его на несколько частей. В настоящее время стандарт включает следующие части. Часть 1. Общая информация. Часть 2. Требования к оборудованию и тестам. Часть 3. Языки программирования. Часть 4. Руководства пользователя. Часть 5. Спецификация сообщений. Часть 6. Промышленные сети. Часть 7. Программирование с нечеткой логикой. Часть 8. Руководящие принципы применения и реализации языков ПЛК. Первоначально стандарт имел номер 1131, с 1997 года МЭК перешел на 5-цифровые обозначения. Теперь правильное наименование международной версии стандарта — МЭК 61131. Далее мы сосредоточимся главным образом на языках программирования, описанных в третьей части стандарта. Для краткости, если в тексте употребляются слова «стандарт МЭК», следует понимать МЭК 61131-3. При ссылках на другие документы будет дано полное наименование. Целесообразность выбора языков МЭК Если посмотреть на языки стандарта МЭК с точки зрения современной информатики, то каждый их них можно подвергнуть оправданной критике (особенно SFC). Вероятно, было бы более разумным, опираясь на опыт использования наиболее популярных языков, создать один хороший универсальный язык. Эта идея не нова. Все старое программное обеспечение для контроллеров просто нужно будет переписать с нуля. В условиях конкурентного производства очень важно проводить внедрение новой техники быстро. А для этого необходимо максимально задействовать отработанные решения. Включение в стандарт пяти языков объясняется в первую очередь историческими причинами. Разработчики стандарта столкнулись с наличием огромного количества различных вариаций похожих языков программирования ПЛК. Вошедшие в стандарт языки созданы на основе наиболее популярных языков программирования, наиболее распространенных в мире контроллеров. Если взять любой контроллер, работающий в современном производстве, то его программу можно перенести в среду МЭК 61131-3 с минимальными затратами. Речь не идет о том, что программу можно будет использовать без какой-либо правки. Безусловно, потребуется некоторая адаптация и отладка, но несравненно меньшая, чем при создании проекта с нуля. После принятия стандарта появилась возможность создания аппаратно-независимых библиотек. Это регуляторы, фильтры, управление сервоприводом, модули с нечеткой логикой и т. д. Наиболее удачные, отработанные востребованные библиотеки становятся коммерческими продуктами. Простота программирования и доходчивое представление Инженер, спроектировавший машину, должен иметь возможность самостоятельно написать программу управления. Никто лучше его не знает, как должна работать данная машина. Инженер, привыкший работать с электронными схемами, гораздо легче сможет выражать свои мысли в LD или FBD. Если он знаком с языками PASCAL или С, то использование языка ST не составит для него сложности. За время развития ПЛК размер средней программы возрос более чем в 100 раз [21]. Многие решения, требовавшие раньше аппаратной поддержки, реализуются сегодня программно. Соответственно, требования к качеству программного обеспечения очень высоки. Поэтому сложную программу должны писать специалисты. Но для ответственных проектов очень важно, чтобы программа алгоритма была понятна техническому персоналу, осуществляющему настройку, сопровождение и ремонт оборудования. Они не обязаны изучать программу досконально, но понимать, что происходит, безусловно, должны. Очень часто технологи описывают процесс примерно так: «слегка перемешать, подогреть и довести до готовности». С аппаратными средствами здесь фактически все понятно, а вот с алгоритмом управления значительно сложнее. Для более детальных обсуждений технологии необходим некий общий язык, документальный и наглядный. Диаграммы SFC справляются с этой ролью не хуже специализированных инструментов (например, UML), являясь притом действующей программой, а не просто моделью. Страшно подумать, что придется объяснять работу сложной программы по ассемблерным или С листингам. Не исключайте ситуации, что общаться придется не на родном языке. Современные системы программирования контроллеров позволяют выполнить несколько распечаток программы с комментариями на разных языках — русском, немецком и т. д. Очевидно, это уже не маркетинговый ход разработчиков, а реальное требование современного бизнеса. Неэффективно реализованную программу можно заставить работать быстрее увеличением быстродействия процессора. Доходчивости представления достичь гораздо сложнее. Программу, в которой невозможно разобраться, придется рано или поздно выбросить. Единые требования в подготовке специалистов Внедрение стандарта дало фундамент для создания единой школы подготовки специалистов. Человек, прошедший обучение по программе, включающей стандарт МЭК 61131, сможет работать с ПЛК любой фирмы. В то же время, если он имел ранее опыт работы с любыми ПЛК, его навыки окажутся полезными и существенно упростят изучение новых возможностей. Программист не ограничен применением заданных в стандарте типов данных и операций. Стандарт допускает возможность создания пользовательских типов данных и функциональных блоков. Функции и функциональные блоки великолепно реализуют инкапсуляцию деталей реализации. Созданные пользователем библиотеки абсолютно равноправны стандартным. Новые оригинальные аппаратные решения изготовителей ПЛК могут быть поддержаны собственными библиотеками. Причем при создании внешних библиотек можно использовать любые инструменты вплоть от ассемблера до C++. Вообще стандартные компоненты МЭК для программиста, как дороги для автомашин. Количество возможных путей всегда очень ограничено. Ближе полем, но по дороге быстрее. Язык Техно ST
В алфавит языка входят: прописные и строчные буквы латинского алфавита; цифры 0,1,…9; специальные знаки: + - * / < = > ! : & | ^ ∼ % ( ) [ ] , ; # Из символов алфавита формируются лексемы языка: идентификаторы; ключевые слова; числовые и строковые константы; символьные операторы (знаки операций); разделители; комментарии.
Идентификаторы могут состоять из заглавных и строчных латинских букв, цифр и знака подчеркивания ’_’. Первым символом идентификатора не может быть цифра. Длина идентификатора не ограничена. Идентификаторы не чувствительны к регистру, т.е. ’AAA’и ’aaa’являются идентичными идентификаторами. Имена констант, переменных, функций и т.п., задаваемые пользователем, должны удовлетворять правилам задания идентификаторов. Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального использования. Список ключевых слов языка Техно ST: And, array, bool, break, by, byte, case, constant, continue, date, date_and_time, dint, do, dt, dword, else, elsif, end_case, end_for, end_function, end_function_block, end_if, end_program, end_repeat, end_struct, end_type, end_var, end_while, exit, false, for, function, function_block, goto, handle, if, int, lreal, mod, not, of, or, program, real, repeat, return, rol, ror, shl, shr, sint, string, struct, time, time_of_day, to, tod, true, type, udint, uint, until, usint, var, var_arg, var_global, var_inout, var_input, var_output, while, word, xor. Кроме того, к ключевым словам относятся имена функций C, которые могут быть использованы в ST-программе. Ключевые слова нечувствительны к регистру, т.е. whileи WHILEявляются идентичными ключевыми словами. Ключевые слова Техно STявляются таковыми и для всех других языков; их нельзя использовать в качестве пользовательских идентификаторов (например, в качестве имен переменных) в любых программах.
В качестве разделителей, или знаков пунктуации, в языке Техно STиспользуются следующие лексемы: + - * ** / < <= <> << > >= >> ! != = == : := & | ^ ∼ % ( ) [ ] . .. , ;
Комментарии бывают двух видов: строчные и блочные. Строчный комментарий начинается c символов //и продолжается до конца строки. Блочный комментарий начинается с символов /*и продолжается до символов */. Вложенные комментарии не допускаются.
Для описания структуры программы и операторов в Техно STприняты следующие терминологические соглашения: выражение– последовательность операндов, разделителей и символьных операторов, задающая вычисление без присвоения результата; предложение– последовательность лексем, определяющая выполнение логически законченного промежуточного действия. Таким действием может быть присвоение переменной результата вычислений, вызов функции-блока и т.п. Операторы (кроме символьных) также образуют предложения. На основании этих соглашений программа или ее компонент на языке Техно STопределяется как последовательность предложений. Каждое предложение должно завершаться точкой с запятой. Исключением из этого правила являются операторы определения переменных, для завершения которых точка с запятой не используется. Длина строки программы не ограничивается, лексемы разделяются произвольным числом пробелов, знаков табуляции или символов перевода строки.
Основная точка входа в программу определяется следующей конструкцией: Program {определение аргументов} {список предложений} End_program Необязательное выражение {определение аргументов} задается аналогично выражению {определение переменной} для операторов определения переменной (см. раздел Операторы Техно ST ). В дальнейшем конструкция program…end_programназывается основной программой. Функции, глобальные переменные и структурные типы не могут быть определены в основной программе. Основная точка входа создается автоматически при создании программы. Если для программы выбран язык STили IL, конструкция program ... end_programотображается в листинге. Если для программы выбран язык SFC, LDили FBD, основная точка создается во внутреннем представлении и недоступна для просмотра.
Под объектом в Техно STпонимается некоторая область памяти, которой присвоено имя (идентификатор). Переменная (константа) – это частный случай объекта как именованной области памяти. Отличительной чертой переменной (константы) является возможность связывать с ее именем различные значения, совокупность которых определяется типом переменной (константы). При определении значения переменной в соответствующую ей область памяти помещается некоторый код. Если этот процесс происходит во время компиляции программы, он называется инициализацией переменной, если во время выполнения программы – присвоением значения.
Особенности присвоения значений переменным Вид константы или переменной (глобальная, локальная) задается оператором, с помощью которого данная переменная (константа) определяется (см. Операторы определения переменныхв разделе Операторы Техно ST ). Синтаксис операторов определения переменных предполагает обязательное указание типа данных: //определение локальной строковой //переменной myVar VAR myVar: STRING; END_VAR Тип данных определяет размер выделяемой памяти. Для указания типа в Техно STопределены следующие ключевые слова (в круглых скобках указано соответствие типу данных C): BOOL(bool) – булево значение размерностью 1 байт (true (1)или false (0)); SINT(__int8) – целое со знаком размерностью 1 байт (-128 ... 127); USINT(unsigned __int8) – целое без знака размерностью 1 байт (0 ... 255); INT(short) – целое со знаком размерностью 2 байта (-32768 ... 32767); UINT(unsigned short) – целое без знака размерностью 2 байта (0 ... 65535); DINT(long) – целое со знаком (4 байта) (-2147483648 ... 2147483647); UDINT(unsigned long) – целое без знака (4 байта) (0 ... 4294967295); TIME, DATE, TIME_OF_DAY, DATE_AND_TIME– соответствуют DINT.Значения переменных этих типов задаются аналогично соответствующим временным константам (см. Числовые константы Техно ST ); REAL(float) – вещественное число (4 байта) (максимальное значение 3.402823466e+38); LREAL(double) – вещественное число (8 байт) (максимальное значение 1.7976931348623158e+308); STRING(char[]) – 256 символов в кодировке UTF-8 (512 байт, см. также Строковые константы Техно ST ); HANDLE– специальный тип, используемый для хранения внешних данных в виде числа, имеет размерность 4 байта, не может быть использован в арифметических, логических и т.п. операциях. Кроме указанных типов, переменной может быть присвоен структурный тип, созданный пользователем. Такая переменная является конкретным объектом указанного типа (см. Структуры Техно ST ). При определении переменной может быть задано ее значение: VAR i: INT:=0; END_VAR Если при определении переменной ее значение не задано, то этой переменной по умолчанию присваивается следующее начальное значение: числовая переменная – 0; переменная типа BOOL– FALSE; переменная типа STRING– пустая строка; переменная типа HANDLE– 16#00000000 (0 в формате HEX); переменная типа TIME, DATE, TIME_OF_DAYили DATE_AND_TIME– 0. При определении константы задание ее значения обязательно: VAR CONSTANT myConst: INT:=13; END_VAR В отличие от переменной, значение константы в программе изменять нельзя.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1097)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |