YetAnotherForum
Добро пожаловать, Гость Активные темы | Вход | Регистрация

NIM741 клиент MOBUS
Tacio Offline
#1 Оставлено : 3 августа 2018 г. 12:29:30(UTC)

Новый пользователь

Сообщений: 2
Город:: Зеленоград

Имеется СРМ712 с модулем NIM741. Настраиваю на нём клиента MODBUS c помощью библиотеки FastwelModbusRTUClientSerial.lib. Код настройки взял из примера fw_modbus_client_test.pro. Для непосредственного опроса сервера использую ModbusClient.
В задачи клиента входит только чтение с сервера трёх блоков данных (массив из трёх элементов MODBUS_ITEM_DESCRIPTOR).
Вопрос следующий. Каким образом можно понять, что связь с сервером прервалась? Анализируя поле status объекта MODBUS_ITEM_DESCRIPTOR в течение заданного промежутся времени? Однако, если искусственно оборвать физическое подключение между клиентом и сервером, то например статус первого элемента MODBUS_ITEM_DESCRIPTOR будет MBC_OPERATION_STATUS_PROCESSING, в время как у оставшихся двух он будет MBC_OPERATION_STATUS_OK. Как это можно интерпретировать? Тоже самое будет, если включить контроллер с уже оборванным физическим соединением, хотя в этом случае я жду, что поля всех MODBUS_ITEM_DESCRIPTOR будут иметь значение отличное от MBC_OPERATION_STATUS_OK.
FIO_Support Offline
#2 Оставлено : 3 августа 2018 г. 14:19:30(UTC)

Техническая поддержка

Сообщений: 3
Город:: Moscow

Tacio написал:
Имеется СРМ712 с модулем NIM741. Настраиваю на нём клиента MODBUS c помощью библиотеки FastwelModbusRTUClientSerial.lib. Код настройки взял из примера fw_modbus_client_test.pro. Для непосредственного опроса сервера использую ModbusClient.
В задачи клиента входит только чтение с сервера трёх блоков данных (массив из трёх элементов MODBUS_ITEM_DESCRIPTOR).
Вопрос следующий. Каким образом можно понять, что связь с сервером прервалась? Анализируя поле status объекта MODBUS_ITEM_DESCRIPTOR в течение заданного промежутся времени? Однако, если искусственно оборвать физическое подключение между клиентом и сервером, то например статус первого элемента MODBUS_ITEM_DESCRIPTOR будет MBC_OPERATION_STATUS_PROCESSING, в время как у оставшихся двух он будет MBC_OPERATION_STATUS_OK. Как это можно интерпретировать? Тоже самое будет, если включить контроллер с уже оборванным физическим соединением, хотя в этом случае я жду, что поля всех MODBUS_ITEM_DESCRIPTOR будут иметь значение отличное от MBC_OPERATION_STATUS_OK.


Добрый день,

Насколько я понимаю, Вы хотите иметь информацию о том, есть ли связь с конкретным подчиненным узлом (сервером)?
В функциональном блоке MODBUS_CLIENT_SERIAL есть выходной массив SlavesDiag (ARRAY [1..247]), где номер элемента массива соответствует адресу подчиненного узла. Данный массив как раз отображает состояние связи с каждым подчиненным узлом.



В коде примера fw_modbus_client_test.pro есть строчка условия:
IF ModbusClient.SlavesDiag[ModbusItemArray[0].RemoteAddr].iState = MB_SLAVE_CONNECTED THEN

Она как раз определяет есть ли связь с узлом под номером 0(MB_SLAVE_CONNECTED).
Описание возможных состояний подчиненного узла заданы в структуре MODBUS_REMOTE_NODE_STATE.

Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.