plc scada что это
Я работаю в компании, которая занимается автоматизацией производственных процессов. Знаком не по наслышке с программируемыми логическими контроллерами (PLC), человеко-машинным интерфейсом (HMI) и SCADA (диспетчерское управление и сбор данных).
Далее я опишу то, что у меня получилось сделать. Исходный код проекта доступен по ссылке https://github.com/phmi/phmi.
Установка
Разработка проекта
Разработку проекта можно разделить на две фазы: конфигурирование сервера и разработку проекта клиента.
Конфигурирование сервера
Запустим PHmiConfigurator.exe. Появится следующее окно:
Нажмем на кнопку “New project”. Появится окно “New project”:
Введем параметры связи с PostgreSQL и желаемое название базы данных:
После нажатия на кнопку “Ok” новый проект будет создан:
Нажмем на кнопку “I/O devices”. В конфигураторе откроется вкладка “I/O devices”:
Добавим новое устройство ввода-вывода “IoDev” типа “Generic”. «Generic» — это устройство ввода вывода для отладочных целей. Либо оно используется, когда не нужно соединяться с реальным устройством. Оно поддерживает любые адреса тегов:
Нажмем на кнопку «Save» и закроем вкладку.
Откроем вкладку “Digital tags” и создадим новый цифровой тег.
Откроем вкладку “Numeric tags” и создадим новый аналоговый тег:
Поля описания, формата, единицы измерения, калибровочные границы необязательны и могут быть опущены.
Создадим новую категорию аварий:
Создадим новый тег аварий:
Создадим категорию трендов:
Создадим новый тег трендов:
Разработка проекта клиента
В конфигураторе нажмем на кнопку “Build client”:
Выберем путь к файлам, чтобы их создать.
«Namespace» должно совпадать с названием будущего проекта Visual Studio.
Нажмем на кнопку “Build”.
По указанному пути должны появиться файлы:
Запустим Microsoft Visual Studio и создадим новый проект WPF. Целевой фреймворк должен быть “.Net Framework 4.0” или выше:
Добавим ссылку к PHmiClient.dll:
Добавим файлы PHmi.cs и PHmiResources.resx, созданные заранее:
Кликнем двойным щелчком по PHmiResources.resx и поменяем “Access modifier” на Public:
Откроем MainWindow.xaml. Добавим кнотрол Root в корневой Grid.
Привяжем PHmi к DataContext Rootа. Для этого создадим новый объект PHmi в ресурсах окна.
Добавим папку «Pages» для страниц. Добавим туда UserControl под названием «HomePage».
Страницы должны реализовывать интерфейс IPage. Листинг HomePage.xaml.cs представлен ниже.
А вот разметка Xaml файла:
Мы добавили TextBlock для отображения значения тегов.
Привяжем тип домашней страницы к Root:
Запустим приложение и посмотрим, что получилось:
Значений тегов не видно. Это потому что не запущен PHmiRunner.exe. Нажмем кнопку “Run” в конфигураторе.
Теперь добавим на страницу элементы управления.
Если включить “Digital tag», возникнет авария.
Добавим на страницу тренд.
Задание языка окна
Для отображения строк в соответствии с региональными настройками (дата, время и прочее), необходимо изменить XmlLanguage в конструкторе окна:
Промышленное программирование, или Пара слов об АСУ ТП
Есть такая профессия — производство автоматизировать. Аббревиатура АСУ ТП означает «автоматизированная система управления технологическим процессом» — это система, состоящая из персонала и совокупности оборудования с программным обеспечением, использующихся для автоматизации функций этого самого персонала по управлению промышленными объектами: электростанциями, котельными, насосными, водоочистными сооружениями, пищевыми, химическими, металлургическими заводами, нефтегазовыми объектами и т.д. и т.п.
Фактически, каждый человек, живущий не в лесу и пользующийся благами цивилизации, использует результаты труда предприятий, на которых функционируют АСУ ТП.
Иногда на эту тему проскакивают статьи и на хабре. Обычно они не пользуются особой популярностью, но всё же я хочу написать несколько обзорных статей об АСУ ТП в надежде рассказать хабравчанам что-то интересное (а возможно, кому-то даже полезное) и привлечь на хабр больше своих коллег.
Сначала пара слов о себе. Я только начинаю свой жизненный путь в автоматизации, опыт работы без малого два года. За это время побывал на нескольких газовых месторождениях, сейчас работаю на нефтяном.
Поскольку область обширная, несмотря ни на что развивающаяся, местами противоречивая и спорная, буду стараться обобщать не в ущерб достоверности, но не могу избежать перекоса в свою область — то оборудование, софт и сферу, с которыми лично я сталкивался.
Итак, программно-технический комплекс АСУ ТП делится на три уровня: верхний (компьютеры), средний (контроллеры), нижний (полевое оборудование, датчики, исполнительные механизмы). Про нижний уровень рассказывать не буду — слишком уж это далеко от от тематики хабра, да и статья получится слишком большая.
Верхний уровень
Верхний уровень — это серверы и пользовательские ПК (у нас они называются АРМ — автоматизированное рабочее место). Сюда выводится состояние технологического процесса, и отсюда при необходимости оператором подаются команды на изменение его параметров. Для упрощения разработки создано большое количество SCADA-систем (от англ. supervisory control and data acquisition — диспетчерское управление и сбор данных). Это в некотором роде расширенный аналог IDE, в котором скомпилированная «программа» и выполняется.
Системы SCADA
Вообще, если отбросить академизм, то на предприятии для всех кроме асушников скада выглядит вот так:
А если совсем не повезёт, то вот так:
Подразумеваются два режима функционирования: режим разработки и режим выполнения (runtime). Не обязательно эти режимы взаимоисключающи: можно редактировать проект на одном АРМе, инженерном, заливать его, он обновится на пользовательских. Это очень важно — изменять проект без простоев и отключений, потому что технологический процесс прерывать нельзя, и операторы всегда должны иметь возможность его контролировать. В скаде создаются графические интерфейсы, настраиваются источники данных с полевых устройств, она отвечает за взаимодействие пользователя (оператора, диспетчера, технолога) с происходящим на производстве, а также за архивирование всех нужных данных в БД.
Архивирование — одна из обязательных функций, очень важно иметь возможность «вернуться назад во времени» для разбора полётов в случае чего-то непредвиденного либо для глобального анализа при медленных, длительных процессах. Например, недавно геологи попросили меня выгрузить табличкой данные по давлению нефти на скважинах за последний год.
Периодически скада складывает все собранные данные в БД. Их потом можно посмотреть в виде графиков (называем их трендами), а при необходимости, если оговорено в ТЗ на АСУТП, реализуется выгрузка в виде отчётов в эксель или ещё как-нибудь. Архивация сделана по-разному: в MS SQL; MS Access; в ту же MS SQL, но по своему хитрому алгоритму с дополнительной архивацией; а у кого-то вообще в свою собственную бинарную БД.
Особым пунктом в скадах идёт информирование оператора: текущие сообщения и аварийные. Они тоже обязательно архивируются. В общем виде сообщения делятся на текущие и важные (аварийные). Текущие прячут подальше, но журнал аварийных всегда выводится на экране оператора. К текстовым аварийным сообщениям привязываются звуковые, чтобы кто-нибудь не проспал ЧП 🙂
Рынок SCADA
Самыми распространёнными, по-моему, считаются скады производства Invensys Wonderware, Iconics, Siemens, Indusoft, AdAstra, Emerson, Rockwell Automation.
Я лично работал с виндовыми: Invensys Wonderware InTouch и более мощной System Platform, с Iconics Genesis32 — и с (пока ещё?) малоизвестной B&R APROL под SLES (формально, это не совсем скада, а покруче — из-под апрола программируются и сами контроллеры).
По поисковым запросам, например, SCADA, HMI можно посмотреть примеры интерфейсов и мнемосхем.
Внешний вид и юзабилити по приоритету, увы, находятся на последнем месте. Причём, это касается не только рантайма, но и разработки. Для разработки в каждой скаде существуют как минимум дефолтные библиотеки символов — от кнопок и прочих контролов до графических изображений насосов, труб, задвижек, ёмкостей. Здесь-то и могли бы умные разработчики SCADA-пакетов (не путать с нами, асушниками — разработчиками проектов в этих пакетах) добиться принципиального преимущества над конкурентами, сделав продуманные библиотеки, из которых бы даже самый далёкий от дизайна и юзабилити инженер при всём нежелании делал бы гуманные интерфейсы и мнемосхемы. К сожалению, сейчас эта сфера идёт по пути экстенсивного развития, по которому развивалась IT до недавнего времени — наращивание функционала, добавление плюшек, больше, выше, сильнее, harder, better, stronger, и о пользователях пока думают мало.
Средний уровень
Средний уровень — ПЛК, программируемые логические контроллеры. Здесь всё достаточно просто, чаще всего физически ПЛК состоят из отдельных модулей. Для программирования у каждого ПЛК есть своя среда разработки, иногда она объединена со средой для создания SCADA.
Состав ПЛК
Контроллер B&R серии X20
Зачем нужен блок питания — понятно. БП сделан отдельным именно модулем, а не устройством, чтобы гарантировать совместимость с данной линейкой ПЛК. Чаще всего входное напряжение у БП 220 В переменного тока, выходное — 24 В постоянного тока.
Процессорный модуль — это голова ПЛК. Внутри у него, само собой, ЦПУ, ОЗУ и ПЗУ, сервисный порт для прошивки и, возможно, коммуникационный порт (ethernet, RS232/422/485, Profibus, etc). Иногда коммуникационный порт используется и как сервисный. Иногда на модуле есть переключатель (у Allen Bradley ещё круче — там натуральный ключ с замочной скважиной) для перевода ПЛК в различные режимы работы. Отдельной кнопки включения/выключения нет, в лучшем случае — тот переключатель, иначе, если есть питание — ПЛК запускается, а выключается и перезагружается «по-варварски» отключением питания.
Контроллер Allen Bradley серии CompactLogix
Дискретные и аналоговые модули обрабатывают соответствующие сигналы. Входные модули принимают эти сигналы с поля, выходные — формируют их.
Дискретный сигнал — это обычно напряжение цепи 24 вольта. Есть 24 — это «1», нет — «0». Бывают модули на 220В, есть модули с проверкой целостности цепи. Дискретные сигналы, приходящие с поля, могут информировать, например, о состоянии насоса включен/выключен. Управляющие дискретные сигналы могут запускать либо останавливать этот насос. Оптимизация здесь не оправдана, поэтому на запуск будет отдельная цепь, на останов — отдельная.
Модули I/O одного типа могут быть объединены: например, один модуль с 16 дискретными входами и 16 дискретными выходами.
Аналоговые входные сигналы — это приходят показания с датчиков. Здесь чаще всего используется токовая петля 4-20 мА, в соотетствие которой ставятся пределы измерения датчика. Начинается от 4 мА для диагностирования обрыва цепи (если меньше 4 мА, значит где-то что-то не в порядке с проводкой).
Рассмотрим на примере уровня жидкости в резервуаре. Стоит уровнемер, он измеряет уровень от 0 до 2 метров. Тогда: уровень 0 метров — это 4 мА, уровень 2 метра — это 20 мА. Промежуточные значения калибруются по ситуации, не всегда 1 метр соответствует 4+(20-4)/2=12 мА, может быть небольшая погрешность, уровень в 1 метр может быть какие-нибудь 12,7553 мА.
Аналоговые выходные — то же, только на управление. Не встречал чтобы использовалось, т.к. всегда существуют наводки. В измерении это допустимая погрешность, в управлении — нет. Да и неудобно это. Вместо них используется цифровая передача данных по различным протоколам через коммуникационные модули.
Температурные модули замеряют сопротивление в цепи либо термо-ЭДС. Если на них подключаются термометры сопротивления — при нагревании металла его сопротивление, по законам физики, повышается, соответственно определяется температура. Если подключается термопара (два спаянных проводника из разных металлов, при нагревании стыка возникает разность потенциалов между другими концами), замеряется напряжение.
Интерфейсные (или коммуникационные) модули предоставляют нам порты под RJ45, DB9, DB15, просто клеммники или что ещё бог производителю на душу положит. Помимо реализации непосредственно интерфейса (физического разъёма под коннектор, физического уровня модели OSI) они также реализуют протокол обмена через этот разъём.
Протоколы и интерфейсы
Протоколов напридумывали и используют кучу: ModBus (RTU, TCP, ASCII), Profibus, Profinet, CAN, HART, DF1, DH485 и т.д. Некоторые особо хитрые производители реализуют свои протоколы поверх общепринятых.
Я достаточно тесно знаком с интерфейсами RS232/485 и протоколами Modbus. RS232 это всем знакомый COM-порт, с тремя основными линиями: Tx (transmit, передача), Rx (recieve, получение) и GND (ground, земля). RS485 это асинхронный полудуплексный последовательный интерфейс по 2 проводам (совмещённые Tx/Rx+ и Tx/Rx-) или 4 проводам (отдельно Tx+, Tx-, Rx+, Rx-) с разностью потенциалов на каждой паре от 2 до 10 вольт.
А модбас это в общем-то нехитрая штука, с проверкой целостности пакета по чексумме, подтверждением доставки и корректности запроса — или ответом, почему запрос неверен. В сети модбас есть два вида устройств: master — инициирует обмен; slave — выполняет запросы мастера. Пакет от мастера расходится ко всем слейвам, которые сравнивают адрес назначения со своим, если сходится, то смотрят следующие два байта — это команда работы с регистрами памяти — чтение/запись (за исключением нескольких редко используемых служебных команд), потом байты адреса и непосредственно данных, в конце чексумма. Достаточно подробно и понятно расписано на википедии.
Программная начинка
Первое, что нужно сказать, программа в ПЛК выполняется циклически с определённой частотой. Возможности зависят от контроллера, обычно это где-то 20, 50, 250 мс, 1, 2, 3, 4, 5 с. Естественно, это не гарантирует выполнение кода именно за такой промежуток времени, нельзя большие программы пихать в цикл 20 мс, к началу следующего цикла предыдущий должен быть завершён.
Второе, это языки программирования. По идее программируются ПЛК на языках, определённых стандартом МЭК61131:
Это «по идее». Но, например, Siemens придерживается своего наименования языков, а у B&R есть возможность писать на ANSI C.
Самые используемые контроллеры, безоговорочно, у Siemens и Allen Bradley (последним, к слову, принадлежит Rockwell Automation со своей линейкой SCADA-пакетов RSView). За ними по пятам идут Schneider Electric; ОВЕН; General Electric; AutomationDirect; ICP DAS; Advantech; Mitsubishi Electric; B&R.
Что такое SCADA
Из этой статьи вы узнаете:
SCADA в нескольких простых словах и примерах
Система SCADA позволяет пользователю управлять производственным процессом, задавая параметры с панели управления, позволяет обнаруживать тревоги и информирует о них операторов, благодаря чему можно быстро реагировать на ошибки и нарушения. Более того, SCADA архивирует данные производственного процесса.
Место SCADA в производственном процессе
ПЛК выполняет операции управления в соответствии с программой на основе входных данных, т.е. данных, полученных от измерительных и исполнительных устройств. Затем он отправляет данные в систему SCADA, где они обрабатываются и архивируются.
На их основе создается визуализация, и с уровня SCADA оператор может не только наблюдать за состоянием производственного процесса, значениями конкретных выходов и аварийных сигналов, но также может устанавливать параметры процесса, выключать / включать процесс.
Чем SCADA отличается от HMI?
Функции и роли SCADA (диспетчерский контроль и сбор данных) и HMI (человеко-машинный интерфейс) могут показаться очень похожими. Тем не менее, они показывают различия как с точки зрения своих задач, так и с точки зрения применения.
SCADA и HMI различаются в основном уровнем развития и объемом работ. Панели HMI позволяют отображать данные от машин и настраивать рабочие параметры. Они представляют собой интерфейс между устройством и оператором.
HMI является важным компонентом системы SCADA, поскольку он используется для взаимодействия пользователя с оборудованием и управления всей системой. Без HMI было бы невозможно воспользоваться многими полезными функциями систем SCADA. С другой стороны, именно SCADA-система обеспечивает реальную функциональность.
В чем разница между SCADA и HMI:
Где можно использовать систему SCADA?
При принятии решения о внедрении SCADA главным критерием является не область, в которой она будет работать, а объем и потребности пользователя. SCADA окажется полезной везде, где необходимы сбор данных, наблюдение, оповещение и управление процессами.
Пользователь должен сначала спросить себя, настолько ли прост процесс, который он хочет контролировать, чтобы его можно было визуализировать и контролировать с помощью HMI, или ему нужна расширенная система визуализации и управления SCADA.
Преимущества использования программного обеспечения SCADA
Использование программного обеспечения SCADA дает компаниям ряд преимуществ:
Простота проектирования: системы SCADA предоставляют простые в использовании инструменты, мастера, графические шаблоны и другие предварительно настроенные элементы, чтобы неопытные инженеры могли быстро создавать проекты автоматизации, а также устанавливать и изменять параметры. Кроме того, можно легко поддерживать и расширять существующие приложения по мере необходимости. Возможность автоматизации процесса проектирования позволяет пользователям, в частности системным интеграторам и производителям оригинального оборудования (OEM), создавать сложные проекты с гораздо большей эффективностью и точностью.
Улучшенное управление данными: высокопроизводительная система SCADA упрощает сбор, управление, доступ и анализ рабочих данных. Он может включать автоматическую регистрацию данных и быть основным местом хранения. Кроме того, при необходимости он может передавать данные в другие системы, такие как MES и ERP. Для этой цели SCADA включает широкий спектр драйверов и открытых интерфейсов.
Большая прозрачность: одним из основных преимуществ программного обеспечения SCADA является большая прозрачность процесса. Программное обеспечение предоставляет информацию о выполняемых операциях и позволяет их удобно просматривать через HMI в режиме реального времени. Кроме того, программное обеспечение SCADA может помочь создавать отчеты и анализировать данные.
Повышенное удобство использования: cистемы SCADA позволяют работникам управлять оборудованием быстрее, проще и безопаснее через HMI. Вместо отдельного ручного наблюдения за каждым устройством, используемым в процессе, сотрудники могут управлять ими удаленно, а также управлять множеством устройств одновременно из одного места. Руководители, даже физически отсутствующие на предприятии, также получают эти возможности.
Меньшее время простоя: система SCADA может обнаруживать неисправности на раннем этапе и отправлять мгновенные предупреждения ответственному персоналу. Благодаря упреждающему анализу система SCADA может информировать пользователя о потенциальных проблемах с машиной до того, как произойдет сбой и возникнут серьезные проблемы. Эти функции помогают повысить общую эффективность оборудования и сократить время и затраты, связанные с устранением неполадок и обслуживанием производственной инфраструктуры.
Унифицированная платформа: хотя это не относится ко всем системам SCADA, некоторые из них позволя ю т управлять всеми аппаратными компонентами и процессами с единой унифицированной платформы, что значительно снижает операционную сложность и облегчает повседневную работу. Все данные также доступны на одной платформе, что дает полную видимость всех операций и позволяет лучше использовать данные. Все пользователи, работающие локально и удаленно, получают обновления в режиме реального времени, поэтому вся команда всегда имеет одни и те же данные.
Посмотрите, какие решения используются в новейших системах SCADA крупнейшими мировыми производителями:
SCADA
Из Википедии — свободной энциклопедии
SCADA (аббр. от англ. Supervisory Control And Data Acquisition — диспетчерское управление и сбор данных) — программный пакет, предназначенный для разработки или обеспечения работы в реальном времени систем сбора, обработки, отображения и архивирования информации об объекте мониторинга или управления. SCADA может являться частью АСУ ТП, АСКУЭ, системы экологического мониторинга, научного эксперимента, автоматизации здания и т. д. SCADA-системы используются во всех отраслях хозяйства, где требуется обеспечивать операторский контроль за технологическими процессами в реальном времени. Данное программное обеспечение устанавливается на компьютеры и, для связи с объектом, использует драйверы ввода-вывода или OPC/DDE серверы. Программный код может быть как написан на одном из языков программирования, так и сгенерирован в среде проектирования.
Иногда SCADA-системы комплектуются дополнительным ПО для программирования промышленных контроллеров. Такие SCADA-системы называются интегрированными и к ним добавляют термин SoftLogic.
Значение термина SCADA претерпело изменения вместе с развитием технологий автоматизации и управления технологическими процессами. В 80-е годы под SCADA-системами чаще понимали программно-аппаратные комплексы сбора данных в реальном времени. С 90-х годов термин SCADA больше используется для обозначения только программной части человеко-машинного интерфейса АСУ ТП.