Моя DIY SCADA-DASHBOARD с помощью AI за два месяца. Polling, Backend, Frontend
В этом цикле статей хочу поделиться, как я накодил полноценную SCADA/Dashboard не имея большого программерского опыта как такового, используя разные инструменты AI. Мой кейс система - с индустриальным бэкендом, сервером и БД и web-дэшбордом, включая аналитику и репорты. Основа - JS, индустриальные протоколы, SQL, HTML/JS/CSS frontend. Заранее прошу прощения, я уже не все термины помню как будут по-русски, поэтому буду что-то оставлять на английском.
Я бы отдельно, наверное, еще рассказал про культуру таких или схожих производств в США. В частности - юнионы (профсоюзы). Это - отдельная тема со всех сторон - психология, утопический Атлант, кайдзен, ностальгия по "совку".
С конца 2024 я устроился на завод как Sr Controls and Automation Engineer на достаточно старый завод - как здесь говорят legacy plant. В New Jersey, США. SCADA изначально в мои планы и задачи не входила. Но поскольку основное оборудование старое (1980+), поломки частые, руководство относительно новое и не понимает, на каком участке реально затыки, я начал продвигать тему сбора данных и аналитики.
Кратко мой опыт - в России у меня было производство и я много ездил устанавливал похожие линии по стране. Это сильно помогло в индустриальной части. После переезда в США, я открыл кол-центр, и у нас было много работы по сбору данных. Эта часть дала какой-то опыт в веб-программировании, сетке и SQL. Также был опыт езды на траке и хендименства в сложные периоды - это о работоспособности в целом и умении решать проблемы.
В чисто профессиональном разрезе - не механическом/инженерном, а индустриальных знаниях, мое устройство было похоже на "fake it till you make it".
AI для меня был не просто инструмент, а спасательный жилет.
Я использовал и использую: CGPT Plus (во многом из-за CODEX), Gemini и Grok оба free версии. ПЛК считаются машины низкого уровня, а программирование - простейшим, но многие вещи диаметрально противоложны от версии к версии, не говоря о разных производителях. И таких вариаций - десятки, если не сотни.
Год назад, большинство ИИ моделей были слабыми в ПЛК и индустриальном оборудовании и, даже, "простейшем" ПЛК программировании. За год моего каждодневного обращения, точность ответов улучшилась в геометрической прогрессии. Прогресс просто поражает. Почти всегда уже достаточно ответов одной только модели для решения задачи.
Я собрал в кучу свои знания, набросал первую общую архитектуру, составил драфт-план и...
и начал все откладывать в долгий ящик ибо понял, что сделать все это одному будет нереально или же займет годы. Руководство вроде как идей прониклось, но у них было свое, как мне казалось, более простое видение - "а можно сделать по-быстрому что-то легкое, чтобы просто знать какая машина остановилась" или "можно ли просто посчитать производительность по каждой машине" итд.
Надо сказать, что у нас уже был Dashboard, сделанный несколько лет назад третьей стороной - Shoplogix. Но он считал производственные данные по линии в целом, на основе первой машины. А разные статусы/комменты ставились в зависимости от отсканированных бар-кодов, т.е. 100% зависимость от ручного ввода/оператора.
Third-party система обошлась компании в $150,000+ в 2018 году и до сих пор стоит около $10,000 в год. При этом, она не поддерживается в плане изменений и, на самом деле, говорит в общем-то ничего. Но испольузется поскольку внедрена на всех заводах компании. Моя же цель была полностью автоматизировать сбор данных и не зависеть от людей, но, по крайней мере у меня появился какой-то ориентир.
Главные проблемы, которые предстояло решить:
- Коммуникация старых ПЛК. Подключить современные машины в сеть и БД - уже не сложно, но старые - это челлендж.
- Pushing vs Polling - будет ли сервер опрашивать машины или же машины будут сами отправлять данные в заданный период
- Общие инфраструктурные вопросы - включать их в заводскую сеть или тянуть собственную сетку по всему заводу.
Индустриальная часть - протоколы и коммуникацию я опишу в отдельной теме. Здесь же кратко скажу, что современные машины настроил доступ и включил их в сеть, старое оборудование - пришлось ставить и программировать промежуточные PLC из имевшихся на складе, дублировать электрические сигналы на них и их уже включать в сеть - a-la Remote I/O. Сетку протянул собственную, независимую от общего трафика по заводу. В т.ч. чтобы избежать вовлечения и "помощи" IT. Тем более, что вся система и Dashboard пока крутятся на локальном доступе.
Продолжение следует.