Страница 1 из 2

Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 06:53
Danzel
Добрый день, возникла проблема чтения данных с прибора газоанализатор МАГ-6-С2 по протоколу Modbus RTU, com порт определяется, а чтение не происходит. Считываю с канала №2, 19 и 20 регистры (параметр КИСЛОРОД) (фото №2), адрес устройства в сети указан правильно (1). Подскажите в чем может быть проблема
Во вложении фото с описанием работы газоанализатора по протоколу modbus (взято из паспорта на прибор), код программы и программа в LB.

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 12:14
Blackman
Скорее всего ошибка 0x02: запрашиваемый адрес регистра не кратен 2 (19).
В таблице указаны номера регистров, а на BD адрес регистра=номер регистра - 1.

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 12:25
Danzel
Поставил адрес регистра на BD = 18, количество 2, все равно ничего не читается

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 12:57
IvanLis
Danzel писал(а):Поставил адрес регистра на BD = 18, количество 2, все равно ничего не читается
Что сразу бросается в глаза, у Вас тунели Case (False) не протянуты, а установлены состояния "по умолчанию", соответственно после итерации цикла, когда кнопка не нажата, VISA уже будет пустой и выдаст ошибку соединения.

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 13:27
Borjomy_1
Судя по размеру в две ячейки (по 2 байта) число в формате Single, т.е из двух ячеек надо TypeCast ом преобразовывать в число.
Обратите внимание, что есть разночтения в стандартах ModBus, с какого адреса идет первый элемент. Бывает и 0-й адрес и 1-й адрес.
Выведите состояние Exception Code, он должен дать также подсказку, что не так.
Попробуйте обратиться к другому банку (Holdings)
Upd. Читайте первый абзац первого листа.
Upd... Возможно также, что скорость не по умолчанию (9600)

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 26 июл 2019, 13:33
Borjomy_1
IvanLis, Для последовательного порта нет создания объекта. Поэтому можно работать даже с уже инициализированным портом. Его Init - это всего лишь конфигурация, которую можно провести также в любой момент. Проблемы возникают только когда порт открыт другой программой.

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 11:35
Danzel
Borjomy_1 писал(а):Судя по размеру в две ячейки (по 2 байта) число в формате Single, т.е из двух ячеек надо TypeCast ом преобразовывать в число.
Обратите внимание, что есть разночтения в стандартах ModBus, с какого адреса идет первый элемент. Бывает и 0-й адрес и 1-й адрес.
Выведите состояние Exception Code, он должен дать также подсказку, что не так.
Попробуйте обратиться к другому банку (Holdings)
Upd. Читайте первый абзац первого листа.
Upd... Возможно также, что скорость не по умолчанию (9600)
В индикатор Состояние Exception Code ничего не выводится
Обратился к дуругому банку (Holdings), результат такойже, ничего не читается

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 12:15
Danzel
С помощью стороннего ПО просканировал порт с использованием программного обеспечения идущего в комплекте с газаанализатором и с помощью программы LB. В LB использовал формат символов ASCII, по RTU ничего не сканируется.
https://www.eksis.ru/technical-support/ ... -protocol/
На сайте производителя газоанализатора в разделе техподдержка нашел описание передачи данных, но чет не очень понятно как это работает, помогите разобраться

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 12:20
Borjomy_1
Ну значит используйте функционал ModBus ASCII. Там только функции чтения-записи поменять. Если обмен идет по ASCII, то естественно, работать по RTU само по себе не будет

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 12:26
Danzel
Borjomy_1 писал(а):Ну значит используйте функционал ModBus ASCII. Там только функции чтения-записи поменять. Если обмен идет по ASCII, то естественно, работать по RTU само по себе не будет
Что значит "Там только функции чтения-записи поменять"?

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 13:44
Blackman
Это не Modbus протокол, а доморощенный типа Eksis Exchange ASCII :haha: . Посылаете запрос (формат приведен) и через не более 300 ms получаете ответ (формат приведен).

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 14:01
Danzel
Использовать visa write и visa read?

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 15:08
ujin
С помощью стороннего ПО просканировал порт с использованием программного обеспечения идущего в комплекте с газаанализатором
В техописании 2 порта - 232 и 485. На разных портах могут быть разные протоколы. Плюс в техописании на 485 порту почему-то перекрестное соединение.
Скорость в .vi 9600 в логах 19200

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 15:32
Borjomy_1
ujin писал(а):
С помощью стороннего ПО просканировал порт с использованием программного обеспечения идущего в комплекте с газаанализатором
В техописании 2 порта - 232 и 485. На разных портах могут быть разные протоколы. Плюс в техописании на 485 порту почему-то перекрестное соединение.
Скорость в .vi 9600 в логах 19200
Скорость да, изначально стоило бы попробовать на разных скоростях. В общем, глубокоуровневая комбинаторика рулит.

Re: Чтение данных по протоколу Modbus RTU

Добавлено: 29 июл 2019, 17:16
Danzel
Со скоростью все нормально, 19200 я поменял в .VI в последствии, и поэтому в логах такая скорость, так что нет перекрестия