Modbus

After adding Modbus devices in the UI interface, you can communicate with Modbus devices. Specifically, log in to IP/ui, go to Settings, select ModBus Settings, create a new ModBus, set the device name, select the type, set the slave address or the TCP IP and port, and confirm to finish adding the device.

Set Flange Baud Rate

  • Function name: Method set_flange_baud_rate under [Robot]
  • Parameters:
    1. baud_rate: [int] Baud rate. Default 115200
  • Return: None

Returns empty or throws a connection error

WARNING

To set the serial port baud rate, use set_serial_baud_rate

Example Program

lebai:set_flange_baud_rate(115200)

Disconnect

Disconnect the connection with the specified Modbus device.

  • Function name: Method disconnect_modbus under [Robot]
  • Parameters:
    1. device: [str] Device name
  • Return: None

Example Program

lebai:disconnect_modbus("485_1")

Set Timeout

  • Function name: Method set_modbus_timeout under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. timeout: [int] Timeout duration in milliseconds (ms). Default 800ms
  • Return: None

Example Program

lebai:set_modbus_timeout("485_1", 500)

Set Timeout Retransmissions

  • Function name: Method set_modbus_retry under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. retry: [int] Number of timeout retransmissions. Default 0
  • Return: None

Example Program

lebai:set_modbus_retry("485_1", 3)

Write Single Coil

  • Function name: Method write_single_coil under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x64' or '100')
    3. value: [bool] Value to set
  • Return: None

Example Program

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

Write Multiple Coils

  • Function name: Method write_multiple_coils under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x64' or '100')
    3. values: [list[bool]] Values to set
  • Return: None

Example Program

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

Read Coils

  • Function name: Method read_coils under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x64' or '100')
    3. count: [int] Consecutive quantity
  • Return: [list[bool]] Status of the consecutive coils

Example Program

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

Read Discrete Inputs

  • Function name: Method read_discrete_inputs under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x64' or '100')
    3. count: [int] Consecutive quantity
  • Return: [list[bool]] Status of the consecutive discrete input register values

Example Program

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

Write Single Register

  • Function name: Method write_single_register under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x9C40' or '40000')
    3. value: [int] Value to set
  • Return: None

Example Program

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

Write Multiple Registers

  • Function name: Method write_multiple_registers under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x9C40' or '40000')
    3. values: [list[int]] Values to set
  • Return: None

Example Program

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

Read Holding Registers

  • Function name: Method read_holding_registers under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x9C40' or '40000')
    3. count: [int] Consecutive quantity
  • Return: [list[int]] Values at the corresponding consecutive holding register addresses

Example Program

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

Read Input Registers

  • Function name: Method read_input_registers under [Robot]
  • Parameters:
    1. device: [str] Device name
    2. pin: [str] Register address (string format: e.g. '0x9C40' or '40000')
    3. count: [int] Consecutive quantity
  • Return: [list[int]] Values at the corresponding consecutive input register addresses

Example Program

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

Example

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)