有限状态机
有限状态机 (FSM) 是程序员、数学家、工程师和其他专业人士用来描述具有有限数量条件状态的系统的数学模型。
有限状态机的构成包括以下内容:
- 一组潜在的输入事件。
- 与潜在输入事件相对应的一组可能的输出事件。
- 系统可以显示的一组预期状态。
OPC UA 状态机模型
OPC UA 规范在两个地方定义了状态机和有限状态机模型
OPC 10000-5: UA Part 5: Information Model Annex B State Machines
OPC 10000-16: UA Part 16: State Machines
这里我们以OPC 10000-16的内容为主,学习有限状态机模型
状态机类型
有限状态机类型
有限状态机(Infinite State Machine) 是一个定义状态机的对象。它显式地定义了可能的状态(States)和转换(Transitions)。
有限状态机模型中包含的属性
有限状态机中并没有包含状态和转移的定义。在定义你的状态机时,你要在有限状态机的对象类型中定义状态和转移。
状态
状态是一个状态类型的实例来定义的,你有多少个状态,就添加多少个状态类型的实例。
你可以添加一个初始状态(InitialStateype)。
转移
转移是转移类型的实例来定义的,你有多少个转移就定义多少个转移。转移通过FromState和ToState 引用指定转移的方向
转移可以产生一个事件。
方法
你可以在有限状态机类型中添加方法,这些方法将会导致转移的发生,通过相应的转移HasCause引用指向该方法。
保护(Guard)
使用一个保护变量类型(GuradVariableType)可以指明转移是否允许。保护变量类型是一个bool 值变量。
转移通过HasGurad 引用指向保护变量
事件
转移可能产生事件,事件通过HasEffect 引用指向转移,而转移使用HasGeneratesEvent 指向事件。
子状态
有限自动机中可以包含子状态机。
OPC UA 有限状态机的实例
状态机模型的应用
需要表达系统执行顺序的场合都可能使用有限状态机模型
- 程序有限状态机模型(ProgramInfiniteStateMachineType)
- 文件传输(TransferInfiniteStateMachine)
- 基于工艺的交互协议中使用,例如工业4.0 的管理壳,packML 等场合
结束语
有限状态机模型的实现有赖于OPC UA 服务器的SDK。在工艺配方,MTP,I4.0 AAS 等场合可能被应用