Modbus
在 UI 界面添加 Modbus 设备后,可以与 Modbus 设备进行通信。 具体操作,登录IP/ui,进入设置,选择ModBus设置,新建ModBus,设置设备名称,选择类型,设置从机地址或者TCP的IP和端口,确定后,完成设备设置添加。
设置法兰波特率
- 函数名:[Robot]下的方法
set_flange_baud_rate - 参数:
- baud_rate: [int] 波特率。默认115200
- 返回:无
返回空 或 抛出连接错误
注意
设置串口波特率需使用set_serial_baud_rate
示例程序
lebai:set_flange_baud_rate(115200)
lebai.set_flange_baud_rate(115200)
断开连接
断开与指定 Modbus 设备的连接。
- 函数名:[Robot]下的方法
disconnect_modbus - 参数:
- device: [str] 设备名称
- 返回:无
示例程序
lebai:disconnect_modbus("485_1")
lebai.disconnect_modbus("485_1")
设置超时时间
- 函数名:[Robot]下的方法
set_modbus_timeout - 参数:
- device: [str] 设备名称
- timeout: [int] 超时时间,单位毫秒(ms)。默认800ms
- 返回:无
示例程序
lebai:set_modbus_timeout("485_1", 500)
lebai.set_modbus_timeout("485_1", 500)
设置超时重传次数
- 函数名:[Robot]下的方法
set_modbus_retry - 参数:
- device: [str] 设备名称
- retry: [int] 超时重传次数。默认0次
- 返回:无
示例程序
lebai:set_modbus_retry("485_1", 3)
lebai.set_modbus_retry("485_1", 3)
写单个线圈
- 函数名:[Robot]下的方法
write_single_coil - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x64'或者'100') - value: [bool] 待设置的值
- 返回:无
示例程序
lebai:write_single_coil("485_1", "100", false)
lebai.write_single_coil("485_1", "100", False)
写多个线圈
- 函数名:[Robot]下的方法
write_multiple_coils - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x64'或者'100') - values: [list[bool]] 待设置的值
- 返回:无
示例程序
lebai:write_multiple_coils("485_1", "100", {false, true})
lebai.write_multiple_coils("485_1", "100", [False, True])
读线圈
- 函数名:[Robot]下的方法
read_coils - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x64'或者'100') - count: [int] 连续数量
- 返回: [list[bool]] 连续线圈的状态
示例程序
values = lebai:read_coils("485_1", "100", 2)
print(values)
values = lebai.read_coils("485_1", "100", 2)
print(values)
读离散输入
- 函数名:[Robot]下的方法
read_discrete_inputs - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x64'或者'100') - count: [int] 连续数量
- 返回: [list[bool]] 连续的离散寄存器数值的状态
示例程序
values = lebai:read_discrete_inputs("485_1", "200", 2)
print(values)
values = lebai.read_discrete_inputs("485_1", "200", 2)
print(values)
写单个寄存器
- 函数名:[Robot]下的方法
write_single_register - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x9C40'或者'40000') - value: [int] 待设置的值
- 返回:无
示例程序
lebai:write_single_register("485_1", "200", 1)
lebai.write_single_register("485_1", "200", 1)
写多个寄存器
- 函数名:[Robot]下的方法
write_multiple_registers - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x9C40'或者'40000') - values: [list[int]] 待设置的值
- 返回:无
示例程序
lebai:write_multiple_registers("485_1", "200", {1, 2, 3})
lebai.write_multiple_registers("485_1", "200", [1, 2, 3])
读取保持寄存器
- 函数名:[Robot]下的方法
read_holding_registers - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x9C40'或者'40000') - count: [int] 连续数量
- 返回: [list[int]] 对应的连续保持寄存器地址位对应的数值
示例程序
values = lebai:read_holding_registers("485_1", "200", 3)
print(values)
values = lebai.read_holding_registers("485_1", "200", 3)
print(values)
读取输入寄存器
- 函数名:[Robot]下的方法
read_input_registers - 参数:
- device: [str] 设备名称
- pin: [str] 寄存器地址(字符串格式:例如
'0x9C40'或者'40000') - count: [int] 连续数量
- 返回: [list[int]] 对应的连续输入寄存器地址位对应的数值
示例程序
values = lebai:read_input_registers("485_1", "300", 3)
print(values)
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)
serial_device = "/dev/ttyS1"
lebai.set_serial_timeout(serial_device, 200)
lebai.set_serial_baud_rate(serial_device, 9600)
modbus_device = "485_1"
lebai.set_modbus_timeout(modbus_device, 500)
lebai.write_single_coil(modbus_device, "100", False)
