Нестандартный метод передачи 16 бит по Modbus

Стартовая страница Форумы Разработка и интеграция Нестандартный метод передачи 16 бит по Modbus

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Записи
  • #7927
    OldManSpb
    Участник

    В одном из устройств, которое я должен в скором времени подключить, чтение и запись 16-битного слова реализована с помощью Coils. То есть на одно слово 16 coils. Не понимаю, зачем так сделали, но придется выходить из положения.
    1. Так как coils в коммуникаторе допускают только bool, для чтения необходимо создать 16 каналов, после чего формулами свести их в один канал? Я правильно понимаю?
    2. Как писать, пока не понял, не понятно, что в случае передачи множественной команды передается из канала в каждый из элементов.

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

    Использование coils для дискретных значений это полностью по стандарту и идеологии Modbus. А для чего их сводить в 1 канал? Если нужно, то можете свести, конечно. Примерно так: ((uint)Val(1) << 2) | ((uint)Val(2) << 1)... Вопрос 2 про команду не совсем понял.

    #7957
    OldManSpb
    Участник

    Когда передается команда в коммуникатор, передается значение канала. Правильно? Если это Coil, то передается 0 если 0 и 1 если любое другое значение. Так? А если при настройке команды в коммуникаторе выбрать «Множественная команда», и поставить количество элементов 16, что передастся в каждый из Coils?

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

    Если команда не множественная, то установится только 1 coil, команда должна быть 0 или 1 (а точнее просто > 0).
    Для множественной команды работа идёт с массивом байт. Передавайте сразу побайтно. А в случае передачи double, число раскладывается в 8 байт.

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