modbus RTU

Ответить
Аватара пользователя
kont26
Сообщения: 1350
Зарегистрирован: 04.10.2011 11:54
Ник с it-ru.de: верифицирован

modbus RTU

Сообщение kont26 »

Замарачиваюсь с MassFlowController от фирмы bürkert.
Обмен данными по протоколу Modbus RTU.
Запросы на считывание регистров без проблем. Засылаю запрос получаю ответ единтсвенным пакетом и все хорошо.
Запрос на запись в регистр глючит. Запрос принимается контроллером и выполняется чисто. Сборка ответа включая CRC тоже чистая принимается. Проблема: пакеты ответа выдаются множественно. Слегка больше времени на чтение и эфир забивается множеством одинаковых пакетов. Эти копии воспринимаются потом как ответы на другие запросы. Короче буфер COM порта захламляется. Пробывал его чистить считывая его весь. Но контроллер похоже не унимается и шлет ответные пакеты еще какое-то время после первого ответа. Как заткнуть этот фонтан? Может кто-нибудь сталкивался с подобной проблемой?

COM port:

baud rate работает на одной, но можно настраивать разные
start bit нет
data bits 8
stop bit 1
parity нет
minimax
Сообщения: 6860
Зарегистрирован: 22.09.2011 20:04
Ник с it-ru.de: верифицирован
Где: РФ-ФРг

Re: modbus RTU

Сообщение minimax »

А это не Beckhoff PLC ?
Аватара пользователя
Вий
Сообщения: 6237
Зарегистрирован: 22.09.2011 13:00
Ник с it-ru.de: верифицирован
Где: Минск
Род занятий: Программист ;)
Интересы: разные...

Re: modbus RTU

Сообщение Вий »

Что значит "слегка больше времени на чтение"? Т.е. прописал значение, принял ответ - и потом тот же самый ответ приходит ещё несколько раз?
Вий есть колоссальное создание простонародного воображения...

"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Аватара пользователя
kont26
Сообщения: 1350
Зарегистрирован: 04.10.2011 11:54
Ник с it-ru.de: верифицирован

Re: modbus RTU

Сообщение kont26 »

Вий писал(а):Что значит "слегка больше времени на чтение"? Т.е. прописал значение, принял ответ - и потом тот же самый ответ приходит ещё несколько раз?
Да. Похоже какой-то "отправил" флаг в контроллере не сбрасывается.
Записывается в holding регистр.

Чтобы избежать множественного ответа, я просто высылаю сразу запрос на чтение какого-нибудь безобидного holding регистра. Ответ на этот запрос принимает удар на себя. Программа просто игнорирует данный ответ. Далее в буфере остается 0 байт и можно продолжать коммуникацию. Не элегантно, но работает.

Это bürkert MFC 8713.
Аватара пользователя
kont26
Сообщения: 1350
Зарегистрирован: 04.10.2011 11:54
Ник с it-ru.de: верифицирован

Re: modbus RTU

Сообщение kont26 »

Вий писал(а):Что значит "слегка больше времени на чтение"? Т.е. прописал значение, принял ответ - и потом тот же самый ответ приходит ещё несколько раз?
Значит: выслал запрос в СОМ -> время на чтение/ожидание ответа -> чтение данных из СОМ
Ответить