Аналоговый ввод/вывод плк
Содержание
Выбор ПЛК
Выбор платформы автоматизации
Выбор платформы определяет и весь ваш будущий выбор.
ПЛК является первым пунктом в выборе платформы.
Правильный выбор платформы позволяет минимизировать расходы жизненного цикла системы управления:
- склад запасных частей и сервисное обслуживание
- обучение и сертификацию обслуживающего персонала
- приобретение лицензий на средства разработки прикладного ПО
- интеграцию (бесшовная интеграция)
- миграцию (переход со старого оборудования на новое)
- программы и сикдки для ключевых клиентов
Определение количества точек ввода-вывода
Желательно максимально точно определить общее количество точек ввода-вывода (с учётом резервирования), чтобы подобрать ПЛК соответствующей производительности,
или заранее предусмотреть модель контроллера с большим запасом по расширяемости.
- Дискретные входы (стандартные и быстродействующие импульсные)
- Аналоговые входы для подключения датчиков:
- токовых (0..20мА, 4..20мА)
- «напряженческих» (-10..+10В, 0..+10В)
- термопар и термосопротивлений (способ подключения: 2-х, 3-х или 4-х проводное подключение)
- Дискретные выходы (мокрый контакт)
- Релейные выходы (сухой контакт):
- тип нагрузки (резистивная, индуктивная, резистивно-индуктивная)
- величина тока (в Амперах)
- напряжение (~220В, =24В)
- Аналоговые выходы:
- токовые (0..20мА, 4..20мА)
- «напряженческие» (-10..+10В, 0..+10В)
- Интерфейсы для подключения угловых или линейных датчиков скорости, положения (энкодеров, резольверов, синусно-косинусных)
Определение архитектуры системы управления
- Составить список объектов автоматизации (производственных площадок, цехов, участков, технологических линий, подсистем)
- Определиться с количеством ПЛК: если объекты управляются независимо друг от друга и вводятся в эскплуатацию поочередно, то можно предусмотреть для них
отдельные контроллеры - В зависимости от объёма и скорости обмена данными, территориального расположения объектов управления необходимо выбрать тип и топологию промышленной сети,
требуемое коммуникационное оборудование - Для минимизации длины кабельных соединений используются станции распределённого ввода-вывода
- Расписать точки ввода вывода по контроллерам, шкафам локального и децентрализованного ввода-вывода, определить количество и типы модулей ввода-вывода с
учётом запаса по свободным каналам ввода-вывода - В зависимости от направления обмена данными между ПЛК необходимо правильно выбрать конфигурацию Master – Slave (Ведущий – Ведомый): контроллеры типа Slave
не могут обмениваться данными друг с другом
Масштабируемость
Масштабируемость – это возможность подобрать промышленный контроллер оптимальной конфигурации под конкретную задачу (не переплачивая за избыточную функциональность),
а при необходимости расширения – просто добавить недостающие модули без замены старых.
Выбор блоков питания
Контроллеры подключаются к стабилизированным импульсным источникам питания. Необходимо аккуратно подсчитать суммарный ток, потребляемый всеми модулями
контроллера и подобрать блок питания с соответствующей нагрузочной способностью.
Пример последствий неправильного выбора блока питания
Выходные модули установки приготовления клея для варки целлюлозы иногда отключались и испорченный клей приходилось выбрасывать тоннами.
К финскому проекту ни у кого претензий не возникало. Заменили все модули ввода-вывода — не помогло. Грешили на случайные помехи из-за плохого заземления.
Оказалось, что в определённых ситуациях (как-бы случайно) срабатывало такое «большое» количество входов и выходов,
что суммарный потребляемый ими ток на мгновение превышал допустимый выходной ток блока питания и модули вывода отключались.
Заменили блок питания на более мощный и проблема была решена.
- Очень полезен программный симулятор, с помощью которого можно отладить программу без подключения к ПЛК
- Удобно, если для программирования ПЛК можно использовать стандартный ноутбук и стандартный кабель (USB или Ethernet)
- Проще найти программиста, если контроллер поддерживает стандартные языки программирования IEC61131:
- LD (Ladder Diagram) – графический язык релейной логики
- IL (Instruction List) – список инструкций
- FBD (Function Block Diagram) – графический язык диаграмм логических блоков
- SFC (Sequential Function Chart) – графический язык диаграмм состояний
- ST (Structured Text) – текстовый язык программирования высокого уровня
Входы и выходы контроллера
Вход контроллера позволяет ему получать информацию от какого-то элемента. Ко входам подключаются все датчики всех типов и выключатели. Выключатель или датчик даёт сигнал о нажатии или о срабатывании, контроллер его получает, значит, для контроллера это вход.
Контроллер не посылает на датчики и выключатели никаких сигналов, только получает сигналы от них.
Выход контроллера позволяет контроллеру выдавать сигнал. То есть, управлять чем-то. Например, светом, шторами, приводами радиаторов, сиреной, дверным замком, розетками — чем угодно, подавая на него напряжение или замыкая контакты.
Подключение аналоговых входов
Но всё же немного об этом рассказать надо.
К аналоговым входам обычно подключают устройства двух типов:
- Активные датчики — датчики со стандартным аналоговым выходом (см. выше).
- Пассивные датчики.
С активными датчиками проще. Если выбранный вами микроконтроллер это позволяет, то выход такого датчика можно напрямую (или через простой резистивный делитель) подключить к аналоговому входу микроконтроллера.
С пассивными датчиками сложнее, потому что они пассивные )))
То есть на выходе таких датчиков не какого-либо активного сигнала (ни тока, ни напряжения, ни частоты).
Например, термопреобразователи сопротивления — довольно широко распространённые в автоматизации датчики температуры, изменяют своё сопротивление, как вы понимаете, в зависимости от температуры.
Однако микроконтроллер не умеет измерять сопротивление. И чтобы его этому научить, надо каким-то образом пассивный сигнал сделать активным. Один из простейших способов (но не самый лучший) показан на рисунке ниже:
Здесь мы видим простой резистивный делитель, одним звеном которого (на рисунке — нижним) является термосопротивление. Так как его сопротивление будет изменяться вместе с температурой, то и напряжение на аналоговом входе микроконтроллера тоже будет меняться. Эти изменения мы и можем зафиксировать и преобразовать уже программно в значение температуры (зная зависимость термосопротивления от температуры, и рассчитав напряжение на аналоговом входе).
Повторюсь — это не лучший способ. И не со всеми микроконтроллерами и не со всеми термосопротивлениями такой трюк можно проделать. Но зато это простой способ.
Для тех, кто ещё не понял, объясняю: таким нехитрым способом, как показано на рисунке, мы превратили пассивный датчик в активный. То есть преобразовали сопротивление в напряжение.
Ну а как преобразовать это напряжение в температуру — это уже отдельная история…
Принцип действия ПЛК
В отличие от микропроцессорной техники принцип действия ПЛК немного другой. Софт делится на две части. Первая часть представляет собой блок системных программ. Если провести аналогию с ПК, то системное ПО контроллера выступает в роли операционной системы, ответственной за работу низкоуровневых процессов. Системная часть ПО устанавливается в постоянной памяти в любой момент вступает в работу.
Когда ПЛК включается, то уже через мгновение запускается операционная система. Выполнение пользовательской программы циклическое. Цикл работы состоит из четырех фаз:
- Опрос входов;
- Выполнение команд;
- Установка значений для входов;
- Вспомогательные операции.
Первая фаза цикла полностью обеспечивается системным ПО управления ПЛК. Затем управление берет на себя прикладное ПО – созданный оператором алгоритм. По данной программе контроллер будет выполнять то, что от него хотят. По завершению выполнения этих команд работа опять передается системному ПО. Процесс составления управляющей прикладной программы ПЛК максимально упрощен – программист не должен задумываться, как управлять аппаратными возможностями. Оператор лишь должен указать, какой сигнал будет на входе и как нужно на него реагировать на выходе.
Реализация SPI
Существует два основных способа реализации связи через SPI на Arduino или любом микроконтроллере. Первый и более распространенный метод – это аппаратный контроллер SPI. Arduino поставляется с библиотекой SPI для взаимодействия с аппаратным контроллером SPI, поэтому мы будем использовать эту библиотеку в наших примерах. Другой метод – программный SPI или «побитовое управление». Побитовое управление включает в себя ручное определение всех аспектов связи через SPI программно и может быть реализовано на любом выводе, в то время как аппаратный SPI должен быть подключен к конкретным SPI выводам микроконтроллера. Программный SPI намного медленнее, чем аппаратный SPI, и может использовать на себя ценную память программ и ресурсы процессора. Однако, в некоторых случаях, когда требуется несколько шин SPI на одном микроконтроллере, или при отладке нового SPI интерфейса побитовое управление может быть очень полезным.
Когда у ведомого устройства вывод выбора ведомого устройства принимает состояние низкого логического уровня, значит, это ведомое устройство пытается отправить данные по шине SPI ведущему устройству или принять данные. Когда у ведомого устройства вывод выбора ведомого устройства находится в состоянии логической единицы, это ведомое устройство игнорирует ведущее устройство, что позволяет нескольким ведомым устройствам совместно использовать одни и те же линии данных и тактового сигнала. Для передачи данных от ведомого устройства к ведущему служит линия MISO (Master In Slave Out, вход ведущего – выход ведомого), иногда называемая SDI (Serial Data In, вход последовательных данных). Для передачи данных от ведущего устройства к периферии используется линия MOSI (Master Out Slave In, выход ведущего – вход ведомого), также известная как SDO (Serial Data Out, выход последовательных данных). И наконец, тактовые импульсы от ведущего устройства SPI идут по линии, обычно называемой SCK (Serial Clock, последовательный тактовый сигнал) или SDC (Serial Data Clock, тактовый сигнал последовательных данных). В документации на Arduino предпочтение отдается названиям MISO, MOSI и SCK, поэтому мы будем использовать их.
Описание модуля
Недостаточно купить стандартный микроконтроллер Ардуино и написать пару строчек кода, чтобы считаться инженером. Когда вам надоест играть с светодиодами и делать простые замочки с одним-двумя датчиками, необходимо будет перейти к более практичным и полезным в быту проектам.
Это могут быть как автоматизированные системы, теплица, так и полноценные электронные весы, которые можно сделать своими руками.
Давайте рассмотрим, что это вообще за покупной модуль и какие функции он выполняет в системе.
Под Ардуино существует десяток разнообразных модулей и чипов, способных расширить функционал МК. И условно их можно разделить на три группы:
- Датчики и подобные им модули. В этой группе находятся все чипы, которые предназначены для измерения любых параметров окружающей среды и трансформации их в электронный сигнал. Именно датчики позволяют измерять вес, засечь звуковые волны при хлопке или уловить удар о поверхность. Без них большая часть проектов и систем в современном мире просто не могли бы существовать. Так что на деле их можно сравнить с трансформаторами внешних сигналов, которые они переводят во внутренние.
- Чипы и микроконтроллеры, позволяющие расширить стандартные возможности Ардуино. Могут, например, добавить немного постоянной или оперативной памяти, позволить подключать различные источники питания параллельным соединением. В большей своей части влияют на программную часть системы, в то время, как датчики и переходники напрямую модифицируют аппаратную. Могут быть использованы в том случае, если нет желания спаивать несколько МК, но ресурсов для выполнения вычислений не хватает.
- Переходники и вспомогательные средства для усиления сигнала. Именно к ним относится hx711, который усиливает сигнал от датчика веса и переводит его в цифровой, который может воспринимать Ардуино. Между предыдущим и этим пунктом есть небольшая грань, которую зачастую стирают и совмещают их в один класс. Тем не менее, если «расширители» влияют именно на программную часть, то разнообразные переходники позволяют усовершенствовать аппаратную.
Встречаются и комбинированные разновидности, например, слот под флешку, для расширения постоянной памяти стандартным физическим носителем.
Итак, мы разобрались, что hx711 – это 24-х битный АЦП, необходимый для адаптации тензодатчиков и весов в Ардуино. Однако подходит он лишь для простых систем Ардуино, где необходимы точные показание с тех же тензодатчиков.
Ранее мы упоминали про возможность создания весов с его помощью, но на деле он необходим именно для снятия показаний о силе давления, что позволяет адаптировать данный чип и для других систем.
Так, с его помощью вы можете создать различные приборы для измерения силы сервоприводов в 3Д принтерах и специальные датчики, для тестирования продукции.
В коробке HX711 разобран, и состоит из штыревых разъемов, что не припаяны к плате. Соответственно, при необходимости, пользователь может, с помощью пайки, подсоединить их, а если нет, то никто не запрещает подсоединять связь напрямую через клеммы, для экономии пространства, занимаемого чипом в конструкции.
Далее чип подключается уже к тем самым датчикам через мостовую схему и к МК, являясь промежуточным звеном между ними. В данном случае мы рассматриваем подключение именно к Ардуино, но на деле подойдёт любой микроконтроллер, который вам будет удобнее программировать. Аппаратных ограничений в этом плане нет.
1Описание модуля GY-291 с акселерометром ADXL345
Акселерометр – это устройство, которое позволяет измерить динамическое и статическое ускорение по трём осям X, Y и Z. Благодаря статическому ускорению можно определить положение в пространстве (акселерометр как датчик поворота), а благодаря динамическому (движение или встряска) – направление ускорения.
Цифровой акселерометр ADXL345 – это 3-осевой акселерометр с высоким разрешением (13 бит) по осям с пределом до ±16g. Модуль обладает пониженным энергопотреблением и малыми размерами. Информационный обмен с модулем осуществляется по последовательным интерфейсам I2C или SPI (3- или 4-проводной).
Существует множество модулей для Arduino с акселерометром ADXL345. Модуль может выглядеть, например, так:
Внешний вид модуля GY-291 с цифровым акселерометром ADXL345
Показанный модуль имеет название GY-291. У модуля имеются следующие выводы:
Вывод модуля | Назначение | Подключать к выводу Arduino | |
---|---|---|---|
SPI | I2C | ||
GND | Земля | GND | GND |
VCC | Питание | +3,3V | +3,3V |
CS | Выбор ведомого интерфейса SPI | 10 | – |
INT1 | Выход прерывания 1 (*) | – | – |
INT2 | Выход прерывания 2 (*) | – | – |
SDO | Данные от ведомого | 12 | – |
SDA | Данные от мастера интерфейса SPIШина данных интерфейса I2C | 11 | A4 |
SCL | Шина тактирования | 13 | A5 |
(*) Работы с прерываниями ADXL345 касаться в этой статье не будем. Вот есть хорошая статья, в которой достаточно подробно описан вопрос работы с прерываниями.
В зависимости от выбранного интерфейса – SPI или I2C – подключение модуля будет соответствующим, как показано в таблице. Но в обоих случаях очень простым.
Рассмотрим структуру регистров микросхемы ADXL345:
Карта регистров цифрового акселерометра ADXL345
Кроме того, нас интересует регистр управления питанием, т.к. он отвечает за режим работы устройства:
Регистр управления питанием цифрового акселерометра ADXL345
Как видим, бит D3 (Measure) переключает акселерометр в режим измерения.
Функции
В данной статье мы будем использовать следующие связанные с цифровыми сигналами функции Arduino:
- Поскольку цифровые I/O выводы Arduino могут использоваться в качестве и входа, и выхода, вы должны сначала настроить выводы, которые вы собираетесь использовать для цифрового ввода/вывода, с помощью данной функции. – это номер вывода, который вы хотите настроить. Режим, , может принимать одно из трех значений: , или . Когда устанавливается в значение , к выводу подключается внутренний подтягивающий резистор 20 кОм, чтобы привести уровень на выводе к значению HIGH, если к нему ничего не подключено.
- Данная функция записывает цифровое значение в вывод. задает, в какой вывод на плате Arduino будет записано цифровое значение, а – это цифровое значение, в которое будет установлен вывод. может принимать только значения и .
- Данная функция считывает цифровое значение из вывода. – это номер цифрового I/O вывода, который вы собираетесь прочитать. Данная функция возвращает одной из двух значений: или
Выход ШИМ
ШИМ расшифровывается как «широтно-импульсная модуляция». В наших задачах он используется для регулирования яркости светодиодных лент. На один цвет ленты нужен один выход ШИМ. Контроллер EasyHomePLC имеет на борту 6 выходов ШИМ с мощностью каждого до 1,4 ампер. Если подключаемая лента требует больший ток (скорее всего, это так), то надо использовать усилитель сигнала ШИМ для светодиодной ленты, они бывают в отдельном корпусе или на DIN рейку.
Контроллер Beckhoff не имеет собственных ШИМ выходов, для регулировки яркости ленты в нём используется аналоговый выход 0-10 вольт и отдельный диммер для светодиодных лент.
Удаленное управление и мониторинг
Контроллеры имеют гибкие возможности для коммуникации с другим оборудованием. Эти возможности позволяют удаленно управлять устройствами, а также интегрировать ПЛК в системы автоматизированного управления и сбора данных.
Операторская панель или HIM – это устройство для визуализации. Она может быть встроенной или подключаться кабелем. Существует масса различных типов таких решений – от простых цифровых с кнопками до серьезных сенсорных с функцией оперативного мониторинга и коррекции параметров.
SCADA – это аббревиатура означает систему диспетчеризации и сбора данных. Это программные пакеты, которые позволяют разрабатывать приложения в режиме реального времени. Также пакет имеет инструменты сбора и обработки данных, архивирования и отображения или управления.
Веб-интерфейс позволяет получать доступ к ПЛК по локальным или глобальным сетям. В зависимости функциональности контроллер может не иметь операторской панели, но есть порт для подключения ПЛК к Ethernet. Тогда устройство можно настраивать удаленно по веб-интерфейсу или с ноутбука.
Более продвинутое решение реализовано в семействе ПЛК Siemens – встроенный веб-сервер. Он позволяет выполнять мониторинг, а также управлять системой. Сегодня в ПЛК реализованы функции подключения к облакам для осуществления удаленного контроля.
Производители ПЛК
Существует масса компаний, которые изготавливают промышленные контроллеры — это:
- Advantech,
- Delta,
- VIPA,
- Mitsubishi Electric,
- WAGO I/O,
- Phoenix Contact
- и многие другие.
Российские производители ПЛК :
- Контар,
- Овен,
- Segnetics,
- Fastwel,
- Текон.
На что обращать внимание при покупке
Все зависит от типа производства и задач, которые нужно будет решать, но существуют и универсальные решения. Важнейшие моменты:
- Универсальность среды программирования для разных платформ;
- Контроллеры с распределенным вводом/выводом;
- Устройства со встроенным вводом выводом;
- Связь с ПК;
- Дублирование ЦП и системы ввода/вывода;
- ПЛК с поддержкой веб-технологий;
- ПЛК с процессором типа PC;
- Переносные устройства для создания программ.
Самый главный пункт здесь – это первый пункт. Не стоит пытаться отыскать самое доступное оборудование на рынке – процесс переподготовки специалистов сведет к нулю всю возможную экономию. Стоить выбрать нескольких производителей и сотрудничать только с их продукций.
Другие специалисты утверждают, что самое главное это ПО. Различий в комфорте использования программных продуктов значительно больше, чем в железе ПЛК.
Выбор компонентов
Подробная схема модуля с указанием выбранных компонентов показана на рисунке 3.
Рис. 3. Подробная схема комбинированного аналогового выхода
ЦАП DAC8760
В состав DAC8760 входят ЦАП, операционные усилители A1, A2 и A3, стабилизаторы напряжения VREG и VREF, а также ключи, транзисторы и резисторы, необходимые для создания настраиваемого драйвера токовых и выходов по напряжению для промышленного применения. Полная нескорректированная погрешность DAC8760 не превосходит 0,1% диапазона регулирования и включает в себя погрешность смещения, погрешность усиления и погрешность интегральной нелинейности при 25°С. Полная погрешность не более 0,1% диапазона регулирования справедлива для различных типов выходных каскадов по току и по напряжению, и закладывает отличную основу для создания прецизионных аналоговых схем. Наибольшая дифференциальная нелинейность ±1 наименьший значимый бит обеспечивает абсолютно монотонную работу выходов по току, и напряжению.
Интегральная нелинейность ЦАП вносит погрешность всего 0,022% от максимального значения из диапазона регулирования для выходного напряжения VOUT и 0,024% для выходного тока IOUT. Встроенный источник обеспечивает для ЦАП точное опорное напряжение VREF с температурным дрейфом не более 10 мкВ/°С. Четырехпроводной коммуникационный SPI-порт позволяет управлять одновременно несколькими устройствами DAC8760, используя четырехканальный цифровой изолятор для создания модулей с несколькими аналоговыми выходами.
Операционный усилитель: OPA192
Буферный усилитель входит в схему обратной связи цепи выходного напряжения DAC8760. Любые погрешности по постоянному току этого усилителя сказываются на точности выходного напряжения всей схемы. Небольшое напряжение смещения, небольшой температурный дрифт этого напряжения, высокие коэффициенты подавления нестабильности питания и подавления синфазного сигнала способствуют тому, что итоговая погрешность, вносимая усилителем, будет как можно меньше. Для уменьшения влияния операционного усилителя на качество выходного токового сигнала IOUT применяют компоненты с небольшим входным током смещения, такие как операционные усилители на основе полевых транзисторов с управляющим p-n-переходом, полевых КМОП-транзисторов или биполярных транзисторов.
OPA192 – это прецизионный операционный усилитель на КМОП-транзисторах, напряжение смещения которого в большинстве случаев составляет всего 5 мкВ и не превосходит 25 мкВ. Температурный дрифт напряжения смещения OPA192 обычно равен около 0,2 мкВ/°C, но не превышает 0,5 мкВ/°C. Коэффициент подавления синфазного сигнала составляет 110 дБ, а коэффициент подавления нестабильного питания – 0,5 мкВ/В на всем диапазоне напряжений +4…+36 В. КМОП-транзисторы операционного усилителя вносят в схему токовую погрешность не более чем 20 пА. Ширина полосы пропускания усилителя составляет 10 МГц, скорость нарастания сигнала – 20 В/мкс, а время установления сигнала при его изменении на 0,01% не превышает 1 мкс. Один из выходов типа rail-to-rail может быть подключен к земле при работе в схеме с однополярным источником питания.
Цифровой изолятор ISO7641
DAC8760 имеет четыре входа для организации двунаправленной связи: SCLK, DIN, SDO и LATCH. Эти выходы должны бить изолированы от входов головного процессора с помощью цифрового изолятора. ISO7641 обеспечивает гальваническую развязку более 4 кВ и позволяет выполнять обмен данными на скорости до 25 МБ/с.
Пассивные компоненты
На печатной плате устройства предусмотрено место для установки внешнего резистора RSET. Если это место остается пустым – то не остается других пассивных компонентов, которые могут внести погрешность в работу схемы. Если же внешний резистор RSET используется, то он должен обладать высокой точностью и малым температурным коэффициентом.
В случае, когда аналоговый выход работает с большой емкостной нагрузкой, может потребоваться использование дополнительного компенсирующего конденсатора. Емкость этого компенсатора выбирается в соответствии с рекомендациями заводской документации на ЦАП DACx760. Все конденсаторы, используемые в схеме, должны быть рассчитаны на напряжение значительно большее, чем то, под которым они будут находиться в процессе работы, для того чтобы поддерживать их емкость на постоянном уровне во время прохождения сигнала. Рекомендуется использовать изолирующие конденсаторы типа C0G/NP0 (предпочтительно) или X7R.