Принцип работы и основы программирования плк. Принцип работы и основы программирования плк Самодельный плк

Уже не просто контроллер солнечных систем…

Включить, если T2>40C и выкл если T2<30.5

Хотя, основное назначение самодельного контроллера - работа в гелиосистемах, некоторые уже умудряются его применять и для твердотопливных котлов. В данной статье хочу рассказать о новых возможностях прошивки MEGA CtrlM, которую вы можете купить за $4.95, обратившись ко мне.

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

Мой контроллер стал более гибким. Теперь, по вашему желанию, вы можете запрограммировать логику работы 4-х или 8-и выходов. Если вы используете одну из стандартных схем, то выходы в ней уже заняты – как правило 1 – 4, и тогда вы можете программировать выходы 5, 6, 7, 8. А если вы выбрали схему Custom (пользовательская) тогда для настройки доступны все 8 выходов с первого по восьмой.

Как же программировать?

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

Перейдем к конкретным примерам. Допустим, вы хотите использовать контроллер не для солнечных коллекторов, а для поддержки постоянной температуры в доме!

Пусть у вас есть электрический или газовый котел, и два этажа с раздельным отоплением. Т.е для нагрева первого этажа надо включить выход P1 (это может быть электрический теплый пол, или насос который гоняет горячую воду по полу или радиаторам отопления), а для нагрева второго этажа надо включить выход P2. Тогда условия будут такие:

[+]P1: T1 19.8C On < 21.0C Off > 23.0C [+]P2: T2 19.5C On < 20.0C Off > 22.0C 19.8C и 19.5C - это просто текущее зачение датчик T1 и Т2 соответственно.

Первое условие включит выход P1 как только температура упадет ниже 21 градуса в помещении, и выключится когда комната или этаж нагреется до 23 градусов. Таким образом вы сможете избегать перегрева помещения – главный враг экономии. Ведь разумно экономить энергоресурсы (деньги) можно только одним способом – сжигать их ровно столько сколько надо, и ни каплей больше!

Для второго этажа все аналогично, выход P2 включится, когда на втором этаже температура упадет ниже 20 градусов, и выключится, когда этаж нагреется до 22 градусов. Обычно, на втором этаже (спальном) допускается меньшая температура, чем на первом.

Разумеется, что вы можете выставлять любую желаемую для вас температуру, но помните: устанавливайте комнатную температуру ровно такой, чтобы обеспечить чувство комфорта. Увеличение на каждый градус обозначает увеличение расхода энергии приблизительно на 6 %. При задании температуры учитывайте назначение помещения. Так, например, обычно не требуется нагревать до 20 °C спальню или редко используемые помещения. Vaillant

На схеме изображено как контроллер может поддерживать постоянную температуру в доме. Он снимает показания с датчиков Т1 и Т2 (первый и второй этаж) и при этом перекрывает или открывает батареи (радиаторы) с помощью релейных выходов P1, P2 которые подключены к сервоприводам.

Замечательно то, что если вместо выхода P1 и Р2 использовать P5 и P6 а вместо датчика T2, к примеру T5, то контроллер при этом сможет управлять солнечными коллекторами, и так же отслеживать температуру в вашем доме.

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

Рассмотрим более сложный пример, но очень похожий…

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

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

Как-бы то ни было, иногда возникает ситуация, что ПЛК выходят из строя и ремонт возможен только у производителя. Ведь простая замена ПЛК на точно такой же ничего не дает, поскольку отсутствует управляющая программа. Хорошо, если производитель в такой ситуации может оказать помощь. А если нет? Брать другой ПЛК и программировать его самостоятельно? Но если уж приходится самостоятельно программировать, то почему обязательно ПЛК? Не будет ли проще и дешевле запрограммировать систему на базе микроконтроллера? Ведь, как отмечалось выше, в ПЛК заложено много избыточных функций и вычислительных возможностей, за которые приходится платить.

Именно из соображений, изложенных выше, была разработана схема простого ПЛК для замены вышедшего из строя ПЛК KUAX667 на швейном автомате VS3005 - AMF Reece S 2000. Не будем останавливаться на описании данного швейного автомата, тем более, что рассматриваемая здесь схема повторно использовалась на другом станке в мебельном производстве. При разработке ПЛК ставилась задача создать схему максимально дешевую, из доступных деталей, с возможностью диагностики даже с учетом отсутствия дисплея. Также было принято решение отказаться от гальванической развязки входных цепей, поскольку датчиками служили кнопки, концевики и переключатели, осуществляющие простой механической контакт.

Схема устройства и принцип работы аналогичны построению большинства промышленных ПЛК. Есть центральный микроконтроллер и есть порты ввода-вывода.

За основу взят микроконтроллер фирмы PIC12F629. Этот микроконтроллер выбран исходя из доступности и дешевизны. Входа и выходы реализованы с помощью сдвиговых регистров. Логически они разбиты на две группы по 8 контактов. Передача данных происходит в последовательном виде. Протокол передачи данных идентичен протоколу SPI, однако он полностью реализован программно и на 16 бит. Цепи для входных данных и выходных данных сделаны раздельными. Это, на мой взгляд, облегчает понимание работы и упрощает контроль. Кроме того это позволило использовать ранее написанные модули для приема-передачи данных в сдвиговые регистры. Ну и все-равно эти выводы остались бы неиспользованными, так зачем пропадать добру:) . Входными элементами являются концевики, кнопки, переключатели с коммутацией на общий провод. Поэтому входа реализованы без использования оптопар. Конечно, это снижает надежность схемы. Но, как показала практика, ПЛК работает стабильно. При использовании регистров 155ИР9 или 555ИР9 подтягивающие резисторы к +5 В можно не устанавливать (именно этот вариант представлен на фото ниже). При использовании регистров 74HC165 наличие подтягивающих резисторов обязательно. Особо следует отметить вход 1.0. Этот вход реализован с использованием оптопары и расширителем импульсов на микросхеме 155ЛА3. В одном из станков датчиком вырабатывался импульс +24 Вольта и длительностью около 1 мксек. Поскольку реальная частота опроса входов составляла около 1 кГц, то был риск, что импульс будет пропущен. Для исключения этого в схему был введен расширитель импульсов, увеличивающий время импульса примерно до 0,1 сек. Время импульса определяется элементами C1, R4. Перестановкой джамперов на плате (на схеме джамперы не указаны, их можно отследить по печатной плате) возможна коммутация входа 1.0 минуя оптопару, минуя расширитель импульсов или минуя оптопару и расширитель импульсов. Благодаря встроенным в регистры триггерам, фиксирующим входные уровни по сигналу строба, исключена возможная неопределенность уровней логический "0" или "1". Это, а также последовательный опрос входных цепей микроконтроллером, позволило не учитывать явление "дребезга", характерное для механических датчиков. Исполнительными механизмами являются обмотки пневмоклапанов и реле, которые подсоединены к сдвиговым регистрам 74HC595 через микросхемы-драйвера ULN2803. Питание осуществляется от источника постоянного напряжения +24 Вольта, имеющегося в станке для питания обмоток реле и пневмоклапанов, через импульсный стабилизатор напряжения на LM2576 (микросхема в корпусе TO-263 для поверхностного монтажа, расположена со стороны фольги, фольга же служит и радиатором), включенной по типовой схеме.

Вся схема собрана на плате 100*130 мм. Рядом с каждой микросхемой по питанию стоит конденсатор, емкостью по 0,1 mkF (на схеме не показаны). Как уже выше отмечалось, в устройстве использовались микросхемы 555ИР9, не требующие подтягивающих резисторов. Тем не менее, для использования 74HC165, на плате предусмотрена возможность установки подтягивающих резисторов, которые могут быть от 1 до 10 кОм. В качестве подтягивающих резисторов хорошо использовать сборки сопротивлений типа 9A472J (неиспользуемые выводы просто обкусываются), которые широко применялись в компьютерах на базе 286-486 процессоров.

Программа для микроконтроллера написана в среде PIC Simulator IDE, которая использует диалект языка BASIC. Использование BASIC позволяет легко разрабатывать программы не особо погружаясь в архитектуру микроконтроллеров. Кроме того, так или иначе, с реализациями языка BASIC приходится сталкиваться начиная со школьной скамьи и у большинства непрофессиональных разработчиков он не вызывает почтительного опасения. Рассмотрим программу и остановимся на тех местах, где непосредственно происходит настройка на тот или иной станок.

Программа прилагается в полной версии для швейного автомата. Сначала идет секция описания переменных и символов. При переделке программы под другое оборудование неизменными будут строки с 7 по 11, здесь объявляются переменные для полученных/передаваемых данных и служебная переменная и с 18 по 28, относящиеся к описанию контактов для протокола приема/передачи данных. Далее в программе с 50-й по 96-ю строки идет проверка на включение режима "Тест" и реализация тестового режима. Режим "Тест" включается установкой перемычки между выводом GP2 (5-й вывод) и общей шиной (кнопка "Test" по схеме) до подачи питания на схему. При подаче питания микроконтроллер устанавливает вывод GP2 как вход (строка 54), включаем подтягивающие резисторы (стоки 64,65), производит опрос состояния вывода GP2 (строка 76). Если режим тестирования установлен, то после снятия перемычки начинается бесконечный цикл (стоки 81-95), в котором состояние выходов напрямую зависит от состояния входов. Таким образом последовательно замыкая входа мы можем проверить срабатывание исполнительных элементов, подсоединенных к выходам, т.е. произвести тестирование оборудования от датчиков до исполнительных механизмов.

При подаче питания без установленной перемычки микроконтроллер перейдет к участку программы, где запрограммирован непосредственно рабочий режим станка (в данной программе это строки 98-261). Эта часть программы оставлена для примера и, поскольку она привязана непосредственно к оборудованию, то особо ее рассматривать не будем. Остановимся только на общих принципах работы и подпрограммах приема-посылки данных. В простейшем случае при работе оборудования производится опрос входов (подпрограмма data_input, используемая в ней подпрограмма sinchro_input). Состояние входов в программе сохраняется в переменных data_in1 и data_in2. В зависимости от алгоритма работы оборудования в программе анализируется состояние входов, принимается решение об изменении состояния выходов и это решение записывается в данные data_out1 и data_out2. После этого производится вывод данных (подпрограмма data_out, используемая в ней подпрограмма sinchro_out). И так цикл повторяется до прекращения подачи питания. В случае необходимости возможна организация программы с использованием прерываний микроконтроллера. К примеру, это может понадобится при осуществлении операций на оборудовании, ограниченных по времени.

При программировании микроконтроллера необходимо установить слово конфигурации в &h31С4. Расшифровку можно посмотреть на рисунке ниже.

P.S. Этот абзац специально для критиков. Как уже выше отмечалось, программа писалась не "с нуля", а с использованием уже готовых наработок. Поэтому в программе много комментариев от предыдущих программ, в том числе имеются и комментарии, касательно использования прерываний по таймеру. Я специально не стал их убирать, поскольку считаю, что они могут помочь другим людям при модификации программы. Если же данную программу переписать заново, то наверняка можно достичь более оптимального кода и более высокой частоты опроса входных элементов. Как говориться "нет такой программы, которую нельзя сократить хотя бы на одну команду". Но даже в таком виде программа занимает менее 700 байт и станок, под управлением данной программы, работает стабильно.

Ну и напоследок фотографии собранной и установленной в станок платы.

В архиве:
1. PLC 12F629 - исходный файл и HEX файл.
2. Проект в .
3. Печатная плата в

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК PIC 8-бит

PIC12F629

1 В блокнот
U2, U3 Сдвиговый регистр

SN74HC595

2 В блокнот
U4, U5 Сдвиговый регистр

SN74HC165

2 В блокнот
U6 Вентиль

SN7400

1 В блокнот
U7 Оптопара

Программируемые логические контроллеры (ПЛК)

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

В современной промышленности существует большое количество различных систем и процессов, требующих автоматизации, но теперь такие системы редко проектируются из реле. Современные производственные процессы нуждаются в устройстве, которое запрограммировано на выполнение различных логических функций. В конце 1960-х годов американская компания «Bedford Associates» разработала компьютерное устройство, названное MODICON (Modular Digital Controller). Позже название устройства стало названием подразделения компании, спроектировавшей, сделавшей и продавшей его.

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

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

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

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

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

Шесть винтовых клемм, расположенных с левой стороны, обеспечивают подключение для входных устройств. Каждая клемма представляет свой входной канал (Х). Винтовая клемма («общее» подключение) расположенная в левом нижнем углу обычно подключается к L2 (нейтральная) источника тока напряжением 120 В переменного тока.

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

Выходные сигналы генерируются компьютерной схемотехникой ПЛК, активируя переключающее устройство (транзистор, тиристор или даже электромеханическое реле) и связывая клемму «Источник» (правый нижний угол) с любым помеченным буквой Y выходом. Клемма «Источник» обычно связывается с L1. Так же, как и каждый вход, каждый выход, находящий под напряжением, отмечается с помощью светодиода:

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

Основы программирования ПЛК

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

Рассмотрим следующую схему и программу ПЛК:

Когда кнопочный переключатель не задействован (находится в не нажатом состоянии), сигнал не посылается на вход Х1. В соответствие с программой, которая показывает «открытый» вход Х1, сигнал не будет посылаться и на выход Y1. Таким образом, выход Y1 останется обесточенным, а индикатор, подключенный к нему, погасшим.

Если кнопочный переключатель нажат, сигнал будет отправлен к входу Х1. Все контакты Х1 в программе примут активированное состояние, как будто они являются контактами реле, активированными посредством подачи напряжения катушке реле, названной Х1. В этом случае открытый контакт Х1 будет «закрыт» и отправит сигнал к катушке Y1. Когда катушка Y1 будет находиться под напряжением, выход Y1 осветится лампочкой, подключенной к нему.

Следует понимать, что контакт Х1 и катушка Y1 соединены с помощью проводов, а «сигнал», появляющийся на мониторе компьютера, виртуальный. Они не существуют как реальные электрические компоненты. Они присутствуют только в компьютерной программе - часть программного обеспечения - и всего лишь напоминают то, что происходит в схеме реле.

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

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

Решение такой задачи в реальных условиях заключается в том, что выключатель, «открытый» при нормальных условиях, заменяется на «закрытый». Программное ее решение - это изменение программы так, чтобы контакт Х1 при нормальных условиях был «закрыт», а не «открыт».

На следующем изображении вы увидите уже измененную программу, при не активизированном переключателе:

А здесь переключатель активизирован:

Одним из преимуществ реализации логического контроля в программном обеспечении, в отличие от контроля с помощью оборудования, является то, что входные сигналы могут быть использованы такое количество раз, какое потребуется. Например, рассмотрим схему и программу, разработанной для включения лампочки, если хотя бы два из трех переключателей активизированы одновременно:

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

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

Переключатель, подключенный к входу Х1, служит кнопкой «Старт», в то время как переключатель, подключенный к входу Х2 - кнопкой «Стоп». Другой контакт, названный Y1, подобно печати в контакте, позволяет контактору двигателя оставаться под напряжением, даже если отпустить кнопку «Старт». При этом вы можете увидеть, как контакт Х2, «закрытый» при нормальных условиях, появится в цветном блоке, показывая тем самым, что он находится в «закрытом» («электропроводящем») состоянии.

Если нажать кнопку «Старт», то по «закрытому» контакту Х1 пройдет ток ток и он отправит 120 В переменного токак к контактору двигателя. Параллельный контакт Y1 также «закроется», тем самым замкнув цепь:

Если мы теперь нажмем кнопку «Старт», контакт Х1 перейдет в «открытое» состояние, но двигатель будет продолжать работать, потому что замкнутый контакт Y1 все еще будет держать катушку под напряжением:

Чтобы остановить двигатель, нужно быстро нажать кнопку «Стоп», которая сообщит напряжение входу Х1 и «открытому» контакту, что приведет к прекращению подачи напряжения к катушке Y1:

Когда вы нажали кнопку «Стоп», вход Х1 остался без напряжения, вернув тем самым контакт Х1 в его нормальное «закрытое» состояние. Двигатель ни при каких условиях не станет работать снова, пока вы снова не нажмете кнопку «Старт», потому что печать в контакте Y1 была потеряна:

Очень важна отказоустойчивая модель устройств контроля ПЛК, так же, как и в устройствах контроля электромеханического реле. Нужно всегда учитывать влияние ошибочно «открытого» контакта на работу системы. Так, например, в нашем случае, если контакт Х2 будет ошибочно «открыт», то не будет никакой возможности остановить двигатель!

Решением этой проблемы является перепрограммирование контакта Х2 внутри ПЛК и фактическое нажатие кнопки «Стоп»:

Когда кнопка «Стоп» не нажата, вход ПЛК Х2 находится под напряжением, т.е. контакт Х2 «закрыт». Это позволяет двигателю начать работу, когда контакту Х1 сообщается ток, и продолжать работу, когда кнопка «Старт» отпущена. Когда вы нажимаете кнопку «Стоп», контакт Х2 переходит в «открытое» состояние и двигатель прекращает работу. Таким образом, вы можете увидеть, что функциональной разницы между этой и предыдущей моделью нет.

Тем не менее, если входной контакт Х2 был ошибочно «открыт», вход Х2 может быть остановлен нажатием кнопки «Стоп». В результате двигатель немедленно отключается. Эта модель безопаснее, чем предыдущая, где нажатие кнопки «Стоп» сделает невозможным остановку двигателя.

В дополнение к входам (Х) и выходам (Y) в ПЛК есть возможность использовать «внутренние контакты и катушки. Они используются так же, как и промежуточные реле, применяемые в стандартных релейных схемах.

Чтобы понять принцип работы «внутренних» схем и контактов, рассмотрим следующую схему и программу, разработанную по принципу трех входов логической функции AND:

В данной схеме, лампа горит, до тех пора пока какая-либо из кнопок не нажата. Для того чтобы выключить лампу следует нажать все три кнопки:

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

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

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

Перевод с английского - Юлия Сурта.