电压故障产生
本演示致力于使用图表块形成有限自动机逻辑的工具。 该块有自己的特殊元素库,其中包含状态,节点和转换。 如下图所示。
为了演示该工具的功能,我们将考虑一个电压故障产生系统。
在本例中,我们将传感器绕组两端的电压(U+,U-)与阈值进行比较。 当电压较低时,我们形成故障。 系统的上层如下图所示。
如果我们考虑状态机本身的逻辑,那么请注意有两个绕组电压。 当某一电压变得小于阈值时,启动故障确认处理(CNTR_START、CNTR_STOP状态)。 这个过程持续1秒(1秒–0.01秒是计算步骤)。 如果在故障检测过程结束时,故障状况仍然存在,那么我们确认故障并切换到故障状态。 下图显示了在图表中实现的逻辑.
现在让我们运行模型本身并分析其执行的结果。
In [ ]:
# 启用辅助模型启动功能。
function run_model( name_model, path_to_folder )
Path = path_to_folder * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # 检查将模型加载到内核的条件
model = engee.open( name_model ) # 打开模型
model_output = engee.run( model, verbose=true ); # 启动模型
else
model = engee.load( Path, force=true ) # 上传模型
model_output = engee.run( model, verbose=true ); # 启动模型
engee.close( name_model, force=true ); # 关闭模型
end
return model_output
end
Out[0]:
In [ ]:
run_model("Voltage_failure_generation",@__DIR__) # 启动模型。
Out[0]:
从仿真结果可以看出,保存了三个信号:
*v=有效性-信号有效性的标志,
*cf=check_flag-内部计数器变量,
*res-表示其中一个电压已小于阈值。
让我们绘制这些信号。
In [ ]:
# 从simout读取信号
v = simout["Voltage_failure_generation/v"];
v = collect(v);
check_flag = simout["Voltage_failure_generation/Chart.check_flag"];
check_flag = collect(check_flag);
res = simout["Voltage_failure_generation/res"];
res = collect(res);
In [ ]:
plot(v.time, [v.value, check_flag.value, res.value], layout = (3,1), title=["v" "check_flag" "res"])
Out[0]:
从图中我们可以看到,当出现错误条件时,我们的系统正常工作。
结论
在本例中,我们以电压故障发生系统为例,分析了在Engee中使用Chart的可能性。
.png)