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

13 KiB
Raw Blame History

Modbus TCP (Python 版本)

Func01 读取线圈量

  • 方法说明

    Modbus 读取线圈量,功能码 01。

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。

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。

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。

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。

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。

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。

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。

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。

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。

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。

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。

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 指定读取的地址类型。

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 指定读取的地址类型。

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 指定已经配置的实例名称。

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 指定已经配置的实例名称。

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 指定读取的地址类型。

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 指定已经配置的实例名称。

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 指定已经配置的实例名称。

def read_single_modbus_value_by_instance_name(name: str, offset: int) -> int | None
  • 输入参数
    • name: str 类型,配置的唯一实例名称
    • offset: int 类型Modbus 地址
  • 输出参数
    • None: 读取失败
    • int: 读取成功的返回值
  • 异常 如果没有配置 modbus 实例,则会抛出初始化异常。

通过实例名称读取多个地址

  • 方法说明

    Modbus 读取多个地址,通过参数 name 指定已经配置的实例名称。

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 实例,则会抛出初始化异常。