PDA

Просмотр полной версии : Modbus TCP: ошибка при опросе Slave устройства



S#716_0P
16.09.2023, 11:21
Добрый день,
Добавил в конфигурацию ПЛК110 одно Modbus TCP slave устройство с одним инпут регистром, но при попытке опроса появляется ошибка 84 (NO_SOCKET).
Какое существует ограничение по количеству сокетов и где его можно посмотреть и изменить?

МихаилГл
16.09.2023, 11:33
Номер слэйва, скорость, адресация регистров...

Ограничение в руководстве должно быть прописано.

S#716_0P
16.09.2023, 12:22
Номер слейва в Modbus TCP не имеет значения (только IP и порт), но пробовал ModuleSlaveAddress на всякий случай ставить и 1 и 255. Скорости у TCP тоже нет. Пробую читать инпут регистр, поэтому поставил функцию чтения 4. Адрес регистра указывал и в виде 0, 1 и т.д. (как он идет в пакете) и 30001, 30002 и пр (как описано в стандарте) - не помогает. Получается собственно до чтения дело не доходит т.к. ошибка NO_SOCKET. Получается контроллер не может создать даже один сокет?
Устройство в сети пингуется и читается другими программами (Modbus Poll).

Валенок
16.09.2023, 12:27
Имеет или не имеет значение номер устройства в модбас-tcp - это решать серверу/слейву, а не клиенту/мастеру.
А у ТС на картинке имеют значение буковы "empty"


ps
что положили, на то и ответил
Про то что ниже проще стандартно :
Проблема? Выкладываем проект

kondor3000
16.09.2023, 12:34
Номер слейва в Modbus TCP не имеет значения (только IP и порт), но пробовал ModuleSlaveAddress на всякий случай ставить и 1 и 255. Скорости у TCP тоже нет. Пробую читать инпут регистр, поэтому поставил функцию чтения 4. Адрес регистра указывал и в виде 0, 1 и т.д. (как он идет в пакете) и 30001, 30002 и пр (как описано в стандарте) - не помогает. Получается собственно до чтения дело не доходит т.к. ошибка NO_SOCKET. Получается контроллер не может создать даже один сокет?
Устройство в сети пингуется и читается другими программами (Modbus Poll).

Перезагрузите оба устройства, очистите и откомпилируйте заново проект. Проверьте правильность ввода IP ( через двоеточие), адрес слейва и номер порта, см скрин 70227
А так же убедитесь, что слейв поддерживает чтение функцией 0х04 и проверьте адрес регистра.

S#716_0P
16.09.2023, 12:37
Там где empty стоит там можно выбрать только сериальный порт, поэтому поставил empty. У устройства которое читаю нет поля для указания номера. У Modbus Poll по TCP номер слейва тоже не где указать, при это читается все нормально. У ПЛК пробовал разные варианты.

МихаилГл
16.09.2023, 12:44
Там где empty стоит там можно выбрать только сериальный порт, поэтому поставил empty. У устройства которое читаю нет поля для указания номера. У Modbus Poll по TCP номер слейва тоже не где указать, при это читается все нормально. У ПЛК пробовал разные варианты.

Посмотрите внимательно настройки пулла...

Slave Id это номер устройства в сети tcp

S#716_0P
17.09.2023, 09:13
( через двоеточие)

Спасибо за подсказку! А я и не обратил внимание, что IP указывается через двоеточие.