Платы старого и нового контроллера
Начнём с того, что во всём виноват пар. Первые заводы были незамысловатыми: вода или ветер вращали колёса, они передавали движение на кузнечные меха, пилу, молот, жернова или пресс для масла. Если ветра или воды не было, то часто можно было запустить тот же процесс с ослика. А вот с появлением паровых машин появились изобретатели, которые стали пытаться прикручивать какую-то базовую автоматизацию. Жидкостные компьютеры мы сейчас пропустим и сразу перейдём к электричеству. Электричество в районе 60-х дало возможность делать логические схемы: сначала — на лампах, а потом куда более массово в районе 70-х — на транзисторах.
АСУТП на водонасосной станции может выглядеть как четыре поплавка, которые дают сигналы в реле. Упрощённую схему такой АСУТП вы можете наблюдать у себя в бачке унитаза, кстати. Более сложная схема подразумевает, что есть куча датчиков, они отдают свои данные в контроллер, который делает расчёты и сопоставляет разные показания, умеет что-то писать в память и читать разные рецепты, а на выходе управляет сервомоторами и другими штуками плюс сообщает данные соседним станкам.
Всё, конечно, чуть сложнее, но теперь вы уже разбираетесь в АСУТП.
Сейчас поговорим про такие детали, как операционные системы реального времени, которые нужны, чтобы всё это работало правильно.
Классическая схема автоматизации
- Датчики сообщают данные о текущем состоянии устройств и статусах. Датчики — это всё, включая измерительные приборы, телеметрию узлов и так далее. Иногда это встроенная часть оборудования, а иногда нужно довешивать их при монтаже.
Индуктивный датчик
- Логика: обычно это контроллер. Старый контроллер похож на микросхему площадью до одного квадратного метра, новый — на шкаф с какой-нибудь промышленной материнской платой и процессором в корпусе без дырок (чтобы не засасывало пыль), но большим количеством меди (чтобы отводить тепло). Контроллер смотрит на показания датчиков и управляющие телеграммы, отдавая команды на актуаторы.
Контроллер в шкафу
- Актуаторы: разные сервомоторы, преобразователи частоты и другие механизмы. Это то, чем контроллер может управлять, чтобы поменять конфигурацию станка.
- Интерфейс: в самом простом случае это железный пульт оператора с лампочкой и кнопкой, в более трудных — это интеграция с чем-то более сложным. Чаще всего — со вторым уровнем автоматизации (тоже частью АСУТП), где есть расширенная логика и куда можно загрузить большое задание. Как я уже говорил, для насосной станции может быть достаточно поплавков и программируемого реле, управляющего задвижкой или напряжением, подаваемым на насос. А вот для клети прокатного стана, где металл раскатывается в лист шириной пять метров, нужно иметь под тысячу параметров. Там есть система управления подающими рольгангами, выдающими рольгангами, гидравликой, модель для расчёта механической деформации листа, модель нагрева заготовки во время прокатки, база с рецептами, уставки для моделей и так далее.
Всё это не может работать на обычных операционных системах, потому что нужны очень быстрая скорость реакции (около 1 мс) и гарантированный ответ от вычислительных компонентов в течение определённого срока. У нас — WindRiver VxWorks. Её архитектура предполагает ответ нескольких «спящих» обработчиков в гарантированный срок, то есть она вся заточена под гарантированный ответ на непредсказуемую ситуацию в предсказуемое время. Относительно классических систем у неё полностью переписано выделение ресурсов. Такая же ОС использовалась на марсоходе «Куриосити», если что.
ОС реального времени есть не везде: где-то контроллер может работать на более привычной, хоть и очень кастомной nix-сборке.
Первый уровень — уровень контроллера — обеспечивает выполнение достаточно простых программ, но без остановок. Архитектурно это одна запущенная задача, которая состоит из бесконечного цикла и кучи IF’ок в теле. Дальше в зависимости от состояния датчиков и телеграммы выбирается один из IF’ов, исполняется, после завершения исполнения — добро пожаловать в начало цикла! Если датчики сваливаются в ошибку или если текущей задачи нет — контроллер останавливает работу станка.
Кстати, на случай разваливания промышленной сети обработка исключений обычно делается остановкой станка в безопасный режим, чтобы он не продолжал сверлить дыру к центру Земли, например.
Контроллер связан с датчиками. Датчики бывают очень простыми вроде пирометра или очень сложными вроде какого-то прибора точных измерений. Тот же пирометр постоянно передаёт температуру, его достаточно просто опросить, например, получить от него напряжение на входящей линии. А вот разные хитрые датчики уже требуют особенных протоколов соединения, но принципиально это всё тот же опрос порта.
Некоторые датчики передают не прямую информацию о техпроцессе, а косвенную. Например, пирометр позволяет догадаться, когда под ним проезжает горячая заготовка, но греется он заранее, когда она только на подходе. И если не знать скорости вращения валков или рольганга, то можно и не понять, где она, поэтому используются разные коррекции и расчёты.
Большая часть сложных задач вынесена на второй уровень автоматизации. Обычно это уже полноценный компьютер, управляющий контроллером. Он говорит ему, что делать, и контроллер делает. Он собирает с контроллера (и часто с соседних контроллеров) данные, делает сложные расчёты, у него есть логика, триггеры, большая база данных, большой объём памяти (на контроллере — редко больше 16 Мб), например, там может быть софт, который отслеживает совокупности параметров, чтобы понять, что устройство отклонилось от стандартных режимов. Там же может копиться информация для ремонта. Он же может отдавать данные в разные системы вроде шины АСУТП или вообще складывать «сырые» данные нашим сатанистам в их хранилки.
Второй уровень способен принять задачу условно на сутки: «Точите 8 деталей так, потом 5 деталей — так, потом 11 деталей — так, потом, пока не сработает вот этот датчик, — вот так». Эта задача ставится из MES-системы (третьего уровня автоматизации), где формируются суточные задания.
То есть:
- MES говорит, что делать на горизонте от минут до часов.
- Второй уровень расписывает это на задачи для контроллера и отправляет на него телеграммы.
- Контроллер получает телеграммы вроде: «Подними штангу на 12 сантиметров», и просто делает, что ему говорят.
- Контроллер собирает данные с датчиков, обрабатывает сам, отдаёт их на второй уровень.
- На втором уровне корректируется план действий дальше или подаётся следующая телеграмма контроллеру.
- Второй уровень докладывает в MES что-то вроде: «Заготовка такая-то готова с такими-то параметрами», а также сваливает данные телеметрии в системы ремонта и т. п.
Если отвалится MES, то цех может работать до конца суточного задания. А если развалится связка между первым и вторым уровнями, то цех может работать вручную: вместо второго уровня встанут операторы-люди. А вот если выйдет из строя контроллер, то ничего работать до его замены не будет, потому что даже оператор управляет через него.
Это, кстати, значит, что на станки с буквами Н — «Непрерывно» — ставят по два контроллера, чтобы если один вылетел, то второй подхватил бы работу.
Сеть между устройствами — обычно на базе Ethernet. Если что-то находится в зоне сильных помех, то это ошиблись при проектировании цеха, потому что источники помех обычно или экранируются, или же разносятся с коммутацией и нашими узлами. Наш кабель нельзя тащить в том же лотке, что и силовой. Но если выхода нет, то у нас есть всякие экранированные штуки, которые дороже обычных раз в 10. Если что-то движется, и движется часто, к тому же оно так же часто перетирает кабель, то можно поставить промышленную систему беспроводной связи. Это не Wi-Fi и не LORA — это хардкорные решения вроде троллея, представляющего собой щелевую антенну, и антенны на тележке в 15–40 сантиметрах, которая едет мимо этого излучающего кабеля. В АСУТП мы вообще ни разу не доверяем беспроводным соединениям больше полуметра в условиях завода. А ещё можно проводить сеть по железнодорожным рельсам, потому что толщина рельса гарантирует скорость и надёжность соединения. На самом деле этот стандарт достался нам от железных дорог: там сигнализация передаётся током прямо на рельс, а поезд считывает сигнал индукционной катушкой спереди.
Как это выглядит на практике
Стоит станок. Обычно внутри него — только датчики и выводы от них. Вся эта паутина подходит к шкафу, который стоит рядом, там — контроллер, привода, распределённая периферия. Иногда там же — пульт или тач-панель в какой-нибудь защищённой оболочке.
Дальше стоит помещение со шкафами — контроллерная. Там — контроллеры без периферии.
Ещё дальше — серверная со своим воздухом вдали от производства, в ней стоят уже полноценные серверы, которые считают 2-й уровень АСУТП — тот, где сменное задание превращается в команды для контроллеров.
Есть диспетчерская, где видно телеметрию и откуда можно поуправлять станком. Есть рабочие места — у нас это станции человеко-машинного интерфейса. От пульта до терминала с компьютером с привычным экраном — либо защищённый, либо офисный.
Если вы думаете, что это всё возможное управление, то нет. Ещё можно влезть прямо в низкий уровень с перемычкой. Джамперы есть только у ремонтников, потому что для всех остальных это строжайшее табу с мгновенным увольнением: нужны допуски и очень глубокое понимание, что именно вы замыкаете. Для штатных ситуаций перемычки у нас закончились в 70-х, а вот в случае аварий очень редко, но бывает.
Одна из самых сложных ситуаций — либо когда приходит новое оборудование, либо когда строится новый цех. Предположим, мы купили новое оборудование, которое меняет техпроцесс. Оно поставляется сразу с системой управления и автоматизацией. Чтобы оно отдавало телеметрию в шину, надо подключить пару портов, сделать next-next-done и почти всё. А вот чтобы оно работало — это задача огромного масштаба, потому что надо присовокупить к существующей линии. Хорошо, если оно ставится в конце производственного процесса, сбоку или в начале. Сложно, когда надо вклинить в разрез производственной линии.
Что нужно сделать: получить исходный код системы управления и начать дописывать софт. Перед станком и после него есть контроллеры. Надо научиться получать заготовку у предыдущего станка и отдавать данные про готовое изделие (заготовку для следующего станка) в следующий контроллер. Нужно прокинуть сетевой обмен между тремя контроллерами, обмен — на физическом уровне, а также проложить медь или оптику. Нужно подключить к датчикам, которые показывают, что делает заготовка на входе (и какая она), и к датчикам, которые описывают её поведение на выходе. После этого — разработка программной части ПО системы управления агрегатом с учётом всех условий.
Где-то доработки идут на стенде, к которому можно прикрутить моторы или что-то ещё, и такой же контроллер. Где-то есть виртуальная среда и возможность играть с контроллером в симуляторе. Где-то нужно прямо «на живую» — если есть что-то, что невозможно повторить даже на стенде.
Доработка прошла — начинаются холодные испытания, потом — горячие. Ждём какого-нибудь планового ремонта, пока участок стоит — вклиниваемся и начинаем смотреть. Сначала подключаем питание на контроллер и смотрим, не упадёт ли всё, как озимые. Если ушёл в ошибку, то начинаем проверять сигналы с датчиков, с приводов и так далее. Если проверка прошла успешно, то начинаем робкие попытки управления агрегатом в ручном режиме: пошевелить рольгангом, подвигать штангой и так далее. Все исполнительные механизмы проверяем. Потом смотрим, везде ли правильные задержки, разгоны и торможения для приводов, чтобы обеспечить параметры производительности. После нескольких итераций отлаживания и понимания, что и ПО по кускам работает в нормальном режиме, уже включаем в производство и пробуем делать продукцию. Иногда получается, но чаще симулятор и реальный мир отличаются друг от друга, и надо ещё дорабатывать. Потом уже испытания в разных режимах производства, краевые случаи — и можно запускать в линию, но внимательно за ним присматривать ещё некоторое время.
Кто у нас работает
У нас два основных крыла — ремонт и развитие. Ремонт — это фактически поддержка, развитие — фактически разработка.
Сначала — про ремонтный персонал.
Самая частая профессия — рабочие: электромонтёры и слесари. На них — обслуживание датчиков и исполнительных механизмов, трасс, клеммных коробок. Они могут делать простые ремонтные операции на системах управления. Логику они почти не трогают.
Дальше идёт инженер по автоматизации — он умеет делать всё то, что делает рабочий, но занимается небольшими доработками, может менять логику, но много не разрабатывает, то есть, по сути, управляет конфигами. Они опытные пользователи, то есть понимают логику системы и смысл всех действий. Они же привлекаются к разборам ситуаций, они же выступают неким аналогом второй линии поддержки по софту АСУТП.
Потом идёт ведущий инженер — он отвечает за системы автоматизации какого-то участка, за исполнение программ мероприятий по ремонту и реализации каких-то местных улучшений. То есть он может брать проекты, но очень хорошо описанные и короткие, где есть чёткий алгоритм действий. Исследований ведущие инженеры почти не проводят. Поддерживают софт с доработками.
Руководитель — начальник участка или отдела. Административный и функциональный руководитель. Оборудование не трогает, работает с людьми, ищет ресурсы, деньги, заботится о том, чтобы всё всегда было в нужном количестве, убеждает других людей, что вот так делать правильно, умеет подводить обоснования под: «Если это не это, то оно всё того, верняк!»
Теперь — развитие.
Тут уже нет рабочих: все они — инженеры или главные специалисты либо, в крайнем случае, менеджеры. Их функция — не какая-то единица оборудования или цех. Они в целом отвечают за внедрение и распространение по всем участкам оперативно-ремонтных правил, проектов, нововведений, стандартов ИБ и так далее. Есть команда специалистов, которая делает новый софт для запуска новых производств и глубокой модернизации существующих.
То есть оперативно-ремонтная часть команды поддерживает общую работоспособность оборудования, делает небольшие изменения софта и трогает конфиги, а развитие может написать новый софт или переписать заново что-то для целой группы агрегатов. Они же взаимодействуют с подрядчиками, пишут стандарты и ТЗ, принимают в эксплуатацию (приёмка в эксплуатацию идёт вместе с ремонтным персоналом).
Примерно вот так у нас выглядит АСУТП. Приходите, будет тяжело!
Комментарии (34)
Sabirman
24.10.2024 07:29Экономика в разработке АСУ сильно ограничена, по сравнению с обычным программированием по двум основным причинам:
Каждый проект уникален - возможности тиражирования решений сильно ограничены
При внедрении АСУ невозможно уменьшить число людей-операторов - их количество обусловлено работой в условиях аварийной ситуации когда АСУ считается отказавшей
shikov_nn Автор
24.10.2024 07:29В нашем случае выделение направления разработки связано с возникшим дефицитом подрядчиков в регионе.
На предприятии разработана большая программа по оптимизации ручного труда на производстве. Основной упор — на автоматизацию транспортных операций в техпроцессе и расширение зон ответственности операторов, которые теперь управляют не одним, а группой типовых агрегатов. Это порождает большое количество разработок и доработок ПО АСУТП.
Sdvnkhp
24.10.2024 07:29Это ваше личное восприятие действительности. 1. Продаем однотипные системы управления с оборудованием тысячами штук в год. 2. Результаты внедрения АСУ ТП скорее зависят от пожеланий заказчика, от "ну не хочет он жену кума из цеха увольнять" до "автономная установка с режимом 24\7"
AlxndrPakhomov
24.10.2024 07:29Статья отлично описывает сложные процессы автоматизации производства , объясняя их понятным языком! Вы мастерски раскрываете принципы работы АСУТП, начиная с истории паровых машин и заканчивая современными системами реального времени. Подробные примеры и аналогии, такие как система поплавков, делают тему доступной и увлекательной.
vindy
24.10.2024 07:29@moderator ловите бота-новорега с нейросетевыми комментами. Надеюсь, плюсующую бот группу вы тоже блочите.
woodiron
24.10.2024 07:29Почти от всех работников требуется офигительная квалификация и текучка нежелательна. Откуда людей берёте - профильные учебные заведения или сами выращиваете?
shikov_nn Автор
24.10.2024 07:29Нанимаем выпускников из учебных заведений, хантим на рынке высококлассных специалистов, реализуем различные программы удержания и повышения вовлеченности персонала.
jmnemonik
24.10.2024 07:29Я много лет отработал в АСУ ТП. И программистом в системных интеграторах, и штатным инженером на заводе. Работа интересная, сложная, но, традиционно, низкооплачиваемая, по сравнению с обычными программистами и вообще айтишниками.
К сожалению, это не только в нашей стране, а и в Европе и в США.
Даже условный одинэсник зарабатывает ощутимо больше, чем программист или инженер АСУТП.
Хотя, знания нужны очень разнообразные и глубокие и в программировании, и в сетях связи, и в технологии.
Нужно иметь понимание и знания в механике, в пневматике, гидравлике и т.д. и т.п.
И работать часто приходится и на жаре, и на морозе, и в грязи, в машинном масле и т.д
hostka
24.10.2024 07:29Тоже работал в сфере АСУТП со стороны подрядчика, теперь работаю со стороны заказчика. Понял, что на автоматизацию средства всегда выделяются по остаточному принципу. То есть здание построить нужно, технологическое оборудование закупить нужно, электрика, отопление, вентиляция, пожарка, связь тоже нужны. А про автоматизации большинство из людей принимающих решения по капитальным затратам слышали только краем уха. Приходится буквально на пальцах каждому объяснять зачем это вообще нужно. Доходит до того, что всё переносится не следующих год, а потом еще на один, и так далее. Видимо поэтому и зарплаты такие низкие, потому что никто не видит ценности в автоматизации.
shikov_nn Автор
24.10.2024 07:29У нас это не так, нам удалось включить в процесс инициации проекта экспертизу со стороны автоматизации. Теперь мы на старте проекта формируем требования к системе АСУТП и начинаем поиск необходимых кандидатов, если это нужно.
vindy
24.10.2024 07:29Это грустная правда, я к концу последнего курса на АТП в универе начал подозревать неладное, когда подработка эникеем начала приносить мне деньги сравнимые с зарплатой моего куратора диплома с производства. Спустя 20 лет мне так же дико видеть людей в АСУТП, на порядки умнее меня, зарабатывающих меньше меня, по большому счету такого же эникейщика со стажем.
action5
24.10.2024 07:29Я ваш коммент плюсанул конечно. Но... Переставайте пожалуйста использовать это гадкое слово "эникей", которое условные люди из условного "АСУТП" придумали или из зависти, что они меньше получают, а больше знают, либо люди которые по любым причинам пытающиеся подчеркнуть и обосновать всем и убедить всех в том числе и себя что вот они вот не зря потратили время\жизнь став узкоспециализированными (и даже высококлассными! порой но не всегда высокооплачивыми, читай выше) специалистами. И заметьте я не говорю что это плохо. Но...давайте будем честны...IT... это очень многообразная и быстроеменяющаяся отрасль. В которой каждый день что-то новое и интересное!
Поэтому. Не нужно обесценивать ни себя ни других. :-)
vindy
24.10.2024 07:29Я не совсем понимаю, заслуживает ли это каких-то эмоций или наездов на ту или другую сторону. То, что асутп - это незаслуженно черная кость в мире айти, для меня лично является фактом, у меня перед глазами куча примеров друзей с моего университетского выпуска, работающих по специальности. Знаний и умений их работа требует в несколько раз больше, чем моя, плюс, например, готовности сорваться посреди ночи в забой угольной шахты несколько часов побарахтаться в смеси угольной пыли и ледяной воды со своим оборудованием, если что-то упало. Не уверен, что они стремятся что-то "подчеркнуть" или "обосновать" кому-то. Просто жизнь у них объективно не сахар.
Ailuropoda_M
24.10.2024 07:29Сеть между устройствами — обычно на базе Ethernet.
И фотография с кабелями PROFIBUS - реально очень смешно, для тех кто понимает.
Refridgerator
У нас (металлургическое производство) 2-ой уровень прекрасно работает на самых обычных операционных системах, и даже часть полноценной автоматизации на них реализована. Потому что никакой двигатель не в состоянии остановиться/запуститься в течении одной миллисекунды, и отклика в 15мс + 50-1000мс на передачу данных по сети более чем достаточно.
shikov_nn Автор
У нас такое тоже практикуется, но всё зависит от задачи, решаемой данной системой. Конкретно в нашем случае с такими гарантированными откликами работает реверсивная прокатная клеть для широкого листа. В случае больших задержек при пересчете уставок мы не сможем вовремя отдать корректное задание и прокатаем не то что должны.
Ailuropoda_M
у них вон SIMATIC PCS 7 прекрасно себе стоит, которая только под Виндой.