Мегаобучалка Главная | О нас | Обратная связь


Тема 4. Языки программирования промышленных систем управления



2016-01-26 1097 Обсуждений (0)
Тема 4. Языки программирования промышленных систем управления 0.00 из 5.00 0 оценок




Стандарт МЭК 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

Лексическая структура языка Техно ST

В алфавит языка входят:

прописные и строчные буквы латинского алфавита;

цифры 0,1,…9;

специальные знаки:

+ - * / < = > ! : & | ^ ∼ % ( ) [ ] , ; #

Из символов алфавита формируются лексемы языка:

идентификаторы;

ключевые слова;

числовые и строковые константы;

символьные операторы (знаки операций);

разделители;

комментарии.

Идентификаторы Техно ST

Идентификаторы могут состоять из заглавных и строчных латинских букв, цифр и знака подчеркивания ’_’. Первым символом идентификатора не может быть цифра. Длина идентификатора не ограничена.

Идентификаторы не чувствительны к регистру, т.е. ’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

В качестве разделителей, или знаков пунктуации, в языке Техно STиспользуются следующие лексемы:

+ - * ** / < <= <> << > >= >> ! != = == : := & | ^ ∼ % ( ) [ ] . .. , ;

Комментарии Техно ST

Комментарии бывают двух видов: строчные и блочные.

Строчный комментарий начинается c символов //и продолжается до конца строки.

Блочный комментарий начинается с символов /*и продолжается до символов */.

Вложенные комментарии не допускаются.

Синтаксис Техно ST

Для описания структуры программы и операторов в Техно STприняты следующие терминологические соглашения:

выражение– последовательность операндов, разделителей и символьных операторов, задающая вычисление без присвоения результата;

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

На основании этих соглашений программа или ее компонент на языке Техно STопределяется как последовательность предложений.

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

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

Основная точка входа в программу

Основная точка входа в программу определяется следующей конструкцией:

Program

{определение аргументов}

{список предложений}

End_program

Необязательное выражение {определение аргументов} задается аналогично выражению {определение переменной} для операторов определения переменной (см. раздел Операторы Техно ST ). В дальнейшем конструкция program…end_programназывается основной программой.

Функции, глобальные переменные и структурные типы не могут быть определены в основной программе.

Основная точка входа создается автоматически при создании программы. Если для программы выбран язык STили IL, конструкция program ... end_programотображается в листинге. Если для программы выбран язык SFC, LDили FBD, основная точка создается во внутреннем представлении и недоступна для просмотра.

Переменные и константы Техно ST

Под объектом в Техно 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;

переменная типа BOOLFALSE;

переменная типа STRING– пустая строка;

переменная типа HANDLE– 16#00000000 (0 в формате HEX);

переменная типа TIME, DATE, TIME_OF_DAYили DATE_AND_TIME– 0.

При определении константы задание ее значения обязательно:

VAR CONSTANT myConst: INT:=13; END_VAR

В отличие от переменной, значение константы в программе изменять нельзя.



2016-01-26 1097 Обсуждений (0)
Тема 4. Языки программирования промышленных систем управления 0.00 из 5.00 0 оценок









Обсуждение в статье: Тема 4. Языки программирования промышленных систем управления

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1097)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.012 сек.)