Московский завода тепловой автоматики – МЗТА
www.m... · 5 апр 2023
7 советов, которые должен знать каждый программист ПЛК
Приводим статью Алекса Кеннеди – инженера по системам управления, опубликованную в журнале ControlEngineering, в которой даются рекомендации по взаимодействию программиста ПЛК с коллегами на стороне заказчика. Согласны с мнением автора и с удовольствием делимся этим опытом, а в конце материала на основе своего опыта разработки ПО даем дополнительный совет.
Хороший программист программируемых логических контроллеров должен всегда помнить о конечном пользователе и писать понятный и пригодный для использования в будущем код. Это облегчит жизнь как программисту, так и клиенту.
1. Внедряйте модульные системы
В модульной системе ПЛК можно использовать несколько дополнительных модулей, что обеспечит общую гибкость. Модульная система ПЛК также предлагает масштабируемость, возможность размещения большего количества устройств ввода-вывода, более простое устранение неполадок и создание более удобной системы в целом, в частности из-за того, что модули можно легко заменять.
Программы ПЛК должны быть организованы осмысленно, например, путем выделения функционала каждого из устройств и применения структуры, которую легко понять и перенастроить. При использовании модульной структуры программист может вносить изменения во все устройства одного типа, а не делать изменения в каждом отдельном модуле. Сохранение модульности кода также позволяет всем сторонам понять, кто несет ответственность за каждый раздел кода.
2. Структурируйте код, как указано клиентом
Программист анализирует спецификации конечного пользователя и разрабатывает стандарт кода. Это дает группам технического обслуживания и вспомогательному персоналу стандартную компоновку с тем, чтобы они могли легко поддерживать работоспособность оборудования.
Конечный пользователь должен указать среду программирования ПЛК, чтобы она соответствовала типу оборудования на объекте, обеспечивая правильную работу всех функций. На этапе разработки проекта программист должен использовать любые стандартные блоки кода или другой код, который уже был разработан для существующих интерфейсов. Хотя программисту может потребоваться немного больше времени для освоения блоков кода, это в конечном счете даст положительный результат, поскольку персоналу конечного пользователя будет проще продолжить работу с прежним кодом, чем осваивать новый интерфейс.
3. «Правильный» язык не всегда является «лучшим» языком
Программисты не всегда должны использовать «лучший» язык для приложения. Они нужно следовать тому, что говорит конечный пользователь. Как упоминалось выше, команда заказчика будет ежедневно обращаться с оборудованием и, если они не знакомы с используемым языком программирования, то не смогут его в нужной степени поддерживать и программист получит звонок в 2 часа ночи, когда оборудование выйдет из строя.
Языки IEC 61131 являются единственными языками, обычно используемыми в производственных условиях. Разные производители могут иметь собственный языковой бренд, но все они в основном одинаковы. Одно отличие касается конкретных функций, например, процедуры поиска или сортировки. Процедура поиска или сортировки с циклами «для» (for) или «пока» (while) не так проста в использовании в релейной логике по сравнению с языком более высокого уровня, таким как, например, язык структурированного управления (SCL – Standard Control Language). Там, где код может занимать всего несколько строк в SCL, для выполнения той же функции в релейной логике может потребоваться от 10 до 15 строк.
4. Понимание потребностей обработки данных
Какая обработка данных будет производиться в ячейке? Если системе требуется система управления производством (MES – manufacturing execution system), но ее нет, это создает огромную нагрузку на ПЛК для хранения и управления данными. Эти функции должен выполнять внешний компьютер.
Если у пользователя есть системы управления объектами, основным средством анализа этих данных должен быть ПК, а не ПЛК. Если процедуры поиска часто прерываются или они сопряжены с высокой нагрузкой, то они могут увеличить время сканирования, в результате чего можно пропустить сигналы от датчиков. Такие ситуации могут сильно повлиять на работу ПЛК.
5. Убедитесь, что код хорошо прокомментирован
Очевидно, что программист понимает все детали и тонкости кода, когда код пишется. Но код уже не будет так свеж в памяти, когда специалиста вызовут для устранения неполадок на объекте через несколько недель или месяцев. Если в коде есть разделы, выходящие за рамки обычных, дополнительные комментарии помогут следующему программисту понять, почему код выглядит не так, как ожидалось. Отсутствие описаний может помешать будущим программистам вносить изменения и исправления.
6. Стандартизируйте сообщения об ошибках
При программировании системы убедитесь, что все сообщения об ошибках являются стандартными для устройств одного типа. Если датчик может выйти из строя определенным образом, убедитесь, что данная неисправность сконфигурирована одинаково для всех датчиков этой системы. Точно так же другие устройства, подключенные к ПЛК, будут иметь схожие режимы отказа. Спросите конечного пользователя, с какими режимами отказа он столкнулся и запланируйте действия в таких же непредвиденных ситуациях.
7. Сопоставьте программную среду с брендом ПЛК
Чтобы обеспечить максимальную стабильность и избежать непредвиденных проблем, по возможности используйте среду, рекомендованную производителем ПЛК. Это позволит сделать код и работу с приложением максимально удобным и, если так можно выразиться, бесшовным.
===
Дополнительный совет от Московского завода тепловой автоматики (МЗТА) – производителя ПЛК и ПО автоматизации: используйте специализированные библиотеки для автоматизации технологических узлов
Такие среды программирования, как CODESYS, имеют библиотеки, содержащие достаточно простые функциональные элементы, которые программист использует для создания программ управления. К примеру, система диспетчеризации котельной требует множества таких элементов. Задача программирования для однотипных объектов будет трудоемкой, а тиражирование ПО – достаточно сложным.
Поэтому разработайте свои специализированные библиотеки укрупненных блоков с выверенным кодом. Эти библиотеки могут содержать элементы автоматизации технологических узлов, таких как регулирующие и электромагнитные клапаны, задвижки, заслонки, одиночные насосы и насосные группы прямого пуска и с регуляторами преобразователей частоты и т.п. В итоге вы получите радикальное сокращение трудозатрат на автоматизацию при одновременном увеличении надежности системы.
===
В качестве обобщающего совета: помните о конечном пользователе на протяжении всего процесса программирования и следуйте указанным выше простым советам для повышения эффективности, стабильности и удобства работы.