Часть 1, введение
Часть 2, приоритеты и базовые сигналы
Часть 3, каркас архитектуры
Последнее время свербит в одном месте сформулировать мысли, но цэ не очень уместно порою. Посему отвлечёмся на то, как работает маленький, но важный, кусочек нашего мира.
Почему здесь?
Да просто Хабросообщество асушников это унылые токсики, сующие минусы в карму по поводу и без, любящие брать мануалы и копировать как статью или ноу-хау... меня бесит, когда на профильном хабе тебе с умным видом изливают написанное в F1 да ещё обижаются, когда указываешь на сей момент.
О чём речь?
Итак, вот перед вами бутылка. Нет, пластиковая. Хотя любая сойдёт. Но посмотрим на пластик... ну, это могла бы быть кока-кола, но "почему-то" оказался дюшес. Прежде чем попасть к вам на стол, она была в магазине, на складе, в фуре, на складе, в контейнере, фуре... о, вот она, вышла со склада завода. Однако, чтобы туда попасть - её должны были сперва изготовить и налить продукт-с. О том, как она родилась и пойдёт речь. Технология будет чисто для примера и тайны никакой не представляет из себя уже дофига лет (состав напитка не в счёт).
Заебись, всем спасибо, пока.
Шутка.
Когда эти ампулы изготовлены, они отправляются на завод производства напитков. Например, вот рекламный ролик производителя линий розлив с внятным описанием технологии и что для чего используется.
Итак, мы ознакомились с тем как оно выглядит со стороны и пора заглянуть под капот.
Шкафы управления
Шкаф, сука, управления. Управления чем? А вон всей той хернёй, которая двигалась на роликах выше. Всё что шевелится - управляется из ШУ, а что не шевелится - жалкими смертными, вроде нас с вами. Их ещё "операторами" называют. А над ними стоят "технологи", которые должны разбираться в куче страшных циферок на тех маленьких экранчиках, что мелькали в видосиках, и правильно их настраивать. Одна ошибка - и ты ошибся. Спалил движок, погнул валы, испортил партию продукта.
Что живёт в шкафу?
Кратко:
Подробно:
Контроллер
Поскольку я не проектировщик, хоть и могу разобраться в схеме и даже от руки нарисовать, а сраный неИТ-шный программист, то и интересует меня лишь одна часть: МОООЗГИИИ... оу, у кого там от зомбицида лекарство? Нет, давайте без топора обойдёмся, пожалуйста.
Мозги бывают разные: серые, белые, красные...
Жёлтые - это, мать её, безопасность. А знаете сколько раз за мои 12 лет работы я видел их российских ШУ? Угадаете? Правильно. 0 ёбаных раз. Клали в эрафийском общепроме на ёбаную безопасность. Иногда ставят некое реле безопасности, но подключают его так, что лучше бы не ставили вообще, инвалиды безрукие... Может кто-то где-то и использует их, может даже правильно подключает, я за них искренне рад. Но когда в следующей схеме я увижу это дерьмо на текущей работе - мата будет много. Мат - двигатель процесса.
Пробежимся слегка по производителям железа, их особенностям и нюансам.
Siemens - божественный нектар, услада глаз моих...
# Имеет понтовые линейки с кодом "400", которые ставят атомщики и нефтяники. Горячий аппаратный резерв - это к ним.
# Линейка "300" - ...у тракториста. Уверенный середнячок, который уже лет пять пытаются снять с производства, но выходит как-то не очень. Слишком много их продали в 2000-х годах по всему миру.
# Линейка 1500 - пришла на смену 300 и 400, имеет монстров, способных в одну харю утянуть хороших размеров завод, но, сами понимаете - одна ошибка и весь завод ошибся. Не надо так.
# Линейка 1200 - самый ходовой продукт... был. Их вы видели в видео про шкафы.
=> языки: LAD, SFC, FBD, STL, SCL, Graph, ещё какая-то новая херня для очень тупых вышла в 2021 году, но я её не запомнил
=> среда разработки: закрытый проприентарный пакет Step7, WinCC, объединённый в новый TIA Portal
+ единственный в своём роде с полностью свободным доступом ко всей памяти внутри ПЛК, что позволяет творить офигенные вещи и очень сильно оптимизировать код
+ огромный форум со всеми вопросами и ответами, отличная документация, стабильный как кирпич, пока не ёбнешь молотком на 220
+ единственный в своём роде, кто позволяет загружать программу большими кусками без остановки контроллера (у остальных есть "нюансы" или ограничения)
- закрытая среда разработки, специфичный синтаксис с куче # и ", из-за чего прямой перенос кода на другие системы невозможен, всё ручками, будьте добры
$$$ дорого, но кря кря, 30 дней триала
ОВЕН - для диспетчеризации и садомазохистов
# Имеет широкое распространение среди любителей сэкономить
=> языки: LAD, FDB, CFC, ST
=> среда разработки базируется на CoDeSYS, что обеспечивает хорошую совместимость с большой кодовой базой, пока вам не нужно что-то специфичное
+ . . .
- их тоже больше не будет
- за его цену вы можете взять siemens 1200 и не знать горя
- теряет программу, слабый проц, мало памяти, нет внутренней шины для модулей ввода-вывода
- документация, техподдержка? не, не слышали
$$$ бесплатно, как сыр в мышеловке
OMRON - японцы, которым запретили хентай, решили поебаться сами с собой
# Старая линейка CJ/CP, которая что-то может, но лучше бы вам говнокодить, иначе не вывезет
# Новые линейки, в которых чёрт ногу сломит, много решений заточенных под координатное управление и перемещение
=> языки: LAD, FDB, ST
=> среда разработки: закрытый проприентарный пакет CX-Programmer и SYSMAC
+ оно шевелится и шевелится хорошо, только надо сперва придрочиться
- слабая документация
$$$ дорого, но кря
B&R - когда-то я считал, что хуже овна ничего быть не может...
# Большой спектр решений, много ОЕМ продукции
=> языки: LAD, ST, C
=> среда разработки: закрытый проприентарный пакет B&R Automation
+ хорошо умеют себя продавать
+ поддерживают С
- ошибки компилятора памяти
- программа управления может повредить ОС контроллера
- нельзя сохранить исходник в контроллере или скачать обратно загруженный код и отредактировать, нет проекта - нет проекта
$$$ 30 дней и плати
Shneider Electric - ваша головная боль и ваш бич, когда вы ловите ошибку, которой нет в документации
# Дичайший зоопарк железа и сред разработки, намешана прорва Legacy в одну кучу
=> языки: LAD, FDB, ST
=> среда разработки базируется на CoDeSYS, что обеспечивает хорошую совместимость с большой кодовой базой, пока вам не нужно что-то специфичные
+ большое количество фирменных библиотек для всей линейки дополнительного оборудования собственного производства
+ документация на уровне Siemens, но без форума техподдержки
- есть много мелких нюансов, которые никто нигде не раскроет, а вы разобьёте себе голову о стену пока в них разбираетесь
$$$ 30 дней и плати, привязка к аккаунту
Carel - для вентиляции и отопления самый торт, много готовых программ и решений. ST, LAD, FDB. Бесплатно на 30 дней. Считается импортозамещением, лол.
Beckhoff - Win10+виртуальный контроллер сверху. Хорошо работает, но дела с ними не имел.
Rockwell, Honeywell - что-то слышал, пару раз видел, дорого-богато.
В целом на этом список ходовых прошлогодних решений заканчивается. Наступает 2022...
Со временем, когда остынет мой пукан, я внятно расскажу о китайских и новых импортозамещённых решениях, но не сейчас.
Разработка
Итак, как программиста, нас интересует раздел "языки":
LAD, FBD, SFC/CFC, ST
Как мы видим, все кроме ST - графические языки. Ах да, все они - группа языков стандарта IEC 61131-3. Перенести графические языки между средами разработки - адская, невыносимая боль, потому каждый гад считает нужным делать собственный визуальный редактор с извращённым функционалом и заморочками. К слову, самый крутой редактор LAD - у Seiemens. Для FDB мне больше всего понравился Carel cSuite.
В связи с этим, мы обратим свой взор на ST и будем дальше ковыряться исключительно в нём. Для Siemens это будет SCL (а STL у них - мерзотный древний язык, который вроде как может дофига всего, но только для сименса и вы без глаз останетесь во время его отладки, когда одна переменная / команда - одна строка, а ещё они зеброй подсвечены, фу, чур меня чур).
И теперь, с этого момента мы перейдём к сути...
Всё есть дискрета и аналог. Всё. Без исключений.
Дискретный вход.
Дискретный выход.
Аналоговый вход.
Аналоговый выход.
Дискретный - он либо есть, либо нет. Как секс.
Аналоговость - определяется качество, условно говоря.
И то, и другое нужно обработать, перед тем как использовать. Те кто пытается в user-friendly, как овно, берёт самостоятельно на себя первичную обработку сигнала, что вызывает адские муки когда надо что-то изменить, потому что это нельзя вывести на ту кнопочную панельку и сказать: "Чел, зайди туда, нажми это и отъебись." Нееет, нихуя, вы должны собирать монатки, закупать билеты и пиздюхать в жопу мира ради 5 минут правок и 100 минут поиска "где этот ебаный бэкап". Ну вот надо ли оно вам, а?
Из всех этих сигналов, как из кубиков и складывается управление всем процессом и его контроль. Кажется, я слегка разбежался, а дальше на рассмотрении недра "под капотом", которые будут интересны не всем. Нырнём в них в следующей части.)