Приветствую.
Во время работы на одной из ТЭЦ нашей большой страны был написан для собственных нужд небольшой проект, собирающий, обрабатывающий и отображающий данные с различных устройств. Сейчас он собирает более тысячи тегов с почти 100 приборов. Проект на стадии регулярного обновления, дописывания возможностей, переписывания кода и т.д.
Может быть, кому-то он тоже пригодится. Исходный код открыт, основной язык – Python 2.7. Разработка велась на Линуксе, крутится тоже на нем.
Возможности
• Привычная структура: шина -> устройства -> тэги;
• Единый интерфейс для добавления различного оборудования;
• Нет необходимости в установке и настройке OPC-серверов;
• Нет ограничений на количество устройств, тэгов, клиентов;
• Отображение данных и настройка производится в браузере с любого компьютера;
• Быстрое и простое добавление устройств, тэгов, копирование/перенос устройств и тегов, группировка по различным признакам;
• Включение/выключение опроса шины, устройств, одиночных тэгов;
• Настройка частоты опроса;
• Два варианта рабочих мест - в виде блоков и таблиц на основе групп тегов и конструктора отчетов, возможно создание нестандартных экранов для отображения данных;
• Сортировка блоков в рабочих местах, сортировка тегов в блоках;
• Возможность указания аварийных и предупредительных уставок, локирование сигнала, цветовое выделение тэга на фоне остальных, создание вычисляемых тегов;
• Отображение статусной информации о состоянии тэга в рабочем месте: время опроса, наличие ошибок, выход за уставки и др., возможность включать/выключать отображение ошибок у рабочего места;
• Контроль ошибок: отсутствие соединения с шиной (проблемы с сетью), отсутствие соединения с устройством или OPC-сервером, несовпадение CRC при вычитывании тега;
• Построение графиков за любой период на основе различных типов данных (текущие значения, архивные, усредненные за час или сутки), масштабирование, автообновление графика, отображение ошибок и состояния тега на графике;
• Конструктор отчетов с поддержкой формул, условных операторов, ссылок на другие ячейки. Два вида отчетов - за сутки и суммирование по дням;
• Усреднение, интегрирование собираемых данных за час, сутки.
• Добавлено. Тестовая возможность вычитывания данных с OPC DA-серверов по локальной сети.
• Добавлено. Modbus TCP.
• Добавлено. Теперь два режима работы с приборами, подключаемыми через преобразователи RS-232/485 в Ethernet. RealCOM – через виртуальные порты, TCTServer – преобразователь в режиме сервера (драйвера для создания виртуальных портов не нужны).
Протоколы
• Протокол обмена для приборов СПТ, СПЕ фирмы «Логика». Чтение текущих параметров, часовых и суточных архивов (вручную или по расписанию). Чтение и запись указанных каналов и параметров. Автокоррекция времени на приборах.
• Протокол обмена для приборов Марк-902/602 фирмы «Взор». Чтение текущих параметров.
• Протоколы Modbus RTU (в режиме RealCom, TcpServer) и Modbus TCP. Функции 03, 04.
• Протокол DCON для модулей ввода IPC CON 7017 (функция #**), 7053 ($AA6).
• «Модульные Системы Торнадо». Получение текущих данных по http протоколу.
• Если позволяет протокол, все теги вычитываются за один запрос.