Modbus

在 UI 界面添加 Modbus 设备后,可以与 Modbus 设备进行通信。 具体操作,登录IP/ui,进入设置,选择ModBus设置,新建ModBus,设置设备名称,选择类型,设置从机地址或者TCP的IP和端口,确定后,完成设备设置添加。

设置法兰波特率

  • 函数名:[Robot]下的方法set_flange_baud_rate
  • 参数:
    1. baud_rate: [int] 波特率。默认115200
  • 返回:无

返回空 或 抛出连接错误

注意

设置串口波特率需使用set_serial_baud_rate

示例程序

lebai:set_flange_baud_rate(115200)

断开连接

断开与指定 Modbus 设备的连接。

  • 函数名:[Robot]下的方法disconnect_modbus
  • 参数:
    1. device: [str] 设备名称
  • 返回:无

示例程序

lebai:disconnect_modbus("485_1")

设置超时时间

  • 函数名:[Robot]下的方法set_modbus_timeout
  • 参数:
    1. device: [str] 设备名称
    2. timeout: [int] 超时时间,单位毫秒(ms)。默认800ms
  • 返回:无

示例程序

lebai:set_modbus_timeout("485_1", 500)

设置超时重传次数

  • 函数名:[Robot]下的方法set_modbus_retry
  • 参数:
    1. device: [str] 设备名称
    2. retry: [int] 超时重传次数。默认0次
  • 返回:无

示例程序

lebai:set_modbus_retry("485_1", 3)

写单个线圈

  • 函数名:[Robot]下的方法write_single_coil
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x64' 或者 '100')
    3. value: [bool] 待设置的值
  • 返回:无

示例程序

lebai:write_single_coil("485_1", "100", false)

写多个线圈

  • 函数名:[Robot]下的方法write_multiple_coils
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x64' 或者 '100')
    3. values: [list[bool]] 待设置的值
  • 返回:无

示例程序

lebai:write_multiple_coils("485_1", "100", {false, true})

读线圈

  • 函数名:[Robot]下的方法read_coils
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x64' 或者 '100')
    3. count: [int] 连续数量
  • 返回: [list[bool]] 连续线圈的状态

示例程序

values = lebai:read_coils("485_1", "100", 2)
print(values)

读离散输入

  • 函数名:[Robot]下的方法read_discrete_inputs
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x64' 或者 '100')
    3. count: [int] 连续数量
  • 返回: [list[bool]] 连续的离散寄存器数值的状态

示例程序

values = lebai:read_discrete_inputs("485_1", "200", 2)
print(values)

写单个寄存器

  • 函数名:[Robot]下的方法write_single_register
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x9C40' 或者 '40000')
    3. value: [int] 待设置的值
  • 返回:无

示例程序

lebai:write_single_register("485_1", "200", 1)

写多个寄存器

  • 函数名:[Robot]下的方法write_multiple_registers
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x9C40' 或者 '40000')
    3. values: [list[int]] 待设置的值
  • 返回:无

示例程序

lebai:write_multiple_registers("485_1", "200", {1, 2, 3})

读取保持寄存器

  • 函数名:[Robot]下的方法read_holding_registers
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x9C40' 或者 '40000')
    3. count: [int] 连续数量
  • 返回: [list[int]] 对应的连续保持寄存器地址位对应的数值

示例程序

values = lebai:read_holding_registers("485_1", "200", 3)
print(values)

读取输入寄存器

  • 函数名:[Robot]下的方法read_input_registers
  • 参数:
    1. device: [str] 设备名称
    2. pin: [str] 寄存器地址(字符串格式:例如 '0x9C40' 或者 '40000')
    3. count: [int] 连续数量
  • 返回: [list[int]] 对应的连续输入寄存器地址位对应的数值

示例程序

values = lebai:read_input_registers("485_1", "300", 3)
print(values)

示例

local serial_device = "/dev/ttyS1"
lebai:set_serial_timeout(serial_device, 200)
lebai:set_serial_baud_rate(serial_device, 9600)

local modbus_device = "485_1"
lebai:set_modbus_timeout(modbus_device, 500)
lebai:write_single_coil(modbus_device, "100", false)