Всякий раз, когда я берусь за новый язык программирования, я часто задаюсь вопросом: Что я на самом деле могу сделать с этим и чему еще я могу научиться? В первую очередь это относится к языкам программирования, но когда я только начинал, программирование ПЛК было похоже на это. Чтобы программисты ПЛК достигли среднего уровня, им необходимо обладать пятью способностями. В этом посте я подробно расскажу о каждом из этих пяти талантов. Вы знакомы со счетчиками, таймерами и, возможно, даже с перемещением данных. Посмотрите, что еще мы можем узнать прямо сейчас!
1. Знайте, как правильно отображать ввод-вывод
Лучший способ действий при работе с физическим вводом-выводом — всегда использовать физический ввод-вывод вне управляющих приложений. Чтобы подключить ваш ввод-вывод к битам памяти, создайте одну или две подпрограммы. Создайте столько звеньев ввода-вывода, сколько вам нужно, используя прямой контакт, подключенный к катушке.
Хотя это может быть немного трудоемко, в конечном итоге это сэкономит вам деньги. В зависимости от состояния, которое ваш датчик должен считывать для приложения, катушки могут быть XIO или XIC. Кроме того, при замене, что будет, если у вас нет нормально разомкнутого датчика, а подставить нормально закрытый? Простой. Ваша программа изменит контакт, когда вы сделаете это одно изменение, и оно вступит в силу немедленно.
Даже если контроллер содержит инструкцию, которая сделает это за вас, я не советую ее использовать. Визуализация ступеней может помочь в решении проблем и устранении неполадок.
2. Изучайте несколько языков
IEC 61131–3 определяет ряд языков программирования ПЛК; на самом деле, PLCGurus.NET написал статью, в которой подробно рассматриваются все языки стандарта. Несмотря на то, что релейная логика является наиболее часто используемым языком программирования, вы почти наверняка столкнетесь с другими языками на протяжении всей своей карьеры в области ПЛК.
Кроме того, часто используются диаграммы функциональных блоков, и их чтение не слишком сложно. Подобно цифровым логическим элементам, они являются FBD. Если вы можете понять входы и выходы, блок выполняет необходимые операции для создания выхода, который затем может быть связан с другим входом через цепочку.
Последний язык, о котором я расскажу, — это структурированный текст, который, как я вижу, используется все больше и больше. Вы часто будете слышать «структурированный текст» или «ST» при работе с Allen Bradley, тогда как «язык структурированного управления» или «SCL» используется при работе с Siemens. У них есть определенное сходство, даже если они не одинаковы.
Эти два языка служат мостом между компьютерными программами и программами ПЛК. SCL сравним с Pascal, тогда как ST похож на другие языки программирования. Из-за своей силы и способности к сложной обработке эти языки становятся все более распространенными. При работе с массивами полезны циклы FOR и WHILE, а код можно сократить, используя ST, а не лестничную диаграмму при циклировании. Я часто использую SCL для таблиц поиска и алгоритмов сортировки.
Помните, что любой язык иногда имеет преимущества и недостатки. Не все языки выгодны во всех обстоятельствах. Я обнаружил, что лестничная диаграмма хорошо работает для большинства схем управления, но наличие различных языков в вашем наборе инструментов может быть полезным, если вы хотите попробовать более сложное решение.
3. Приобрести сетевые и коммуникативные навыки
В современном мире существует все больше способов общения и получения данных. ПЛК часто необходимо связывать с другими устройствами для управления и диагностики. Должны быть сформированы правильные соединения и разработан общий сетевой протокол, чтобы они могли общаться. Пока два устройства говорят на одном языке, большинство коммуникаций достаточно просто интегрировать в систему.
Modbus RTU — один из старейших протоколов, необходимый всем специалистам по управлению. Поскольку Modbus используется уже более 30 лет, с ним совместимо огромное количество устройств. Несмотря на развитие сетевых технологий, Modbus по-прежнему используется во всем мире. Я использовал Modbus в различных ситуациях, и он всегда мне помогал. Modbus TCP/IP по сути такой же, как Modbus RTU с точки зрения данных, но он заключен в протокол TCP. Modbus RTU — это последовательная связь.
Ethernet/IP и Profinet (Siemens) — часто используемые дополнительные протоколы (Аллен Брэдли). Нет необходимости углубляться в эти протоколы, даже если полезно понять внутреннюю работу каждого из них. Вы будете в надежных руках, если поймете, как использовать эти протоколы в своих контроллерах, устанавливать связь с другими устройствами и отправлять сообщения туда и обратно. Я очень поощряю изучение тонкостей Modbus, так как это поможет вам лучше понять и оценить коммуникации, потому что вы будете точно знать, какая информация передается по сети.
4. Изучите PID и управление процессом
Ethernet/IP и Profinet (Siemens) — часто используемые дополнительные протоколы (Аллен Брэдли). Нет необходимости углубляться в эти протоколы, даже если полезно понять внутреннюю работу каждого из них. Вы будете в надежных руках, если поймете, как использовать эти протоколы в своих контроллерах, устанавливать связь с другими устройствами и отправлять сообщения туда и обратно. Я очень поощряю изучение тонкостей Modbus, так как это поможет вам лучше понять и оценить коммуникации, потому что вы будете точно знать, какая информация передается по сети.
В большинстве контроллеров используются ПИД-регуляторы, которые по сути одинаковы, поскольку включают множество регулируемых переменных, таких как Kp, Ki, Kd, смещение и время дискретизации. Для создания хорошей, отзывчивой петли без перерегулирования важно каждое из этих понятий.
ПИД-контур — это алгоритм, который, не вдаваясь в подробности, пытается увеличить или уменьшить аналоговый выходной сигнал до точки, в которой переменная процесса соответствует заданному значению. ПИД-контур имеет несколько применений, в том числе для обогрева духовки, создания давления с помощью насоса, поддержания уровня воды в баке или даже управления сервоприводом для вращения вала до желаемой уставки с компенсацией импульса для предотвращения перерегулирования. Цикл учитывает сбои процесса и вносит коррективы, изменяя выходные данные.
Я предлагаю прочитать этот пост здесь, если вы хотите больше узнать о контурах PID и их особенностях. Не забудьте просмотреть обширную серию YouTube, созданную PLCGurus.NET. Фред прекрасно объясняет, как использовать Studio 5000, Studio 5000 Emulate и FactoryTalk View Studio для моделирования, прогнозирования и оптимизации динамического отклика процесса с обратной связью. Какая фантастическая серия! Для начала вот первое видео из этой подборки
5. Понимание косвенной адресации и массивов
Знание ценности косвенной адресации — одна из многих способностей, которые сделают вас отличным программистом. Ранее я объяснял, что многие ПЛК имеют несколько языков, которые могут обеспечить гибкость вашего кода. Релейная логика является основным применением косвенной адресации, но в сочетании с ней число приложений, которые могут использоваться только в релейной среде, быстро растет. Я постараюсь описать, как работает косвенная адресация в ПЛК, в качестве дополнительного бонуса к этому эссе.
Давайте начнем с проверенной иллюстрации последовательного запуска многих двигателей с временной задержкой между ними, чтобы предотвратить взрыв вашей панели от пускового тока. Для четырех или, может быть, пяти двигателей у вас может быть много звеньев с одинаковой логикой. Что произойдет, если вам нужно включить 12 или даже 32 светильника одновременно? Ваш ближайший друг — это косвенная адресация, и для ее работы требуется всего около трех строк кода. Вот как это работает.
Еще одна иллюстрация. Возьмите адрес, пожалуйста. В качестве примера для старых процессоров RSLogix500 типа AB, скажем, B3:0/0. К этому URL-адресу необходимо добавить «указатель», чтобы сделать его динамическим. В этом процессе используются скобки. Новый адрес будет B3:0/[N7:0]. Каково значение указателя, так это дополнительные данные, которые нам требуются. Начнем с 0 для простоты. Цикл сканирования проверяет адрес B3:0/[0] или B3:0/0 и оценивает логику, когда считывает цепь с косвенным адресом.