Если вы когда-нибудь стояли перед массивной панелью управления на заводе и нажимали на светящийся сенсорный экран, чтобы отрегулировать скорость конвейера или проверить температуру насоса, вы использовали промышленный HMI (человеко-машинный интерфейс) — это то, что переводит сложные данные о заводском оборудовании в то, что мы, люди, можем понять и использовать в соответствии с ними. Меня, как поставщика этих устройств, часто спрашивают: «На каких языках программирования на самом деле работают эти HMI?» Это не универсальный ответ, и выбор правильного языка имеет решающее значение для того, будет ли HMI работать надежно, масштабироваться в соответствии с потребностями завода или даже обеспечивать безопасность работников. Давайте разберемся, что на самом деле используется в реальных промышленных условиях, а не только в учебниках.
Во-первых, давайте проясним: промышленные HMI сильно отличаются от HMI смартфонов или ноутбуков, которые большинство из нас используют каждый день. Те, которые мы создаем, должны работать 24 часа в сутки, 7 дней в неделю, на пыльных, жарких, вибрирующих заводах, без сбоев. Они взаимодействуют с ПЛК (программируемыми логическими контроллерами), датчиками, двигателями и всевозможным устаревшим оборудованием, которое существует уже несколько десятилетий. Таким образом, языки программирования здесь не являются модными новыми языками, которые вы видите для разработки приложений — они проверены в боевых условиях, стабильны и оптимизированы для конкретных требований промышленной автоматизации.


Давайте начнем с самого распространенного из них, о котором вы когда-либо слышали: релейной логики, иногда называемой лестничной диаграммой или LAD. Между прочим, это не текстовый язык — это графический язык, созданный так, чтобы выглядеть как электрические схемы, которые электрики использовали в течение 100 лет. Если вы умеете читать электрические схемы старой школы, Ladder Logic имеет полный смысл: в ней есть «ступени», куда вы помещаете контакты (например, триггеры датчиков или нажатия кнопок) и катушки (например, включение или выключение двигателя). На протяжении десятилетий это был единственный способ программирования промышленных HMI и ПЛК, и сейчас он используется повсюду.
Почему лестничная логика остается неизменной? Заводские рабочие и инженеры, работающие на производстве более 20 лет, знают это вдоль и поперёк. Если линейному работнику необходимо устранить неисправность машины в 2 часа ночи, он может взглянуть на представление лестничной логики HMI и обнаружить сработавший переключатель быстрее, чем он сможет проанализировать строку Python. Он также очень надежен — не требуется никакого сложного компилятора, он работает на большинстве ПЛК и HMI без дополнительных задержек. Тем не менее, он не подходит для сложных задач с большим объемом данных. Если вы пытаетесь создать панель мониторинга, которая отслеживает 10 000 точек данных по всему заводу, Ladder Logic может оказаться неуклюжим и трудным для масштабирования. Вот тут-то и появляются другие языки.
Далее: Структурированный текст (ST), текстовый язык, очень похожий на BASIC или C. Думайте об этом как об обновлении Ladder Logic для современных нужд. Вы можете писать циклы, операторы if/then, переменные и даже базовые математические функции на ST, что делает его идеальным для задач, которые слишком сложны для релейной логики, но не требуют полноценного языка программирования. Например, если вы хотите, чтобы ваш промышленный HMI рассчитывал среднюю температуру 50 нагревателей за 10 минут и отправлял предупреждение, если она слишком высокая, вы можете написать это в ST в несколько строк, вместо того, чтобы рисовать 20 ступенек в релейной логике. Большинство современного программного обеспечения HMI поддерживает ST, поэтому оно стало идеальным решением для обеспечения баланса между привычностью и функциональностью. Многие новые инженеры по автоматизации сейчас сначала изучают ST, поскольку его легче освоить, чем релейную логику, если вы знаете основы кодирования.
Еще есть C/C++, который может вас удивить, но на самом деле он очень распространен при разработке индивидуальных промышленных HMI, особенно для небольших специализированных устройств. Подождите, почему бы просто не использовать Ladder или ST? C/C++ дает вам гораздо больше контроля над аппаратным обеспечением, что является ключевым моментом для HMI, которым необходимо выполнять такие задачи, как обработка данных высокоскоростных датчиков, работа с насыщенными графикой интерфейсами или взаимодействие с нишевыми промышленными протоколами, которые не поддерживает ни один универсальный язык. Например, если вы создаете HMI для специальной линейки медицинских устройств, которые необходимо синхронизировать с данными конкретного лазерного резака, C/C++ позволяет настроить каждую часть интерфейса так, чтобы он работал именно так, как вам нужно, без накладных расходов на языки более высокого уровня. Недостаток? Вам нужен опытный разработчик для написания и поддержки кода C/C++, и если вы не будете осторожны, он более склонен к ошибкам - не идеальный вариант для круглосуточной производственной линии, где сбой может стоить тысячи долларов из-за простоя.
Python начинает все чаще появляться в промышленных HMI, в основном на предприятиях среднего размера, которые хотят повысить гибкость, не инвестируя в большой проект C/C++. Многие программы HMI теперь позволяют встраивать скрипты Python для выполнения таких задач, как получение данных из облачных аналитических инструментов, отправка специальных оповещений через Slack или по электронной почте или запуск базовых моделей машинного обучения для прогнозирования того, когда деталь может выйти из строя. Например, если у вас есть небольшой производственный цех с [HMI 7 дюймов] — идеально подходящим для ограниченного пространства на рабочем месте — вы можете использовать Python для подключения этого HMI к бесплатному инструменту аналитики, который отслеживает, как часто используется машина, чтобы вы могли запланировать техническое обслуживание до того, как она сломается. Загвоздка здесь в том, что Python интерпретируется, а это значит, что он немного медленнее, чем компилируемые языки, такие как C, поэтому он не подходит для задач реального времени, которые должны реагировать за миллисекунды. Но для некритических задач, ориентированных на данные, это меняет правила игры, позволяя заводам настраивать свои HMI, не тратя денег.
Один из языков, о котором вы, возможно, не так много слышали, но который до сих пор используется во многих устаревших HMI, — это BASIC. Старые запатентованные HMI от брендов, существующих уже более 40 лет, часто используют BASIC для создания пользовательских сценариев. Единственная проблема заключается в том, что большинство этих систем устарели, для них трудно найти детали и они плохо сочетаются с современным оборудованием, поэтому мы почти всегда рекомендуем перейти на более новую HMI, поддерживающую ST, Python или C. Например, если на заводе все еще используется старый HMI, использующий BASIC, гораздо более вероятно, что при добавлении нового датчика возникнут проблемы с совместимостью, а в случае сбоя не так много технических специалистов, которые знают, как это исправить.
Теперь давайте поговорим о том, как мы выбираем, какой язык использовать при создании наших HMI, например нашей линейки [Industrial HMI]. Во-первых, мы спрашиваем клиента, что ему на самом деле нужно: это небольшая мастерская с несколькими станками, которым нужны только базовые функции управления включением/выключением и измерения температуры? Тогда [HMI 7 дюймов] с Ladder Logic или ST идеален — он прост, надежен и удобен для использования их собственной командой. Если это крупный завод автозапчастей с целой сборочной линией, которой необходимо отслеживать сотни точек данных и синхронизировать их с облачной аналитикой? Вероятно, мы создадим HMI, который будет поддерживать как релейную логику для основного управления машиной, так и Python для сценариев пользовательских данных. Для клиентов, создающих совершенно новую линию с уникальным оборудованием, мы можем написать собственный код C/C++, чтобы гарантировать, что HMI взаимодействует именно так, как им нужно.
Многие новички в области автоматизации могут спросить: почему бы просто не использовать JavaScript? Это очень популярно среди веб-приложений, не так ли? Правда в том, что JavaScript редко используется для промышленных HMI, поскольку он не оптимизирован для суровых условий и требований реального времени, которые необходимы HMI. Веб-интерфейсы HMI начинают становиться все более популярными — некоторые заводы используют их, чтобы инженеры могли проверять машины со своих телефонов, — но для фактического управления вам все равно нужен родной язык, такой как Ladder или ST. Веб-ИЧМ отлично подходят для удаленного мониторинга, но не для основных задач, обеспечивающих круглосуточную работу линии.
Еще одна вещь, о которой следует помнить: большинство промышленных систем HMI не используют только один язык. Они комбинируют их, чтобы получить лучшее от каждого. Например, у вас может быть Ladder Logic, обеспечивающий базовое управление двигателем (в этом он действительно хорош), ST для расчета производственных показателей и Python для отправки данных на облачную панель мониторинга. Именно этот подход «лучшее из обоих» объясняет, почему современные HMI настолько гибки: они могут одновременно работать со старым устаревшим оборудованием и новыми специальными инструментами.
Как поставщик HMI, я своими глазами видел, как выбор неправильного языка может вызвать большие проблемы. Несколько лет назад у нас был клиент, который пытался использовать стандартное приложение для смартфона для управления своей упаковочной линией с помощью веб-ИЧМ, созданного на JavaScript. Он падал каждый раз, когда линия была занята, потому что JavaScript не мог обрабатывать поток данных в реальном времени. Им пришлось перейти на специальный HMI с релейной логикой для основного управления, и это сократило время простоя на 90%. Другой клиент, небольшая крафтовая пивоварня, хотел отслеживать температуру брожения и отправлять текстовое оповещение, когда партия будет готова. Мы использовали [10-дюймовый HMI] со сценариями Python, чтобы они могли получать данные со своих датчиков температуры и отправлять текстовые сообщения без необходимости нанимать отдельного разработчика.
Так какой же здесь вывод? Не существует «лучшего» языка программирования для промышленных HMI — все зависит от размера вашего предприятия, вашего оборудования, задач, которые должен выполнять HMI, и опыта вашей команды. Если вы опытный техник, который много лет работал с электрическими схемами, вам, вероятно, подойдет Ladder Logic. Если вам нужно добавить пользовательские функции данных, не тратя денег, Python — отличный вариант. Для сложных заказных проектов C/C++ дает вам необходимый контроль.
В конце концов, цель HMI — не просто иметь модный сенсорный экран, а сделать промышленную работу более безопасной, эффективной и простой в использовании для людей на рабочих местах. Вот почему мы создаем наши HMI для поддержки нескольких языков программирования, поэтому, независимо от ваших потребностей, мы можем найти решение, которое подойдет именно вам.
Если вы хотите модернизировать HMI вашего завода или создать новую систему, адаптированную к вашим операциям, мы будем рады рассказать вам о ваших возможностях и помочь вам выбрать правильные инструменты для вашей команды и вашей линии.
Ссылки
- Международное общество автоматизации (ISA). (2021). МЭК 61131-3: Языки программирования для промышленной автоматизации.
- Роквелл Автоматизация. (2023). Руководство по продукту промышленного HMI.
- Python для случаев использования промышленной автоматизации. (2022). Журнал «Мир автоматизации».
- Лестничная логика против структурированного текста: практическое сравнение для заводских команд. (2023). Техника управления.
