Все языки программирования контроллеров

Языки программирования контроллеров

Программируемый логический контроллер (ПЛК, программируемый контроллер, программоконтроллер, или просто контроллер) — электронное вычислительное устройство, предназначенное для автоматизации процессов на производствах, в «умных домах», робототехнике и т.п.

Для эффективного использования контроллеров необходимо установить в его память программное обеспечение («прошить» контроллер). Для этого разработчикам предоставляются следующие средства:

  1. готовые программные библиотеки, процедуры, шаблоны; их применение ускоряет написание прошивок;
  2. средства отладки прошивок без загрузки в ПЛК (эмуляторы, симуляторы);
  3. средства документирования; программы, предназначенные для промышленного использования, должны быть оснащены комментариями в соответствии с международными стандартами.

Современные IDE для программирования контроллеров могут поддерживать сразу несколько языков разработки. Стандартом Международной Электротехнической Комиссии IEC 61131 такие языки были унифицированы. Целью этого шага было обеспечение переносимости ПО между различными аппаратными платформами. На практике такая совместимость наблюдается далеко не всегда, хотя корпорации-поставщики ПЛК и стараются придерживаться установленных правил.

Промышленные языки для программирования ПЛК

Язык релейных диаграмм (LD, LAD, Ladder)

Язык позволяет вести разработку в графическом режиме, т.е. формировать программу из визуальных блоков, а не писать ее в виде текста. Недостаток: большие и сложные алгоритмы, выраженные в графическом виде посредством LAD, становятся еще менее понятными, чем текст.

Functional Block Diagram FBD

Язык FBD также изображает проектируемую прошивку не в виде текста, а в виде схемы, напоминающую принципиальную электрическую схему. Диаграмма FBD состоит из соединенных линиями блоков (functional flocks, FBs). Связи символизируют собой переменные, через которые передается информация между блоками. Блоки символизируют арифметические и логические операции. Входные и выходные линии могут быть при этом связаны с физическими входами/выходами контроллера.

Читайте также:  Какие задачи линейного программирования могут быть решены графическим способом

Рисунок 1. Пример Functional Block Diagram. Автор24 — интернет-биржа студенческих работ

Sequential Function Chart

Язык SFC (используется обычно в связке с языками ST и IL) — еще одно средство визуализации, описывающее программу в виде последовательности шагов и переходов. В SFC используется принцип конечного автомата. На этом языке удобно описывать параллельно выполняемые последовательности технологических шагов с возможностью ветвления и слияния.

Рисунок 2. Пример Sequential Function Chart. Автор24 — интернет-биржа студенческих работ

Structured Text

Язык ST обладает синтаксисом, напоминающим универсальные языки программирования Pascal и Basic. С его помощью легко реализуются математические и логические операции, переходы, циклы. Имеется возможность задействования библиотечных и пользовательских функций. Язык легок в освоении, хотя и уступает по наглядности языкам с графическим выражением алгоритмов.

Instruction List

Язык IL по синтаксису напоминает ассемблер, хотя и не слишком сложен, благодаря небольшому количеству команд процессора в контроллерах (сравнительно с компьютерными). Его достоинством является высокое быстродействие написанных на нем программ, недостатком — относительная сложность, отпугивающая персонал, имеющий отношение к составлению программ для контроллеров (например, технологов), но не являющихся специалистами в области программирования.

Continuous Flow Chart

Язык CFC — еще один язык визуального программирования, который можно считать расширением языка FBD. Разработка представляет собой по большей части выбор из готовых решений, оформленных в виде функциональных блоков, рассчитанных на использование технологическими объектами: моторами, насосами, осветительными приборами. Такие блоки умеют обрабатывать исключительные ситуации (перегрев, короткое замыкание, затопление и т. п.) и сигнализировать о них.

Рисунок 3. Пример Continuous Flow Chart. Автор24 — интернет-биржа студенческих работ

Среда разработки CODESYS

CODESYS (Controller Development System) — комплекс программных и аппаратных средств для промышленной автоматизации. Разрабатывается в Германии компанией 3S-Smart Software Solutions GmbH с 1994 г. Широко распространен в Российской Федерации, где фактически является отраслевым стандартом для программирования ПЛК, в частности, для популярных промышленных контроллеров ОВЕН.

В CODESYS по умолчанию поддерживаются следующие стандартные языки:

  • Instruction List;
  • Structured Text;
  • Ladder Diagram;
  • Function Block Diagram;
  • Sequential Function Chart.

При дополнительной настройке поддерживаются и другие средства разработки, соответствующие IEC 61131-3.

Домашние и образовательные контроллеры

Для автоматизации в домашних условиях широко применяются контроллеры Arduino. Для их программирования используется относительно легкий для освоения Си-подобный язык, хотя наиболее эффективные прошивки для них лучше писать с помощью низкоуровневых средств, требующих, однако, больших затрат при освоении.

Учебные контроллеры для использования в игрушечных роботах, предлагаемые для детского творчества компаниями LEGO (линейка WeDO) и VEX Robotics, программируются на визуальных языках, позволяющих собирать алгоритмы из блоков — объявление переменных, условные переходы, циклы и т.п. Примером такого языка может служить Scratch, используемый в LEGO. VEX Robotics предоставляет для разработки IDE ROBOTC, имеющую возможность переключаться между графическим режимом и режимом разработки на Си-подобном языке.

Источник

Микроконтроллеры Процессоры, проекты, программирование

Языки программирования микроконтроллеров по своей структуре мало отличаются от классических языков для компьютеров. Единственным отличием становится ориентированность на работу со встроенными периферийными устройствами. Архитектура микроконтроллеров требует, например, наличия битово-ориентированных команд. Последние позволяют выполнять работу с отдельными линиями портов ввода/вывода или флагами регистров. Подобные команды отсутствуют в большинстве крупных архитектур. Даже ядро ARM, активно применяемое в микроконтроллерах, не содержит битовых команд, вследствие чего разработчикам пришлось создавать специальные методы битового доступа.

Ассемблер

Ассемблер является языком самого низкого уровня. При этом он позволяет наиболее полно раскрыть все возможности микроконтроллеров и получить максимальное быстродействие и компактный код. В некоторых случаях альтернативы ассемблеру нет, но тем не менее он имеет множество недостатков. Несмотря на получаемую компактность машинного кода, программа, написанная на языке Ассемблер, громоздка и труднопонимаема. Для ее создания требуется отличное знание архитектуры и системы команд микроконтроллеров.
Ассемблер отлично подходит для программирования микроконтроллеров, имеющих ограниченные ресурсы, например 8-ми битных моделей с малым объемом памяти. Для больших программ и тем более 32-разрядных контроллеров, лучше использовать другие языки, отличающиеся более высоким уровнем. Это позволит создавать более сложные и при этом понятные программы.

С/С++

Язык программирования С/С++, относится к языкам более высокого уровня, по сравнению с Ассемблером. Программа на этом языке лучше понятна человеку. Достоинством С/С++ является огромное число программных средств и библиотек, позволяющих просто создавать необходимый код. Фактически, С/С++ сегодня стал основным языком разработки управляющих программ. Компиляторы данного языка реализованы практически для всех моделей микроконтроллеров. Стандартный язык дает возможность переноса программ с одной платформы на другую. Теоретически, используя разные компиляторы, можно преобразовать любую программу в команды микроконтроллера нужного типа. На практике дополнительно требуется учитывать архитектуру микроконтроллера каждого типа.
Язык С/С++ имеет достаточно сложную для изучения структуру. Получаемый программный код конкретной задачи, имеет больший объем, чем код той же задачи, реализованной на Ассемблере. Тем не менее язык С/С++ следует признать единственным правильным выбором для профессионального программирования микроконтроллеров.

// Пример программы на языке С 
// Мигание встроенным светодиодом Arduino
void setup() <
pinMode(13, OUTPUT); // Инициализация выхода 13
>

void loop() digitalWrite(13, HIGH); // Зажечь светодиод
delay(1000); // Задержка
digitalWrite(13, LOW); // Зажечь светодиод
delay(1000); // Задержка
>

Pascal

Язык Pascal еще более удобен для восприятия и изучения. Тем не менее, он не имеет такого распространения как C/C++, особенно при программировании микроконтроллеров. Некоторые отдельные фирмы поддерживают данный язык, с целью упрощения перехода на контроллеры с больших ПК. В частности вариант языка под названием MicroPASCAL входит в состав поставки отладочных средств фирмы Mikroelektronika.

// Пример программы на языке MicroPASCAL
// Мигание светодиодом
program LED_Blinking;

begin
PORTC := 0; // Инициализация PORTC
TRISC := 0; // Настройка PORTC

while TRUE do // Начало бесконечного цикла
begin
PORTC := not PORTC; // Инвертирование PORTC
Delay_ms(1000); // Задержка
end;
end.

BASIC

Старинный язык первоначального обучения программированию, в настоящее время в основном сохранился в виде реализации Visual BASIC от Microsoft. Используется он и для программирования микроконтроллеров. Реализаций этого языка гораздо больше, чем того же Pascal. Связано это в первую очередь с простотой языка. BASIC часто выбирают разработчики программно-аппаратных платформ, нацеленных на упрощенную разработку электронных устройств. Можно назвать такие проекты, как PICAXE, Amicus18, microBASIC и некоторые другие. Недостатком BASIC является плохая структурированность кода. Этот язык не стоит выбирать для первоначального изучения с целью дальнейшего перехода на С/С++. Программирование микроконтроллеров на BASIC можно рекомендовать любителям, не нацеленным на создание, в основном, простых устройств.

' Пример программы на ProtonBASIC
' Мигание светодиодом на PORTB.0 Amicus18.

While 1 = 1 ' Начало бесконечного цикла
High RB0 ' Включить PortB.0
DelayMS 500 ' Задержка полсекунды
Low RB0 ' Выключить PortB.0
DelayMS 500 ' Задержка полсекунды
Wend ' Закрытие цикла

Визуальные языки

Пример программы FlowCode

В отличие от классических языков программирования, визуальные языки позволяют разрабатывать программы в виде изображений. Среди таких языков можно выделить FlowCODE или Scratah. Достоинством визуальных языков является хорошо воспринимаемая структура алгоритма. Это позволяет просто разобраться в его функционировании любому человеку, знающему основные символы языка. Перевод структурных схем в команды микроконтроллера, как правило, выполняется не сразу. Вначале алгоритм транслируется в команды ассемблера или какого-либо языка высокого уровня. Только затем, все преобразуется в машинный код. Такая схема, несмотря на свою сложность, позволяет использовать наиболее удобные компиляторы разных разработчиков.

Еще одним достоинством визуального программирования становится простота изучения, поэтому подобные языки часто используются для обучения детей. Недостатком визуального подхода является громоздкость исходных материалов. Тем не менее, подобные языки программирования нашли очень большое распространение для решения специальных задач.

Заключение

Выбор того или иного языка программирования зависит от множества факторов. В первую очередь необходимо определиться с типом решаемых задач и необходимым качеством кода. Если не требуется разработка объемных и сложных программ, то можно использовать практически любой язык. Для обеспечения компактности кода подойдет Ассемблер, а если ставятся серьезные задачи, то альтернативы С/С++ практически нет. Также необходимо учитывать доступность компилятора. В некоторых случаях, реализация языка может вообще отсутствовать, или предлагаться за солидные деньги. В итоге самым универсальным решением можно назвать связку Ассемблера и C/C++.

You have no rights to post comments

Источник

Оцените статью