Стартовая страница › Форумы › Ошибки в работе › Не работает динамический рисунок
- В этой теме 42 ответа, 5 участников, последнее обновление 1 год, 10 месяцев назад сделано a80808.
-
АвторСообщения
-
06.06.2022 в 17:45 #23918MikhailМодератор
Добейтесь, чтобы в каждом строковом канале был корректный кусочек строки. Затем будем разбираться с формулами. Хотя было бы правильнее всё же договориться с теми, кто отправляет данные, об использовании числовых типов.
06.06.2022 в 17:49 #23921RomirosУчастникY1 у Вас это 128 канал, Y2 без канала, судя по второму скриншоту. Пересоздайте их заново с помощью мастера.
07.06.2022 в 10:38 #23930AlexanderUshakovУчастникВообщем я в свойствах устройства сделал длинну строки 16, при опросе стали приходить корректные значения в таблице.
Но при выводе на схему обрезается одна цифра у значений с пятью цифрами.
Так же происходит корректное преобразование в double формулой DecodeUnicode(Val()), но так же без последней цифры.
То есть наглядно:
Фактическое значение параметра — 32525
При опросе через коммутатор в таблице — 32525
При отображении на схеме — 3252
При переводе в double — 3 252.00
Скрин: https://disk.yandex.ru/i/lV3RHVyQ4bc92Qполное значение получается добиться, если у входного параметра поставить длинну данных 2, а не 1, но тогда сбивается порядок каналов. Как я описывал ранее.
07.06.2022 в 10:54 #23931manjey73УчастникВ БД хранится только 4 символа Unicode или 8 символов ASCII
Вам нужно ДО записи в БД преобразовать строку в число.Вероятно дело тут связано как-то с этим.
07.06.2022 в 10:55 #23932RomirosУчастникВ чем вопрос? Вы работаете со строками. Чтобы поместить все символы строки в double вам нужно 2 канала. Поэтому ставите длину 2. Т.е. например канал 101 — первое значение, канал 103 — второе значение, следующий 105.
07.06.2022 в 11:01 #23933RomirosУчастникВот для примера, как у меня хранятся строки. Может так понятнее.
07.06.2022 в 13:41 #23939AlexanderUshakovУчастникRomiros, так у меня же каналы приходят из OPC сервера, как они сканируются коммуникатором так и БК появляются, если я в БК принудительно правлю номер каналов например, из 150 каналов я каналу 129 ставлю длинна 2, а каналу 130 присваиваю номер в конце списка 151 и тоже длинну 2, чтобы 129 занял два места 129-130, то перенесенный канал 151 вообще не показывается. А при сканировании через Коммуникатор я не могу менять нумераци
07.06.2022 в 14:12 #23940RomirosУчастникВыставьте в БК нужный размер, с нужными сигналами, и передаете конфигурацию на исполнение. По идее все должно привязаться.
Сейчас подниму у себя OPC клиент и проверю ради интереса.07.06.2022 в 14:42 #23941RomirosУчастникСлушайте, ну специально все проверил. Все создается через мастера создания каналов автоматически, нужного размера. Просто укажите в коммуникаторе тег, нужный размер строки и создайте каналы с помощью мастера. Он сам все создаст, как нужно.
07.06.2022 в 15:37 #23942AlexanderUshakovУчастникRomiros, сделал как вы описали, через мастера, все получилось, длинна данных сама определилась, и номера каналов перераспределились. Только теперь каналы на мнемосхеме поправить надо, смещение получилось.
Теперь мне надо в расчетном канале получается соединить значение Val(129) и Val(130) и сделать преобразование в Double? А то если написать просто DecodeUnicode(Val(129)), то он преобразует без пятой цифры, а DecodeUnicode(Val(130)) преобразует в одну недостающую пятую цифру, но DecodeUnicode(Val(129)+Val(130)) выдает значение 0, а string.Concat(Val(129), Val(130)) не компилируется07.06.2022 в 15:50 #23946MikhailМодераторНужно в таблицу Скрипты добавить формулу примерно такого содержания:
public double MyParse(int cnlNum1, int cnlNum2) { string s1 = DecodeUnicode(Val(cnlNum1)); string s2 = DecodeUnicode(Val(cnlNum2)); return ScadaUtils.ParseDouble(s1 + s2); }
Затем применить эту формулу для нового канала, в котором наконец-то будет число.
08.06.2022 в 11:39 #23965AlexanderUshakovУчастникСделал как вы написали и все получилось, спасибо всем за помощь!
Правильно я понял, что у расчетного канала, какой бы тип данных в него для расчета не передаешь, то он всегда преобразуется в double?08.06.2022 в 11:51 #23966a80808УчастникДля пятой версии да. В шестой возможны варианты 🙂
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.