команда на запись float в контроллере Schneider M172

Стартовая страница Форумы Взаимодействие с устройствами Modbus команда на запись float в контроллере Schneider M172

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

    обнаружил что с новой dll (KpModbus.dll версии 5.1.3.0) контроллер Schneider TM172 отказывается принимать команды на запись HoldingRegisters если я пытаюсь записать данные типа float.

    со старой dll (KpModbus.dll версии 5.1.2.0) работает нормально.

    мои настройки в шаблоне КП:
    Таблица данных = HoldingRegisters (Регистры хранения 4X)
    Множественная команда = да.
    Код функции = 16(10H)
    Тип элементов = float (4 байта)
    Количество элементов = 2
    Порядок байт = 2301

    отличия такие:
    (KpModbus.dll версии 5.1.2.0)
    в телеграмме отправляются 4 байта данных.

    (KpModbus.dll версии 5.1.3.0)
    в телеграмме отправляются 8 байт данных.

    Эта информация наверно больше для Михаила, потому что он знает почему поменялось количество передаваемых байт.

    Я решил сообщить, и если будет ответ, узанать — с чем связаны изменения,
    Это bug или feature ?

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

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

    В новой версии количество отправляемых байт равно float (4 байта) * количество элементов (2) = 8
    То есть если Вам нужно отправлять всего 4 байта, то поставьте 1 элемент.

    Необходимость изменения логики связана с разработкой драйвера Enron Modbus (другая длина регистров), которая потребовала унификации подхода.

    Это bug или feature ?

    Будем считать, что 2-й вариант)

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

    Обновление KpModbus, содержащее исправления найденные @manjey73 в одной из других тем.

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

    Описание изменений.

    По идее данная особенность должна появиться в драйвере версии 5.1.3.1.

    • Этот ответ был изменен 2 года, 6 месяцев назад от Mikhail.
    #21188
    AlekseyK
    Участник

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

    https://ibb.co/pWDmSVH

    здесь количество элементов = 2, количество байт = 4. все работает.

    https://ibb.co/Z1Yc8G3

    здесь количество элементов = 1, количество байт = 4. контроллер ругается.

    https://ibb.co/CKp6Dbm

    здесь количество элементов = 2, количество байт = 8. контроллер ругается.

    • Этот ответ был изменен 2 года, 5 месяцев назад от AlekseyK.
    • Этот ответ был изменен 2 года, 5 месяцев назад от AlekseyK.
    #21195
    Mikhail
    Модератор

    Значит изменение логики драйвера «просочилось» в более раннюю версию 🙂

    #21197
    manjey73
    Участник

    я же тогда от 5.8.2 ставил и начало работать, то есть предыдущая версия корректно работала с float

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