Главная » Статьи » Мои статьи

Выбор ПЛК

Введение

 
Программируемые Логические Контроллеры – по всей видимости, следующий этап для людей, которым не хватает возможностей Arduino.
 
В свое время было потрачено немало сил для выбора подходящих для того или иного случая вариантов реализации АСУ ТП и просто для понимания "куда бежать и на что смотреть”. Надеюсь, этот обзор кому-то поможет сделать выбор быстрее и с меньшей головной болью.
 
Оценка достоинств и недостатков в данном обзоре субъективна и принадлежит моей голове. Литературы или данных в интернете на данную тематику мне попадалось мало. Поэтому других оценок у меня нет.
 
Соответственно буду благодарен, за замеченные ошибки, неточности или дополнения. Тем более, что учитывая объемы перелопаченной информации, их вероятность стремится к 100%. На суть впрочем они сильно повлиять не должны.
 
Что вообще есть на рынке ПЛК (список не полный, но отталкиваться от чего-то все-таки необходимо):
  • Siemens – производитель ПЛК, среда разработки Simatic Step 7
  • GE (бывш. GE Fanuc) – производитель ПЛК, среда разработки Proficy ME
  • Schneider Еlectric – производитель ПЛК, среда разработки Concept, Unity Pro  
  • Mitsubishi Electric – производитель ПЛК, среда разработки MELSOFT GX Works2
  • Beckhoff – производитель ПЛК, среда разработки TwinCAT (потомок CoDeSys)
  • Allen Bradley – производитель ПЛК, среда разработки RSLogix 5000
  • ABB – производитель ПЛК, своей среды разработки нет использует CoDeSys
  • Omron – производитель ПЛК, среда разработки CX-One
  • Koyo (ПЛК DirectLogic) – производитель ПЛК, среда разработки DirectSOFT
  • ICP DAS – производитель ПЛК, своей среды разработки нет использует ISaGRAF
  • 3S-Smart Software Solutions GmbH – автор среды разработки ПО для ПЛК CoDeSys
  • ICS Triplex – автор среды разработки ПО для ПЛК ISaGRAF

Железо ПЛК

Характеристики основных серий у производителей данного направления не особо различаются, поэтому серьезно рассматривать железо смысла, не имеет. Стоит упомянуть разве что о 3 возможных типах его конфигурации:
 
1. С параллельной шиной – ПЛК с параллельной шиной, к которой подключаются модули ввода/вывода. Имеет 3 разновидности – шасси, базовую плату и крейт.
1.a Шасси – каждый модуль оснащен двумя разъемами шины с двух сторон, позволяющими с одной стороны подключить его к существующей системе, и с другой - подключить еще один аналогичный модуль. У модуля ЦПУ разъем по понятным причинам один. Примеры: VersaMax от GE Fanuc, S7-300 от Siemens, Modicon M340 от Schneider Electric, FX от Mitsubishi Electric.
 
1.b Базовая плата – имеется отдельная плата с фиксированным набором посадочных мест для включения модулей, в том числе модулей блока питания и ЦПУ. Например: серия RX3i от GE Fanuc, S7-400 от Siemens, DirectLogic DL405.
 
1.c Крейт – разновидность базовой платы, включающей в себя собственно шину данных, направляющие для модулей, иногда блоки питания и CPU. Примеры: RX7i от GE Fanuc, КАМАК, DirectLogic от DL05 до DL205, ICP DAS XP-8000.
 
2. С последовательной шиной – модули соединяются друг с другом и с модулем ЦПУ например по RS-485. По сути, не совсем ПЛК в привычном понимании, но и вычеркивать данный вариант, не совсем правильно, так как различие получается только в типе шины данных. Пример: ICP DAS 7000 (ADAM 4000).
 
3. Несколько шин одновременно – одноплатный компьютер с любым набором входов и выходов, программируемый посредством CoDeSys, ISaGRAF или аналогичной среды разработки. Примеры: формат PC-104, просто компьютер с платами типа PCI-1756 от Advantech, устройствами в COM-портах и так далее.
 
По сути, в каком именно конструктиве выполнен контроллер, разницы нет. А путаница зачастую довольно серьезная. Так, мне попадались и разные варианты названий, и разные варианты идентификации. Например, DirectLogic DL05 с одной стороны крейт с 1 модулем, а с другой - встречал применительно к нему понятие "моноблок”.
 
Проходит ли шина внутри модулей, в базовой плате или как-то еще, не принципиально. Хотя из опыта – более серьезное железо чаще проектируют как базовую плату или крейт. По всей видимости, для максимальной защиты шины данных.
 
Так как при проблеме в разъемах модулей, для типа 2.a – последующие модули линейки также не будут подключены. Ну и очевидно, что при обмене между модулями (тип 3) по последовательному RS-485 серьезного быстродействия достичь не удастся.

Программное обеспечение для программирования ПЛК

Всё ПО для контроллеров работает по одному принципу – создание в целевом ЦПУ исполняемого кода. В большинстве случаев не афишируется даже операционная система в ПЛК. Но у серьезных производителей всё достаточно стабильно, лично видел ПЛК проработавшие по 15 лет без каких-либо вмешательств.
 
При необходимости на ПЛК реализуется резервирование, вплоть до троирования 2oo3 с мажоритарным голосованием, штатными средствами железа и среды разработки. Программирование стандартное IEC 61131-3 и иногда IEC 61499. Функциональной разницы между языками IEC 61131-3 нет, на каком из пяти писать, не принципиально. Кому-то понятнее LD, кто-то предпочитает увеличивать информативность экрана лаконичными выражениями на ST.
 
IEC 61499 – стандарт для функциональных блоков ПЛК для поддержки параллельности и событийности выполнений блоков. На данный момент используется не столь часто, так как особой необходимости в нем нет для большинства задач.
 
Для приблизительной оценки сроков - на изучение достаточных для начала работы азов LD, у меня в свое время ушло что-то около недели.
 
Функциональная наполненность у всех сред разработки в целом достаточно близка. Везде есть работа с битами, словами, математика уровня калькулятора, логические функции, диагностика, обмен данными, ПИД-регулирование и тому подобное.
 
Соответственно основные отличия приходятся на интерфейс, наличие симулятора ПЛК, сравнение проектов и возможность "доработки напильником” на С++.
 
1. Интерфейсы попадались двух типов:
Многооконный, когда одна утилита служит для конфигурации аппаратуры, вторая позволяет работать с переменными, в третьей редактируется открытый блок и так далее (Step 7, ISaGRAF, CX-One).

image

Рисунок 1 (Step 7 - отдельные утилиты)
 
Однооконный, с одним исполняемым файлом, поделенный на зоны, в которых отображаются в зависимости от выбранной вкладки - коды, конфигурация аппаратуры и остальные параметры (Proficy ME, CoDeSys, DirectLogic, RSLogix 5000).
 

image

Рисунок 2 (Proficy ME - вкладки и управляемые ими поля)
 
На мой взгляд – однооконный вариант выигрывает отсутствием необходимости скакать между окнами. Хотя многооконный вариант тоже можно раскидать по рабочему столу аналогичным образом, но это уже на любителя. Да и кликать в кнопки управления окнами (закрыть, свернуть, поверх остальных окон) все равно придется.
 
Фактически IE с отдельным окном на каждый сайт, против Opera с вкладками.
 
2. Симулятор Наличие симулятора ПЛК, позволяющего отлаживаться без использования подключения к железу, есть у всех. Кроме GE Fanuc, за что ему минус.
 
3. Сравнение проектов У всех производителей, кажется есть, но у некоторых отдельными программными продуктами, за отдельные, зачастую немалые деньги. Хотя выкрутиться можно практически всегда. Иногда, например, приходилось копировать коды из всех блоков проекта в *.txt файлы и построчно сравнивать в Total Commander командой cm_CompareFilesByContent.
 
4. Программирование на С++ идет отдельным пунктом, в качестве "доработки напильником”. Используется в средах разработки для реализации своих драйверов и расширения возможностей как таковых.
 
В стандартных ПЛК использование этого языка если и проработано, то не лучшим образом. Что, в общем, понятно – он в какой-то степени ломает концепцию линейного программирования, и подвергает, таким образом, систему опасности. А стабильность и надежность – основная идея ПЛК.
 
В ПЛК на базе одноплатных компьютеров, со средой разработки типа ISaGRAF или CoDeSys, программирование на С++ соответственно развито куда лучше. Так как далеко не всегда имеются драйвера устройств ввода / вывода для используемой среды разработки. В отличие от стандартного ПЛК, комплектующегося модулями из списка. То есть с уже реализованными и спрятанными от программиста ПЛК драйверами этих модулей.

Отличия редакторов кода

Субъективно мне отметка клеток в LD точками симпатичнее, чем чисто белый фон. Необходимость тыкать в кнопку Ins для замены поля – не очень нравится. Но это все мелочи, к которым можно приспособиться. Ко всему привыкаешь, а принципиальных проблем не попадалось.

Отличия адресации памяти

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

 

1

2

3

4

5

6

7

Дискретный вход

%IX0.1

%I00001

%X1

%100001

%X1 

I:0.01

1791_8AC:I.Data.0

Дискретный выход

%QX0.1

%Q00001

%Y1

%000001

%Y1

Q:1.01 

1791_8AC:O.Data.0

Аналоговый вход

%IW0.1

%AI0001

%W1

%300001

%U3\G11 

I:2000

1756_IF8:I.Ch0Data

Аналоговый выход

%QW0.1

%AQ0001

%W2

%400001

%U4\G16 

Q:2010

1756_IF8:O.Ch0Data 

Память бит

 

%M00001

 

 

 

 

 

Память слов

 

%R00001

 

 

 

 

 
1 - Siemens (Step 7), CoDeSys, ISaGRAF
2 - GE Fanuc (Proficy)
3 - Koyo (DirectLogic)
4 - Sсhneider Electric (Concept)
5 - Mitsubishi Electric (MELSOFT GX Works2)
6 - Omron (CX-One)
7- Allen Bradley (RS Logix 5000)
 
4'- Sсhneider Electric (Unity Pro) %I (bit), %ID (double word), %IW (word), %IF (float), аналогично %Q и %M.
 
И так далее. Смотреть на такой разброд и шатание – довольно грустно. Хотя с другой стороны прогресс требует изучения всех вариантов развития, для отбора лучшего.

Некоторые нюансы программирования

Программа в ПЛК выполняется постоянно в цикле. Сначала бывает довольно сложно привыкнуть.
 
Соответственно, действие не обязательно завершать в одном цикле программы – можно перенести его в следующий цикл, например по флагу.
 
Про Breakpoint’ы постепенно забываешь.
 
Значение переменной, которое видишь, может оказаться другим. Видишь 1, но раз в секунду на один такт ПЛК (несколько миллисекунд, например) этой переменной присваивается 0. И единственное, чем это безобразие можно поймать – каким-либо оператором, срабатывающим при условии переменная = 0.
 
Таймер в невызываемом блоке продолжит держать последнее значение хоть до морковкиного заговенья. С этим побились в свое время – проверено на GE Fanuc, Siemens и кажется ISaGRAF, картина идентичная. Не особо желательны циклы и джампы как таковые, нарушающие концепцию линейного программирования.
 
Ими можно взвинтить время цикла настолько, что придётся увеличивать время WatchDog таймера. А в удачно реализованном "вечном цикле” некоторые ПЛК совсем перестают реагировать на внешние раздражители.
 
Забыв подключить обычный блок (законченный функциональный кусок программы в отдельном месте) – на некоторых платформах не получишь ни одного предупреждения. Он просто не будет работать, и догадаться можно только по явно несуразным значениям.
 
Памяти не так много. Лет 10 назад впихивались в 64 кб и меньше. Сейчас стало проще, но раскидываться ей все равно нежелательно.

Выводы

Для наглядности, выбор системы на основе полной автоматизации квартиры. В которую включаем все осветительные, нагревательные, водопроводные, температурные, влажности и прочие датчики, управление всеми кранами, лампами, обогревателями, в общем всё, что приходит в голову – допустим 100 входов и 100 выходов.
 
Которые впоследствии, например, идут через OPC на SCADA, установленные у жильцов. И жильцы, заходя под логинами, меняют в этой SCADA уставки ПЛК для своих квартир – открывать окно в 15:00 на 20 минут. Впрочем, это уже лирика.
 
Для систем до 500 входов / выходов (автоматизация нескольких квартир)
 
Основных вариантов мне видится три.
 
1. Связка одноплатный компьютер со средой CoDeSys / ISaGRAF или иным аналогом.
 
2. ПЛК с параллельной шиной:
GE Fanuc – VersaMax, VersaMax Micro.
Siemens – S7-200
Allen Bradley – MicroLogix
Schneider Electric – Modicon M340
Mitsubishi Electric – FX
ABB – AC500, AC500 eCO
Omron – CP1H Koyo
DirectLogic – DL05, DL06
 
3. Для разнесенной системы (каждые 20 метров по десятку кнопок) ПЛК с последовательной шиной: Можно взять ICP DAS 7000 + ISaGRAF и получить общую длину системы в теории до 1200 метров. Хотя тут свои нюансы - и без того небольшую скорость с увеличением расстояния придется еще уменьшать и прочее.
 
Для систем от 500 до 2000 входов / выходов (автоматизация подъезда)
 
Эти ПЛК и далее, уже не совсем даже PLC (Programmable Logic Controller), а так называемые PAC (Programmable Automation Controller).
 
GE Fanuc – RX3i
Siemens – S7-300
Allen Bradley – SLC 500, CompactLogix
Schneider Electric – Modicon Premium
Beckhoff – практически все
Omron – CJ1M, CJ1G-P, CJ2M, CJ2H
Koyo DirectLogic – DL205, DL405
 
Либо перекрываться несколькими ПЛК предыдущей серии.
 
Для систем от 2000 входов / выходов и выше (автоматизация дома)
 
Тут нужно смотреть в сторону самых серьезных серий ПЛК.
 
GE Fanuc – RX7i
Siemens – S7-400
Allen Bradley – PLC 5, ControlLogix
Schneider Electric – Modicon Quantum
Mitsubishi Electric – System Q
Omron – CS1G/H, CS1D
 
Либо опять-таки перекрываться несколькими ПЛК предыдущей серии.
 
В некоторых случаях ставить несколько ПЛК вместо одного, целесообразнее с точки зрения объемов логики. Если вся логика, к примеру, на ПИД-регуляторах – даже в случае небольшого количества входных и выходных сигналов имеет смысл либо брать следующую модель, либо подумать о нескольких ПЛК, если код бьется на законченные фрагменты, с минимумом обмена между ними.
 
Градация по числу входов /выходов разумеется более плавная и можно подобрать ПЛК максимально точно в соответствии с необходимостью. Хочу лишь напомнить про необходимость хотя-бы 10 процентного резерва. Локти слишком далеко от зубов.
 

Заключение

Хотелось бы выразить искреннюю благодарность Игорю Петрову за книгу о контроллерах, и извиниться за свое видение деления ПЛК на типы конструктивов. GE Fanuc какое-то время назад стали просто General Electric, но я к этому изменению всё никак не привыкну, и опасаюсь, что эта аббревиатура может восприниматься как то еще. Поэтому везде в тексте старое название.

 
А также поблагодарить автора сайта www.plc.ucoz.net Сергея Бабаджанова, за подсказки в части Unity Pro от Schneider Electric.
Категория: Мои статьи | Добавил: PM (22.10.2012)
Просмотров: 10483 | Теги: ABB, GE Fanuc, PLC, Beckhoff, Mitsubishi Electric, Allen Bradley, Schneider Еlectric, Siemens, ПЛК, OMRON | Рейтинг: 5.0/1
Всего комментариев: 0