Найти в Дзене
naladchikpro

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

Понимание языков программирования

Управление и автоматизация
Сложность программного обеспечения, возможности PLC/PAC и возможность портировать программный код являются ключевыми факторами при выборе языка программирования контроллера. Около 120 лет назад Марк Твен сказал «есть несколько способов снять шкуру с кошки». Это клише все еще актуально в мире программирования контроллеров.
Благодаря IEC (International Electrotechnical Commission, МЭК - Международная Электротехническая Комиссия) появились пять наиболее часто используемых стандартных языков программирования, которые в настоящее время используются для разработки программного обеспечения контроллеров. IEC – это организация, которая разрабатывает и публикует международные стандарты для всех технологий, связанных с электрикой и электроникой, включая контроллеры.
Долго считавшиеся чисто европейским феноменом, языки программирования контроллеров IEC получают распространение в Соединенных Штатах. IEC разработала данные стандарты программирования, реагируя на увеличивающееся количество разработчиков систем автоматизации, возрастающую сложность приложений, и множество методов реализации функций управления.
Многие инженеры в области АСУ ТП интересуются возможностями каждого языка программирования. В каких случаях предпочесть тот или иной язык? Какие преимущества и недостатки каждого? В данной статье содержится краткий обзор и сравнение каждого из пяти основных языков программирования контроллеров.

Язык релейно-контактных схем (LD)
Этот язык программирования, изобретенный в США десятилетия назад, получил наиболее широкое распространение. Изначально изобретенный для замены логических схем, выполненных на релейной технике, язык релейно-контактных схем является базовым в США на сегодняшний день, и применяется в 95% всех приложений. Визуально этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены в значение «истина» для активации одного или нескольких выходов.
Язык релейно-контактных схем получил такое широкое распространение, потому что на нем могут писать практически все программисты в любой стране.
Поскольку он напоминает знакомый всем формат электрических цепей, даже не специалист в области программирования, знакомый с электроникой может разобраться в программе для поиска ошибок в ней. На этом языке легко писать программы. Имея базовое представление о входных и выходных сигналах, можно начать писать код. Большинство других языков IEC требуют большей подготовки, например, прорисовки диаграмм всех потенциальных процессов. Наконец, программа, реализованная в виде релейно-контактных схем, может быть организована в виде папок или подпрограмм, которые загружаются в контроллер, позволяя проводить легкую сегментацию программы.
Этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены
в значение «истина» для активации одного или нескольких выходов.
Язык релейно-контактных схем идеален для простых приложений перемещения материалов. Например, когда один датчик распознает наличие коробки, другой датчик проверяет наличие препятствий, а затем выходной сигнал, при соответствующем условии, запускает привод для перемещения коробки на другой конвейер. В данном случае дискретные входы контролирую текущие условия, базовая программа анализирует эти входы и подает соответствующие сигналы на выходы. В программе могут быть использованы таймеры, некоторые базовые сравнения или математические операции, но нет возможности использовать сложные функции.
На языке релейно-контактных схем затруднительно реализовывать более сложный функционал ПЛК (программируемый логический контроллер, англ.: PLC), сохраняя парадигму легкой визуализации и понимания. Такие функции как ПИД-регулирование, тригонометрия и анализ данных в приложении реализовать трудно. Другой сложностью является то, что по мере роста объема программы, ее становится сложно читать и интерпретировать, если нет подробнейшей документации. Наконец, реализация полного процесса управления на языке релейно-контактных схем может быть чрезвычайно трудным.

Язык функциональных блочных диаграмм (FBD)
Хотя, язык релейно-контактных схем является наиболее распространенным, обзор, выполненный журналом Control Engineering несколько месяцев назад, показал растущее применение других языков программирования. Примером является язык функциональных блочных диаграмм. Несмотря на то, что скорость его распространения несколько замедлилась за последнее время, относительно таких языков как структурированный текст, язык функциональных блочных диаграммявляется вторым по степени популярности.
В Функциональной блочной диаграмме блоки «соединены» вместе в последовательность, которую
легко отслеживать. Этот язык использует такие же команды, как и релейно-контактный, но схема визуально
более понятна пользователю,который не обладает специальным знаниями в релейной логике.
Многими аспектами этот графический язык напоминает электрическую схему даже больше, чем релейно-контактный язык. В функциональной блочной диаграмме блоки «соединены» вместе в последовательность, которую легко отслеживать. Этот язык использует такие же команды, как и релейно-контактный, но схема визуально более понятна пользователю, который не обладает специальными знаниями в релейной логике. Основным преимуществом этого языка является легкость отслеживания программы – просто двигайтесь по пути. Этот язык идеален для простых программ, состоящих из цифровых входов, таких как фотоэлектрические датчики, и выходов, таких как клапаны трубопроводов, и может использоваться в любых приложениях наряду с релейно-контактным языком или вместо него.
Однако, этот язык не идеален для больших программ, использующих специальные входы и выходы, а также функции. При использовании языка нужен большой объем экранного пространства, что делает программу нечитаемой при достижении определенного размера. Также при написании программы на языке функциональных блочных диаграмм требуется предварительная подготовка в виде прописывания алгоритма перед тем, как писать код, поскольку впоследствии будет достаточно сложно внести изменения.

Язык последовательных функциональных диаграмм (SFC)
Программа, написанная на этом языке, напоминает компьютерную блок-схему, которую многие помнят из институтской программы. За начальный шагом «начальный шаг» (точка начала диаграммы) идет последовательность шагов и переходов. Концепция SFC проста: шаг с внутренним кодом, написанным на любом языке программирования, активен до тех пор, пока не активен переход, следующий за ним. При активировании перехода, текущий шаг отключается, а следующий за переходом шаг становится активным. Переход также имеет код, проверяющий, что выполнены необходимые условия, позволяющие программе перейти к следующему шагу.
Программа на языке SFC состоит из диаграммы в виде блоков
и горизонтальных линий слева и содержимое одного из блоков на языке ST справа.
В программе на языке SFC, блоки называются шагами, а небольшие горизонтальные
линии называются переходами. Как блоки, так и переходы включают в себя
небольшие части кода.
Эту форму программирования легче всего использовать для приложений с повторяющимися многошаговыми процессами или последовательностью повторяющихся процессов. Примером может быть приложение, которое выбирает предмет в одной месте, проводит его по заданному пути и переносит в другое место. Поскольку обычно активен только один участок кода, и нужно следить только за одним переходом, проверка условий и управление процессом может быть достигнуто без больших сложностей. Язык очень подходит инженерам по обслуживанию, поскольку нагляден, и сегментация кода облегчает поиск неисправностей. Например, если механизм в программе перемещения предметов подходит к предмету, но не берет его, то инженер по обслуживанию или разработчик может найти в программе переход между шагом «переместиться к предмету» и шагом «взять предмет» и проверить, что мешает протеканию процесса.
К недостаткам языка относится то, что такой стиль программирования подходит не для всех приложений, поскольку структура, которая накладывается на программу, может ее излишне усложнить. Нужно потратить много времени на подготовку и планирование, прежде чем начать программировать, иначе функциональная диаграмма будет запутанной, и ее будет сложно отслеживать.
Дополнительные ресурсы, требующиеся для такого программирования, приводят к замедлению процесса написания программы по сравнению с другими языками. Наконец, нужно принять во внимание невозможность конвертирования в другие языки. Например, языки IL, FBD и LD можно легко конвертировать друг в друга, позволяя воспроизводить участки кода в виде, наиболее удобном для пользователя. Язык ST также можно конвертировать в любой из этих трех языков. Но язык SFCконвертировать нельзя. Таким образом, этот язык подходит только для пользователей, которые его хорошо знают, потому что его нельзя будет воспроизвести в другом формате, или для приложений и у которых аппаратная часть имеет достаточную скорость и объем памяти, необходимый для хранения и выполнения программ на языке SFC.

Список инструкций (IL)
Любой человек с опытом программирования микропроцессоров или программирования на Ассемблере увидит сходство с программированием на языке IL. Этот язык состоит из строк кода, в котором одна строка содержит одну операцию. Таким образом, программа представляет собой пошаговый список операций, в который можно легко вводить последовательности простых математических функций. К тому же, если программист использует только команды, определяемые IEC, программу, написанную на этом языке можно легко использовать на различных аппаратных платформах. Эти преимущества сделали данный язык очень популярным в Европе, что удивляет многих программистов в США, которые предпочитают более удобные графические языки.
Список инструкций состоит из многих строк кода,
в котором в каждой строке содержится только одна операция.

Язык IL – это язык нижнего уровня, и как таковой работает в ПЛК быстрее графических языков. Этот язык также более компактен и потребляет меньше памяти ПЛК. Метод построчного текстового ввода, поддерживаемый этим языком, также позволяет очень быстро вводить программу, при этом не требуется мышка или функциональные клавиши. Программы в современных системах автоматизации, написанные на этом языке, легче воспроизводить и редактировать на портативных устройствах, для чего не требуется дополнительного программного обеспечения или ноутбука.
Несмотря на преимущества данного языка, инженеры по обслуживанию его не очень любят. Возможно, это вызвано тем, что он менее нагляден, чем язык релейно-контактных схем, и поэтому труднее понять, что делает программа, и какие ошибки имеют место быть в ней. Аналогично релейно-контактной схеме по мере увеличения сложности ПЛК, в списке инструкций могут возникнуть сложности при вводе таких сложных функций, например, ПИД – регулирование. Это также относится и к сложным математическим расчетам. Список инструкций не очень подходит для таких форм структурного программирования, как диаграмма состояний или ступенчатая многозвенная схема, что ограничивает его полезность для реализации больших программ. Также спорным является факт, что преимущества скорости и компактности утрачивают свое значение по мере увеличения скорости работы современных ПЛК и большого объема доступной памяти.
Структурированный текст (ST)
С его петлями IF…THEN, CASE селекторами, и окончанием строк точкой с запятой, язык ST сильно напоминает языки программирования верхнего уровня, такие как PASCAL или C. Ранее упомянутый обзор Control Engineering показывает, что из всех языков программирования IEC61131, язык ST получает самое быстрое распространение.
Язык ST сильно напоминает языки программирования верхнего уровня, такие как PASCAL или C.
Этот язык лучше всего подходит для сложного программирования ПЛК, такого как, например, управление процессами в производстве пластмасс или химической промышленности. Тригонометрические функции, математические вычисления и анализ данных на этом языке можно реализовать легче, чем на языке релейно-контактных схемах или языке списка инструкций. Циклы выбора и указатели (переменные, используемые для косвенной адресации) позволяют реализацию более компактных программ, чем могут быть созданы на языке релейно-контактных схем. Для написания программы на языке ST используется удобный текстовый редактор, который облегчает ввод комментариев в программу, а также позволяет использовать знаки абзацев и пробелы для выделения связанных участков кода. Это облегчает задачу структурирования комплексных программ. Текстовый, неграфический характер языка ST, похожего на язык IL, позволяет создавать программы, которые работают гораздо быстрее, чем программа созданные на языке LD. Дополнительным преимуществом языка ST является то, что он ближе других языков программирования подошел к достижению переносимости, обещанной стандартом IEC61131. Копирование и вставка в языке ST из редактора одного программного пакета в другой часто может быть выполнено с минимальными изменениями, освобождая программиста от аппаратной платформы. Окончательным преимуществом является то, что многие студенты инженерных специальностей лучше владеют компьютерными языками, чем основами электротехники, и поэтому лучше владеют языком ST, чем LD.
Недостаток языка ST заключается в том, что для многих старых специалистов в области программирования и отладки среда языка ST является чем-то незнакомым и неудобным. В определенном смысле, код и структура необходимые, чтобы сделать поддержку этого кода удобной, снижают преимущества, связанные с компактностью программ. В результате основной тенденцией использования языка ST является его использование так сказать «за сценой». Например, IEC61131 позволяет программисту реализовать функции на одном языке, а затем использовать их в другом языке. Таким образом, программист, скорее всего, включит программу на языке ST внутрь команды, вызываемой на языке LD. Это не обязательно является недостатком, но программисту понадобится тщательно протестировать любой «скрытый» код, и удостовериться в отсутствии ошибок, поскольку у других, кто будет использовать этот код, возможно доступа к данному коду не будет.

Выбор соответствующего языка
Перед принятием решения о выборе языка программирования для вашего приложения необходимо учесть несколько факторов. Если вы знакомы с определенным языком, то пишите на том языке, который знаете. Однако, посмотрите на приведенные ниже советы:
Легкая поддержка конечным пользователем: SFC;
Повсеместное распространение языка: LD;
Признание в Европе: IL или ST;
Скорость выполнения программы ПЛК: IL или ST;
Приложения, использующие цифровые входы / выходы и базовые процессы: LD, FBD;
Легкость смены кода впоследствии: LD;
Легкость использования новичками: ST;
Легкость реализации сложных математических операций: ST;
Приложение с повторяющимися процессами или процессами, требующими взаимоблокировки и параллельных операций: SFC.
Наконец, на выбор языка программирования может повлиять платформа ПЛК или ПКА (программируемый контроллер автоматизации, англ: PAC). Не все поставщики систем автоматизации имеют программы, полностью совместимые с IEC61131-3. Фактически, большинство поставщиков за пределами Европы не предлагают такую функциональность, они либо имеют очень ограниченный спектр опций, например, только поддерживают только язык LD или SFC и нет никаких других языков или же тег ориентированной адресации и т.д.
Другим фактором является то, что не все ПЛК способны поддерживать различные IEC языки из-за недостатка памяти или низкой скорости процессора. Это характерно для многих микро ПЛК. Хотя многие программисты работают в рамках спецификаций заказчика, если у них есть возможность выбора аппаратной платформы, то им придется решать, какой язык или языки будут лучше всего работать для данного приложения, а потом выбирать аппаратное и программное обеспечение соответственно.
Понимание языков программирования Управление и автоматизация Сложность программного обеспечения, возможности PLC/PAC и возможность портировать программный код являются ключевыми факторами при выборе языка программирования контроллера. Около 120 лет назад Марк Твен сказал «есть несколько способов снять шкуру с кошки». Это клише все еще актуально в мире программирования контроллеров. Благодаря IEC (International Electrotechnical Commission, МЭК - Международная Электротехническая Комиссия) появились пять наиболее часто используемых стандартных языков программирования, которые в настоящее время используются для разработки программного обеспечения контроллеров. IEC – это организация, которая разрабатывает и публикует международные стандарты для всех технологий, связанных с электрикой и электроникой, включая контроллеры. Долго считавшиеся чисто европейским феноменом, языки программирования контроллеров IEC получают распространение в Соединенных Штатах. IEC разработала данные стандарты программирования, реагируя на увеличивающееся количество разработчиков систем автоматизации, возрастающую сложность приложений, и множество методов реализации функций управления. Многие инженеры в области АСУ ТП интересуются возможностями каждого языка программирования. В каких случаях предпочесть тот или иной язык? Какие преимущества и недостатки каждого? В данной статье содержится краткий обзор и сравнение каждого из пяти основных языков программирования контроллеров. Язык релейно-контактных схем (LD) Этот язык программирования, изобретенный в США десятилетия назад, получил наиболее широкое распространение. Изначально изобретенный для замены логических схем, выполненных на релейной технике, язык релейно-контактных схем является базовым в США на сегодняшний день, и применяется в 95% всех приложений. Визуально этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены в значение «истина» для активации одного или нескольких выходов. Язык релейно-контактных схем получил такое широкое распространение, потому что на нем могут писать практически все программисты в любой стране. Поскольку он напоминает знакомый всем формат электрических цепей, даже не специалист в области программирования, знакомый с электроникой может разобраться в программе для поиска ошибок в ней. На этом языке легко писать программы. Имея базовое представление о входных и выходных сигналах, можно начать писать код. Большинство других языков IEC требуют большей подготовки, например, прорисовки диаграмм всех потенциальных процессов. Наконец, программа, реализованная в виде релейно-контактных схем, может быть организована в виде папок или подпрограмм, которые загружаются в контроллер, позволяя проводить легкую сегментацию программы. Этот язык напоминает последовательность цепей управления, в которой все входы должны быть установлены в значение «истина» для активации одного или нескольких выходов. Язык релейно-контактных схем идеален для простых приложений перемещения материалов. Например, когда один датчик распознает наличие коробки, другой датчик проверяет наличие препятствий, а затем выходной сигнал, при соответствующем условии, запускает привод для перемещения коробки на другой конвейер. В данном случае дискретные входы контролирую текущие условия, базовая программа анализирует эти входы и подает соответствующие сигналы на выходы. В программе могут быть использованы таймеры, некоторые базовые сравнения или математические операции, но нет возможности использовать сложные функции. На языке релейно-контактных схем затруднительно реализовывать более сложный функционал ПЛК (программируемый логический контроллер, англ.: PLC), сохраняя парадигму легкой визуализации и понимания. Такие функции как ПИД-регулирование, тригонометрия и анализ данных в приложении реализовать трудно. Другой сложностью является то, что по мере роста объема программы, ее становится сложно читать и интерпретировать, если нет подробнейшей документации. Наконец, реализация полного процесса управления на языке релейно-контактных схем может быть чрезвычайно трудным. Язык функциональных блочных диаграмм (FBD) Хотя, язык релейно-контактных схем является наиболее распространенным, обзор, выполненный журналом Control Engineering несколько месяцев назад, показал растущее применение других языков программирования. Примером является язык функциональных блочных диаграмм. Несмотря на то, что скорость его распространения несколько замедлилась за последнее время, относительно таких языков как структурированный текст, язык функциональных блочных диаграммявляется вторым по степени популярности. В Функциональной блочной диаграмме блоки «соединены» вместе в последовательность, которую легко отслеживать. Этот язык использует такие же команды, как и релейно-контактный, но схема визуально более понятна пользователю,который не обладает специальным знаниями в релейной логике. Многими аспектами этот графический язык напоминает электрическую схему даже больше, чем релейно-контактный язык. В функциональной блочной диаграмме блоки «соединены» вместе в последовательность, которую легко отслеживать. Этот язык использует такие же команды, как и релейно-контактный, но схема визуально более понятна пользователю, который не обладает специальными знаниями в релейной логике. Основным преимуществом этого языка является легкость отслеживания программы – просто двигайтесь по пути. Этот язык идеален для простых программ, состоящих из цифровых входов, таких как фотоэлектрические датчики, и выходов, таких как клапаны трубопроводов, и может использоваться в любых приложениях наряду с релейно-контактным языком или вместо него. Однако, этот язык не идеален для больших программ, использующих специальные входы и выходы, а также функции. При использовании языка нужен большой объем экранного пространства, что делает программу нечитаемой при достижении определенного размера. Также при написании программы на языке функциональных блочных диаграмм требуется предварительная подготовка в виде прописывания алгоритма перед тем, как писать код, поскольку впоследствии будет достаточно сложно внести изменения. Язык последовательных функциональных диаграмм (SFC) Программа, написанная на этом языке, напоминает компьютерную блок-схему, которую многие помнят из институтской программы. За начальный шагом «начальный шаг» (точка начала диаграммы) идет последовательность шагов и переходов. Концепция SFC проста: шаг с внутренним кодом, написанным на любом языке программирования, активен до тех пор, пока не активен переход, следующий за ним. При активировании перехода, текущий шаг отключается, а следующий за переходом шаг становится активным. Переход также имеет код, проверяющий, что выполнены необходимые условия, позволяющие программе перейти к следующему шагу. Программа на языке SFC состоит из диаграммы в виде блоков и горизонтальных линий слева и содержимое одного из блоков на языке ST справа. В программе на языке SFC, блоки называются шагами, а небольшие горизонтальные линии называются переходами. Как блоки, так и переходы включают в себя небольшие части кода. Эту форму программирования легче всего использовать для приложений с повторяющимися многошаговыми процессами или последовательностью повторяющихся процессов. Примером может быть приложение, которое выбирает предмет в одной месте, проводит его по заданному пути и переносит в другое место. Поскольку обычно активен только один участок кода, и нужно следить только за одним переходом, проверка условий и управление процессом может быть достигнуто без больших сложностей. Язык очень подходит инженерам по обслуживанию, поскольку нагляден, и сегментация кода облегчает поиск неисправностей. Например, если механизм в программе перемещения предметов подходит к предмету, но не берет его, то инженер по обслуживанию или разработчик может найти в программе переход между шагом «переместиться к предмету» и шагом «взять предмет» и проверить, что мешает протеканию процесса. К недостаткам языка относится то, что такой стиль программирования подходит не для всех приложений, поскольку структура, которая накладывается на программу, может ее излишне усложнить. Нужно потратить много времени на подготовку и планирование, прежде чем начать программировать, иначе функциональная диаграмма будет запутанной, и ее будет сложно отслеживать. Дополнительные ресурсы, требующиеся для такого программирования, приводят к замедлению процесса написания программы по сравнению с другими языками. Наконец, нужно принять во внимание невозможность конвертирования в другие языки. Например, языки IL, FBD и LD можно легко конвертировать друг в друга, позволяя воспроизводить участки кода в виде, наиболее удобном для пользователя. Язык ST также можно конвертировать в любой из этих трех языков. Но язык SFCконвертировать нельзя. Таким образом, этот язык подходит только для пользователей, которые его хорошо знают, потому что его нельзя будет воспроизвести в другом формате, или для приложений и у которых аппаратная часть имеет достаточную скорость и объем памяти, необходимый для хранения и выполнения программ на языке SFC. Список инструкций (IL) Любой человек с опытом программирования микропроцессоров или программирования на Ассемблере увидит сходство с программированием на языке IL. Этот язык состоит из строк кода, в котором одна строка содержит одну операцию. Таким образом, программа представляет собой пошаговый список операций, в который можно легко вводить последовательности простых математических функций. К тому же, если программист использует только команды, определяемые IEC, программу, написанную на этом языке можно легко использовать на различных аппаратных платформах. Эти преимущества сделали данный язык очень популярным в Европе, что удивляет многих программистов в США, которые предпочитают более удобные графические языки. Список инструкций состоит из многих строк кода, в котором в каждой строке содержится только одна операция. Язык IL – это язык нижнего уровня, и как таковой работает в ПЛК быстрее графических языков. Этот язык также более компактен и потребляет меньше памяти ПЛК. Метод построчного текстового ввода, поддерживаемый этим языком, также позволяет очень быстро вводить программу, при этом не требуется мышка или функциональные клавиши. Программы в современных системах автоматизации, написанные на этом языке, легче воспроизводить и редактировать на портативных устройствах, для чего не требуется дополнительного программного обеспечения или ноутбука. Несмотря на преимущества данного языка, инженеры по обслуживанию его не очень любят. Возможно, это вызвано тем, что он менее нагляден, чем язык релейно-контактных схем, и поэтому труднее понять, что делает программа, и какие ошибки имеют место быть в ней. Аналогично релейно-контактной схеме по мере увеличения сложности ПЛК, в списке инструкций могут возникнуть сложности при вводе таких сложных функций, например, ПИД – регулирование. Это также относится и к сложным математическим расчетам. Список инструкций не очень подходит для таких форм структурного программирования, как диаграмма состояний или ступенчатая многозвенная схема, что ограничивает его полезность для реализации больших программ. Также спорным является факт, что преимущества скорости и компактности утрачивают свое значение по мере увеличения скорости работы современных ПЛК и большого объема доступной памяти. Структурированный текст (ST) С его петлями IF…THEN, CASE селекторами, и окончанием строк точкой с запятой, язык ST сильно напоминает языки программирования верхнего уровня, такие как PASCAL или C. Ранее упомянутый обзор Control Engineering показывает, что из всех языков программирования IEC61131, язык ST получает самое быстрое распространение. Язык ST сильно напоминает языки программирования верхнего уровня, такие как PASCAL или C. Этот язык лучше всего подходит для сложного программирования ПЛК, такого как, например, управление процессами в производстве пластмасс или химической промышленности. Тригонометрические функции, математические вычисления и анализ данных на этом языке можно реализовать легче, чем на языке релейно-контактных схемах или языке списка инструкций. Циклы выбора и указатели (переменные, используемые для косвенной адресации) позволяют реализацию более компактных программ, чем могут быть созданы на языке релейно-контактных схем. Для написания программы на языке ST используется удобный текстовый редактор, который облегчает ввод комментариев в программу, а также позволяет использовать знаки абзацев и пробелы для выделения связанных участков кода. Это облегчает задачу структурирования комплексных программ. Текстовый, неграфический характер языка ST, похожего на язык IL, позволяет создавать программы, которые работают гораздо быстрее, чем программа созданные на языке LD. Дополнительным преимуществом языка ST является то, что он ближе других языков программирования подошел к достижению переносимости, обещанной стандартом IEC61131. Копирование и вставка в языке ST из редактора одного программного пакета в другой часто может быть выполнено с минимальными изменениями, освобождая программиста от аппаратной платформы. Окончательным преимуществом является то, что многие студенты инженерных специальностей лучше владеют компьютерными языками, чем основами электротехники, и поэтому лучше владеют языком ST, чем LD. Недостаток языка ST заключается в том, что для многих старых специалистов в области программирования и отладки среда языка ST является чем-то незнакомым и неудобным. В определенном смысле, код и структура необходимые, чтобы сделать поддержку этого кода удобной, снижают преимущества, связанные с компактностью программ. В результате основной тенденцией использования языка ST является его использование так сказать «за сценой». Например, IEC61131 позволяет программисту реализовать функции на одном языке, а затем использовать их в другом языке. Таким образом, программист, скорее всего, включит программу на языке ST внутрь команды, вызываемой на языке LD. Это не обязательно является недостатком, но программисту понадобится тщательно протестировать любой «скрытый» код, и удостовериться в отсутствии ошибок, поскольку у других, кто будет использовать этот код, возможно доступа к данному коду не будет. Выбор соответствующего языка Перед принятием решения о выборе языка программирования для вашего приложения необходимо учесть несколько факторов. Если вы знакомы с определенным языком, то пишите на том языке, который знаете. Однако, посмотрите на приведенные ниже советы: Легкая поддержка конечным пользователем: SFC; Повсеместное распространение языка: LD; Признание в Европе: IL или ST; Скорость выполнения программы ПЛК: IL или ST; Приложения, использующие цифровые входы / выходы и базовые процессы: LD, FBD; Легкость смены кода впоследствии: LD; Легкость использования новичками: ST; Легкость реализации сложных математических операций: ST; Приложение с повторяющимися процессами или процессами, требующими взаимоблокировки и параллельных операций: SFC. Наконец, на выбор языка программирования может повлиять платформа ПЛК или ПКА (программируемый контроллер автоматизации, англ: PAC). Не все поставщики систем автоматизации имеют программы, полностью совместимые с IEC61131-3. Фактически, большинство поставщиков за пределами Европы не предлагают такую функциональность, они либо имеют очень ограниченный спектр опций, например, только поддерживают только язык LD или SFC и нет никаких других языков или же тег ориентированной адресации и т.д. Другим фактором является то, что не все ПЛК способны поддерживать различные IEC языки из-за недостатка памяти или низкой скорости процессора. Это характерно для многих микро ПЛК. Хотя многие программисты работают в рамках спецификаций заказчика, если у них есть возможность выбора аппаратной платформы, то им придется решать, какой язык или языки будут лучше всего работать для данного приложения, а потом выбирать аппаратное и программное обеспечение соответственно.