Я столкнулся с новым типом проблемы, которую я не пытался решить раньше. Поэтому я хотел бы, чтобы кто-то более знающий, чем я, указал несколько указателей в правильном направлении :-)
Друг попросил меня помочь ему разработать систему управления для производственной линии. Проект звучит очень интересно, и я не могу перестать думать о нем.
Я уже обнаружил, что могу управлять системой с помощью сервера node.js. Пока все хорошо (интерфейс HTML5 вот и все)! Но что я действительно хочу, чтобы эта система выделялась, так это набор системных показателей. Система сообщает о всевозможных вещах, таких как температура, расход и т. д., и эти показатели сообщаются до нескольких сотен раз в секунду на каждый показатель... и это работает круглосуточно и без выходных.
Моя идея состоит в том, чтобы сохранить это в базе данных MongoDb и сделать некоторую статистику в реальном времени. «Соревнование», если хотите, похоже, сохраняет это в базе данных SQL-сервера и позволяет операторам экспортировать агрегированные данные в Excel и выполнять статистику в Excel.
Каковы стратегии ведения статистики в реальном времени с использованием MongoDb?
Я бы очень хотел обеспечить мгновенную обратную связь и мониторинг на основе этих показателей. Например, средняя температура за последние 24 часа, пики и т. д., а также включить оповещения. На сервере не будет много расширенной статистики. Если это необходимо, я бы включил экспорт данных в такую программу, как SPSS.
MongoDb подходит для этого? Я хотел бы использовать машину с Linux вместо машины с Windows с SQL Server и интерфейсом управления WinForms. Одних только лицензионных сборов достаточно, чтобы оттолкнуть меня, хотя я знаю, что это, вероятно, не относится к людям, покупающим оборудование.
Это будет размещено не в облаке, а на одном сервере в сети. Рядом с эксплуатируемой машиной я размещу сенсорный интерфейс, который через браузер будет связываться с сервером node.js для вызова команд ПЛК. Может быть несколько машин, которым нужно управлять, и все они будут контролироваться одним и тем же центральным сервером node.js.
Оборудование управляется контроллерами ПЛК с сайта http://beckhoff.com/.
Я не совсем новичок, когда дело доходит до MongoDb, но я никогда не запускал в производство ничего, что я сделал, и я бы не включил MongoDb в свое резюме... пока!
РЕДАКТИРОВАТЬ: кажется, что оператор $inc - это путь. Но что, если мне не нужны как дневные, так и почасовые средние значения, а также непрерывная подача, которая обновляет диаграмму на экране с данными каждую секунду, используя socket.io. Это хорошая идея обновить документ для каждого из агрегатов, которые мне нужны. Я действительно также хочу сохранить каждое измерение, но, может быть, я мог бы агрегировать это в секунду, чтобы я не хранил до 1000 записей в секунду на метрику?