Измерения Pt100

Просмотр 15 сообщений - с 46 по 60 (из 79 всего)
  • Автор
    Записи
  • #22425
    Oakim
    Участник

    Возможно проблема в перестановке битов и еще в чем не знаю, для этого и хочу вывести промежуточные данные что бы разобрать что к чему.

    Вывод в файл меня тоже вполне устроит. Буду пробовать.

    #22426
    manjey73
    Участник

    Так у вас есть лог Коммуникатора, легко же проверить Калькулятором в Винде

    Приём (28/28): F2 7B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F 80 00 00 42 48 4C CE 96 BF
    

    Типа берете байты на примере лога, вносите в Калькулятор в HEX и смотрите биты, оно или не оно…

    Еще корячиться формулы писать 🙂

    Есть еще калькуляторы типа такого Online HEX Calc

    • Ответ изменён 4 года, 4 месяца назад пользователем manjey73.
    #22430
    Mikhail
    Модератор

    Вывести из формул в текстовый файл можно, на форуме где-то был пример. Но совет выше самый правильный для данной ситуации. Ещё полезен парсер https://rapidscada.net/modbus/ModbusParser.aspx

    #22435
    a80808
    Участник

    Там увы не ModBus…

    #22463
    Oakim
    Участник

    Запрос к Контроллеру

    Формат short перестановка бит 10325476 (такая же была в InSAT OPC)

    Запрос значений группы элементов "Diskret Inputs"
    Отправка (8): 01 04 01 00 00 01 30 36
    Приём (5/5): 01 04 02 00 00
    Приём (2/2): B9 30
    OK!

    Modbus Parser

    
    Part of Data Package	Description	Value
    01	                Slave address	0x01 (1)
    04	                Function code	0x04 (4) - Read Input Registers
    02	                Byte count	0x02 (2)
    00 00	                Register value	0x0000 (0)
    B9 30	                CRC	0xB930 (47408)

    То есть приходит 00 00 два байта равных нулю

    но после GetBit(Вх.канал,0-7) я получаю — 10101001

    #22464
    manjey73
    Участник

    Биты тут не переставляются, переставляются БАЙТЫ. и если у вас short то переставлять надо только 2 байта. Для short обычно не требуется. но если надо то 10 указать

    Это вам не здесь 🙂 в смысле не Insat

    #22466
    Oakim
    Участник

    Понял попробую

    #22467
    manjey73
    Участник

    Интересно, а что, работает GetBit(Вх.канал, 0-7)

    Или вы это для примера, вроде только один номер бита можно получить…

    #22468
    Oakim
    Участник

    Это для примера, с номерами бита от 0 до 7.

    я тут в другой ветке нашел инструкцию по настройке канала под мой случай
    Считывание битовой маски с Овен МВ110

    А может ли Тип входного Канала влиять на GetBit?

    #22470
    manjey73
    Участник

    В 5-й версии нет, канал всегда double. биты всегда на месте.
    Только если нет где-то формулы, которая в ASCII код что-то не перевела.

    Вы учитывайте, что в Modbus драйвере есть адресация с 0 или с 1 возможно вы просто читаете соседний регистр а не тот, что требуется.

    В парсере смотрите физикал/логикал адреса.

    #22472
    Oakim
    Участник

    Адрес МодБас правильный, тип short тоже, так как если меняю хоть один параметр на что то другое, то сразу получаю ошибку «02 Неправильный адрес данных»

    #22473
    Oakim
    Участник

    Так что то не то после коммуникатора, а это может быть только формула GetBit

    #22476
    manjey73
    Участник

    Если прочитать при помощи ModPoll значение вы получаете то же самое?

    #22478
    Oakim
    Участник

    Если через Modbus Pool отправляю строку 01 04 01 00 00 01 30 36
    то получаю такой же ответ 01 04 02 00 00 B9 30

    #22479
    manjey73
    Участник

    00 00 Register value 0x0000 (0)

    И у вас значение регистра по нулям, как вы хотите убедиться в правильности работы GetBit ?

    Вы в каком канале GetBit используете?

    Если сразу в ТИ то GetBit(Cnl, 1)
    если в дорасчетном ДТИ или ДТС то GetBit(Val(10), 1) значение бита 1 канала 10

Просмотр 15 сообщений - с 46 по 60 (из 79 всего)
  • Для ответа в этой теме необходимо авторизоваться.