rsiot/components/cmp_plc/plc/library/drives/motor/
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    /// 1 = команда на запуск двигателя
12    pub start: bool,
13}
14
15/// Статут для вывода на hmi
16#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
17pub struct QHmiStatus {
18    /// Состояние
19    pub state: QState,
20
21    /// Режим работы
22    pub mode: QMode,
23
24    /// Разрешения для работы с hmi
25    pub hmi_permission: QHmiPermission,
26
27    /// true - команда на запуск
28    pub start: bool,
29}
30
31/// Разрешения для работы с hmi
32#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
33pub struct QHmiPermission {
34    /// Разрешение включения в ручном режиме
35    pub man_start: bool,
36    /// Разрешение отключения в ручном режиме
37    pub man_stop: bool,
38
39    /// Разрешение переключения в режим auto
40    pub mode_auto: bool,
41    /// Разрешение переключения в режим manual
42    pub mode_man: bool,
43    /// Разрешение переключения в режим local
44    pub mode_local: bool,
45    /// Разрешение переключения в режим oos
46    pub mode_oos: bool,
47}
48
49/// Состояние
50#[derive(Clone, Copy, Debug, Default, PartialEq, Deserialize, Serialize)]
51pub enum QState {
52    /// Стоп
53    #[default]
54    Stop,
55
56    /// Старт
57    Start,
58
59    /// В ошибке
60    Alarm,
61}