Стартовая страница › Форумы › Понять, как работает ПО › Двойная запись в журнале событий
Помечено: Аварии, Журнал событий
- В этой теме 38 ответов, 5 участников, последнее обновление 3 года, 10 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
16.09.2022 в 09:41 #24995
saprin8
УчастникНу это впринципе можно решить заменой формулы и цвета, спасибо.
16.09.2022 в 10:14 #24996
MikhailМодераторФормула Cnl не должна применяться для дорасчётных каналов. Формула Val() очень редко применяется для каналов типа Телеизмерение и Телесигнал.
В первую очередь нужно определить, какой тип канала Вам подходит — дорасчётный или обычный, а затем исправить формулу.16.09.2022 в 10:21 #24998saprin8
УчастникМне хотелось бы приходящий сигнал сразу отправлять в журнал, сигнал телеизмерение, но все входящие сигналы идут в string (не я это сделал и не могу поменять), приходится каждый входящий сигнал преобразовывать из стринг в дабл. Но чтобы запихнуть в журнал правильное значение нужен еще и статус. Пока появился рабочий вариант StringToDouble(CnlVal); StringToDouble(CnlVal), но оно тоже криво работает
16.09.2022 в 11:17 #25002Romiros
УчастникЧто значит криво работает? Вы скрины прикладывайте, сложно догадываться.
16.09.2022 в 13:06 #25005saprin8
Участникформула во входящем канале телеизмерения StringToDouble(CnlVal); StringToDouble(CnlVal)+113 . Когда через генератор задаю входящему каналу «1», то статус становится почему-то «3», а в нуле становится 113. Формат «Текст перечисления» и Размерность «Авария» (Неактивна;Активна;Неактивна). Статус смотрю через текущие данные.
16.09.2022 в 14:26 #25006
manjey73УчастникВы 1 вводите в строковом виде ? Вообще очень странно, чудес же не бывает
16.09.2022 в 15:02 #25007saprin8
Участник1 ввожу в генераторе, чтобы в канал значение приходило. Вот и я думаю, что это странно, почему именно 3? Не 2, не 1, а 3.
16.09.2022 в 15:28 #25008saprin8
УчастникНашел в чем проблема, если нет связи с сервером, то статус всегда 3. Это можно изменить ?
16.09.2022 в 15:34 #25009
manjey73УчастникНет под рукой 5-й версии, а в 6-й 3 = Ошибка формулы
з.ы. просто добавьте в формулу если 3 то 0 или что-то в этом духе
для статуса (правда не знаю, насколько верная запись, не на чем проверить, вроде допускается подобная запись)
; StringToDouble(CnlVal) == 3? 0: StringToDouble(CnlVal)+11316.09.2022 в 15:37 #25010
manjey73Участникхотя ерунда какая-то, если вы сам Статус меняете так или иначе от значения канала, откуда у вас 3 берется ?
-
Ответ изменён 3 года, 10 месяцев назад пользователем
manjey73.
16.09.2022 в 15:40 #25012saprin8
УчастникМожет если потеря связи с сервером или просто не идет сигнал, пустое значение висит и он статус в 3 переделывает. У меня приходят все каналы телеизмерение без указания статуса со статусом 3 если от сервера нет сигнала.
16.09.2022 в 16:06 #25013
manjey73УчастникНу так и оставьте его 3, точнее вам надо подправить формулу, если вот вариант выше допускается, только так
StringToDouble(CnlVal) ; Stat() == 3? Stat(): StringToDouble(CnlVal)+113
16.09.2022 в 16:25 #25014saprin8
УчастникНо если от сервера есть сигнал, то статус 3 не приходит, пока его не присвоишь. Поставил в типы событий на 3 «Нет связи с сервером».
16.09.2022 в 18:23 #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)16.09.2022 в 18:24 #25016
MikhailМодераторОшибка в формуле скорее всего возникает из-за ошибки внутри StringToDouble
-
Ответ изменён 3 года, 10 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.