Тип канала и тип команды V6

Стартовая страница Форумы Разработка и интеграция Тип канала и тип команды V6

Просмотр 15 сообщений - с 1 по 15 (из 20 всего)
  • Автор
    Сообщения
  • #23166
    manjey73
    Участник

    Вот опять ступор, тип канала должен быть Double но при этом тип команды должен быть бинарным в виде HEX строки

    Не пойму как включить ?

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

    В этом случае всё же потребуется отдельный канал типа «Выходной». У него может быть тот же код тега.

    #23179
    manjey73
    Участник

    Тип канала OUTPUT в принципе и так, но при вызове окна команды я могу вводить только цифры, даже если переключаю тип канала на ASCII.

    Что делаю не так?

    И опять же, а если канал INPUT/OUTPUT но нужно показывать числовое значение, а в команде отправлять строку или строку HEХ ?

    Вот что-то данный момент вы как-то упустили, объединяя входные каналы и каналы управления

    • Этот ответ был изменен 1 год, 12 месяцев назад от manjey73.
    #23189
    manjey73
    Участник

    Что-то какие-то недоработки в системе…

    Канал Output, Тип данных — Double, Формат данных — Hexadecimal 8 digits

    При подаче команды появляется окно в котором предлагается ввести

    Значение команды (16-ричное число)

    Но отправляется стандартная команда, то есть некое число, хоть 1, что приводит к выполнению другого кода в драйвере.

    if (!double.IsNaN(cmd.CmdVal)) — а именно этого участка, а должно было бы выполнить этот участок

    if (cmd.CmdData != null && cmd.CmdData.Length != 0)

    Так почему так, если окно команды в WEB предлагает ввести 16-ричное число, а действия выполняются другие?

    Если непосредственно в Коммуникаторе выбрать Команда — 16-чное число, то все корректно, выполняется именно второй участок кода.

    Это отправка через Коммуникатор — Команда

    Отправка команды SyncTime4min
    Отправка (8): 52 03 0D 00 10 14 46 CA
    Приём (4/4): 52 00 3C D0
    OK
    OK: Команда SyncTime4min выполнена успешно
    Получение Бинарной команды
    
    Недавние команды
    +---------------------+-----------------------+
    | Время               | Описание              |
    +---------------------+-----------------------+
    | 21.04.2022 14:01:57 | Code=100, Val=276,000 |
    +---------------------+-----------------------+
    | 21.04.2022 14:10:15 | Code=100, Data=001014 |
    +---------------------+-----------------------+
    

    Тут в первом случае ввод команды в hex через отправку в WEB,
    Во втором случае отправка команды через Коммуникатор — Команда

    • Этот ответ был изменен 1 год, 12 месяцев назад от manjey73.
    #23191
    manjey73
    Участник

    Вот не продуман данный момент. как отображать и сохранять в базе и при этом как отправлять.
    В 5-й версии было четкое разделение Стандартная/Бинарная, указываемое в БД, что делать теперь неясно.

    #23193
    manjey73
    Участник

    Объясните, почему когда ставишь Формат Hexadecimal, останавливаешь и запускаешь WEB (рестарт не помогает, вроде было где-то об этом), при вызове команды в окне указано
    Значение команды (16-ричное число) но по факту сервер отправляет Стандартную команду а не набор байт ?????

    #23194
    manjey73
    Участник

    Упс, кто бы мог подумать…

    Отправка команды SyncTime4min
    Отправка (8): 52 03 0D 00 55 16 F5 9B
    Приём (4/4): 52 04 3D 13
    Ошибка: Внутренние часы корректировались
    Ошибка: Команда SyncTime4min не выполнена
    Получение Бинарной команды

    При выборе Формата — String появляется выбор в окне
    Данные команды
    Строка / 16-ричные данные

    И только тогда можно отправить действительно набор 16-ричных данных.

    В идеале должно быть однозначное определение Число, Строка, 16-ричные данные
    А не что-то непонятное в виде преобразования HEX в Double, что полностью сбивает с толку.

    #23195
    manjey73
    Участник

    И хотелось бы пояснений по поводу Форматов — Есть Custom format но как этим управлять непонятно.

    Что здесь является Форматом и что здесь является Кодом ?

    #23196
    manjey73
    Участник

    Еще момент заметил.

    Ячейка «Тип данных» вообще для чего? она никак не участвует в отображении данных, так как за это отвечает ячейка «Формат» когда мы в ней выбираем Hexadecimal например.
    С которым тоже что-то непонятное, так как у меняю Hex 8 digits на просто HEX а отображение как было 80000000h так и осталось

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

    16-ричное число — это и есть обычное целое число, записанное цифрами 0..9A..F, а не массив байт.

    Тип данных существенно влияет на кодирование данных. Например тип double не сможет сохранить такое же большое целое число как Int64. Если поставить тип Int64 для даты и времени, то можно достичь большей точности как в Unix time (но тогда в драйвере тег должен быть соответствующего типа).
    Hex 8 digits добавит нули слева, если необходимо.

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

    Custom format — это просто строчка в таблице, чтобы идентификаторы своих форматов делали достаточно большими, избегая коллизий со стандартными форматами.
    Вы можете добавить свои строки ниже, форматирование применяется по правилам C# метода ToString(format)
    Для дат и чисел допустимые форматы разные, их нужно посмотреть в документации .NET.

    #23203
    manjey73
    Участник

    Но при этом мы все равно ограничены 8-мью байтами?

    Есть возможность доработать ядро так, чтобы однозначно можно было идентифицировать окно команд в WEB ?

    1. Команда с выбором типа отправки Число, Hex Число (раз появился такой вариант), Строка, Hex строка
    2. Только один из перечисленных типов
    3. Как вариант выбор по маске

    Когда я говорил о подсказке в окне Команд WEB имел ввиду вывод текста туда не в процессе ошибки, а именно текстом в дополнение к этому

    Канал:	[232] SyncTime4min
    Объект:	[1] Enterprise
    Устройство:	[2] Mercury23x_82
    Данные команды
    Строка 16-ричные данные

    То есть указание, что и как вводить оператору. Например «Введите число в диапазоне 1 — 100 в процентах» ну и так далее.
    Например можно сделать в Вспомогательной таблице и ссылаться на нее в канале. Если ссылки нет, то ничего не выводить.

    #23210
    manjey73
    Участник

    Форматы времени допускают определения в каком виде передавать время или время передается в виде строки согласно локальным установкам ПК ?

    А то мы вчера с @Romiros разбирались со строчкой 0x323032322D30342D….

    2022-04- и так далее… Но ведь передать время в виде строки на любом ПК можно в том виде, в каком его определишь сам, например вот в таком ddd.dd.MM.yy или в таком yyyy-MM-dd,HH:mm:ss

    Или мы ограничены примитивами G, T, t и так далее ?

    #23211
    a80808
    Участник

    останавливаешь и запускаешь WEB (рестарт не помогает, вроде было где-то об этом),

    У меня такое на Win7, на Win10 вроде нормально перезапускалось. А на Win7 так и есть — захожу в «Статус экземпляра» и последовательно жму кнопки на WEB «Стоп» — «Старт» ну и Ctrl+F5 на браузере…

    #23212
    manjey73
    Участник

    @a80808 у меня Win 10, если требуется изменить какие-то параметры, которые должны отразиться в WEB только так.

Просмотр 15 сообщений - с 1 по 15 (из 20 всего)
  • Вы должны авторизироваться для ответа в этой теме.