Стартовая страница › Форумы › Понять, как работает ПО › Шестнадцатиричный формат
- В этой теме 37 ответов, 4 участника, последнее обновление 10 месяцев назад сделано
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 #32154manjey73
УчастникДа, формулы лучше отлаживать на ПК разработке в Hellow Word например.
CalcEngine формируется каждый запуск сервера, в Журнале есть об этом строки.Ещё момент, по умолчанию формулы будут конвертированы в double, даже если вы возвращаете bool
13.04.2024 в 14:52 #32155JurasskPark
Участник13.04.2024 в 15:59 #32156manjey73
УчастникДлина данных создаст массив каналов, к индексам массива можно обращаться из формулы.
Формула действует на каждый калам массива, если что13.04.2024 в 17:21 #32157Z_h_e
УчастникКроме формата ещё посмотрите тип данных, там надо указать HEX
Нет в канале такого формата в типе данных.
13.04.2024 в 17:52 #32158manjey73
УчастникВыберите Тип Данных — пусто или Duoble
у меня только так привязка к каналу работает, если поставить Integer или Ascii string, привязка пропадаетЕсли надо отображать как-то по другому, чем это делает Scada то надо применять формулы.
-
Этот ответ был изменен 10 месяцев, 1 неделя назад от
manjey73.
15.04.2024 в 12:46 #32182Mikhail
МодераторПодход через преобразование в строку не оптимален в данном случае. Желательно найти причину, почему формат не работает. Если сделаете скриншот свойств канала, как было изначально, я проверю у себя.
15.04.2024 в 12:53 #32184Z_h_e
УчастникПопозже сделаю. Но я доя пробы еще и просто в канале ставил галочку исп.формулу. Во входной формуле ставил просто шест. число в формате 0x0000. Все что выше Ox80000000 в таблице отображалось как 0x80000000. Если меньше то нормально.
Мне на самом деле вообще надо 12байтное число отобразить. Но можно его и на 3 части разбить, если бы 4х нормально работало.
15.04.2024 в 14:43 #32189Mikhail
МодераторПопробуйте обновить ScadaCommon.dll в директории ScadaServer. Ссылка
Помогло обновление?15.04.2024 в 16:48 #32192Z_h_e
УчастникНе помогло. Комп перезагружал.
Ниже красной черты, это то что отображается в таблице. Строка таблицы привязана к этому каналу.
Если убрать галочку использовать формулу и убрать 16й формат, то в десятичном отображается корректное число и оно больше чем 0x80000000, как ставлю 16й то сразу 0x80000000.15.04.2024 в 16:59 #32195Z_h_e
Участник
Это то что реально считывается по модбасу и оно корректно отображается в десятичном формате.-
Этот ответ был изменен 10 месяцев, 1 неделя назад от
Z_h_e.
15.04.2024 в 17:02 #32197manjey73
УчастникКакая-то проблема с отрицательными числами при преобразовании в HEX
0х800D0003 должно отобразиться в правильном вариантеЕсли выбираете Hex 16 знаков какое число будет отображено ?
-
Этот ответ был изменен 10 месяцев, 1 неделя назад от
manjey73.
15.04.2024 в 17:07 #32199Z_h_e
УчастникДа, я знаю что должно быть 0х800D0003.
Где выбрать 16 знаков?15.04.2024 в 17:25 #32200manjey73
УчастникВ вспомогательные таблицы — Форматы добавьте по аналогии с другими и укажите там X16
потом выберите в Формате канала добавленный вариант.15.04.2024 в 17:43 #32201Z_h_e
УчастникПопробовал. Теперь отображается вот так 0000000080000000h
-
Этот ответ был изменен 10 месяцев, 1 неделя назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.