Избавляемся от рутины в Engee
作者
module SILAutomation
import Main.engee
export runSims,buildCUT,buildSILHarness,compare_signals
using DataFrames
function runSims(MIL_Harness::String,SIL_Harness::String)
MIL_mdl = engee.load("$MIL_Harness.engee", force = true)
SIL_mdl = engee.load("$SIL_Harness.engee", force = true)
SILres = engee.run(SIL_mdl)
MILres = engee.run(MIL_mdl)
return (MILres,SILres)
end
function buildCUT(CUT::String)::Bool
status = false;
try
abfilter = engee.load("$(CUT).engee")
engee.set_param!(engee.gcm(),"CreateCFunction"=>true)
engee.generate_code("$(CUT).engee", "$(CUT)_cg")
include("$(CUT)_cg/$(CUT)_verification.jl")
status = true;
catch ex
return status
end
return status
end
function buildSILHarness(SIL_Harness::String,CUT::String,MIL_Harness::String)
# Create harness (copy contents)
# Guard for old harnesses
model_names = [m.name for m in engee.get_all_models()];
if any(model_names .== SIL_Harness)
engee.close(SIL_Harness,force=true)
end
if isfile("$SIL_Harness.engee")
rm("$SIL_Harness.engee")
end
SIL_mdl = engee.create("$SIL_Harness")
engee.load("$(MIL_Harness).engee")
engee.copy_contents(MIL_Harness,SIL_Harness)
engee.delete_block("$SIL_Harness/$CUT")
try
engee.copy_block("$(CUT)_verification/C Function","$SIL_Harness/C Function")
catch error
show(error)
end
engee.open(SIL_Harness)
#connect SIL Function And prepare simulation
engee.add_line("ProcessNoiseVariance/1","C Function/1")
engee.add_line("MeasurementNoiseVariance/1","C Function/2")
engee.add_line("Add-1/1","C Function/3")
engee.add_line("C Function/1","Add/2")
engee.add_line("C Function/1","SysOut/1")
engee.set_log("C Function/1")
engee.set_param!(SIL_mdl,"FixedStep"=>engee.get_param(MIL_Harness,"FixedStep"))
engee.arrange_system()
engee.save("$SIL_Harness.engee")
end
function compare_signals(sig_one,sig_two)
Ds = collect(sig_one);
Rs = collect(sig_two);
Cmp = isapprox.(Ds, Rs)
issynched = all(Cmp.time)
issimilar = all(Cmp.value)
return (issynched, issimilar)
end
end