Node.js скрипт для мониторинга PLC сигналов ЧПУ с Telegram алертами
-
ЧПУ-станки в цеху глючат, датчики молчат, а оператор только утром заметит сбой. Node.js-скрипт решает это: мониторит PLC-сигналы в реал-тайм и шлет алерты в Telegram. Экономит часы простоя, когда один пропущенный сигнал - и партия брака.
Подключаешься к Modbus или OPC UA, парсишь I/O-точки и настраиваешь пороги. Никаких остановок цеха, всё по сети. Полезно для Fanuc, Siemens или KEBA - где угодно, где PLC рулит ЧПУ.
Почему мониторинг PLC через Node.js - это не прихоть
PLC в ЧПУ обрабатывает тысячи сигналов: от концевиков до термодатчиков. Оператор не уследит, а скрипт на Node.js сканирует их каждые секунды по Ethernet. Если X5 - датчик упал, алерт в Telegram прилетает мгновенно, пока станок не встал.
В цехах на металлообработке типично: привод Y10 не сработал, фреза в воздух рубит. Без мониторинга ждешь, пока мастер шкаф вскроет. С Node.js - лог в консоль, график в дашборд, алерт по SMS-подобке. Легко масштабируешь на 10 станков одним скриптом.
- Реал-тайм парсинг: Modbus TCP читает discrete inputs за 50мс, без нагрузки на PLC.
- Умные алерты: Не спам - только на порогах, с историей последних 10 циклов.
- Интеграция с MES: Экспорт JSON для аналитики, без доп.шнуров.
Протокол Скорость чтения Поддержка ЧПУ Modbus TCP 50-100мс Fanuc, Haas OPC UA 20-50мс Siemens, KEBA Ethernet/IP 100мс Allen-Bradley Настройка подключения к PLC
Сначала цепляешь Node.js к PLC по IP. Устанавливаешь node-modbus или opcua для клиента. Конфиг в JSON: адрес, порт, регистры I/O. Тестишь на эмуляторе - не трогаешь боевой станок.
Пример: Fanuc с PLC по Modbus, читаешь inputs 0-15. Если input 5 (концевик) = false дольше 5 сек - алерт. Node.js асинхронный, так что 100 станков не нагрузит. Добавь cron для логов в файл.
const ModbusRTU = require('modbus-serial'); const TelegramBot = require('node-telegram-bot-api'); const client = new ModbusRTU(); client.connectTCP('192.168.1.10', { port: 502 }); const bot = new TelegramBot('YOUR_TOKEN', { polling: true }); setInterval(async () => { client.readDiscreteInputs(0, 16).then((inputs) => { if (!inputs.data) { // X5 off bot.sendMessage('CHAT_ID', 'Alert: Концевик X5 отключен!'); } }); }, 1000);- Проверь firewall: PLC часто блочит 502 порт - открой в роутере.
- Таймауты: Добавь reconnect при обрыве - Node.js cluster поможет.
- Логи: Winston в файл, ротация по дням - найдешь, когда глюк случился.
Алерт-система в Telegram
Telegram Bot API - бесплатно, без серверов. Создаешь бота у @BotFather, кидаешь токен в env. Скрипт шлет не только текст, но и фото дашборда или график сигналов.
Настраиваешь чат-группу для смены: алерт придет всем. Фильтры: критичные (стоп) - пинг, предупреждения - mute. Интегрируй с Grafana - скриншот дашборда в сообщение.
- Уровни алертов: Критический (красный), warning (желтый), info (зеленый).
- Каналы: Личный чат, группа, канал для истории.
- Автоответ: Бот подтверждает прием - не потеряешь.
Уровень Текст алерта Emoji Критический Станок #3: Y10 off! 
Warning Темп. 85C, предел 80
️Info Цикл завершен 
Деплой и масштабирование
Запускаешь на Raspberry Pi у станка или VPS в облаке. PM2 для daemon - рестарт при краше. Docker-контейнер: один образ на флот ЧПУ.
Масштаб: кластер Node.js на 50 PLC, балансировка по CPU. Мониторинг самого скрипта - Prometheus + Grafana. Бэкап конфигов в Git - разворачиваешь на новом станке за 5 мин.
- PM2 команда:
pm2 start script.js --name plc-monitor. - Безопасность: API-ключи в .env, HTTPS для OPC UA.
- Бэкап: MongoDB для истории алертов - аналитика простоев.
Что меняет скрипт в цеховой рутине
Скрипт ловит 80% сбоев до остановки: от датчиков до перегрева. Оператор фокусируется на Г-коде, а не на шкафах. Внедрил - и OEE прыгнет на 5-10%.
Осталось доработать: ML для предикта сбоев по трендам или интеграцию с SCADA. Но базовый мониторинг закроет 90% болей ЧПУ-цехов прямо сейчас.
Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2022 - 2026 InvestSteel, Inc. Все права защищены.