rsiot/components/cmp_plc/plc/library/drives/motor/
i.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::select_mode;
4
5/// Входная структура
6#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7pub struct I {
8    /// Источник выбора режима:
9    /// - false => из hmi,
10    /// - true => из plc
11    pub mode_source: bool,
12    /// Переключение в режим auto из контроллера
13    pub mode_auto: bool,
14    /// Переключение в режим manual из контроллера
15    pub mode_man: bool,
16    /// Переключение в режим local из контроллера
17    pub mode_local: bool,
18    /// Переключение в режим oos из контроллера
19    pub mode_oos: bool,
20
21    /// false - блокировка работы
22    pub intlock: bool,
23
24    /// Команда с hmi
25    pub hmi_command: IHmiCommand,
26
27    /// Команда на запуск в режиме auto
28    pub auto_start: bool,
29    /// Команда на останов в режиме stop
30    pub auto_stop: bool,
31}
32
33/// Команда с hmi
34#[allow(non_camel_case_types)]
35#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
36pub enum IHmiCommand {
37    /// Нет команды - по-умолчанию
38    #[default]
39    no_command,
40
41    /// Запуск
42    man_start,
43    /// Стоп
44    man_stop,
45
46    /// Переключение в режим man из hmi
47    mode_man,
48    /// Переключение в режим auto из hmi
49    mode_auto,
50    /// Переключение в режим local из hmi
51    mode_local,
52    /// Переключение в режим oos из hmi
53    mode_oos,
54}
55
56impl From<IHmiCommand> for select_mode::IHmiCommand {
57    fn from(value: IHmiCommand) -> Self {
58        match value {
59            IHmiCommand::no_command => select_mode::IHmiCommand::no_command,
60
61            IHmiCommand::mode_man => select_mode::IHmiCommand::mode_man,
62            IHmiCommand::mode_auto => select_mode::IHmiCommand::mode_auto,
63            IHmiCommand::mode_local => select_mode::IHmiCommand::mode_local,
64            IHmiCommand::mode_oos => select_mode::IHmiCommand::mode_oos,
65
66            _ => select_mode::IHmiCommand::no_command,
67        }
68    }
69}