Изучение программирования ПЛК

Как научиться программировать ПЛК? Будет ли он сильно отличаться для разных марок ПЛК? Является ли программирование релейной логики таким же, как программирование ПЛК?


plc
person Aydya    schedule 21.11.2008    source источник


Ответы (11)


Я много программировал ПЛК, а теперь немного программирую .NET. Очень опасно переключаться в любом случае, потому что многие навыки, которые, по вашему мнению, должны быть переданы (шаблоны и тому подобное), уводят вас очень далеко в сторону.

Самая большая разница, о которой я говорю людям, заключается в том, что код программы для ПК должен быть написан так, как если бы другие программисты были аудиторией, а программы для ПЛК (лестничная логика) должны быть написаны так, как если бы аудиторией были обслуживающий персонал. Специалисты по техническому обслуживанию на большинстве объектов (особенно на производстве) часто подключаются напрямую к ПЛК и в онлайн-режиме могут наблюдать за выполнением кода в графическом виде, чтобы выяснить, что не так.

Например, если выход не включается, они вводят идентификатор выходного электрического устройства в функцию поиска программного обеспечения, находят эту выходную катушку и начинают отслеживать ее в поисках проблем. Одна из частых ошибок, которую совершают некоторые программисты ПЛК, заключается в том, что они «отображают» свои входы/выходы в структуру (в ПЛК они называются определяемыми пользователем типами), и они используют команду копирования, чтобы переместить все входы или выходы в структуру. структуру сразу. Это имеет смысл с точки зрения программирования для ПК, но это заставляет обслуживающего персонала хотеть вас убить. Обычно программное обеспечение для программирования предоставляет функцию перекрестных ссылок, где они могут указать эту выходную катушку, и она будет сообщать им везде в программе, что она используется. Если вы используете инструкцию копирования для перемещения 10 слов ввода/вывода в структуру данных из 10 слов, он должен сидеть там и считать биты, чтобы выяснить, какой бит в источнике копии соответствует какому биту на стороне назначения в структуре данных. копировать. Правда, комментарии могут помочь, но и с этим есть проблема... ПЛК хранят всю программу целиком и позволяют загрузить программу из него в экстренном случае, если нужно устранить неполадки и у вас нет копии исходной программы . Проблема в том, что из-за недостатка места ПЛК не сохраняет комментарии. Так что, если линия не работает, время простоя стоит 5000 долларов в минуту, и парень бежит туда с ноутбуком, ему, возможно, придется сделать быструю загрузку без комментариев и попытаться устранить неполадки. Наличие этих копий инструкций, потеря 10 минут его времени, стоило компании простоя в 50 000 долларов. Это вещи, о которых вы должны знать при написании программ для ПЛК.

Еще несколько советов: некоторые ПЛК поддерживают циклы FOR. Никогда не используйте их. По той же причине, что и выше, они делают код очень трудным для устранения неполадок специалисту по обслуживанию. Это связано с тем, что если у вас есть один фрагмент кода в ПЛК, который сканируется более одного раза за сканирование (например, содержимое цикла), то, когда вы переходите в режим онлайн-отладки, программное обеспечение не может отображать значения для каждого из них. из 10 циклов, которые выполнили это сканирование, так что вы действительно понятия не имеете, на какое значение вы смотрите. Затем вам нужно написать весь этот хитрый код, чтобы вытащить значения цикла для определенного индекса цикла в некоторые другие теги (переменные), которые вы можете отслеживать. Это еще одно препятствие для решения проблемы в чрезвычайной ситуации. Та же проблема возникает при использовании подпрограммы более одного раза за сканирование.

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

В программировании для ПК, конечно, мы стремимся как можно больше повторно использовать код. Однако в ПЛК и системах управления время простоя обходится чрезвычайно дорого, а аппаратное обеспечение стоит дорого. Память дешевая, и на самом деле программаторы ПЛК дешевы. Следовательно, ожидается, что если у вас есть 10 одинаковых вещей на вашей машине (например, конвейерные приводы или что-то в этом роде), у вас будет 10 разных файлов (подпрограмм), по одному для каждого диска, и каждый диск будет иметь свои собственные переменные, связанные с ними: например. Drive1_Run, Drive2_Run, Drive3_Run и т. д. Это будет казаться вам очень «неправильным», если вы пришли из опыта программирования на ПК, но это все из-за пунктов, которые я сделал выше. Когда вы находитесь в ситуации простоя, и кто-то говорит, что Диск 3 не работает, вы открываете ноутбук, переходите к файлу для Диска 3 и смотрите на выходную цепочку «Выполнить». Вы начинаете устранять неполадки оттуда, пока программа выполняется. Нет точек останова (программа никогда не останавливается).

Удачи в ваших начинаниях. Я написал еще несколько выводов из многолетнего программирования ПЛК, если вы хотите с ними ознакомиться.

person Scott Whitlock    schedule 22.07.2009
comment
Скотт, я был парнем по обслуживанию и парнем, писавшим программы для ПЛК (до сих пор работаю!), а теперь я немного побаловался написанием кода для .NET на C#, и я могу сказать вам, что вы получаете деньги с все что вы сказали выше! Отличный ответ. - person Andy; 30.08.2009
comment
Полезное примечание: часть комментариев, не сохраняемых в памяти ПЛК, может быть не такой серьезной проблемой через 8 лет после публикации этого ответа ... Многие новые ПЛК теперь хранят программы и теги комментариев в памяти вместе с файлом проекта. - person controller; 16.08.2017

Вы можете изучить программирование ПЛК из различных источников в Интернете, одним из которых является это (викикниги) или это

Программа, которую вы пишете, будет практически одинаковой для ПЛК разных марок для LLD (схемы лестничной логики), если только вы не используете специфические функции ПЛК. Но отличий будет гораздо больше, если вы будете использовать какой-нибудь язык вроде IL (список инструкций). Но после того, как вы написали программу, формат хранения и исполнения сильно различается в зависимости от бренда.

Релейная логика является одним из 5 языков программирования для ПЛК, другими являются FBD (схема функциональных блоков), ST (структурированный текст, аналогичный языку программирования Pascal), IL (список инструкций, аналогичный языку ассемблера) и SFC (последовательная функция). диаграмма). Это просто различные представления языка программирования, если хотите, разные варианты. Но обычно данный бренд поддерживает только один из них. В США широко используются LLD, а в Европе более популярны IL.

person anand.trex    schedule 21.11.2008

Лестничная диаграмма, часто называемая LD, является одним из нескольких языковых стилей, определенных в стандарте программирования автоматизации ISO 61131. Другими являются SFC (последовательная блок-схема), FBD (функциональная блок-схема), ST (структурированный текст) и IL (список инструкций). IL похож на ассемблер и мало кто его использует. ST — это текстовое программирование, очень похожее на ранние версии BASIC. Тоже не часто используется. LD спроектирован так, чтобы напоминать контакты реле на электрической панели управления (которую заменили многие ПЛК). FBD больше похож на принципиальную схему. SFC — это, по сути, блок-схема.

Одни ПЛК поддерживают все, другие только некоторые или даже один. В то время как LD является наиболее распространенным, FBD и SFC набирают популярность.

Разные бренды используют немного разные языки программирования. Обычно они достаточно похожи, чтобы, разобравшись с одной маркой, вы могли работать с любой из них, но вы не можете напрямую взять код из одного ПЛК и использовать на другой марке.

person Jim C    schedule 21.11.2008
comment
LD на самом деле очень распространен в Северной Америке, но, по моему опыту, редко используется, и люди часто смотрят на него свысока, скажем, в Европе. Я полагаю, это связано с тем, что в Европе специалист по обслуживанию не подключается к ПЛК в режиме онлайн — для этого они звонят в инженерный отдел, но в Северной Америке специалисты по обслуживанию подключаются к сети для устранения неполадок, вносят изменения, а в некоторых случаях выполняют множество других действий. работа по программированию. LD, похожий на схему, просто лучше подходит для этой культуры. - person Scott Whitlock; 09.12.2009
comment
@Scott: Я полагаю, это потому, что в Европе специалист по обслуживанию не подключается к сети с ПЛК - я бы с этим не согласился. Я годами занимался именно этим, даже писал программы с нуля, и все это в качестве специалиста по обслуживанию электрооборудования. - person Andy; 08.01.2011

Ответы, данные до сих пор, довольно точны. Во-первых, я обнаружил, что ПЛК имеют раздвоение личности, когда речь заходит об их языках и настройках. Их основная конструкция состоит в том, чтобы предоставить электрикам гибкие средства настройки логики управления для их общей конструкции. ПЛК, по сути, представляют собой набор входов и выходов, и то, как они подключены, контролируется программным обеспечением, которое вы загружаете в устройство.

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

Однако в последние годы ПЛК поддерживают множество языков для максимальной гибкости. Однако, по моему мнению, несколько ПЛК, с которыми я работал, очень несовершенны с точки зрения среды программирования. Простые вещи, такие как присвоение имен переменных ячейкам памяти, часто не предусмотрены используемым языком. Те, с которыми легко работать, часто не являются наиболее рентабельными для работы.

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

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

person RS Conley    schedule 21.11.2008

Программирование ПЛК следует рассматривать как деятельность по внедрению результатов разработки программного обеспечения ПЛК, если только вы не используете ПЛК исключительно как часть компонентов, альтернативных механическим или электрическим решениям.

На этой основе среда программирования ПЛК, как правило, управляется IEC61131, гарантированное время цикла, «упреждающее» реальное время, нет необходимости обрабатывать проблемы, связанные с ОС в реальном времени, непрерывное сканирование кода, не программный указатель, концепция, отличная от типичной компьютерной задачи. своего рода многозадачность. Выполнение кода, естественно, является атомарным, нет необходимости использовать мониторы между задачами.

Каждый из языков имеет свою близость к тому, насколько мыслим ваш код для логической модели, которую вы хотите реализовать.

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

  2. FBD или функциональная блок-схема была потоком электронных сигналов, но сегодня может быть потоком данных в зависимости от типа ПЛК. FBD показывает более четкую последовательность выполнения, очень похожую на лестничную диаграмму горизонтального сканирования в последовательности сканирования. Сегодня FBD обычно используется в качестве контейнера для функциональных блоков объекта, хотя реализация зависимостей и визуальное сходство с моделью процесса зависят от типа ПЛК.

  3. Literal очень похож на BASIC, но только синтаксис; выполнение по-прежнему сквозное сканирование. Буквальный язык хорош для математических вычислений. Для реализации высокого уровня методы или вывод атрибутов внутри объекта могут быть проще с использованием Literal. Программирование конечного автомата с использованием англоподобного представления состояния или констант делает программу очень читабельной.

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

  5. SFC или последовательная блок-схема — это дополнительный язык для реализации последовательности. SFC имеет неотъемлемые правила активации блока действий, переходов между состояниями, активации параллельной последовательности и слияния. Однако сложное разветвление исключений или управление одновременными действиями могут усложнить реализацию и сделать блок-схему трудной для чтения.

Управление системой ПЛК по обработке ввода-вывода, обмену данными, горячему резервированию требует усилий по конфигурации оборудования и зависит от продукта. Как правило, можно рассматривать отдельно от разработки программного обеспечения. Однако данные, относящиеся к управлению системой ПЛК, относятся к типу «локализованных» (независимая область адресации данных), хороший подход к моделированию данных в разработке программного обеспечения может помочь в управлении системными данными.

person Community    schedule 22.09.2009
comment
Боюсь, это мой второй голос против этого пользователя, но данное описание запутывает и усложняет задачу. Принципы разработки программного обеспечения, используемые для обычного программного обеспечения, в действительности не применимы к программированию ПЛК/ПАК в целом. Подумайте о разнице между написанием клиентского приложения для рабочего стола и написанием системы жесткого реального времени для управления двигателем автомобиля. Используются совершенно разные подходы, методы, соответствующие применению. - person Chris D.; 03.02.2011

Может оказаться полезным Онлайн-симулятор ПЛК.

person bhadra    schedule 02.12.2010

Вы можете использовать Структурированный текст (ST), который состоит из серии инструкций, которые, как определено в языках высокого уровня, ("ЕСЛИ... ТО... ИНАЧЕ") или в циклах (ПОКА... ДЕЛАТЬ). ) можно выполнить.

Я нахожу его лучше, чем Ladder, так как он близок к стандартному языку программирования.

person Ahmad Z. Tibi    schedule 09.10.2012

У меня было немного программирования PLC в университете. Мне показалось, что это на уровень ниже сборки, но аппарат, который мы использовали, был не самым новым.

Я считаю, что вам нужен драйвер ПЛК, но я бы сначала поискал симуляторы и прочитал о них больше, прежде чем покупать.

person Klesk    schedule 21.11.2008
comment
Я не согласен с вашей идеей на один уровень ниже сборки. Если вы посмотрите на OPcodes, сгенерированные лестничной логикой, это выглядит точно так же, как на языке ассемблера (XIC и т. д.). На жаргоне IEC-61131-3 это список инструкций (IL). Лестничная логика — это визуальный язык, похожий на диаграмму функциональных блоков, которая определенно находится на более высоком уровне, чем ассемблер (особенно потому, что она более декларативна, чем императивна). - person Scott Whitlock; 15.08.2011

У Allen-Bradley есть бесплатный программный ПЛК на базе DOS, специально предназначенный для обучения. Вероятно, вы сможете найти его, если зайдете на их сайт или погуглите. Он используется для обучения программированию ПЛК в школах.

person zumalifeguard    schedule 30.10.2009

Для новичка, пытающегося изучить релейную логику, лучше всего посетить бесплатное онлайн-обучение по адресу http://plcs.net.

person avra    schedule 15.09.2010

ПЛК — это термин, используемый для устройств, использующих релейную логику. Устройства, написанные на более типичных языках программирования, обычно называют микроконтроллерами. Однако есть некоторые из нас, которые иногда объединяют их всех под названием ПЛК. :-) Не уверен, насколько сильно различается лестничная логика, но код микроконтроллера может значительно различаться.

person Brian Knoblauch    schedule 21.11.2008