16 879
правок
м (→Подготовка к работе: Добавил полезной информации) |
м (→Подключение к счетчику через Modbus Poll: Действия в повелительном наклонении) |
||
Строка 52: | Строка 52: | ||
Для примера считаем из устройства значение одного Holding-регистра. В табличной части окна опроса выберите первую строку, кликните правой кнопкой мыши и в контекстном меню выберите '''Read/Write Definition'''. | Для примера считаем из устройства значение одного Holding-регистра. В табличной части окна опроса выберите первую строку, кликните правой кнопкой мыши и в контекстном меню выберите '''Read/Write Definition'''. | ||
Заполните параметры опроса регистра: | |||
* '''Slave id''' — modbus адрес устройства, напечатан на наклейке и имеет вид «Addr: XX». | * '''Slave id''' — modbus адрес устройства, напечатан на наклейке и имеет вид «Addr: XX». | ||
* '''Function''' — мы хотим считать holding-регистр, поэтому | * '''Function''' — мы хотим считать holding-регистр, поэтому выберите '''03: Read Holding Registers (4x)'''. Тип регистра можно узнать из таблицы в документации на устройство. | ||
* '''Address mode''' — формат адреса регистра. Зависит от того, в каком виде представлен адрес регистра в документации на устройство. | * '''Address mode''' — формат адреса регистра. Зависит от того, в каком виде представлен адрес регистра в документации на устройство. | ||
* '''Address''' — адрес регистра можно взять из таблицы регистров устройства. Мы считаем общий для всех наших устройств регистр — 110. Список общих регистров можно посмотреть на странице [[Common_Modbus_Registers|Общие Modbus регистры]]. Обратите внимание на формат адреса — в нашем случае он десятичный. Если формат будет в шестнадцатеричном формате, то измените значение настройки '''Address mode'''. | * '''Address''' — адрес регистра можно взять из таблицы регистров устройства. Мы считаем общий для всех наших устройств регистр — 110. Список общих регистров можно посмотреть на странице [[Common_Modbus_Registers|Общие Modbus регистры]]. Обратите внимание на формат адреса — в нашем случае он десятичный. Если формат будет в шестнадцатеричном формате, то измените значение настройки '''Address mode'''. | ||
* '''Quantity''' — количество считываемых последовательно регистров, начиная с регистра, указанного в поле '''Address'''. Мы будем считывать один регистр — | * '''Quantity''' — количество считываемых последовательно регистров, начиная с регистра, указанного в поле '''Address'''. Мы будем считывать один регистр — установите значение «1». | ||
* '''Scan Rate''' — период опроса регистра. | * '''Scan Rate''' — период опроса регистра. Оставьте по умолчанию. | ||
* '''Address in Cell''' — если вы хотите вывести адрес регистра в ячейку рядом со значением — отметьте этот флажок. | * '''Address in Cell''' — если вы хотите вывести адрес регистра в ячейку рядом со значением — отметьте этот флажок. | ||
Остальные значения | Остальные значения оставьте по умолчанию. Нажмите кнопку '''OK'''. | ||
[[File:Modbys poll 03-test3.png|450px|thumb|none|Считанное значение общего регистра с адресом «100»]] | [[File:Modbys poll 03-test3.png|450px|thumb|none|Считанное значение общего регистра с адресом «100»]] | ||
Строка 69: | Строка 69: | ||
Считаем значение параметра «Прямая активная энергия для фазы L1». Находим его в [[WB-MAP3E_Data_Registers|таблице регистров WM-MAP3E]]: тип параметра — Input, разрядность — u64 (занимает 4 регистра), адрес первого регистра — 0x1204. | Считаем значение параметра «Прямая активная энергия для фазы L1». Находим его в [[WB-MAP3E_Data_Registers|таблице регистров WM-MAP3E]]: тип параметра — Input, разрядность — u64 (занимает 4 регистра), адрес первого регистра — 0x1204. | ||
Заполните параметры опроса регистров: | |||
* '''Slave id''' — 38. | * '''Slave id''' — 38. | ||
* '''Function''' — мы хотим считать input-регистр, поэтому | * '''Function''' — мы хотим считать input-регистр, поэтому выберите '''04: Read Input Registers (3x)'''. | ||
* '''Address mode''' — так как адрес первого регистра в шестнадцатеричном формате, | * '''Address mode''' — так как адрес первого регистра в шестнадцатеричном формате, выберите '''Hex'''. | ||
* '''Address''' — 1204. Адрес вводится без «0x». | * '''Address''' — 1204. Адрес вводится без «0x». | ||
* '''Quantity''' — значение хранится в четырех регистрах, поэтому | * '''Quantity''' — значение хранится в четырех регистрах, поэтому установите «4». | ||
* '''Address in Cell''' — установим флажок, чтобы вывести адреса регистров в ячейки. | * '''Address in Cell''' — установим флажок, чтобы вывести адреса регистров в ячейки. | ||
Остальные значения | Остальные значения оставьте по умолчанию. Нажимаем кнопку '''OK'''. | ||
Так как значение хранится в нескольких регистрах, то конечный результат нужно вычислить. Вы можете [[WB-MAP12H_Data_Registers|вычислить значение вручную]] или автоматически конвертировать. Чтобы конвертировать значение регистров в десятичный вид, перейдите в меню '''View''' → выберите '''64 Bit Unsigned''' → '''Little-endian'''. Теперь десятичное значение будет отображено в первом регистре последовательности. | Так как значение хранится в нескольких регистрах, то конечный результат нужно вычислить. Вы можете [[WB-MAP12H_Data_Registers|вычислить значение вручную]] или автоматически конвертировать. Чтобы конвертировать значение регистров в десятичный вид, перейдите в меню '''View''' → выберите '''64 Bit Unsigned''' → '''Little-endian'''. Теперь десятичное значение будет отображено в первом регистре последовательности. | ||
Строка 90: | Строка 90: | ||
Для демонстрации записи в регистр, изменим адрес modbus-устройства. | Для демонстрации записи в регистр, изменим адрес modbus-устройства. | ||
Откройте окно опроса устройства и вызовите окно записи данных: | |||
* откройте новое окно опроса устройства: меню '''File''' → '''New'''; | * откройте новое окно опроса устройства: меню '''File''' → '''New'''; | ||
* выберите в главном меню '''Functions''' → '''Write Single Register'''. | * выберите в главном меню '''Functions''' → '''Write Single Register'''. | ||
В открывшемся окне | В открывшемся окне заполните поля: | ||
* '''Slave id''' — введите текущий адрес устройства; | * '''Slave id''' — введите текущий адрес устройства; | ||
* '''Address''' — введите регистр, где хранится адрес modbus — 128 (десятичный); | * '''Address''' — введите регистр, где хранится адрес modbus — 128 (десятичный); |