kondor3000 я к тому, что в документации на Modbus такой команды нет, а в устройстве вот она, есть![]()
Снова здравствуйте. Попробовал всё переписать в двух вариантах:
1) через modbus.lib все сделал по шагам CASE, с командой 08h через MB_UNI_IO и таймером на 2 с, ничего не изменилось, всё так же ошибка таймаута. Причем таймаут в том числе от команды 08h, а буфер с командой 08h после отправки заполняется (первые 6 байтов) какими-то мусорными значениями. Хотя с компа при посылке этой команды ответ датчика равен команде.
2) через библиотеку unm.lib - делал по инструкции, но на первой же отправке выдается ошибка отправки. Плюс возникло ограничение - отправляемые команды должны быть строками, и если формировать команду в виде строки из шестнацатиричных значений, он воспринимает нулевые байты, которые присутствуют в команде, как конец строки, поэтому не знаю, как это можно обойти.
Так и не могу понять, что не так с запросами modbus. Даже на стандартные запросы по команде 03h с ПЛК датчик не отвечает - и не надо говорить, что без команды 08h он не будет отвечать - с компа он нормально отвечает и без этой команды. Она нужна, как я понимаю, только для обновления значений в опрашиваемых регистрах прибора.
Последний раз редактировалось Juan Esteban; 07.10.2024 в 06:28.
Кроме того, есть такая особенность. Для понимания того, что происходит, я на одну линию RS485 подключил ПЛК, датчик и комп через Овен AC4. При наличии ПЛК в этой линии, датчик перестает отвечать на запросы компа - как при ручных запросах, так и через ОРС, при отключении плк - отвечает. При том, что никаких левых команд, судя по монитору ком-порта, с него не поступает.
С двумя мастерами на линии хотите работать? Ну это так не работает. Либо ПЛК, либо ПК.
А физически как он определяет, что два мастера, если плк не посылает запросы (остановлен)?
Upd. Хотя, наверное, вы правы. Фоновое напряжение, которое он подаёт, перебивает все запросы. Тем не менее, проблема не в этом - напрямую без компа все равно подключение не работает.
Последний раз редактировалось Juan Esteban; 07.10.2024 в 08:27.
Один мастер открыл порт, второй не сможет уже открыть, до физичекого отключения порта и полной перезагрузки всего.
Начинайте всё сначала, теперь с ПЛК. Если нет связи, значит не правильно настроены параметры сети.
Например для 8N1, должны быть все нули, а у вас стоп бит 1. Если не нужна команда 08, как вы пишите, то просто читайте входы.
Последний раз редактировалось kondor3000; 07.10.2024 в 08:37.
Пытался и так, и так. Производитель говорит, что он и с одним, и с двумя стоп-битами работает. С компа действительно работает и так, и так.
Пробовал также через конфигурацию плк опрашивать. Выдает ошибку 81 (тайм-аут).
Впрочем, я не говорил, что команда 8 не нужна. Просто она не обязательна для чтения регистров. Поэтому посылать её все равно придется.