[医][医][医][医][医][医][医][医][医]
导言
这个例子用几种自动化方法来检查实时测试模型的工作流程:模型的软件参数化、AnyMath中的模拟管理、模拟结果处理、节奏模拟管理和实时测试数据收集。 在这种情况下,更多的配件是通过[与外部设备一起工作]的方法来处理。https://engee.com/helpcenter/stable/ru-en/ritm/working-with-RITM.html )。
示例模型
示例模型 ritm_dcm_current_control 您可以通过dct(dct)的方式对您的电脑进行控制。 控制对象是dpt电枢电路和晶闸管转换器(TP),它们由连续传递函数-一阶的非周期性链接表示。 在电流反馈中安装电流传感器,该电流传感器由比例链接表示。 控制动作为步进函数。 在初始时刻,形成DPT的起始电流,0.5s的时刻,形成零电枢电流。
流路为换流路,换热器为PPI。 这是一个离散系统组装成一个子系统,用于后续代码生成。
.png)
[SI功能]https://engee.com/helpcenter/stable/ru-en/base-lib-user-defined-function/c-function.html )(RITM-PLOT, RITM-PLOT-1)在节奏屏幕上显示模型变量的图形。
整条整条
3.创新创新:创新创新:创新创新。https://engee.com/helpcenter/stable/ru-en/interactive-scripts/base_simulation/demo_callback.html )界面,可以在下载界面的轨迹:
# 电机电压及控制系统
Udc = 560; Uref = 10;
# 发动机参数
Lя = 0.00757; Rя = 0.203; Iн = 370; Imax = 2*Iн;
# 电动马达电路的传递函数的系数
Kя = 1/0.203; Tя = Lя/Rя;
# 晶闸管变换器传递函数的系数
Kтп = Udc/Uref; Tтп = 0.01;
# 电流反馈系数
Kос = Uref/Imax;
# PI电流调节器的系数
Kp = Tя/(2*Tтп*Kтп*Kос/Rя); Ti = Tя/Kp;
name = "ritm_dcm_current_control";
以下自定义函数用于运行模拟。
"""
Function by @mikhailpetrov
"""
function start_model_engee(name::String)
try
engee.close(name, force=true) # 关闭模型
catch err # 如果没有模型关闭和engee。close()不执行,它将在catch之后加载。
m = engee.load(joinpath(@__DIR__, "$name.engee")) # 加载模型
end;
try
engee.run(m) # 启动模型
catch err # 如果模型没有加载和engee。run()不执行,catch后最下面的两行将被执行。
m = engee.load(joinpath(@__DIR__, "$name.engee")) # 加载模型
engee.run(m) # 启动模型
end
end
start_model_engee(name)
data = collect(simout);
t = collect(data[1].time)[:,1];
Iref = collect(data[1].value)[:,1];
Ep = collect(data[2].value)[:,1];
I = collect(data[3].value)[:,1];
我们将在图表上显示接收到的信号:
gr()
plot(t, [Iref.*(Imax/Uref), I, Ep],
label = ["我*,和" "我,和" "Ep,在"], legend = :topright,
title = "Dpt电流电路的仿真",
xlabel = "时间,从", ylabel = "电流,a;电动势,V")
的我*是设定电枢电流的信号,I是实际电枢电流,Ep是实际电动势TP。 通过电流图的类型,可以直观地假设瞬态过程对应于模块化最优的设置。 需要对过渡过程进行额外的分析,超出了当前示例的范围。
实时节奏测试的自动化
愿铭记整条换热。https://engee.com/helpcenter/stable/ru-en/ritm.html )否定。 在此之前,将控制系统切换到目标设备(控制器)和完全的目标设备(hil)。
工作准备
...... 在[相关实施例]中描述了复制的所有步骤(https://engee.com/community/ru/catalogs/projects/kpm-ritm-bystryi-start )。
如有必要,我们将安装一个支持包,用于使用外部硬件。 有关将AnyMath连接到低级接口的详细的分步帮助可从相应примера.
# Engee.Package.install("Engee-Device-Manager")
整条河都有......https://engee.com/helpcenter/stable/ru-en/ritm/ritm-functions.html )KPM节?:
using Main.EngeeDeviceManager.Targets
using Main.EngeeDeviceManager.Targets.RITM_API
创建目标平台对象:
ritm = Targets.RITM.Ritm()
[医]节律。
我们将把您的设备安装在您的设备上。 EngeeDeviceManager.Targets.RITM.set_url 🔗创建的对象 ritm.
Targets.RITM_API.setUrl(ritm, "http://192.168.56.3:8000/")
成功连接到节奏后,命令 EngeeDeviceManager.Targets.RITM_API.isConnected [🔗](https://engee.com/helpcenter/stable/ru-en/ritm/ritm-functions.html#AnyMathDeviceManager.Targets.RITM_API.isConnected-Tuple{ (%7D)将 true:
RITM_API.isConnected(ritm)
AnyMath与KPM RHYTHM的连接已经建立,让我们继续进行实时测试自动化。
建模管理
)(整条换热法 EngeeDeviceManager.Targets.RITM.upload_model 🔗对知识的节奏。
model = engee.load(joinpath(@__DIR__, "$name.engee"))
Targets.upload_model(ritm, model)
下载成功了,让我们继续使用命令从模型生成可执行代码 EngeeDeviceManager.Targets.RITM.generate_executable_code 🔗.
将[整条模型]铭记(https://engee.com/helpcenter/stable/cn/ritm/build-modes.html#standalone )(Standalone),因此,命令的第三个属性取值 false.
Targets.generate_executable_code(ritm, model, false)
代码生成成功了,我们将用命令组装模型以便在节奏上执行 EngeeDeviceManager.Targets.RITM.compile_model 🔗.
Targets.compile_model(ritm, model)
根据收到的消息,项目组装成功,我们将继续以独立模式执行模型。 对节奏的模拟的程序开始是由命令进行的 EngeeDeviceManager.Targets.RITM.start_model 🔗.
Targets.start_model(ritm, model)
如果成功,可以看出,模型没有错误输出。 让我们继续从节奏模型的执行中收集和分析数据。
获得模拟结果
专责小组 EngeeDeviceManager.Targets.RITM_API.getLog 🔗返回指定的日志行数。:
println(RITM_API.getLog(ritm, 13))
在命令的输出中,我们看到伴随模型执行的消息。
在连接到节奏的屏幕上可以观察到相同的日志。 使用命令 EngeeDeviceManager.Targets.RITM_API.getScreenshot [🔗](https://engee.com/helpcenter/stable/ru-en/ritm/ritm-functions.html#AnyMathDeviceManager.Targets.RITM_API.getScreenshot-Tuple{Any, String})屏幕截图:
RITM_API.getScreenshot(ritm, "model.png")
具有指定名称的屏幕截图保存在节奏存储器中的临时文件文件夹中。 从节奏的内存下载的截图文件如下所示
.png)
在 RITM.Monitor 此时将显示[RTOS]的当前版本。真实的东西время](https://engee.com/helpcenter/stable/cn/ritm/intro.html#осрв-ритм-реальное-время),KPMG的IP地址,模型的名称和状态,以及计算步骤和计算步骤的时间,她是个现实主义者。
RITM_API.readFile(ritm, "install_manifest.txt"; path = "/home/ritm/build/$name/build/")
RITM_API.getFile(ritm, "install_manifest.txt"; from = "/home/ritm/build/$name/build/", to = @__DIR__)
另外,使用命令 EngeeDeviceManager.Targets.RITM_API.getData 🔗它能够获得数据存储器的知识的节奏,例如[分析数据](https://engee.com/helpcenter/stable/cn/ritm/ritm-model-settings.html 的整条换热。 将它们保存到文件中:
RITM_API.getData(ritm, "$name", @__DIR__, true)
我们将处理获得的模型分析数据并将其显示在图表上。:
profiling = parse.(Int64, split(strip(read(joinpath(@__DIR__, "$name.txt"), String)), '\n')).*1e-9;
gr()
plot(profiling;
title = "计算步骤的时间", label = :none,
xlabel = "建模步骤", ylabel = "交货期,")
根据获得的数据,我们可以判断模型执行过程中硬实时模式的维护情况。
结论
在这个例子中,我们已经做了预测。 直接在AnyMath脚本中,您可以计算模型参数,在AnyMath和KPM节奏上执行模拟,过程模拟结果和实时机器操作数据。
.png)
.png)