在有限自动机中处理数据
|
页面进行中。 |
Engee有限状态机是控制逻辑,转换和状态的独立实体,但与通常的实体隔离。 区块图书馆工程
而且,作为一个结果,建立经典模型的可能性。
为了使状态机与外部块交换数据,使用块数据。 图表 及其对应的端口。 例如:
-
创建输出数据时,输出端口会自动出现在*Chart*块中,该块可以连接到模型的其他元素。
-
同样,在创建输入数据时,出现用于从外部接收信息的输入端口。
-
本地数据仅存在于状态机内部(在*Chart*块内部),并且不创建端口。
因此,数据充当有限自动机和模型其余部分之间的连接接口:没有它们,自动机模型仍然是一个独立的实体,但有了它们,它就成为系统的完整部分。
要在*Engee*中使用有限状态机数据,窗口" 信号 "-它允许您集中管理有限状态机模型的所有数据。 在它的帮助下,它们被结合在一起:

-
所有状态机数据列表;
-
数据类别(输入、输出、参数);
-
数据类型、维度和复杂性的设置。
数据类别
在窗口" 信号 "支持以下数据类别:

-
入场 --从外部模型进入状态机的数据。
-
输出 --状态机导出到外部的数据。
-
本地变量 --仅在状态机内部可用的数据(在*Chart*块内)。 它们用于存储中间计算并控制状态和转换的逻辑。
-
参数 -在模拟启动时从同名工作区变量复制的固定值(参数数据),并且在模拟期间不会更改。
符号助手
运行模拟时
或汇编
Engee*验证有限状态机模型的正确性。 如果其中有未定义的数据,则打开" *符号助理 ". 在里面你可以:
-
查看找到的未定义名称;
-
为它们分配一个类别(例如,"退出");
-
确认添加到*信号*列表中。

设置数据类型
必须指定每种数据类型。 这决定了在仿真过程中如何存储和使用它。 支持与Julia语言类型系统一致的类型。:
-
继承:自动--数据类型继承; -
Int8,Int16,Int32,Int64,Int128--有符号整数; -
UInt8,UInt16,UInt32,UInt64,UInt128--无符号整数; -
漂浮物16,漂浮物32,漂浮64--浮点数; -
布尔--逻辑类型; -
定点--固定点(以优化计算)。
假设在面板" 信号 "*图表块*您已创建输出数据 , , , . 然后在状态里面你可以这样写:
# 在活动状态(进入/期间/退出)期间执行的代码
s = [1, 2, 3, 4, 5] # ,长度5
a = [1, 2, 3, 4, 5, 6, 7] # ,长度7
# 将数组的部分分配给输出端口
q = s[1:4] # q == [1, 2, 3, 4]
w = a[1:4] # w == [1, 2, 3, 4]
# 二维输出(2×3)
M = reshape(collect(1:6), 2, 3) # 矩阵 2×3
# 如果需要,可以指定类型:
# M = Float32.(reshape(collect(1:6), 2, 3))
如果要在没有初始化的情况下创建给定类型/大小的矩阵,则使用显式数组创建。:
B = Array{Float64,2}(undef, 3, 3) # 具有未初始化值的3×3÷(任意内存内容)
# 在使用它之前,请务必分配值,例如:
B .= 0.0
# 或者立即创建一个初始化的数组。:
# B = zeros(Float64, 3, 3)
# B = fill(1.0, 3, 3)
unef 不使用零填充数组。 内容取决于以前使用的内存,因此必须在读取其元素之前初始化这样的数组。
|
结果是有限状态机的以下模型:
-
图表块内:

-
*工程师*模型(在*图表*块外):

维度和复杂性
除了数据类型之外,您还可以设置维度(标量、矢量或数组)和复杂性。
-
尺寸-在窗口中显示" 信号 "作为用逗号分隔的整数序列:
-
-1(默认值)-尺寸不是固定的,是自动确定的。:-
对于输入/输出,它取自外部模型的连接端口;
-
对于参数,它取自同名的工作区变量(工作区,外部*Chart*);
-
对于本地数据,它取自图表代码中实际分配的值。
如果形状可以改变,这种模式很方便。
-
-
显式形式是输入用逗号分隔的数字。:
-
n-来自n元素; -
n,m-矩阵n×m; -
n,m,k-三维阵列n×m×k.序列
n[,m[,k…]]在*Dimension*字段中,它对应于Julia数组构造函数的数值参数。 例如,n,m→矩阵{Float32}(undef,n,m)(=数组{Float32,2}(undef,n,m)).
-
-
-
复杂性 --确定数据是否可以包含复杂值。:
-
Inherit:auto--值从外部模型中的关联变量或信号自动继承。 例如,如果在工作区或输入块中使用复杂类型,那么状态机中的数据将是复杂的。
-
Off--禁用继承,数据始终有效。
-
On--禁用继承,数据总是复杂的。
-




