Процессор плк что это
Статья указывает на особенности разработки для промышленных контроллеров. Написана для объеденения программистов данного направления.
Заключение
Современный ПЛК стал чрезвычайно востребованным универсальным рабочим инструментом в системах автоматизации производственных процессов, а также для управления отдельными устройствами различного назначения. Это особый тип программируемых логических автоматов, отличающийся повышенной надежностью, легко встраиваемый и модернизируемый, способный длительное время работать практически без обслуживания.
Введение
Я занимаюсь автоматизацией зданий. Сложилось так, что в основном мы строим свои системы на базе ПЛК Beckhoff. Такой выбор был сделан прежде всего потому, что эти контроллеры являются свободно-программируемыми в полном смысле этих слов. Что это значит? Возьмите контроллер TAC Xenta, например, и попробуйте на нем реализовать обмен с внешним устройством через RS232 по собственному протоколу, на уровне «байт послал — байт принял». Не получится, эти контроллеры так не умеют — используйте только те протоколы, которые в них заложил разработчик. А Beckhoff умеет. Но прежде чем лезть в такие дебри, давайте посмотрим на среду разработки? На каком, собственно, языке, мы будем писать?
Стандарт МЭК 61131-3
Промышленные ПЛК программируются на языках стандарта МЭК 61131-3. Всего этих языков 5, некоторые производители добавляют свои. Языки друг на друга совсем не похожи, и, наблюдая за коллегами, могу предположить, что выбор того или иного языка связан прежде всего с тем, чем человек занимался до того, как он пришел в эту отрасль.
- IL, instruction list, список инструкций. Похож на ассемблер. Не видел никого, кто его использовал бы, но подозреваю, что олдскульные кодеры, пробивавшие перфокарты по памяти, оценят.
- LD, ladder diagram. Визуальный язык, для тех, кто занимался разработкой схем релейной автоматики.
- ST, structured text. Более всего напоминает «классические» языки программирования, чем-то похож на Паскаль. Оттого ценится теми, кто до ПЛК занимался программированием на других языках и платформах, в частности — мной.
- FBD, functional block diagram. Этакая блок схема, любим прежде всего технологами, решившими податься в программирование, за свою наглядность.
- SFC, sequential function chart. Графический язык, больше ничего не скажу. Ни разу не видел, чтоб его использовали.
Из не всеми поддерживаемых языков стоит отметить язык CFC (continuous flow chart), Beckhoff его поддерживает. Это дальнейшее развитие языка FBD, одним из наиболее существенных отличий, на мой взгляд, является поддержка явной обратной связи в схемах. Зачем это нужно? Например, вот такой генератор коротких импульсов на CFC будет работать, а на FBD – нет.
Блок TON — это стандартный блок, таймер с задержкой включения. Логика работы: выход Q становится TRUE, когда на входе IN сигнал TRUE в течение не менее времени PT.
Самая популярная, наверное, среда разработки под ПЛК — это CoDeSys. Многие производители берут ее за основу, и либо делают к ней библиотеку для работы со своим ПЛК, либо доделывают среду под себя.
Как работает ПЛК?
Программа ПЛК работает циклично. Время цикла может быть от единиц миллисекунд до единиц секунд, в зависимости от задач, которые на этот ПЛК возложены. Большинство ПЛК позволяют задавать время цикла разработчику программы, однако в некоторых моделях такой возможности нет. Многие ПЛК, в частности Beckhoff, позволяют в одной программе создать более одной циклически выполняемой задачи, и задать приоритет для этих задач. Что нам дает эта возможность?
Представим ситуацию: ПЛК управляет вентиляционной установкой, и к нему подключена панель управления через RS232. Температура в помещениях меняется не быстро, и запускать алгоритм управления вентиляцией чаще, чем раз в 50 — 100 мс просто нет смысла. Зато панель оператора опрашивает контроллер постоянно, и задержка ответа ПЛК более 10 мс уже выражается в «притормаживании» интерфейса пользователя, а при задержке 20 мс у нас переполнится аппаратный буфер COM-порта. Наличие нескольких задач позволяет нам решить эту проблему красиво: пусть «быстрая» задача работает с COM-портом, и вызывается каждые 2 мс, а «медленная» реализует логику работы вентиляции, и вызывается каждые 50 мс. Все работает хорошо, панель оператора не тормозит, пользователь доволен.
А что у этих железок внутри?
- Можно сделать «все в одной коробке» — голова, некий набор входов / выходов, несколько вариантов конфигурации — вот тут у нас входов побольше, тут поменьше, тут голова помощнее, тут послабее. Так делают, например, Carel, и много кто еще. На маленьком проекте такой подход себя в чем-то, может быть, и оправдывает.
- Но лично мне кажется, что большую гибкость дает другой подход. Голова отдельно, и к ней по шине подключается наборный «хвост» из модулей ввода-вывода. Мы ставим те модули, которые нам нужны, и в том количестве, которые нам нужно. Так делают Beckhoff и Siemens, например.
А вот другой вариант — голова Beckhoff серии CX9000 (слева на фото) с набором модулей ввода-вывода.
Помимо всего прочего, на голове еще имеется некая шина, позволяющая объединять ПЛК в сеть, а зачастую еще и менять его программу через эту же сеть. Какая это будет сеть — зависит от ПЛК. Это могут быть и незнакомые тем, кто не сталкивался с промышленными сетями EIA-485, Profibus, CAN, а может быть и вполне привычный Ethernet. Именно через эту сеть, называемую fieldbus, и осуществляется подключение ПЛК к верхнему уровню — к СКАДА-системе, например. На фото выше хорошо видны 2 разъема 8P8C на голове Beckhoff'а — это Ethernet, а у Carel сверху слева видны (плоховато, правда) 2 разъема 6P4C — так они сделали RS-485. У этого интерфейса, к сожалению, нет общепринятого разъема.
Так все же, как под него программы писать-то?
Вообще, это тема не статьи, а целой книги. Но расскажу то, что увидел на личном опыте, и пусть это будет ложкой дегтя.
Для профессиональных программистов освоение ПЛК во многом покажется деградацией. ООП? Их нет у нас, есть только структуры, перечисления, и некое подобие класса, которое называется «функциональный блок». Что такое Private, Public и прочее, тоже можно забыть сразу — не пригодится. Из любого места вашей программы можно получить доступ к любому другому месту.
Динамическое выделение памяти? Их нет у нас совсем. Не уверен, сколько тебе пришлют данных? Выделяй буфер с запасом, и забудь про эту память — освободить ее не получится. Либо проявляй чудеса скорости и обрабатывай данные на лету, если успеешь уложиться в заданное время цикла.
Исключения? Да что вы… видел я одно чудо, которое намертво висло при выполнении конструкции вида:
Понятно, что переполнение, не влазит foo * bar в 16 бит, но зачем же виснуть-то? Да еще так, что ничего, кроме сброса по питанию не помогает.
Среда разработки? Не у всех CoDeSys, многим хочется пооригинальничать и написать что-нить свое. Одна из таких самописных сред вылетала с runtime error при попытке записать число 86400 в 16-битный INT. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.
НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии — это очень интересная ветвь ай-ти, правда.
Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.
С чего начиналась промышленная автоматика? А начиналось все с контактно-релейных схем управления промышленными процессами. Кроме жуткого «шелестения», контактно релейные схемы имели фиксированную логику работы, и в случае изменения алгоритма, необходимо основательно переделать монтажную схему
Бурное развитие микропроцессорной техники, привели к созданию систем управления технологическими процессами на базе промышленных контроллеров. Но это не означает, что реле изжили себя, у них просто своя ниша для применения.
ПЛК – программируемый логический контроллер, представляют собой микропроцессорное устройство, предназначенное для сбора, преобразования, обработки, хранения информации и выработки команд управления, имеющий конечное количество входов и выходов, подключенных к ним датчиков, ключей, исполнительных механизмов к объекту управления, и предназначенный для работы в режимах реального времени.
Принцип работы ПЛК несколько отличается от «обычных» микропроцессорных устройств. Программное обеспечение универсальных контроллеров состоит из двух частей. Первая часть это системное программное обеспечение. Проводя аналогию с компьютером можно сказать, что это операционная система, т.е. управляет работой узлов контроллера, взаимосвязи составляющих частей, внутренней диагностикой. Системное программное обеспечение ПЛК расположено в постоянной памяти центрального процессора и всегда готово к работе. По включению питания, ПЛК готов взять на себя управление системой уже через несколько миллисекунд. ПЛК работают циклически по методу периодического опроса входных данных.
Рабочий цикл ПЛК включает 4 фазы:
1. Опрос входов
2. Выполнение пользовательской программы
3. Установку значений выходов
4. Некоторые вспомогательные операции (диагностика, подготовка данных для отладчика, визуализации и т. д.).
Выполнение 1 фазы обеспечивается системным программным обеспечением. После чего управление передается прикладной программе, той программе, которую вы сами записали в память, по этой программе контроллер делает то что вы пожелаете, а по ее завершению управление опять передается системному уровню. За счет этого обеспечивается максимальная простота построения прикладной программы – ее создатель не должен знать, как производится управление аппаратными ресурсами. Необходимо знать с какого входа приходит сигнал и как на него реагировать на выходах
Очевидно, что время реакции на событие будет зависеть от времени выполнения одного цикла прикладной программы. Определение времени реакции – времени от момента события до момента выдачи соответствующего управляющего сигнала – поясняется на рисунке:
Обладая памятью, ПЛК в зависимости от предыстории событий, способен реагировать по-разному на текущие события. Возможности перепрограммирования, управления по времени, развитые вычислительные способности, включая цифровую обработку сигналов, поднимают ПЛК на более высокий уровень в отличие от простых комбинационных автоматов.
Рассмотрим входа и выхода ПЛК. Существует три вида входов дискретные, аналоговые и специальные
Один дискретный вход ПЛК способен принимать один бинарный электрический сигнал, описываемый двумя состояниями – включен или выключен. Все дискретные входы (общего исполнения) контроллеров обычно рассчитаны на прием стандартных сигналов с уровнем 24 В постоянного тока. Типовое значение тока одного дискретного входа (при входном напряжении 24 В) составляет около 10 мА.
Аналоговый электрический сигнал отражает уровень напряжения или тока, соответствующий некоторой физической величине, в каждый момент времени. Это может быть температура, давление, вес, положение, скорость, частота и т. д.
Поскольку ПЛК является цифровой вычислительной машиной, аналоговые входные сигналы обязательно подвергаются аналого-цифровому преобразованию (АЦП). В результате, образуется дискретная переменная определенной разрядности. Как правило, в ПЛК применяются 8 - 12 разрядные преобразователи, что в большинстве случаев, исходя из современных требований по точности управления технологическими процессами, является достаточным. Кроме этого АЦП более высокой разрядности не оправдывают себя, в первую очередь из-за высокого уровня индустриальных помех, характерных для условий работы контроллеров.
Стандартные дискретные и аналоговые входы ПЛК способны удовлетворить большинство потребностей систем промышленной автоматики. Необходимость применения специализированных входов возникает в случаях, когда непосредственная обработка некоторого сигнала программно затруднена, например, требует много времени.
Наиболее часто ПЛК оснащаются специализированными счетными входами для измерения длительности, фиксации фронтов и подсчета импульсов.
Например, при измерении положения и скорости вращения вала очень распространены устройства, формирующие определенное количество импульсов за один оборот – поворотные шифраторы. Частота следования импульсов может достигать нескольких мегагерц. Даже если процессор ПЛК обладает достаточным быстродействием, непосредственный подсчет импульсов в пользовательской программе будет весьма расточительным по времени. Здесь желательно иметь специализированный аппаратный входной блок, способный провести первичную обработку и сформировать, необходимые для прикладной задачи величины.
Вторым распространенным типом специализированных входов являются входы способные очень быстро запускать заданные пользовательские задачи с прерыванием выполнения основной программы – входы прерываний.
Дискретный выход также имеет два состояния – включен и выключен. Они нужны для управления: электромагнитных клапанов, катушек, пускателей, световые сигнализаторы и т.д. В общем сфера их применения огромна, и охватывает почти всю промышленную автоматику.
Конструктивно ПЛК подразделяются на моноблочные, модульные и распределенные. Моноблочные имеют фиксированный набор входов выходов
В модульных контроллерах модули входов – выходов устанавливаются в разном составе и количестве в зависимости от предстоящей задачи
В распределенных системах модули или даже отдельные входа-выхода, образующие единую систему управления, могут быть разнесены на значительные расстояния
Особенности работы и программирования ПЛК
Теперь, когда стали более понятными основные возможности ПЛК, следует выяснить способы их применения.
Система программирования является одной из примечательных и полезных особенностей ПЛК, она обеспечивает упрощенный подход к разработке управляющих программ для специалистов различного профиля.
Именно в ПЛК впервые появилась удобная возможность программирования контроллеров путем составления на экране компьютера визуальных цепей из релейных контактов для описания операторов программы (рисунок 6). Таким образом, даже весьма далекие от программирования инженеры-технологи быстро осваивают новую для себя профессию. Подобное программирование называют языком релейной логики или Ladder Diagram (LD или LAD). Задачи, решаемые при этом ПЛК, значительно расширяются за счет применения в программе функций счетчиков, таймеров и других логических блоков.
Рис. 6. Пример программной реализации электрической цепи
Задача программирования ПЛК еще более упрощается благодаря наличию пяти языков, стандартизованных для всех платформ ПЛК. Три графических и два текстовых языка программирования взаимно совместимы. При этом одна часть программы может создаваться на одном языке, а другая — на другом, более удобном для нее.
К графическим средствам программирования ПЛК относятся язык последовательных функциональных блоков (Sequential Function Chart, SFC) и язык функциональных блоковых диаграмм (Function Block Diagram, FBD), более понятные для технологов. Для программистов более привычными являются язык структурированного текста (Statement List, STL), напоминающий Паскаль, и язык инструкций (Instruction List, IL), похожий на типичный Ассемблер.
Упростить создание программного обеспечения для современных ПЛК позволяют специальные комплексы, такие как
(рисунок 7), ISaGRAF, OpenPCS и другие инструменты, не привязанные к какой-либо аппаратной платформе ПЛК и содержащие все необходимое для автоматизации труда программиста. Для отладки сложных проектов на основе компонентов TI компания предлагает специальные отладочные комплекты и необходимое программное обеспечение.
Рис. 7. Рабочий экран программирования в среде CoDeSys
Перед началом работы ПЛК выполняет первичное тестирование оборудования и загрузку в ОЗУ и ПЗУ операционной системы и рабочей программы пользователя. Стандартный ПЛК кроме рабочего режима имеет режим отладки с пошаговым выполнением программы, с возможностью просмотра и редактирования значений переменных.
Рабочий режим ПЛК состоит из повторяющихся однотипных циклов, каждый из них включает три этапа:
- опрос всех датчиков с регистрацией их состояния в оперативной памяти;
- последовательный анализ рабочей программы с использованием данных о текущем состоянии датчиков и с формированием управляющих воздействий, которые записываются в буферные регистры;
- одновременное обновление контроллером состояния всех своих выходов и начало очередного этапа опроса датчиков.
Процесс исполнения программы ПЛК можно контролировать на экране подключенного компьютера с отображением состояния отдельных параметров. Например, процедуры включения и выключения насоса могут меняться в зависимости от требуемой задержки, значение которой задается специальной переменной.
При необходимости можно остановить выполнение программы и перевести ПЛК в режим программирования, затем на экране компьютера изменить ход выполнения программы или отдельные параметры и снова записать их в память ПЛК.
Schneider Electric M171/172
Познакомился с этой линейкой для HVAC около года назад. По тому, что прочитали на форумах — разработка итальянская, видимо была перекуплена Schneider.
М171 версия проще и дешевле, потому решили не мелочиться и взять M172. По входам и выходам – сказка. Например, модель TM172PDG42R – 42 I/O. Интерфейсы — Ethernet (M172), RS485 (у М172 их даже 2 шт.), CAN. Экран неплохой, графический. Прибавим к этому кучу всяких модулей расширения и получаем весьма интересное решение в плане аппаратной части.
Среда программирования
SoMachine HVAC. И тут начинается первая ложка дегтя. Среда не особо дружелюбная для начинающего. С документацией все плохо – готовьтесь шерстить поисковик.
Среда разбита как бы на несколько отдельных программ. У них даже ярлыки свои. В одной вы инициализируете интерфейсы и аппаратную часть, в другой рисуете экран, в третьей пишете программу. Youtube все лучше расскажет:
Есть и графические и текстовые языки. Есть ST (переменных типа Time нет – будете крутиться с DWORD). Так же тут дурацкая система инициализации переменных. Вы не сможете просто написать:
Зачем так просто? Вы лучше каждую переменную создавайте мышкой через диалоговое окно. Перенос наработок с других сред программирования усложняется.
Но в целом здесь возможностей побольше, чем у SMLogix. Однако разработка все равно сырая.
А что там с Modbus?
Каждая переменная имеет свой адрес. Т.е. slave будет сразу. С Modbus в этом плане все неплохо. Все, да не все. Вот вам еще 1,5 ложки дегтя:
-
1 ложка – Master режим ВООБЩЕ не работает.
Сколько наш программист не бился, так и не смог запустить. Вместо этого на выходе RS485 мы получали только первый байт посылки. Т.е. адрес опрашиваемого устройства. Так на одном объекте нам пришлось дополнять щит – вставлять Овна ПЛК100, чтоб 100тый выполнял роль Master'a (картинка ниже);
- большая линейка оборудования, модулей расширения;
- много интерфейсов;
- есть модификации ПЛК с большим количеством I/O;
- графический дисплей (старшие модели);
- есть выносная и настенная панель;
- неплохой внешний вид;
- несколько языков программирования.
- сырой продукт (во всяком случае, М172). Касается как ПО, так и самих ПЛК;
- недружелюбная среда разработки;
- нет нормальной документации по работе в среде программирования;
- никакой тех поддержки. Дистрибьютор еще чего-то пытался помочь – но и он не особо выручил;
- долгая поставка оборудования. В случае, когда надо все «вчера» – эти ПЛК не ваш выбор.
- TM172PDG42R ПЛК М172, дисплей, 42 I/O, Eth — цена 26 991 р
- TM172ASCTB42 Терминальный блок с винтами на 42 вх/вых — цена 1 159 р
- TM172PDG28R ПЛК М172, дисплей, 28 I/O, Eth — цена 19 283 р
- TM172ASCTB28 Терминальный блок с винтами на 28 вх/вых — цена 989 р
Из личной коллекции. ПЛК100 (справа) как раз работает как Мастер вместо М172:
P.S. Еще немного о средах
Codesys 2.3. Порог вхождения выше, чем у среды программирования Segnetics, но и вещи можно делать более интересные (тут даже некоторые основы ООП есть). Потому вот так без опыта программу будет сложно написать/нарисовать.
Если вы решили изучать Codesys, то крайне рекомендую начинать с ST (Structured Text), паскалеподобного языка. У текстовых языков есть важнейшее преимущество – возможность переноса на другие среды, поддерживающие язык.
Автор уже имел опыт переноса программы из ПЛК63 на тот самый Schneider M172 с минимальными изменениями.
Графические языки изначально поманят вас наглядностью. Но не поддавайтесь – в больших программах вы запутайтесь, да и еще гибкость потеряете (элементарно не сможете закомментировать участок кода).
Segnetics SMH2g и Pixel
Итак, Pixel и его большой брат-форточник SMH2g. Есть еще SMH2gi с доступом к linux. Вроде как дает больше возможностей для любителей той самой страшной вещи как «навыки программирования».
Относительно I/O SMH2g не особо интересен без модулей расширения (на борту 4 DI / 4 DO и 5 DI / 2 DO для SMH2gi). У Pixel дела получше (6DI/3DO/5AI/2AO), но без модулей тоже не всегда обойдешься.
Важно заметить — Pixel гальванической изоляции по аналоговым выходам и входам НЕТ. Конечно, Segnetics в плане расширяемости заморочился. Можно даже Ethernet для Pixel сделать. Однако чтобы часы тикали без сбоев понадобится купить у Segnetics батарейку. И позиция эта отдельная. Так же с памятью. Докупаете отдельно (если вам, например, нужна работа по расписанию).
Еще маленький камешек в огород Segnetics — злые цены на кабель для соединения ПЛК с модулями расширения. На деле — обычный шлейф с разъемами IDC. Изготовить можно самим, купив все в магазине или радиорынке. Получится раз в 5 дешевле. Главное не напутайте с подключением.
В плане внешнего вида, удобства нажатия кнопок, дисплея – тут все отлично. Для большего пафоса Segnetics даже ни слова по-русски на корпусе контроллера не написал. Ну и нам приятно.
Среда программирования
SMLogix. Разработана Segnetics. Язык только графический со всеми минусами графических языков. Чтобы как-то удобнее можно было делать правки в программе — желательно делать блоки (они же макросы) по типу матрешки:
Так вы не потеряете внешние связи в программе. Segnetics значительно повысил притягательность своего оборудования благодаря конфигуратору SMConstructor, который генерирует рабочую программу ПЛК для систем вентиляции (теперь и для ИТП). Останется подпилить ее под свои нужды.
Однако тот же Pixel не даст вам полного доступа к COM порту. Нужный вам протокол вы не напишите. Только Modbus.
А что там с Modbus?
Все неплохо. Каждую переменная, которую вы создаете, автоматически становится переменной Modbus. Так реализуется режим slave.
Для Master все тоже неплохо. Можно подгружать карты Modbus от других контроллеров Segnetics или создавать (и сохранять на компьютер) карту переменных отдельно. Для большинства задач этого должно хватать
- мало времени для создания типовых программ для вентиляции;
- приятный дизайн оборудования;
- до 8 модулей расширения;
- можно всегда получить Ethernet.
- слабый «язык» программирования;
- отсутствие гальванической изоляции аналоговых входов и выходов (у Pixel);
- «из коробки» нет возможности менять тип аналоговых датчиков;
- нет возможности работать с нестандартными протоколами по COM порту (что-то может получится через linux у SMH2gi, но сама среда программирования такой возможности не даст);
- «плюющиеся» клеммы у Pixel. Наконечник типа НШВИ 1,5-8 частенько будет выталкиваться из клемм при закручивании. Рекомендую длиннее — НШВИ 1,5-12. Иначе рискуете много материться при монтаже.
- Pixel-2511-02-0 — цена 11 054 р
- Pixel-MR602-00-0 Модуль расширения 6вых. (реле 5А), 2 аналог. вых. (0…10В) — цена 7 206 р
- Pixel-MR120-00-0 Модуль расширения 12вх. (NPN/PNP) — цена 5 190 р
- SMH 2G-4222-01-2 — цена 12 614 р
- SMH 2Gi-0020-31-2 — цена 17 064 р
- MC-0401-01-0 Модуль расширения для SMH 2G/SMH 2Gi; 9вх. (NPN/PNP)/10вых. (5 реле 5А, 5 оптореле 400 мА), 8 аналог. вх. (6 универс., 2 напряжение/ток 0. 10В/4. 20мА, 24 бит)/4 аналог. вых. (0. 10В) — цена 10 582 р
Из личной коллекции:
Типы ПЛК
Современные ПЛК, использующие инновационные технологии, далеко ушли от первых упрощенных реализаций промышленного контроллера, но заложенные в систему управления универсальные принципы были стандартизированы и успешно развиваются уже на базе новейших технологий.
Крупнейшими мировыми производителями ПЛК сегодня являются компании Siemens AG, Allen-Bradley, Rockwell Automation, Schneider Electric, Omron. Кроме них ПЛК выпускают и многие другие производители, включая российские компании ООО КОНТАР, Овен, Сегнетикс, Fastwel Групп, группа компаний Текон и другие.
Рис. 2. Моноблочные программируемые логические контроллеры
По конструктивному исполнению ПЛК делят на моноблочные (рисунок 2) и модульные. В корпусе моноблочного ПЛК наряду с ЦП, памятью и блоком питания размещается фиксированный набор входов/выходов. В модульных ПЛК используют отдельно устанавливаемые модули входов/выходов. Согласно требованиям МЭК 61131, их тип и количество могут меняться в зависимости от поставленной задачи и обновляться с течением времени. ПЛК подобной концепции представлены на рисунке 3. Подобные ПЛК могут действовать в режиме «ведущего» и расширяться «ведомыми» ПЛК через интерфейс Ethernet.
Рис. 3. Программируемые логические контроллеры с расширенными возможностями
Моноблочные функционально завершенные ПЛК могут включать в себя небольшой дисплей и кнопки управления. Дисплей предназначен для отображения текущих рабочих параметров и вводимых с помощью кнопок команд рабочих программ и технологических установок. Более сложные ПЛК комбинируются из отдельных функциональных модулей, совместно закрепляемых на стандартной монтажной рейке. В зависимости от количества обслуживаемых входов и выходов, устанавливается необходимое количество модулей ввода и вывода.
Источник питания может быть встроенным в основной блок ПЛК, но чаще выполнен в виде отдельного блока питания (БП), закрепляемого рядом на стандартной рейке. Блок питания небольшой мощности представлен на рисунке 4.
Рис. 4. Блок питания для ПЛК
Первичным источником для БП чаще всего служит промышленная сеть 24/48/110/220/400 В, 50 Гц. Другие модели БП могут использовать в качестве первичного источник постоянного напряжения на 24/48/125 В. Стандартными для промышленного оборудования и ПЛК являются выходные напряжения БП: 12, 24 и 48 В. В системах повышенной надежности возможна установка двух специальных резервированных БП для дублирования электропитания.
Для сохранения информации при аварийных отключениях сети электропитания в ПЛК используют дополнительную батарею.
Огромный прогресс в развитии микроэлектроники затронул всю элементную базу ПЛК. У них значительно расширился диапазон функциональных возможностей. Несколько лет назад немыслимы были аналоговая обработка, визуализация технологических процессов или даже раздельное использование ресурсов ЦП в качестве непосредственного управляющего устройства. В настоящее время поддержка этих функций входит в базовую версию многих ПЛК.
Примером подобного подхода является отдельное направление в линейке продукции компании Texas Instruments. Как известно, TI не входит в число производителей ПЛК, но выпускает для них специализированные ЦП и сетевые процессоры, компоненты для создания периферийных цифровых и аналоговых модулей, контроллеры температуры, смешанные модули цифровых и аналоговых входов/выходов.
Блок схема процессора TI Sitara AM570x на рисунке 5 позволяет судить об огромной функциональной оснащенности этого ARM-процессора, работающего на частоте до 1 ГГц, поддерживающего интерфейсы CAN, I²C, McASP, McSPI, SPI, UART, USB и способного работать в диапазоне температур 0…90°С.
Рис. 5. Блок-схема процессора TI Sitara AM570x
Программный комплекс CoDeSys
Открытость МЭК стандартов привели к созданию фирм занимающихся исключительно инструментами программирования ПЛК.
Наибольшей популярностью в мире пользуются комплекс CoDeSys. CoDeSys разработан фирмой 3S. Это универсальный инструмент программирования контроллеров на языках МЭК, не привязанной к какой-либо аппаратной платформе и удовлетворяющим всем современным требованиям.
Основные особенности:
- полноценная реализация МЭК языков
- встроенный эмулятор контроллера позволяет проводить отладку проекта без аппаратных средств. Причем эмулируется не некий абстрактный контроллер, а конкретный ПЛК с учетом аппаратной платформы
- встроенные элементы визуализации дают возможность создать модель объекта управления и проводить отладку, т.е. дает возможность создавать человеко-машинного интерфейса (HMI)
- очень широкий набор сервисных функции, ускоряющий работу программиста
- существует русская версия программы, и русская документация
Литература:
Современные технологии промышленной автоматизации: учебник / О. В. Шишов. Саранск : Изд-во Мордов. ун-та, 2007. – 273 с. ISBN 5-7103-1123-5
sulika Опубликована: 2012 г. 0 0
Вознаградить Я собрал 0 0
В этой статье краткий обзор программируемых контроллеров для HVAC (отопление, вентиляция и кондиционирование) от 3х производителей:
Пора кончать
Получилось много текста, но это меньше капли в океане промышленной автоматизации. Каждой проблеме можно посвятить отдельную статью.
Но главной проблемой я считаю отсутствие площадок для обмена опытом между специалистами данной области. Данная статья нужна для привлечения внимания. Все проблемы решатся быстрее, если о них будут все знать, если решения будут проверены множеством специалистов.
Для дальнейших дискусий и связи предлагаю telegram чат и канал.
Ну и не забываем оставлять свои мысли и замечания в комментах. Надеюсь устроить хоть небольшой движ в этой сфере.
Программируемым логическим контроллерам уже 50 лет, но без них и сейчас невозможно представить автоматизированное производство. Начинаем публиковать цикл статей о ПЛК и об электронных компонентах, производимых компанией Texas Instruments для создания современных ПЛК.
Программируемые логические контроллеры (ПЛК) широко применяются в сфере промышленной автоматизации разнообразных технологических процессов на больших и малых предприятиях. Популярность контроллеров легко объяснима. Их применение значительно упрощает создание и эксплуатацию как сложных автоматизированных систем, так и отдельных устройств, в том числе — бытового назначения. ПЛК позволяет сократить этап разработки, упрощает процесс монтажа и отладки за счет стандартизации отдельных аппаратных и программных компонентов, а также обеспечивает повышенную надежность в процессе эксплуатации, удобный ремонт и модернизацию при необходимости.
Принято считать, что задача создания прообраза современного ПЛК возникла в конце 60-х годов прошлого столетия. В частности, в 1968 году она была сформулирована руководящими специалистами General Motors. Тогда эта компания пыталась найти замену для сложной релейной системы управления. Согласно полученному заданию на проектирование, новая система управления должна была отвечать таким критериям как:
- простое и удобное создание технологических программ;
- возможность изменения рабочей управляющей программы без вмешательства в саму систему;
- простое и недорогое обслуживание;
- повышенная надежность при сниженной стоимости, в сравнении с подобными релейными системами.
Последующие разработки в General Motors, Allen-Bradley и других компаниях привели к созданию системы управления на базе микроконтроллеров, которая анализировала входные сигналы от технологических датчиков и управляла электроприводами исполнительных устройств.
Термин ПЛК (Programmable Logic Controller, PLC) впоследствии был определен в стандартах EN 61131 (МЭК 61131). ПЛК – это унифицированная цифровая управляющая электронная система, специально разработанная для использования в производственных условиях. ПЛК постоянно контролирует состояние устройств ввода и принимает решения на основе пользовательской программы для управления состоянием выходных устройств.
Упрощенное представление состава и принципа действия ПЛК хорошо демонстрирует рисунок 1. Из него видно, что ПЛК имеет три основные секции:
- входную;
- выходную;
- центральную.
Рис. 1. Состав и принцип действия ПЛК
Имеется еще источник питания. Возможно подключение к ПЛК внешнего ПК для программирования и отладки.
Для передачи данных другому ПЛК или для подключения к сетям передачи данных PROFIBUS, Industrial Ethernet, AS-Interface в распределенных системах управления сегодня используются коммуникационные процессоры, такие как DP83867IR производства Texas Instruments (TI).
Языки программирования ПЛК
При создании системы управления технологического процесса, всегда существует проблема по взаимопониманию программиста и технологов. Технолог скажет «нам надо немного подсыпать, чуть подмешать, еще подсыпать и чуть нагреть». И мало когда следует ждать от технолога формализованного описания алгоритма. И получалось так, что программисту нужно долго вникать в тех. Процесс, потом писать программу. Зачастую при таком подходе программист остается единственным человеком, способным разобраться в своем творении, со всеми вытекающими отсюда последствиями. Такая ситуация породила стремлении создание технологических языков программирования, доступные инженерам и технологам и максимально упрощающим процесс программирования
За последнее десятилетие появилось несколько технологических языков. Более того, Международной Электротехнической Комиссией разработан стандарт МЭК-61131-3, концентрирующий все передовое в области языков программирования для систем автоматизации технологических процессов. Этот стандарт требует от различных изготовителей ПЛК предлагать команды, являющиеся одинаковыми и по внешнему виду, и по действию.
Стандарт специфицирует 5 языков программирования:
- Sequential Function Chart (SFC) – язык последовательных функциональных блоков;
- Function Block Diagram (FBD) – язык функциональных блоковых диаграмм;
- Ladder Diagrams (LАD) – язык релейных диаграмм;
- Statement List (STL) – язык структурированного текста, язык высокого уровня. Напоминает собой Паскаль
- Instruction List (IL) – язык инструкций., это типичный ассемблер с аккумулятором и переходам по метке.
Язык LAD или KOP (с немецкого Kontaktplan) похожи на электрические схемы релейной логики. Поэтому инженерам не знающим мудреных языков программирования, не составит труда написать программу. Язык FBD напоминает создание схем на логических элементах. В каждом из этих языков есть свои минусы и плюсы. Поэтому при выборе специалисты основываются в основном на личном опыте. Хотя большинство программных комплексов дают возможность переконвертировать уже написанную программу из одного языку в другой. Так как некоторые задачи изящно и просто решаются на одном языке, а на другом придется столкнуться с некоторыми трудностями
Наибольшее распространение в настоящее время получили языки LAD, STL и FBD.
Большинство фирм изготовители ПЛК традиционно имеют собственные фирменные наработки в области инструментального программного обеспечения. Например такие как «Concept» Schneider Electric, «Step 7» Siemens.
Требования, ограничения и проблемы при проектировании и производстве ПЛК
Таким образом, становится понятно, что ПЛК — это просто особым образом спроектированная цифровая система управления на основе процессоров разной мощности и с различной функциональной оснащенностью, в зависимости от предназначения. Такую систему можно также считать специализированным мини-компьютером. Причем она изначально ориентирована на эксплуатацию в цехах промышленных предприятий, где имеется множество источников электромагнитных помех, а температура может быть как положительной, так и отрицательной. Дополнительно к минимизации воздействия вышеуказанных факторов необходимо предусмотреть и защиту от агрессивной внешней среды, включающей пыль, брызги технологических жидкостей и паровоздушные взвеси. В таких случаях предусмотрена установка ПЛК в защитные шкафы или в удаленных помещениях. Отдельные модули могут размещаться на удалении до сотен метров от основного комплекта ПЛК и эксплуатироваться при экстремальных внешних температурах. Согласно МЭК 61131, для ПЛК с наружной установкой допустима температура 5…55°C. Для устанавливаемого в закрытых шкафах ПЛК необходимо обеспечить рабочий диапазон 5…40°C при относительной влажности 10…95% (без образования конденсата).
Тип ПЛК выбирается при проектировании системы управления и зависит от поставленных задач и условий производства. В отдельных случаях это может быть моноблочный ПЛК с ограниченными функциями, имеющий достаточное количество входов и выходов. В других условиях потребуются ПЛК с расширенными возможностями, позволяющими использовать распределенную конфигурацию с удаленными модулями входа/выхода и с удаленными пультами управления технологическим процессом.
Связь между удаленными блоками и основным ядром ПЛК осуществляется через помехозащищенные полевые шины по медным кабелям и оптическим линиям связи. В отдельных случаях, например, для связи с подвижными объектами, применяют беспроводные технологии, чаще всего это сети и каналы Wi-Fi. Для взаимодействия с другими ПЛК могут применяться как широко известные интерфейсы RS-232 и RS-485, так и более помехозащищенные промышленные варианты типа Profibus и CAN.
Кто такой этот ваш ПЛК
ПЛК (программируемый логический контроллер) – компьютер с особенностями развития. Главные требования к ПЛК: надёжность, низкая стоимость, быстрая реакция на входные воздействия, простота программирования. Данные требования привели к тому, что большинство производителей для своих ПЛК выпускают нативные среды исполнения и разработки. Но нельзя не отметить CodeSys – общеизвестный разработчик ПО для программирования ПЛК.
Несмотря на многообразие сред исполнения и разработки, программы пишутся на языках стандарта IEC 61131-3:
LD (Ladder diagram)
FBD (Function Block Diagram)
Текстовые языки программирования:
IL (Instruction list)
ST (Structured Text)
Реализации стандарта у разных производителей могут несущественно отличаться. Единый стандарт позволяет без особых проблем переносить код из одной среды программирования в другую.
Не как все
Самый "нормальный" язык из IEC 61131-3 – ST, который считается высокоуровневым языком программирования. Хочу обратить внимание, что под языком программирования подразумевается спецификация – правила написания кода. Время выполнения одного кода может меняться в зависимости от компилятора.
Самый важный момент, который стоит изучить, перед тем как писать код – это понимание принципов работы ПЛК. На рис. 1 изображена максимально упрощённая схема работы ПЛК.
Рисунок 1 -- Принцип работы ПЛК
Рисунок 1 -- Принцип работы ПЛК
Из рис. 1 нужно понять, что ваш код будет выполняться каждый цикл. Время цикла -- это время, которое нужно ПЛК для считывания входов, выполнения своих системных вызовов, выполнения вашей программы и формирования выходных значений. Обычно время цикла измеряется в микро- или миллисекундах.
Прежде чем отлаживать проект – его нужно написать. И тут можно столкнуться со многими проблемами.
Сперва придётся ознакомиться со структурными единицами проекта: program organization units (POUs). POU может быть представлен как программа, функциональный блок или функция. У каждого элемента свои особенности. Типы данных такие же как и в других ЯП. Объявление переменных происходит в отдельной области перед кодом программы.
Следующая проблема – это подключение библиотек. Разные ПЛК используют разные ОС, устройства и протоколы. GitHub на моё удивление не знает про существование ST. В связи с этим остаётся надеяться на наличие нужных вам библиотек у производителя ПЛК. В случае наличия нужной библиотеки вам в редких случаях придётся ещё заплатить за её использование.
Использовать систему контроля версий в большинстве случаев бессмысленно так как ваш проект будет представлять один бинарный файл – проследить изменения будет сложно, не говоря уже про слияние проектов. Иногда производители предусматривают нативные инструменты для сливания(сравнивания проектов).
Нормальные люди под frontend-ом понимают HTML, CSS, JS, у автоматизаторов это SCADA или HMI. Если кратко, то это ПО для разработки пользовательского интерфейса. Подавляющее число SCADA взаимодействуют с ПЛК посредством OPC-сервера.
При возникновении ошибок или если не знаете как реализовать ту или иную функцию, то Stack Overflow вам навряд ли поможет – скорее всего вам придётся "ковыряться" в документации производителя ПЛК.
ОВЕН ПЛК63/73
Итак, два брата акробата: ПЛК63 –обитатель DIN рейки и ПЛК73 – упрямый форточник (для монтажа вам придется вмонтировать его в дверцу щита).
При любой модификации вы получаете – 8 дискретных входов, 8 аналоговых входов. Для задач автоматизации вентиляционных установок такого количества датчиков вполне хватает.
ПЛК73 может похвастаться 2мя COM портами, если докупить дополнительную плату ПИ73. Вариаций 5шт. Лично я считаю самой интересной ПИ73-5 — RS-485 * 2шт. У ПЛК63 всегда есть RS485 на борту.
Еще у 73го 4 строчки на дисплее против 2х строчек на ПЛК63. Батарейку в часах и память обе модели имеют сразу (но помять для переменных меньше, чем у segnetics). Механизм сохранения в ПЗУ у этих ПЛК веселее, чем Segnetics. Как я понял, в ПЗУ данные записываются только на момент выключения питания. В остальное время данные пишутся в ОЗУ.
И у той и у другой модели куча вариаций выходов, которые называют ВУ (выходное устройство). Это могут быть реле, ЦАП тока или напряжения, оптотранзисторы или оптосиммисторы. Для производителя вариации создавать не сложно, т.к. основная плата одна и в нее могут быть впаяны разные модули ВУ.
Нужно больше релейных выходов? Не проблема — докупаем модуль МР1 (8 реле). Модуль только такой — ОВЕН больше вариаций нам не дает.
Для ПЛК63 – Реле плюс 5 шт ВУ, которые вы выбираете при покупке. Для ПЛК73 – 4 транзистора и 4 ВУ.
Вообще ПЛК73 спорная модель. Больше всего от чего бесятся люди – суровые жесткие кнопки. О да… Кнопки заставят неопытного человека испытывать весь спектр негативных эмоций. Ну и аналоговых выходов у ПЛК73 меньше.
Поработав с обеими моделями, я оставил фаворитом ПЛК63. Как-то серьёзнее он выглядит, и кнопки легче нажимаются. Но очень жаль, что тут только один RS485.
Хочется второй RS485, Карл!
Что же, если очень хочется, помните, что у вас есть RS232-debug – тот порт, через который мы льем прошивку. Правда придется докупить преобразователь RS232 to RS485.
Среда программирования
Codesys 2.3. Про нее уже много чего написано. И не один ОВЕН ее использует (это плюс). Есть много бибилиотек (обратите внимание на Oscat). Среда не наша, а немецкая (как удивительно, да?). Функционала много, языки и текстовые и графические (расширенный МЭК 61131-3). Детальнее читаем в книжках.
А что там с Modbus?
Slave. Есть из коробки, сразу дает читать входа, выхода, нажатие кнопок, часы. Адреса новым переменным придется придумывать отдельно. Читается все без групповых запросов.
Но если очень хочется, можно и групповыми, есть описания в руководстве. Однако адреса в руководстве даны с ошибками.
Не огорчайтесь — один добрый человек уже нашел правильные адреса. Можно найти на форуме ОВНА или тут (уже залил, чтоб не потерялось).
Режим Мастер. Тут уже сложнее. Вам придется применить такую страшную вещь как «навыки программирования» – берете библиотеку Modbus.lib (ну или сами сделаете) и пишите взаимодействие с внешними устройствами. Звучит страшновато, но в некоторой мере это даст больше гибкости. Например, можно написать работу с кучей типовых устройств (те же частотные преобразователи), а не создавать кучу однотипных переменных
- среда программирования;
- легко создать меню с уставками и настройками (Segnetics отдыхает)
- часы и память всегда «с собой»;
- возможность работать с нестандартными протоколами по COM порту;
- больше входов и выходов у ПЛК (в сравнении с Pixel);
- «из коробки» в меню ПЛК можно изменить типы датчиков, посмотреть их показания
- питание от 220В (наверно плюс, хотя придется предусматривать защиту по питанию в виде предохранителей и автоматов — уже был опыт с срабатыванием внутренней защиты по питанию).
- все модификации с питанием только от 220В;
- кнопки ПЛК73;
- модуль расширения только один;
- текстовый дисплей у ПЛК63 большой, но бестолковый — 2 x 16 символов;
- вход в меню с уставками одной кнопкой «Ввод». Мне лично не нравится, т.к. усложняет создание дополнительных меню;
- неудобно переносить меню из одной модели ПЛК в другую (тиражировать однотипные настройки). Приходится создавать заново. Раздражает.
- ПЛК63-РРРУУУ-L (8DI; 8AI; 3 реле; 3 AO 0-10В) — цена 14 514 р
- ПЛК73-ККККУУУУ-L (8DI; 8AI; 4 транзистора, 4 AO 0-10В) — цена 14 986 р
- МР1-Р (8 реле) — цена 3 953 р.
Из личной коллекции:
Читайте также: