Что означает параметр «единица» pymodbus? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть некоторый код Modbus TCP, написанный под pymodbus 1.2, соответствующий код был

result = modbus_client.read_holding_registers(40093, 3)

После обновления до pymodbus 1.4.0 он не будет работать, пока я не перевезу новый грузПараметр unit в вызове функции (во всех примерах было unit = 1):

result = modbus_client.read_holding_registers(40093, 3, unit=1)

Что означает параметр unit в pymodbus read_ holding_registers ()?Кажется, я нигде не могу найти объяснения.Источник говорит: «: param unit: подчиненный блок, на который нацелен этот запрос», но я не понимаю, что это значит, и какой выбор, кроме 1, может быть использован.

1 Ответ

0 голосов
/ 16 мая 2018

Протокол Modbus изначально разрабатывался задолго до того, как TCP / IP стал популярным (я думаю, в конце 70-х годов).В основном он использовался для последовательных соединений.Некоторые последовательные аппаратные протоколы, такие как RS485, допускают последовательное соединение.Мастер Modbus (в вашем случае Python) может опрашивать множество ведомых на одном последовательном порту.Только тот раб, который был запрошен, ответит.Адрес ведомого устройства в данном случае является Единицей.Как только Modbus был адаптирован к TCP / IP, протокол позволял использовать этот «адрес устройства» для создания нескольких подчиненных устройств за одним IP-адресом.В большинстве случаев, если используется TCP / IP, один адрес равен 1. В Википедии они называют это «Адрес станции».

Я не уверен, почему вам нужно включить это ввызов метода, так как это kwarg, который по умолчанию равен 1.

...