История версий

3086 от 30.04.2025 (актуальная версия)

  • Для виртуальных переменных добавлен режим "Переменная Старт-Стоп", позволяющий управлять узлами с разными переменными на запуск и остановку через одну переменную. Виртуальная переменная, работающая в данном режим и управляющая переменными Старт и Стоп узла, может использоваться, например, в расписаниях.

3085 от 06.04.2025

  • В Modbus-драйверах в секции "Узел" добавлена опция "Пропуск при таймауте", позволяющая пропустить опрос всех переменных узла на один цикл при таймауте любого запроса на чтение. Данная опция позволяет значительно снизить время полного обхода узлов на линии при наличии сбойных узлов - если сбойный узел не отвечает, то на его обход потребуется всего один запрос продолжительностью в один таймаут, вместо полной серии таких запросов для каждой группы регистров.

  • В Modbus-драйверах включено нарастание таймаута подключения к узлу, при неудачных попытках, с максимумом в 10 секунд и сбросом на исходный таймаут при подключении.

  • В Modbus-TCP и Modbus-RTU-Over-TCP драйверах изменено поведение при получении некорректного ответа (несоответствующий SlaveID, неверное количество байт и т.п.). Теперь при некорректном ответе будет выполняться переподключение к узлу.

  • В drv_opcua исправлена проблема с записью переменных типа BOOL

  • В drv_opcua исправлена проблема с чтением переменных типа DATETIME

  • Добавлена настройка приоритета активности/неквитированности для сводных тревог

  • Добавлены функции alarm_max_act(A1,A2,...,An) и alarm_max_unack(A1,A2,...,An) для получения максимального значения из списка значений тревожных переменных с приоритетом активности (alarm_max_act) и приоритетом неквитированности (alarm_max_unack)

  • В сервисе supervisor добавлены настройки cron_script_file и cron_script_time, позволяющие периодически запускать произвольный скрипт в указанное в формате Cron время.

  • В сервисе core изменено поведение при обработке повторных запросов на запись: теперь при поступлении нового запроса на запись, если попытки записи по предыдущему запросу не завершены, а устанавливаемое значение переменной аналогично значению в предыдущем запросе, новый запрос будет проигнорирован.

  • В json-парсере исправлена ошибка, позволявшая считать валидным примитив в качестве ключа объекта.

3080 от 01.03.2025

  • Добавлена поддержка расписаний и календаря
  • Исправлена ошибка, приводившая к вылету драйверов CMD, MQTT и HTTP при попытке считать простое числовое значение
  • Исправлена ошибка при парсинге ответов на ICMP-ping
  • Устранена дублирующая загрузка шлюзом данных при перезагрузке сервера
  • Добавлен системный календарь, общий для всех сервисов и автоматически распространяемый на шлюзы. Системный календарь позволяет скорректировать праздничные и рабочие дни в соответствии с производственным календарем.
  • В драйвере HTTP включена генерация ошибки на занятый порт для входящих запросов
  • В драйвере HTTP добавлено поле Таймаут для входящих запросов (входящие запросы должны следовать не реже указанного интервала)
  • В драйвере MQTT добавлено поле Таймаут (издатель должен публиковать MQTT-сообщения не реже не реже указанного интервала)
  • В драйвере MQTT исправлена ошибка с отпиской от неактуальных переменных, когда драйвер продолжал получать сообщения по топикам, которые уже не использовались переменными
  • В драйвере виртуальных переменных добавлен режим "Раздельная переменная" - читаем из одной переменой, пишем в другую
  • В драйвере OPC UA исправлена ошибка, приводившая к разрыву связи с сервером OPC UA от SimpleScada при попытке подписаться более чем на 1 переменную
  • В Modbus-драйверах исправлено поведение при запросе на запись. Было: после успешной записи в регистр значение переменной устанавливалось в записываемое значение до подтверждающего чтения. Стало: при формировании запросов на запись автоматически добавляется в очередь запрос на чтение. Данный алгоритм позволит самым быстрым образом получать актуальное, а не предполагаемое значение переменной путем подтверждающего чтения.
  • В Modbus-драйверах оптимизировано формирование очереди запросов для случаев с большими задержками ответов. Исправлена ситуация, когда одни регистры опрашивались чаще других, при одинаковом периоде опроса.
  • В Modbus-драйверах исправлена ошибка, приводившая к отсутствию переподключения к узлу в случае, когда таймаут превышал период опроса.
  • Исправлена ошибка отображения лога шлюза
  • Порт по умолчанию в Modbus-карте изменен на 5002 (т.к. 502 может конфликтовать с портом, на котором запущен modbus-слейв от производителя устройства)
  • В библиотеке HTTP исправлена проблема с отправкой запросов, содержащих non-ASCII символы (добавлена функция urlencode)

3077 от 28.12.2024

  • Добавлен драйвер BACnet/IP
  • Изменен формат значений тревожных переменных unack*8 + act*4 + cls_hi*2 + cls_lo*1

3074 от 08.12.2024

  • В выражениях драйверов drv_virt и drv_alarm добавлены функции времени (timestamp(),hour(),minute(),second(),year(),month(),mday(),wday(),yday(),zone(),uptime())
  • У аварийных переменных добавлена возможность опроса по периоду или по cron-расписанию
  • В drv_mbrtu добавлена проверка параметров порта (все узлы, которые подключаются на один RTU-порт, должны иметь одинаковые настройки порта, такие как скорость, четность и стоповые биты)
  • В выражения добавлены константы PI и E
  • Исправлен сброс на 0 метрик в modbus-драйверах при выполнении сборки
  • В драйвере веб-камер добавлена возможность использования базовой авторизации через URL вида http://login:password@server.com
  • Добавлен драйвер SNMP (drv_snmp). Драйвер позволяет читать данные с сетевых устройств по протоколу SNMP версии v2c.

3070 от 18.11.2024

  • Исправлена ошибка в сервисе map_mbtcp, приводившая к кратковременной выдаче нулей по запрашиваемым регистрам во время сборки
  • Оптимизированы драйверы Modbus в сценариях работы с большим количеством отдельных регистров

3069 от 12.11.2024

  • Доработан доступ через шлюз к серверу (сервис connect, параметры server_forward_port, server_forward_ssl_enabled, forward_allowed_ip)

3068 от 11.11.2024

  • Исправлена ошибка в drv_opcua, выражавшаяся в отключении всех OPC-UA-серверов при недоступности хотя бы одного
  • Добавлена возможность доступа к серверу через туннельный порт шлюза (параметр tunnel_port и tunnel_allowed_ip сервиса connect)

3066 от 25.10.2024

  • Сводные аварии принимают максимальный статус наблюдаемых аварий

3065 от 24.10.2024

  • Исправлена ошибка выравнивания памяти при работе с сетевым буфером по методу курсора на 32-bit

3064 от 23.10.2024

  • Принудительная синхронизация групповых переменных

3063 от 21.10.2024

  • Для уменьшения нагрузки на процессор при больших объемах сетевого трафика оптимизирован механизм сетевой буферизации

3062 от 16.10.2024

  • Исправлена ошибка в drv_mqtt, в некоторых случаях приводившая к постоянному реконнекту при работе с несколькими узлами на одном брокере

3061 от 16.10.2024

  • Корректная обработка неразрывных пробелов в выражениях на бэкэнде

3060 от 02.10.2024

  • Предотвращена запись в групповые переменные, если управляющая переменная в ошибке (доработка)

3059 от 26.09.2024

  • В драйвере OPC UA добавлено округление при записи целых чисел (для нивелирования погрешности чисел с плавающей точкой

3058 от 23.09.2024

  • В драйвере MQTT доступны настройки QoS и Retain

3057 от 20.09.2024

  • Предотвращена запись в групповые переменные, если управляющая переменная в ошибке

3056 от 20.09.2024

  • Добавлен драйвер Modbus-RTU-Over-TCP

3055 от 17.09.2024

  • Добавлена возможность указания папки установки в команде установки дистрибутива, например: wget -O - http://dl.pult.online/ru/gateway_linux_x64 | bash -s /pult_gateway

3054 от 12.09.2024

  • В конфиге map_mbtcp добавлен параметр modbus_allowed_ip
  • В drv_mbtcp и drv_mbrtu исправлено некорректное поведение при расчете метрик, когда за период опроса метрики не удалось выполнить ни одного запроса (например, из-за ожидания очереди на медленных линиях)

3052 от 22.08.2024

  • Исправлена ошибка с отправкой некорректного пакета при записи значения в регистр функцией 16 в драйверах Modbus TCP и Modbus RTU

3051 от 16.08.2024

  • Поддержка сводных аварий

3050 от 04.08.2024

  • В выражениях добавлена функция status() - возвращает позицию первого аргумента справа, не равного нулю.
  • В drv_virt и drv_alarm добавился параметр 'Недостоверно' (drv_expr_unrel), определяющий метод расчета выражений с недостоверными значениями.

3049 от 19.06.2024

  • Добавлена поддержка удаленного просмотра логов шлюза в интерфейсе сервера

3048 от 10.06.2024

  • Добавлена возможность получения значений из произвольного элемента массива при парсинге JSON-данных в драйверах drv_cmd, drv_http и drv_mqtt
  • Параметр list в драйверах drv_cmd, drv_http и drv_mqtt теперь допускает использование в ключе символов подстановки ? и *.
  • Добавлен драйвер для работы с веб-камерами (пока только протокол MJPEG)
  • drv_cam оптимизирован на получение видеоданных только при наличии подписки на переменную
  • В drv_cam добавлен параметр интервал
  • В drv_cam добавлен обработчик ошибок
  • В драйвере MQTT исправлена ошибка, приводившая к невозможности записи значений в топик
  • Устранены препятствия для установки сервера и шлюза на одно устройство (установка в разные папки, supervisor переведен на unix-сокет)
  • В драйверах drv_mqtt, drv_cmd и drv_http добавлена возможность подстановки метки времени при записи значения (%time%)
  • В драйверах drv_mqtt, drv_cmd и drv_http добавлена возможность округления записываемого значения (поле wrrnd 0-24)
  • Исправлена ошибка с обновлением групповых переменных (управляемые переменные не обновлялись при отсутствии подписки на управляющую переменную)
  • Исправлена проблема с регистрозависимыми HTTP-заголовками
  • Исправлена ошибка с использованием команды записи в drv_mbtcp и drv_mbrtu (команда 16 применялась только к форматам с двойным регистром, теперь - ко всем запросам)

3040 от 25.01.2024

  • Исправлена ошибка в drv_virt, приводившая к игнорированию переменной-счетчиком статических выражений
  • Исправлена ошибка в drv_mbtcp и drv_mbrtu, которая могла приводить к записи в регистр некорректно округленного целочисленного значения
  • Исправлена ошибка в drv_mbtcp и drv_mbrtu, которая могла приводить к кратковременной установке METRIC_UP в 1 и METRIC_DOWN в 0 при отсутствии ответов узла

3039 от 18.01.2024

  • В drv_alarm добавлен режим ROC (Rate of Change)
  • Исправлена ошибка, возникавшая при смене пароля через веб-интерфейс
  • Исправлена ошибка в map_mbtcp, приводившая к вылетам сервиса при некорректных modbus-запросах
  • Исправлена ошибка в отображении даты и времени

3036 от 04.12.2023

  • Исправлена ошибка в drv_mbtcp и drv_mbrtu, которая могла приводить к сбросу установленной битовой переменной при записи второй битовой переменной в один и тот же Holding Register
  • В скриптах исправлен ошибка в объекте Time, которая приводила к игнорированию настроек времени по серверу
  • В скриптах добавлено свойство uptime в объект Time: Time.uptime - время в секундах с запуска приложения
  • В drv_cmd добавлена функция записи значений переменных. При записи значения выполняется команда, заданная в параметре write, в которую подставляется значение переменной. С помощью драйвера командной строки теперь можно реализовать полноценную работу с GPIO устройства (чтение и запись значений в регистры GPIO).
  • В drv_http добавлена функция записи значений переменных. При записи значения выполняется запрос на url, заданный в параметре write_url, в который подставляется значение переменной. Также подстановка значения выполняется в заголовки (write_headers) и тело запроса (write_post) если данные параметры определены.

3032 от 20.11.2023

  • Исправлено отсутствие drv_http в некоторых дистрибутивах

3031 от 19.11.2023

  • В сервисах drv_virt и drv_alarm исправлена ошибка, которая в случае некорректного завершения работы устройства могла приводить к повреждению файла хранилища значений
  • Хранение значений переменных в драйверах, где это предусмотрено (drv_virt, drv_alarm) теперь выполняется через журнал предварительной записи (WAL) и приведено в соответствие с требованиями ACID
  • В сервисе drv_virt у переменной добавлено свойство counter (0|1). Свойство counter применимо к переменным с выражениями, если counter=1 переменная прибавляет к своему текущему значению значение выражения
  • Исправлена ошибка, приводившая к удалению скриптов после сборки (v3029,v3030)

3030 от 09.11.2023

  • В сервисе map_mbtcp исправлена ошибка, приводившая к игнорированию записи в битовые переменные через HR-регистр

3029 от 09.11.2023

  • Добавлен drv_http - драйвер позволяет получать числовые значения из исходящих и входящих http-запросов (JSON, текст, HTTP-заголовки, HTTP Status Code)
  • Исправлена ошибка сохранения поля payload у переменных на ARM
  • Исправлена ошибка, приводившая в некоторых случаях к вылету drv_virt при работе с переменными типа ping
  • Исправлена некорректная индикация процесса перезагрузки
  • Исправлена ошибка, приводившая в некоторых случаях к некорректному вычислению CRC на ARM
  • Исправлена ошибка в сервисе map_mbtcp на 32-битных архитектурах (запись значений переменных в чужие modbus-регистры)
  • В drv_virt добавлена возможность записи в переменные, которые представлены простыми выражениями (выражения состоящие из имени переменной, напр: $var1)
  • В drv_virt и drv_alarm в выражениях добавлены функции:
    • hi16(a) - верхний байт 16-битного числа
    • lo16(a) - нижний байт 16-битного числа
    • hi32(a) - верхнее 16-битное слово 32-битного числа
    • lo32(a) - нижнее 16-битное слово 32-битного числа
    • float(a,b,c,d) - генерация числа в формате Float IEEE-754 из 4 байт
    • double(a,b,c,d,e,f,g,h) - генерация числа в формате Float IEEE-754 из 8 байт
  • В скриптах добавлена функция reboot() - вызов перезагрузки устройства
  • В скриптах добавлена возможность указания нескольких переменных в качестве триггера
  • В сервисе connect добавлен параметр server_reboot_after_timeout - интервал отсутствия связи с сервером, после которого выполняется перезагрузка устройства
  • В дистрибутиве для Teleofis RTU1068 добавлено отключение консольного вывода в com-порт
  • В drv_mbtcp и drv_mbrtu:
    • исправлена некорректная работа очереди записывающих запросов, приводившая в случаях нестабильной связи с узлом к утечке памяти, а также к нарушению порядка выполнения запросов
    • исправлена некорректная обработка закрытых соединений, в результате которой в переменные могли попадать некорректные значения
    • вывод лога сделан более информативным (уровни log_mb и log_app)
    • добавлен параметр переменных ignore_errors
    • добавлена произвольная группировка регистров по GroupID
    • добавлены метрики для оценки общей работы драйвера:     - total_requests - общее количество запросов за период опроса     - total_errors - общее количество ошибок за период опроса     - total_vars - общее количество обработанных переменных за период опроса     - total_registers - общее количество обработанных регистров за период опроса     - total_quality - общее качество за период опроса (0 - все ошибки, 1 - без ошибок)     - total_art - общее среднее время ответа за период опроса     - total_rps - общее количество запросов в секунду за период опроса     - total_eps - общее количество ошибок в секунду за период опроса     - total_varps - общее количество обрабатываемых переменных в секунду за период опроса     - total_regps - общее количество обрабатываемых регистров в секунду за период опроса     - total_queue - общее количество запросов, ожидающих в очереди за период опроса (0 - очередь пуста, все запросы выполняются вовремя)

3022 от 07.10.2023

  • Исправлена ошибка запуска drv_gpsd на некоторых платформах

3021 от 06.10.2023

  • Дистрибутив оптимизирован по размеру (уменьшен в 1.5 раза) и теперь занимает менее 50МБ в распакованном виде
  • Добавлен дистрибутив для устройств Teleofis LT40/LT50/LT51

3020 от 03.10.2023

  • Добавлены математические функции в выражениях drv_virt и drv_alarm:
  • bit(X,Y) - возвращает 1 если в X установлен бит Y
  • bool(X) - возвращает 0 если X==0, иначе 1
  • round(X) - округляет X до целого
  • round2(X,Y) - округляет X до Y знаков после запятой
  • Добавлен драйвер GPSd (drv_gpsd, получение GPS-координат и других сопутствующих данных (скорость, курс и тп.) на устройствах с GPS-приемником через системный сервис GPSd)

3019 от 13.09.2023

  • Исправлена ошибка, приводившая к получению битых пакетов в драйвере Modbus RTU (drv_mbrtu) на некоторых устройствах
  • Исправлена некорректная расшифровка ошибок в web-интерфейсе

3017 от 08.09.2023

  • Добавлена функция каскадного подключения шлюзов (см. шаблон remote_gateway.json)
  • Исправлена ошибка в сервисе ядра, которая приводила к потере данных при обмене с сервисом скриптов

3016 от 06.09.2023

  • Добавлена функция буферизации данных при разрыве связи с сервером
  • Исправлена ошибка в драйвере аварий, которая приводила к потере связи с сервисом ядра

3013 от 23.08.2023

Исправлены незначительные ошибки

3012 от 22.08.2023

  • Добавлен мастер установки, позволяющий задать параметры подключения к серверу без входа в web-интерфейс.
  • Добавлен туннель-клиент для удаленного доступа к шлюзу через туннель-консоль

3011 от 21.08.2023

  • Переименованы параметры:
  • retries_count -> retry_count
  • retries_interval -> retry_interval

3010 от 15.08.2023

  • Изменен формат параметров переменной threstime, reset_time и retries_interval с секунд на миллисекунды
  • Параметр переменной reset_time переименован в reset_interval

3009 от 14.08.2023

  • Добавлена возможность выполнения повторов записи значения переменной до успеха (параметры переменной retries_count и retries_interval)
  • Добавлена возможность выполнения групповой записи значений по изменению значения управляющей переменной (параметры переменной group_vars, group_inv и group_ignore)
  • group_vars - имена прямых управляемых переменных со знаком $, через запятую
  • group_inv - имена инвертируемых управляемых переменных со знаком $, через запятую
  • group_ignore - игнорируемое значение (при переходе на которое не происходит изменение управляемых переменных)
  • Например: {  "name":"control_var",  "group_vars":"$var1_on,$var2_on,$var3_on",  "group_inv":"$var1_off,$var2_off,$var3_off",  "reset_time":1,  "reset_value":-1,  "group_ignore":-1,  "driver":{"name":"drv_virt"} },
  • Исправлена ошибка, приводившая к замедлению работы редактора скриптов

3008 от 09.08.2023

  • Для задач с управлением по фронту сигнала, добавлена возможность автоматического сброса переменной (параметры переменной reset_time и reset_value); если reset_time задан, переменная будет автоматически сбрасываться на reset_value через reset_time (сек)
  • Добавлена возможность использовать в выражениях для drv_virt и drv_alarm значение и время изменения переменной: $var__value (всегда последнее значение переменной, в отличие от $var не зависит от наличия ошибки) и $var__time (время изменения)
  • Исправлена ошибка пинга для определения статуса соединения в drv_mqtt, что могло приводить к постоянным переподключениям к брокеру
  • Исправлена ошибка опроса в drv_mbtpc при разрыве связи узлом
  • Исправлена ошибка некорректной группировки > 255 регистров в drv_mbtpc и drv_mbrtu

3007 от 24.07.2023

  • Добавлен сервис "connect" для подключения к серверу
  • В драйвере виртуальных переменных добавлен параметр "количество попыток" (retries) для пинга

3005 от 16.06.2023

  • Добавлен драйвер Modbus RTU (drv_mbrtu)

3004 от 18.05.2023

  • Исправлена ошибка парсера выражений в драйвере виртуальных переменных (drv_virt)
  • Исправлена ошибка парсера выражений в драйвере аварийных переменных (drv_alarm)

3003 от 12.05.2023

  • Добавлен драйвер OPC UA (drv_opcua)

3002 от 08.05.2023

  • Добавлена возможность проверки сертификата брокера в MQTT-драйвере (поле checkcert в свойствах MQTT-узла)
  • Добавлена поддержка SSL в веб-интерфейсе шлюза (параметр ssl_enabled в настройках сервиса gateway_setup)

3001 от 06.04.2023

  • Стартовая альфа-версия шлюза (компоненты будут обновляться и добавляться)
  • Дистрибутив предназначен для расширения возможностей текущей версии системы (V2)
  • Комплектация:
    • драйвер Modbus-TCP, drv_mbtcp
    • драйвер MQTT, drv_mqtt (только чтение)
    • драйвер команд командной строки, drv_cmd (только чтение)
    • драйвер аварийных переменных, drv_alarm
    • драйвер виртуальных переменных, drv_virt
    • modbus-карта, map_mbtcp
    • канал уведомлений через Telegram, chnl_telegram
    • скрипты, scripts
    • просмотрщик логов, log_viewer
    • сборщик, builder
    • ядро, core