1 功能介绍
CANape与INCA类似,可用于车辆VCU的标定和数据采集。这里介绍辅助功能function and script,习惯称之为脚本(实际为函数和脚本)。先介绍function,可以实现简单信号a和信号b乘法,例如做能量流分析时计算功率(转速与扭矩乘)。该功能前期有专业人员做支援,当时问其编制方法,其回答看帮助文件,现在没有支援则自己动手。
功能描述:电压信号阶梯增加,每次保持1.5s,测量后0.5s位移平均值(假设信号步长10ms,需要取样50个点,但该脚本中点的数目为10个)。图示如下:
2 初版程序
刚开始看CANape中Function definition→Library function,自带function MovingAverage,没理解其思路,遂自编一个,能正常编译和运行(未用Canape实测,其语法结构类似C语言):
//名称: Signal_Average.cne
//作者: Morven_Xie
//版本: 1.0
//时间: 2020/8/19 23:11
//功能: 求取MDF文件中信号平均值
//简介: 对信号的10个点求取平均值
//Email: morven_xie@163.com
function Signal_Average_Last100ms(var signal)
{
unsigned int data=1;
double sum=0;
float average;
if (data)
{
data=0;
long i;
Print("Take action,Script starts/n");
for (i=sizeof(signal)-1;i>sizeof(signal)-11;i--)
sum=sum+signal[i];
Write("i= %d ,signal[i]= %f ,sum= %0.2f ",i,signal[i],sum);
}
average=sum/10;
Write("Average = %f ",average);
return average;
}
数据使用CANape帮助文件中的MDF,运行Function后write窗口内容如下:
运行结果:
8-19-2020 23:29:29.661766 File ‘CANape.MDF’: Data for display of envelope curve in temporary file created, original file has not been replaced according to global option.
8-19-2020 23:29:34.922925 Due to the version of the currently installed Windows 64 bit operating system there can be problems when creating error report files (dump files *.dmp) in case of an application crash (-> dump file probably not created). To fix this problem, please install the Microsoft hotfix KB976038 (web link: http://support.microsoft.com/kb/976038/en-us) or install a current Windows service pack.
8-19-2020 23:30:36.757768 Take action,Script starts/n
8-19-2020 23:30:36.757999 i= 3586 ,signal[i]= -9.984415 ,sum= -99.20
8-19-2020 23:30:36.758034 Average = -9.919868
8-19-2020 23:30:36.758097 Average = -9.919868
8-19-2020 23:30:36.758129 Average = -9.919868
8-19-2020 23:30:36.758157 Average = -9.919868
8-19-2020 23:30:36.758185 Average = -9.919868
8-19-2020 23:30:36.758211 Average = -9.919868
8-19-2020 23:30:36.75824 Average = -9.919868
8-19-2020 23:30:36.758269 Average = -9.919868
8-19-2020 23:30:36.758314 Average = -9.919868
8-19-2020 23:30:36.758347 Average = -9.919868
8-19-2020 23:30:36.758376 Average = -9.919868
8-19-2020 23:30:36.758408 Average = -9.919868
8-19-2020 23:30:36.758441 Average = -9.919868
8-19-2020 23:30:36.758474 Average = -9.919868
8-19-2020 23:30:36.758507 Average = -9.919868
8-19-2020 23:30:36.75854 Average = -9.919868
8-19-2020 23:30:36.758573 Average = -9.919868
……
3 更新程序
后对CANape自带脚本梳理,其方法更好,为方便理解,增加打印按钮。其优势是可以计算线段上所有的点。原理是每次计算10个数值,计算第11个时,加上第11个,减去第一个。
function FunctAverage_System(var signal)
{
//! number of last measure values to be used for the calculation
int smoothFactor = 10;
// local variables
unsigned int first = 1;
double lastValues[100];
double sum;
unsigned int i;
unsigned int index;
// initialize array with last values on start
if (first) {
first = 0;
if (smoothFactor > 100) {
write("Error: Maximum avarage window size is 100!\n");
smoothFactor = 100;
}
sum = smoothFactor * signal;
for (i = 0; i < smoothFactor; i++) {
lastValues[i] = signal;
Write("i= %d,data= %f",i,lastValues[i]);
}
index = 0;
return signal;
}
sum -= lastValues[index];
Write("Signal= %f,lasrValue[index]= %f",signal,lastValues[index]);
sum += signal;
lastValues[index] = signal;
if (++index >= smoothFactor) {
index = 0;
}
return sum / smoothFactor;
}
运行结果:
8-19-2020 23:36:10.579441 i= 0,data= -4.811083
8-19-2020 23:36:10.579481 i= 1,data= -4.811083
8-19-2020 23:36:10.579497 i= 2,data= -4.811083
8-19-2020 23:36:10.579508 i= 3,data= -4.811083
8-19-2020 23:36:10.57952 i= 4,data= -4.811083
8-19-2020 23:36:10.579531 i= 5,data= -4.811083
8-19-2020 23:36:10.579543 i= 6,data= -4.811083
8-19-2020 23:36:10.579554 i= 7,data= -4.811083
8-19-2020 23:36:10.579565 i= 8,data= -4.811083
8-19-2020 23:36:10.579576 i= 9,data= -4.811083
8-19-2020 23:36:10.579604 Signal= -4.920971,lasrValue[index]= -4.811083
8-19-2020 23:36:10.57963 Signal= -4.920971,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579654 Signal= -5.138395,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579677 Signal= -5.138395,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579699 Signal= -5.352568,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579722 Signal= -5.458392,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579745 Signal= -5.563353,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579767 Signal= -5.563353,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579789 Signal= -5.770617,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579818 Signal= -5.872887,lasrValue[index]= -4.811083
8-19-2020 23:36:10.579852 Signal= -5.974228,lasrValue[index]= -4.920971
8-19-2020 23:36:10.579886 Signal= -6.074625,lasrValue[index]= -4.920971
8-19-2020 23:36:10.579918 Signal= -6.174060,lasrValue[index]= -5.138395
8-19-2020 23:36:10.579943 Signal= -6.174060,lasrValue[index]= -5.138395
8-19-2020 23:36:10.579973 Signal= -6.369984,lasrValue[index]= -5.352568
8-19-2020 23:36:10.579998 Signal= -6.466442,lasrValue[index]= -5.458392
8-19-2020 23:36:10.580021 Signal= -6.561876,lasrValue[index]= -5.563353
8-19-2020 23:36:10.580045 Signal= -6.561876,lasrValue[index]= -5.563353
8-19-2020 23:36:10.580069 Signal= -6.749616,lasrValue[index]= -5.770617
8-19-2020 23:36:10.580093 Signal= -6.749616,lasrValue[index]= -5.872887
8-19-2020 23:36:10.580116 Signal= -6.933084,lasrValue[index]= -5.974228
8-19-2020 23:36:10.58014 Signal= -7.023180,lasrValue[index]= -6.074625
……
两种方法都能实现目标(average= -9.919868),运行结果示意图:
4 软件下载
附:官网最新版本17附加诸多限制条件。习惯使用12版本,Vector官网历史版本下载网址:
https://www.vector.com/int/en/products/products-a-z/software/canape/canape-history/?tx_vectorproducts_productdownload%5B%40widget_0%5D%5BcurrentPage%5D=6&cHash=d2639bf3a0011afdd64126b483913b27#c9976