pub struct Config<TMessage, I, Q, S>where
TMessage: MsgDataBound,
I: Clone + Default + Serialize,
Q: Clone + Default + Serialize,
S: Clone + Default + Serialize,
FunctionBlockBase<I, Q, S>: IFunctionBlock<I, Q, S>,{
pub fn_input: fn(&mut I, &Message<TMessage>),
pub fn_output: fn(&Q) -> Vec<Message<TMessage>>,
pub fb_main: FunctionBlockBase<I, Q, S>,
pub period: Duration,
}
Expand description
Конфигурация компонента ПЛК
§Шаблон функционального блока
//! Шаблон для нового функционального блока
use serde::{Deserialize, Serialize};
use crate::plc::function_block_base::{FunctionBlockBase, IFunctionBlock};
#[derive(Clone, Default, Deserialize, Serialize)] pub struct I {}
#[derive(Clone, Default, Deserialize, Serialize)] pub struct Q {}
#[derive(Clone, Default, Deserialize, Serialize)] pub struct S {}
impl IFunctionBlock<I, Q, S> for FunctionBlockBase<I, Q, S> { fn logic(_input: &I, _stat: &mut S) -> Q { Q {} } }
#[allow(dead_code)] pub type FB = FunctionBlockBase<I, Q, S>;
Fields§
§fn_input: fn(&mut I, &Message<TMessage>)
Функция преобразования входящих сообщений во входную структуру ПЛК.
§Примеры
fn_input: |input: &mut fb_main::I, msg: &TMessage| match msg {}
fn_output: fn(&Q) -> Vec<Message<TMessage>>
Функция преобразования выходной структуры ПЛК в исходящие сообщения.
§Примеры
fn_output: |output: &fb_main::Q| vec![]
fb_main: FunctionBlockBase<I, Q, S>
§period: Duration
Trait Implementations§
Auto Trait Implementations§
impl<TMessage, I, Q, S> Freeze for Config<TMessage, I, Q, S>
impl<TMessage, I, Q, S> RefUnwindSafe for Config<TMessage, I, Q, S>
impl<TMessage, I, Q, S> Send for Config<TMessage, I, Q, S>
impl<TMessage, I, Q, S> Sync for Config<TMessage, I, Q, S>
impl<TMessage, I, Q, S> Unpin for Config<TMessage, I, Q, S>
impl<TMessage, I, Q, S> UnwindSafe for Config<TMessage, I, Q, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more