rsiot/components/cmp_plc/plc/library/drives/valve/
q.rs

1use serde::{Deserialize, Serialize};
2
3pub use super::super::select_mode::QMode;
4
5/// Область памяти output
6#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7pub struct Q {
8    /// Команда на управление
9    pub control: bool,
10    /// Статус для вывода на hmi
11    pub hmi_status: QHmiStatus,
12}
13
14/// Статут для вывода на hmi
15#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
16pub struct QHmiStatus {
17    /// Состояние
18    pub state: QState,
19
20    /// Режим работы
21    pub mode: QMode,
22
23    /// Разрешения для работы с hmi
24    pub hmi_permission: QHmiPermission,
25
26    /// true - команда на управление
27    pub control: bool,
28}
29
30/// Разрешения для работы с hmi
31#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
32pub struct QHmiPermission {
33    /// Разрешение включения в ручном режиме
34    pub man_start: bool,
35    /// Разрешение отключения в ручном режиме
36    pub man_stop: bool,
37
38    /// Разрешение переключения в режим auto
39    pub mode_auto: bool,
40    /// Разрешение переключения в режим manual
41    pub mode_man: bool,
42    /// Разрешение переключения в режим local
43    pub mode_local: bool,
44    /// Разрешение переключения в режим oos
45    pub mode_oos: bool,
46}
47
48/// Состояние
49#[derive(Clone, Copy, Debug, Default, PartialEq, Deserialize, Serialize)]
50pub enum QState {
51    /// Закрыт
52    #[default]
53    Closed,
54
55    /// Открытие
56    Opening,
57
58    /// Открыт
59    Opened,
60
61    /// Закрытие
62    Closing,
63
64    /// В ошибке
65    Alarm,
66}