rsiot/components/cmp_plc/plc/library/drives/valve_analog/
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    /// Статус для вывода на hmi
9    pub hmi_status: QHmiStatus,
10
11    /// Активно задание из plc
12    pub mv_plc_act: bool,
13    /// Активно задание из hmi
14    pub mv_hmi_act: bool,
15    /// Задание
16    pub mv: f64,
17}
18
19/// Статут для вывода на hmi
20#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
21pub struct QHmiStatus {
22    /// Состояние
23    pub state: QState,
24
25    /// Режим работы
26    pub mode: QMode,
27
28    /// Активно задание из plc
29    pub mv_plc_act: bool,
30    /// Активно задание из hmi
31    pub mv_hmi_act: bool,
32    /// Задание
33    pub mv: f64,
34
35    /// Фактическое открытие
36    pub rbk: f64,
37
38    /// Разрешения для работы с hmi
39    pub hmi_permission: QHmiPermission,
40}
41
42/// Разрешения для работы с hmi
43#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
44pub struct QHmiPermission {
45    /// Разрешение включения в ручном режиме
46    pub man_start: bool,
47    /// Разрешение отключения в ручном режиме
48    pub man_stop: bool,
49
50    /// Разрешение переключения в режим auto
51    pub mode_auto: bool,
52    /// Разрешение переключения в режим manual
53    pub mode_man: bool,
54    /// Разрешение переключения в режим local
55    pub mode_local: bool,
56    /// Разрешение переключения в режим oos
57    pub mode_oos: bool,
58
59    /// Активировать задание из hmi
60    pub mv_hmi_en: bool,
61    /// Активировать задание из plc
62    pub mv_plc_en: bool,
63    /// Активация любого задания: `sp_hmi_en && sp_plc_en`
64    pub mv_hmi_plc_en: bool,
65    /// Изменение значения sp
66    pub mv_hmi: bool,
67}
68
69/// Состояние
70#[derive(Clone, Copy, Debug, Default, PartialEq, Deserialize, Serialize)]
71pub enum QState {
72    /// Закрыт
73    #[default]
74    Closed,
75
76    /// Открытие
77    Opening,
78
79    /// Открыт
80    Opened,
81
82    /// Закрытие
83    Closing,
84
85    /// В ошибке
86    Alarm,
87}