Стартовая страница › Форумы › Понять, как работает ПО › Шестнадцатиричный формат
- В этой теме 37 ответов, 4 участника, последнее обновление 2 года, 3 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
13.04.2024 в 14:43 #32153
JurasskParkУчастникhttps://forum.rapidscada.ru/?topic=работа-со-строковыми-функциями#post-31880
Вызов
SplitUnicode(() => DoubleToString16(Val(1), 0))13.04.2024 в 14:43 #32154
manjey73УчастникДа, формулы лучше отлаживать на ПК разработке в Hellow Word например.
CalcEngine формируется каждый запуск сервера, в Журнале есть об этом строки.Ещё момент, по умолчанию формулы будут конвертированы в double, даже если вы возвращаете bool
13.04.2024 в 14:52 #32155
JurasskParkУчастник13.04.2024 в 15:59 #32156
manjey73УчастникДлина данных создаст массив каналов, к индексам массива можно обращаться из формулы.
Формула действует на каждый калам массива, если что13.04.2024 в 17:21 #32157Z_h_e
УчастникКроме формата ещё посмотрите тип данных, там надо указать HEX
Нет в канале такого формата в типе данных.
13.04.2024 в 17:52 #32158
manjey73УчастникВыберите Тип Данных — пусто или Duoble
у меня только так привязка к каналу работает, если поставить Integer или Ascii string, привязка пропадаетЕсли надо отображать как-то по другому, чем это делает Scada то надо применять формулы.
-
Ответ изменён 2 года, 3 месяца назад пользователем
manjey73.
15.04.2024 в 12:46 #32182
MikhailМодераторПодход через преобразование в строку не оптимален в данном случае. Желательно найти причину, почему формат не работает. Если сделаете скриншот свойств канала, как было изначально, я проверю у себя.
15.04.2024 в 12:53 #32184Z_h_e
УчастникПопозже сделаю. Но я доя пробы еще и просто в канале ставил галочку исп.формулу. Во входной формуле ставил просто шест. число в формате 0x0000. Все что выше Ox80000000 в таблице отображалось как 0x80000000. Если меньше то нормально.
Мне на самом деле вообще надо 12байтное число отобразить. Но можно его и на 3 части разбить, если бы 4х нормально работало.
15.04.2024 в 14:43 #32189
MikhailМодераторПопробуйте обновить ScadaCommon.dll в директории ScadaServer. Ссылка
Помогло обновление?15.04.2024 в 16:48 #32192Z_h_e
УчастникНе помогло. Комп перезагружал.

Ниже красной черты, это то что отображается в таблице. Строка таблицы привязана к этому каналу.
Если убрать галочку использовать формулу и убрать 16й формат, то в десятичном отображается корректное число и оно больше чем 0x80000000, как ставлю 16й то сразу 0x80000000.15.04.2024 в 16:59 #32195Z_h_e
Участник
Это то что реально считывается по модбасу и оно корректно отображается в десятичном формате.-
Ответ изменён 2 года, 3 месяца назад пользователем
Z_h_e.
15.04.2024 в 17:02 #32197
manjey73УчастникКакая-то проблема с отрицательными числами при преобразовании в HEX
0х800D0003 должно отобразиться в правильном вариантеЕсли выбираете Hex 16 знаков какое число будет отображено ?
-
Ответ изменён 2 года, 3 месяца назад пользователем
manjey73.
15.04.2024 в 17:07 #32199Z_h_e
УчастникДа, я знаю что должно быть 0х800D0003.
Где выбрать 16 знаков?15.04.2024 в 17:25 #32200
manjey73УчастникВ вспомогательные таблицы — Форматы добавьте по аналогии с другими и укажите там X16
потом выберите в Формате канала добавленный вариант.15.04.2024 в 17:43 #32201Z_h_e
УчастникПопробовал. Теперь отображается вот так 0000000080000000h
-
Ответ изменён 2 года, 3 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.

