Enum modbus_rtu::packet::Request
source · pub enum Request {
ReadCoils {
slave: u8,
base_address: u16,
quantity: u16,
},
ReadDiscreteInputs {
slave: u8,
base_address: u16,
quantity: u16,
},
ReadHoldingRegisters {
slave: u8,
base_address: u16,
quantity: u16,
},
ReadInputRegisters {
slave: u8,
base_address: u16,
quantity: u16,
},
WriteSingleCoil {
slave: u8,
address: u16,
data: bool,
},
WriteSingleRegister {
slave: u8,
address: u16,
data: u16,
},
WriteMultipleCoils {
slave: u8,
base_address: u16,
data: Vec<bool>,
},
WriteMultipleRegisters {
slave: u8,
base_address: u16,
data: Vec<u16>,
},
MaskWriteRegister {
slave: u8,
address: u16,
and_mask: u16,
or_mask: u16,
},
ReadWriteMultipleRegisters {
slave: u8,
read_base_address: u16,
read_quantity: u16,
write_base_address: u16,
data: Vec<u16>,
},
}Expand description
§Request
Modbus RTU request packet variants.
Variants§
ReadCoils
§ReadCoils (0x01)
Request to read multiple coils. A coil is a single-bit memory that the master can read and write.
slave: Address of the target device. It must not be zero.base_address: Base coil address to start reading.base_address + quantity - 1must not exceed0xFFFF.quantity: Number of coils to read. It must be less than or equal to255due to the response byte counter being 8-bit.
ReadDiscreteInputs
§ReadDiscreteInputs (0x02)
Request to read multiple discrete inputs. A discrete input is a single-bit memory that the master can only read.
slave: Address of the target device. It must not be zero.base_address: Base discrete input address to start reading.base_address + quantity - 1must not exceed0xFFFF.quantity: Number of discrete inputs to read. It must be less than or equal to255due to the response byte counter being 8-bit.
ReadHoldingRegisters
§ReadHoldingRegisters (0x03)
Request to read multiple holding registers. A holding register is a 16-bit memory that the master can read and write.
slave: Address of the target device. It must not be zero.base_address: Base holding register address to start reading.base_address + quantity - 1must not exceed0xFFFF.quantity: Number of holding registers to read. It must be less than or equal to125due to the maximum packet size of256.
ReadInputRegisters
§ReadInputRegisters (0x04)
Request to read multiple input registers. An input register is a 16-bit memory that the master can only read.
slave: Address of the target device. It must not be zero.base_address: Base input register address to start reading.base_address + quantity - 1must not exceed0xFFFF.quantity: Number of input registers to read. It must be less than or equal to125due to the maximum packet size of256.
WriteSingleCoil
§WriteSingleCoil (0x05)
Request to write a single coil. A coil is a single-bit memory that the master can read and write.
slave: Address of the target device.address: Coil address to write to.data: Data to write.truerepresentsON, andfalserepresentsOFF.
WriteSingleRegister
§WriteSingleRegister (0x06)
Request to write a single holding register. A holding register is a 16-bit memory that the master can read and write.
slave: Address of the target device.address: Holding register address to write to.data: Data to write.
WriteMultipleCoils
§WriteMultipleCoils (0x0F)
Request to write multiple coils. Coils are single-bit memory that the master can read and write.
slave: Address of the target device to write to.base_address: Base coil address to start writing.base_address + length_of_data - 1must not exceed0xFFFF.data: Data to write. The length of the data must be less than or equal to1976due to the maximum packet size of256.
WriteMultipleRegisters
§WriteMultipleRegisters (0x10)
Request to write multiple holding registers. Holding registers are 16-bit memory that the master can read and write.
slave: Address of the target device.base_address: Base holding register address to start writing.base_address + length_of_data - 1must not exceed0xFFFF.data: Data to write. The length of the data must be less than or equal to123due to the maximum packet size of256.
MaskWriteRegister
§MaskWriteRegister (0x16)
Request to apply AND and OR masks to a single holding register. A holding register is a 16-bit memory that the master can read and write.
slave: Address of the target device.address: Holding register address to apply masks to.and_mask: AND mask to apply.or_mask: OR mask to apply.
ReadWriteMultipleRegisters
§ReadWriteMultipleRegisters (0x17)
Request to write to multiple holding registers and read from multiple holding registers. Holding registers are 16-bit memory that the master can read and write.
slave: Address of the target device. It must not be zero.read_base_address: Base holding register address to start reading.read_base_address + read_quantity - 1must not exceed0xFFFF.read_quantity: Number of holding registers to read. It must be less than or equal to125due to the maximum packet size of256.write_base_address: Base holding register address to start writing.write_base_address + length_of_data - 1must not exceed0xFFFF.data: Data to write. The length of the data must be less than or equal to121due to the maximum packet size of256.
Implementations§
source§impl Request
impl Request
sourcepub fn function_code(&self) -> u8
pub fn function_code(&self) -> u8
§function_code
Returns the function code that corresponds to the request.
sourcepub fn expect_len(&self) -> usize
pub fn expect_len(&self) -> usize
§expect_len
Return expect response packet size. Note that this size is in case of the slave return successfully. If slave returns expection code, you should expect for 5 bytes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Request
impl RefUnwindSafe for Request
impl Send for Request
impl Sync for Request
impl Unpin for Request
impl UnwindSafe for Request
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)