Archived

Этот пост заблокирован, редактирование отключено

Программное обеспечениеВопросы по zetFBDЧитаем по Modbus

Вопросы по системе программирования контроллеров Z400 и Z401
Исходное сообщение:
leszkin, 27.08.2015, 16:49
leszkin
Читаем по Modbus
Михаил, приветствую.
Подскажите по конкретному примеру пожалуйста.
Адрес нужного регистра по мануалу устройства - 4001. Функция InputRegisters.
ОРС-сервером читаю его без проблем, а контроллером не могу.
На скрине пример тэга, который успешно читается ОРС-сервером. Как прочитать эту же переменную контроллером?

з.ы. порт контроллера сконфигурирован верно.
Ответы:
leszkin, 28.08.2015, 09:32
leszkin
Читаем по Modbus
вот более подробная выдержка из мануала устройства.


Данные передаются байтами и словами (2 байта). Слова передаются старшим байтом вперед, т.е. если передается слово 0x1234, то 0x12 в PDU идет раньше 0x34.
Далее по тексту в поле контрольная сумма CRC16, которая служит для обнаружения ошибок при передаче битов данных. У контрольной суммы младшее слово приводится впереди, т.е. настоящая контрольная сумма перевернута (напри-мер: 0xBDCB для PC будет 0xCBBD).

А считать необходимо то, что в аттаче. Эксперементирую с адресами чтения в контроллере. Блок чтения отдает то ошибку 16, то 17...
mike, 28.08.2015, 09:52
mike
Читаем по Modbus
Добрый день!
Часом не к эл. счетчику подключаетесь?
leszkin, 28.08.2015, 10:13
leszkin
Читаем по Modbus
датчик перепада давления Прома-ИДМ.
Ошибку 17 поборол - после настройки порта не сохранил проект, и заново его открыв пытался передавать с контролем четности, а его в датчике нет.
А вот на какой адрес указывать в блоке чтения так и не догоняю... 34000?
MegaVolt, 28.08.2015, 10:14
MegaVolt
Читаем по Modbus
[quote author=leszkin link=topic=36.msg223#msg223 date=1440743546]
вот более подробная выдержка из мануала устройства.


Данные передаются байтами и словами (2 байта). Слова передаются старшим байтом вперед, т.е. если передается слово 0x1234, то 0x12 в PDU идет раньше 0x34.
Далее по тексту в поле контрольная сумма CRC16, которая служит для обнаружения ошибок при передаче битов данных. У контрольной суммы младшее слово приводится впереди, т.е. настоящая контрольная сумма перевернута (напри-мер: 0xBDCB для PC будет 0xCBBD).

А считать необходимо то, что в аттаче. Эксперементирую с адресами чтения в контроллере. Блок чтения отдает то ошибку 16, то 17...
[/quote]

16 это устройство не ответило, 17 ошибки CRC..... А и В правильно подключаете?
MegaVolt, 28.08.2015, 10:17
MegaVolt
Читаем по Modbus
А какой регистр необходимо прочитать ??? 4001 это десятичный или hex??
mike, 28.08.2015, 10:18
mike
Читаем по Modbus
[quote author=leszkin link=topic=36.msg225#msg225 date=1440745999]
А вот на какой адрес указывать в блоке чтения так и не догоняю... 34000?
[/quote]

не понял
leszkin, 28.08.2015, 10:24
leszkin
Читаем по Modbus
по мануалу выходит, что меня интересуют регистры 4001 и 4002. указывая их в адресе чтения в zetFBD - получаю 16 ошибку. пробовал и десятичный и шестнадцатиричный адрес. но я уже что-то перестаю доверять данной инструкции  :D

основной вопрос: как сделать запрос указанный в скрине в старт-посте.

leszkin, 28.08.2015, 10:27
leszkin
Читаем по Modbus
должно получиться как то так.
MegaVolt, 28.08.2015, 11:04
MegaVolt
Читаем по Modbus
Запрос: 02 04 00 00 00 02 71 f8
Как я вижу по запросу компьютер спрашивает у устройства с адресом 2 по 04й функции с 0000 адреса 00 02 регистра
следовательно в блоке вам необходимо указать 0 адрес.. 2 регистра
MegaVolt, 28.08.2015, 11:06
MegaVolt
Читаем по Modbus
Дело в том что в некоторой документации в адресе первый байт является кодом функции, а адрес в этом случае нужно уменьшить на 1