Двойная запись в журнале событий

Стартовая страница Форумы Понять, как работает ПО Двойная запись в журнале событий

Просмотр 15 сообщений - с 16 по 30 (из 39 всего)
  • Автор
    Записи
  • #24995
    saprin8
    Участник

    Ну это впринципе можно решить заменой формулы и цвета, спасибо.

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

    Формула Cnl не должна применяться для дорасчётных каналов. Формула Val() очень редко применяется для каналов типа Телеизмерение и Телесигнал.
    В первую очередь нужно определить, какой тип канала Вам подходит — дорасчётный или обычный, а затем исправить формулу.

    #24998
    saprin8
    Участник

    Мне хотелось бы приходящий сигнал сразу отправлять в журнал, сигнал телеизмерение, но все входящие сигналы идут в string (не я это сделал и не могу поменять), приходится каждый входящий сигнал преобразовывать из стринг в дабл. Но чтобы запихнуть в журнал правильное значение нужен еще и статус. Пока появился рабочий вариант StringToDouble(CnlVal); StringToDouble(CnlVal), но оно тоже криво работает

    #25002
    Romiros
    Участник

    Что значит криво работает? Вы скрины прикладывайте, сложно догадываться.

    #25005
    saprin8
    Участник

    формула во входящем канале телеизмерения StringToDouble(CnlVal); StringToDouble(CnlVal)+113 . Когда через генератор задаю входящему каналу «1», то статус становится почему-то «3», а в нуле становится 113. Формат «Текст перечисления» и Размерность «Авария» (Неактивна;Активна;Неактивна). Статус смотрю через текущие данные.

    #25006
    manjey73
    Участник

    Вы 1 вводите в строковом виде ? Вообще очень странно, чудес же не бывает

    #25007
    saprin8
    Участник

    1 ввожу в генераторе, чтобы в канал значение приходило. Вот и я думаю, что это странно, почему именно 3? Не 2, не 1, а 3.

    #25008
    saprin8
    Участник

    Нашел в чем проблема, если нет связи с сервером, то статус всегда 3. Это можно изменить ?

    #25009
    manjey73
    Участник

    Нет под рукой 5-й версии, а в 6-й 3 = Ошибка формулы

    з.ы. просто добавьте в формулу если 3 то 0 или что-то в этом духе

    для статуса (правда не знаю, насколько верная запись, не на чем проверить, вроде допускается подобная запись)
    ; StringToDouble(CnlVal) == 3? 0: StringToDouble(CnlVal)+113

    #25010
    manjey73
    Участник

    хотя ерунда какая-то, если вы сам Статус меняете так или иначе от значения канала, откуда у вас 3 берется ?

    • Ответ изменён 3 года, 10 месяцев назад пользователем manjey73.
    #25012
    saprin8
    Участник

    Может если потеря связи с сервером или просто не идет сигнал, пустое значение висит и он статус в 3 переделывает. У меня приходят все каналы телеизмерение без указания статуса со статусом 3 если от сервера нет сигнала.

    #25013
    manjey73
    Участник

    Ну так и оставьте его 3, точнее вам надо подправить формулу, если вот вариант выше допускается, только так

    StringToDouble(CnlVal) ; Stat() == 3? Stat(): StringToDouble(CnlVal)+113

    #25014
    saprin8
    Участник

    Но если от сервера есть сигнал, то статус 3 не приходит, пока его не присвоишь. Поставил в типы событий на 3 «Нет связи с сервером».

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

    Для версии 5 статус 3 — это ошибка формулы.
    Изменение стандартных статусов приведёт к некорректной работе системы.
    Очевидно, что формула StringToDouble(CnlVal) ; Stat() == 3? Stat(): StringToDouble(CnlVal)+113 является некорректной.
    Рекомендую в таблицу Формулы добавить свою формулу для вычисления статуса на основе текущего значения канала.
    Примерно так:

    public int MyStat(double val)
    {
      return StringToDouble(val) > 0 ? 101 : 102;
    }

    Затем в формуле канала: StringToDouble(CnlVal); MyStat(CnlVal)

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

    Ошибка в формуле скорее всего возникает из-за ошибки внутри StringToDouble

Просмотр 15 сообщений - с 16 по 30 (из 39 всего)
  • Для ответа в этой теме необходимо авторизоваться.