VWED_server/docs/sc/Modbus TCP相关.md

451 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Modbus TCP (Python 版本)
#### Func01 读取线圈量
* 方法说明
Modbus 读取线圈量,功能码 01。
```python
def read_coil_status(ip: str, port: int, slave_id: int, offset: int) -> bool | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* 输出参数
* None: 读取失败
* bool: 读取成功的返回值
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func02 读取线圈量
* 方法说明
Modbus 读取线圈量,功能码 02。
```python
def read_input_status(ip: str, port: int, slave_id: int, offset: int) -> bool | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* 输出参数
* None: 读取失败
* bool: 读取成功的返回值
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func03 读取保持寄存器
* 方法说明
Modbus 读取保持寄存器,功能码 03。
```python
def read_holding_register(ip: str, port: int, slave_id: int, offset: int, data_type: int) -> int | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* data_type: int 类型2无符号整形3有符号整形
* 输出参数
* None: 读取失败
* int: 读取成功的返回值
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func04 读取输入寄存器
* 方法说明
Modbus 读取只读输入寄存器,功能码 04。
```python
def read_input_register(ip: str, port: int, slave_id: int, offset: int, data_type: int) -> int | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* data_type: int 类型2无符号整形3有符号整形
* 输出参数
* None: 读取失败
* int: 读取成功的返回值
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func01 批量读取线圈量
* 方法说明
Modbus 读取线圈量多个连续地址值,并以数组的形式返回其中的值,功能码 01。
```python
def batch_read_coil_status(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[bool] | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 首地址
* len: int 类型Modbus 地址数量
* 输出参数
* None: 读取失败
* list[bool]: 读取成功后,返回结果数组
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func02 批量读取离散输入
* 方法说明
Modbus 读取离散输入多个连续地址值,并以数组的形式返回其中的值,功能码 02。
```python
def batch_read_input_status(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[bool] | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 首地址
* len: int 类型Modbus 地址数量
* 输出参数
* None: 读取失败
* list[bool]: 读取成功后,返回结果数组
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func03 批量读取保持寄存器
* 方法说明
Modbus 读取保持寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 03。
```python
def batch_read_holding_registers(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[int] | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 首地址
* len: int 类型Modbus 地址数量
* 输出参数
* None: 读取失败
* list[int]: 读取成功后,返回结果数组
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func04 批量读取输入寄存器
* 方法说明
Modbus 读取输入寄存器多个连续地址值,并以数组的形式返回其中的值,功能码 04。
```python
def batch_read_input_registers(ip: str, port: int, slave_id: int, offset: int, len: int) -> list[int] | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 首地址
* len: int 类型Modbus 地址数量
* 输出参数
* None: 读取失败
* list[int]: 读取成功后,返回结果数组
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func05 写入线圈量
* 方法说明
Modbus 写入线圈量,功能码 05。
```python
def write_coil_status(ip: str, port: int, slave_id: int, offset: int, value: bool) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* value: bool 类型,写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func06 写入保持寄存器
* 方法说明
Modbus 写入保持寄存器,功能码 06。
```python
def write_holding_register(ip: str, port: int, slave_id: int, offset: int, data_type: int, value: int) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* data_type: int 类型2无符号整形3有符号整形
* value: int 类型,写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func0f 批量写入线圈量
* 方法说明
Modbus 写入线圈量多个连续地址,功能码 0f。
```python
def batch_write_coil_status(ip: str, port: int, slave_id: int, offset: int, value: list[bool]) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* value: list[bool] 类型,多个需写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### Func10 批量写入保持寄存器
* 方法说明
Modbus 写入保持寄存器多个连续地址,功能码 10。
```python
def batch_write_holding_register(ip: str, port: int, slave_id: int, offset: int, value: list[int]) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* offset: int 类型Modbus 地址
* value: list[int] 类型,多个需写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### 通用写入单个地址
* 方法说明
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
```python
def write_single_modbus_value(ip: str, port: int, slave_id: int, type_str: str, offset: int, value: int) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* type_str: str 类型,表示地址类型,可选择'0x''1x''3x''4x',和功能码的对应关系如下:
* 0x对应功能码0x01表示读线圈
* 1x对应功能码0x02表示读离散输入
* 3x对应功能码0x04表示读输入寄存器
* 4x对应功能码0x03表示读保持寄存器
* offset: int 类型表示Modbus 地址
* value: int 类型,表示写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### 通用写入多个地址
* 方法说明
Modbus 写入单个地址,通过参数 type 指定读取的地址类型。
```python
def write_batch_modbus_value(ip: str, port: int, slave_id: int, type_str: str, offset: int, values: list[int]) -> bool
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* type_str: str 类型,表示地址类型,可选择'0x''1x''3x''4x',和功能码的对应关系如下:
* 0x对应功能码0x01表示读线圈
* 1x对应功能码0x02表示读离散输入
* 3x对应功能码0x04表示读输入寄存器
* 4x对应功能码0x03表示读保持寄存器
* offset: int 类型表示Modbus 地址
* values: list[int] 类型,表示写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### 通过实例名称写入单个地址
* 方法说明
Modbus 写入单个地址,通过参数 name 指定已经配置的实例名称。
```python
def write_single_modbus_value_by_instance_name(name: str, offset: int, value: int) -> bool
```
* 输入参数
* name: str 类型,已经配置的实例名称
* offset: int 类型,表示 Modbus 地址
* value: int 类型,表示写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
如果没有配置 modbus 实例,则会抛出初始化异常。
#### 通过实例名称写入多个地址
* 方法说明
Modbus 写入多个地址,通过参数 name 指定已经配置的实例名称。
```python
def write_batch_modbus_value_by_instance_name(name: str, offset: int, values: list[int]) -> bool
```
* 输入参数
* name: str 类型,已经配置的实例名称
* offset: int 类型,表示 Modbus 地址
* values: list[int] 类型,表示写入的值
* 输出参数
* True: 写入成功
* False: 写入失败
* 异常
如果没有配置 modbus 实例,则会抛出初始化异常。
#### 通用读取单个地址
* 方法说明
Modbus 读取单个地址,通过参数 type 指定读取的地址类型。
```python
def read_single_modbus_value(ip: str, port: int, slave_id: int, type_str: str, offset: int) -> int | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* type_str: str 类型,表示地址类型,可选择'0x''1x''3x''4x',和功能码的对应关系如下:
* 0x对应功能码0x01表示读线圈
* 1x对应功能码0x02表示读离散输入
* 3x对应功能码0x04表示读输入寄存器
* 4x对应功能码0x03表示读保持寄存器
* offset: int 类型Modbus 地址
* 输出参数
* None: 读取失败
* int: 读取成功的返回值
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### 通用读取多个地址
* 方法说明
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
```python
def read_batch_modbus_value(ip: str, port: int, slave_id: int, type_str: str, offset: int, length: int) -> list[int] | None
```
* 输入参数
* ip: str 类型,从机 IP
* port: int 类型,从机端口
* slave_id: int 类型,从机 slave ID
* type_str: str 类型,表示地址类型,可选择'0x''1x''3x''4x',和功能码的对应关系如下:
* 0x对应功能码0x01表示读线圈
* 1x对应功能码0x02表示读离散输入
* 3x对应功能码0x04表示读输入寄存器
* 4x对应功能码0x03表示读保持寄存器
* offset: int 类型Modbus 地址
* length: int 类型,读取的数据长度
* 输出参数
* None: 读取失败
* list[int]: 读取成功的返回值数组
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### 通过实例名称读取单个地址
* 方法说明
Modbus 读取单个地址,通过参数 name 指定已经配置的实例名称。
```python
def read_single_modbus_value_by_instance_name(name: str, offset: int) -> int | None
```
* 输入参数
* name: str 类型,配置的唯一实例名称
* offset: int 类型Modbus 地址
* 输出参数
* None: 读取失败
* int: 读取成功的返回值
* 异常
如果没有配置 modbus 实例,则会抛出初始化异常。
#### 通过实例名称读取多个地址
* 方法说明
Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。
```python
def read_batch_modbus_value_by_instance_name(name: str, offset: int, length: int) -> list[int] | None
```
* 输入参数
* name: str 类型,配置的唯一实例名称
* offset: int 类型Modbus 地址
* length: int 类型,读取的数据长度
* 输出参数
* None: 读取失败
* list[int]: 读取成功的返回值
* 异常
如果没有配置 modbus 实例,则会抛出初始化异常。