Modbus

在 UI (3.0)界面,可以定义某个设备名称,对应哪个串口地址和Modbus从机地址(如可以命名 “咖啡modbus” 对应机箱的485端口/dev/ttyS1和从机地址号1),
然后通过接口,去设置 “咖啡modbus” 的通讯参数,然后可以与 “咖啡modbus” 设备进行通信。

设置超时时间

lebai.set_modbus_timeout(device, timeout)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    timeoutint超时时间,单位毫秒(ms)。默认800ms
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
lebai.set_modbus_timeout(device, timeout)

设置超时重传次数

lebai.set_modbus_retry(device, retry)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    retryint超时重传次数。默认0次
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)

写单个线圈

lebai.write_single_coil(device, addr, value)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    valueint待设置的值
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_single_coil(device, 100, 0)

写多个线圈

  • 方法:lebai.write_multiple_coils(device, addr, values)

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    valueslist待设置的值
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_multiple_coils(device,100, [0,1])

读线圈

values = lebai.read_coils(device, addr, num)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    numint连续数量
  • 返回值:list类型。返回连续线圈的状态。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_multiple_coils(device,100, [0,1])
do_status = lebai.read_coils(device,100, 2)
print(do_status)

读离散输入

values = lebai.read_discrete_inputs(device, addr, num)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    numint连续数量
  • 返回值:list类型。返回连续的离散寄存器数值的状态。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_multiple_coils(device,100, [0,1])
di_status = lebai.read_discrete_inputs(device,500, 2)
print(di_status)

### 写单个寄存器

lebai.write_single_register(device, addr, value)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    valueint待设置的值
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_single_register(device, 200, 1)

写多个寄存器

lebai.write_multiple_registers(device, addr, values)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    valueslist待设置的值
  • 返回值:无返回值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_single_register(device, 200, 1)
lebai.write_multiple_registers(device, 200, [1,2,3])

读取保持寄存器

values = lebai.read_holding_registers(device, addr, num)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    numint连续数量
  • 返回值:list类型。返回对应的连续保持寄存器地址位对应的数值。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_multiple_registers(device, 200, [1,2,3])
status = lebai.read_holding_registers(device,200, 3)
print(status)

读取输入寄存器

values = lebai.read_input_registers(device, addr, num)
  • 参数说明:

    参数类型说明
    devicestring设备名称
    addrint寄存器地址
    numint连续数量
  • 返回值:list类型。返回对应的连续输入寄存器地址位对应的数值。。

  • 使用示例:
import lebai_sdk
lebai_sdk.init()
import nest_asyncio
nest_asyncio.apply()
robot_ip = "192.168.4.145" 
lebai = lebai_sdk.connect(robot_ip, False)
device = '咖啡modbus'
timeout = 100
retry = 3
lebai.set_modbus_timeout(device, timeout)
lebai.set_modbus_retry(device, retry)
lebai.write_multiple_registers(device, 300, [1,2,3])
status = lebai.read_input_registers(device,300, 3)
print(status)