Я уже писал о том, что работаю Ведущим инженером по АСУ ТП. И мне сыпались вопросы, но практически все были про "как стать АСУшником?", "какие книги почитать, чтобы разбираться в АСУ?".
Решил ответить всем сразу.
АСУшником стать просто, а вот хорошим АСУшником, стать гораздо сложнее.
Во-первых, никаких книг про АСУ на примете у меня нет, да и я считаю, что они не важны, ибо важнее различные мануалы по оборудованию, а их надо искать уже при работе.
Во-вторых, "АСУшник" должен понимать электрику (КИПиА) и немного программирование.
Из КИПиА стоит только знать что такое ток, напряжение и сопротивление, а также что такое + и -
Хочу рассмотреть пример работы в инжиниринговой компании, где на плечи "АСУшника", кладётся только программная часть.
В системе АСУ ТП всегда выделяют три уровня:
Для начала пути хватит понимания только среднего уровня. Он представлен ПЛК (программируемый логический контроллер) и логикой которая в нём используется. Воспринимайте ПЛК, как очень слабый компьютер, где всего 2Мб памяти и нет картинок с мемами. Но зато у него есть возможность подавать и принимать различные сигналы.
Всего я бы выделил три типа сигнала:
1) Аналоговый - сигнал непрерывный и изменяющийся во времени (температура, скорость, высота водяного столба и т.п.). Датчики передающие аналоговый сигнал очень различны и их все очень долго описывать, просто скажу, что некоторые выдают сигнал в мА (миллиамперы), другие в вольтах (собака белая), а ещё есть те которые меняют своё сопротивление (чаще всего это различные термосопротивления, которыми измеряется температура);
2) Дискретный - сигнал который может принимать только два значения, есть сигнал "1" и нет сигнала "0" (открыта дверь, отсутствие жидкость, нажата кнопка). Тут стоит отметить, что дискретные датчики бывают нормально открытые и нормально закрытые. Если по простому первые если не сработали у них "0", при срабатывании выдают "1", а вторые наоборот, когда не сработали у них "1"
3) Интерфейсный - сигнал который передаётся каким-либо интерфейсом и по какому-либо протоколу, самый популярный пример: интерфейс ethernet протокол TCP\IP и вы на пикабу!
Сейчас, давайте рассмотрим немного программную часть. Логика для ПЛК пишется на языках программирования стандарта IEC 61131-3:
- структурированный текст (ST – Structured Text);
- последовательные функциональные схемы (SFC – Sequential Function Chart);
- диаграммы функциональных блоков (FBD – Function Block Diagram);
- релейно-контактные схемы, или релейные диаграммы (LD – Ladder Diagram);
- список инструкций (IL – Instruction List);
Два самых популярных LD и IL, хоть они и самые не удобные. Я приведу в пример LD.
Допустим у нас есть три дискретных входа "Х0", "Х1", "Х2" и один дискретный выход "Y0" (три выключателя и одна лампочка).
Чтобы проверить что вход активен (выключатель включен) используется элемент "Нормально открытый контакт" (Normally open contact), он будет активен, когда на вход X0 придёт сигнал.
Чтобы выдать сигнал на выход элемент "выход" или "назначение" (Assignment).
Соответственно, чтобы при активном входе выдавался сигнал на выход, их надо соединить.
Но что если мы хотим, чтобы сигнал на выход подавался и по второму входу Х1? Тут уже в дело должны вступать логические операции. Нам здесь потребуется операция "ИЛИ" ("OR", а ещё её называют логическое сложение). При её использовании мы получим на выходе сигнал, если хотя бы на одном входе был сигнал. В языке LD "ИЛИ" выглядит так:
Давайте усложним задачу и теперь если активен вход Х3, то сигнал на выход не должен подаваться. Здесь снова мы будем использовать логические операции, только уже "И" и "НЕ" ("AND", "NOT" логическое умножение и отрицание, соответственно). При использовании "И", мы получим на выходе сигнал, только если все входы активны. При использовании "НЕ", на выходе есть сигнал, когда на входе ничего нет и наоборот, когда на входе есть сигнал, то на выходе его нет.
Вот так будет выглядеть наша программа, если мы используем в ней "И"
А вот так если мы ещё ко вход Х2 добавим "НЕ"
Просто для интереса напишу эту "схему" на логическом языке:
( Х0 ИЛИ Х1) И НЕ Х2 = Y0
Скобки обязательны, так как и в математике здесь умножение выполняется раньше чем сложение.
Такая схема и есть логика в ПЛК, и их подряд можно написать очень много и все они будут выполняться друг за другом в бесконечном количестве раз. А теперь попробуйте сами нарисовать схему проходного переключателя.
Последние наставления которые я бы хотел сказать, изучите логические операции и их таблицы истинности. Изучите компараторы (от лат. сравнивать). Также изучите язык программирования паскаль, так как языки ST и SCL на нём базируются.
Вот наверное и вся база которую стоит знать прежде чем начинать работать АСУшником. Я уверен, что многие возразят, но как я и сказал "АСУшником стать просто, а вот хорошим АСУшником, стать гораздо сложнее"