Модуль экспорта в БД (ModDBExport )

Стартовая страница Форумы Понять, как работает ПО Модуль экспорта в БД (ModDBExport )

Просмотр 15 сообщений - с 1 по 15 (из 24 всего)
  • Автор
    Записи
  • #14475
    hizkiyau
    Участник

    Привет всем участникам форума!

    Где то читал на форуме и сам пробовал использовать модуль экспорта в базу данных, он пишет лишь данные от реальных каналов, Дорасчетные — не пишет.
    Тут на днях заметил что модуль стал писать все каналы: Реальные и Дорасчетные (тут правда одни 0).
    Вопрос вот в чем, а зачем в новой версии сделана такая реализация — писать дорасчетные каналы с одними 0, тогда уж с данными — больше пользы. И как все это отключить, запись дорасчетных каналов с 0 ?

    #14479
    Mikhail
    Модератор

    Добрый день!
    Изменений логики работы модуля экспорта не было.
    Напишите, какая у Вас версия SCADA-Сервера и модуля экспорта. Проверьте, что дорасчётные каналы не привязаны к Коммуникатору.

    #14482
    hizkiyau
    Участник

    Скада самая свежая. Логику не менял.

    №1000 Дорасчетный канал [Часы] с формулой GetTime()

    
    public double GetTime()
    { return EncodeDate(DateTime.Now);}
    

    1. в собственную базу скада пишет этот канал со значение времени типа double
    2. пишет и с ModDBExport в Postgres , только со значение =0

    Раньше такого не было, на более ранних версиях скады

    #14483
    hizkiyau
    Участник

    С другими дорасчетными каналами,связь с коммуникатором есть:

    дорасчетный канал получает значение статуса с прибора через коммуникатор
    а реальный канал с формулой проверяет этот статус

    Но темнее менее в более ранней версии скада при этом в базу не записывались значения дорасчетных каналов

    #14488
    Mikhail
    Модератор

    Напишите точные версии.
    Сделайте скриншоты настроек.

    #14491
    hizkiyau
    Участник
    #14492
    hizkiyau
    Участник

    Выслал вам скрины,
    Да,вы правы: когда дорасчётные каналы привязаны к Коммуникатору,то пишутся в стороннюю базу автоматически со своими значениями.
    В принципе не критично, но опять таки — лишняя нагрузка на базу без реального выхлопа. Логичней было бы — не записывать их вовсе или записывать так все дорасчетные , а не те что связаны с коммуникатором.
    Если возможность как то формулами это исключить — запись в базу?

    #14493
    Mikhail
    Модератор

    Дорасчётные каналы не должны быть привязаны к Коммуникатору.
    Возможно, Вам нужно просто изменить тип канала на ТС или ТИ.
    Для чего, например, канал 300 сделан дорасчётным?

    #14494
    hizkiyau
    Участник

    Здравствуйте Михаил,
    канал 300 тип Дорасчетный сделан для того что бы получить от прибора 2-х байтовый регистр в одном из бите которого храниться 0 или 1 (статус того что прибор работает нормально). А канале ТС я это прежде обязан проверить, прежде чем вывести значение в интерфейс скады.
    1. Если отвязать Дорасчетный канал от коммуникатора, то естественно он не будет записываться в базу, но и проверить статус так же будет невозможно.
    2. Приходил мне в голову вариант как обойтись: в ТС канале получить все регистры и значение и статус в в виде массива 16 битных регистров, а потом разбирать через формулы что и как …. слишком мутно.
    Если есть идеи предложите, как сделать ?
    Изменять Дорасчетный канал с ТС на ТИ не пробовал, не уверен что это сработает

    #14495
    Romiros
    Участник

    канал 300 тип Дорасчетный сделан для того что бы получить от прибора 2-х байтовый регистр в одном из бите которого храниться 0 или 1 (статус того что прибор работает нормально). А канале ТС я это прежде обязан проверить, прежде чем вывести значение в интерфейс скады.

    Логика не понятна. Зачем эти каналы делать дорасчетными, если Вы используете данные от приборов. Поясните пожалуйста.
    Дорасчетные каналы предназначены для вычисления на основе данных других каналов.
    Получить нужный бит можно используя формулу во входном канале ТИ или ТС.

    #14500
    Mikhail
    Модератор

    Для канала типа ТС или ТИ формула тоже вычисляется. Это происходит в момент получения данных. Если нужен только 1 бит из всего регистра, считанного из прибора, то Вы можете обойтись одним каналом типа ТС. Если нужно получить несколько разных битов, то потребуется вариант 2, который Вы описали.

    #16247
    slava136
    Участник

    Здравствуйте, не могу разобраться в чем проблема.. Как будто нет связи с БД. БД стоит на удаленном сервере, созданы таблицы, но туда ничего не записывается.. В модуле экспорта прописано вроде все правильно, 3 источника данных, соединение тоже все прописано.. В ручном режиме выдает ошибку : object reference not set to an instance of an object

    INSERT INTO runtime(datetime, cnlnum, val, stat)
    SELECT @datetime, @cnlNum, @val, @stat WHERE @cnlNum = 102 or @cnlNum = 103 or @cnlNum = 302

    INSERT INTO cnldata (datetime, cnlnum, val, stat)
    SELECT @datetime, @cnlNum, @val, @stat WHERE @cnlNum != 101 and @cnlNum != 301

    INSERT INTO trigger (datetime, cnlnum, val, stat)
    SELECT @datetime, @cnlNum, @val, @stat WHERE @cnlNum = 101 or @cnlNum = 301

    #16263
    Mikhail
    Модератор

    Добрый день!
    Смотрите логи модуля экспорта.

    #16276
    slava136
    Участник

    Подскажите не опытному, где их найти…)

    #16278
    manjey73
    Участник

    Администратор — Сервер — Модули (где модуль добавляли) и где-то там Журнал в свойствах модуля.
    Ну если по аналогии с Модулем автоуправления.

    Ну либо в папках log предположительно Сервера файл лога модуля.

    • Ответ изменён 6 лет, 3 месяца назад пользователем manjey73.
Просмотр 15 сообщений - с 1 по 15 (из 24 всего)
  • Для ответа в этой теме необходимо авторизоваться.