rsiot/components_config/modbus_client/
config.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use std::net::IpAddr;

use super::{InputConfig, PeriodicConfig};

/// Конфигурация cmp_modbus_client
#[derive(Clone, Debug)]
pub struct Config<TMessage> {
    /// true - разрешение работы
    pub enabled: bool,

    /// Настройки подключения к опрашиваемому устройтву
    pub connection_config: ClientType,

    /// Адрес подчиненного устройства (обычно 1)
    pub unit_id: u8,

    /// Конфигурация запросов на основе входных сообщений
    pub input_config: Vec<InputConfig<TMessage>>,

    /// Конфигурация периодических запросов
    pub periodic_config: Vec<PeriodicConfig<TMessage>>,
}

/// Конфигурация Modbus клиента
#[derive(Clone, Debug)]
pub enum ClientType {
    /// Вариант для Modbus TCP
    Tcp(TcpClientType),
    /// Вариант для Modbus RTU
    Rtu,
}

/// Конфигурация Modbus TCP клиента
#[derive(Clone, Debug)]
pub struct TcpClientType {
    /// IP-адрес устройства
    pub host: IpAddr,

    /// Порт устройства (обычно 502)
    pub port: u16,
}