CAN:CANape使用Function处理数据
目录
- 1 功能介绍
- 2 初版程序
- 3 更新程序
- 4 软件下载
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.comfunction 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 calculationint smoothFactor = 10; // local variablesunsigned int first = 1;double lastValues[100];double sum;unsigned int i;unsigned int index;// initialize array with last values on startif (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
>> 更多相关内容,点击Morven_Xie博客概览
CAN:CANape使用Function处理数据相关推荐
- simulink中MATLAB function模块数据维度不正确问题
1.首先打开MATLAB function模块 2.函数->Edit Data 3.选中数据维度不正确的变量->大小(size)进行更改(默认-1)->结束
- JS实现-页面数据无限加载
在手机端浏览网页时,经常使用一个功能,当我们浏览京东或者淘宝时,页面滑动到底部,我们看到数据自动加载到列表.之前并不知道这些功能是怎么实现的,于是自己在PC浏览器上模拟实现这样的功能.先看看浏览效果: ...
- 关于jQuery获取Action返回的JSON数据 项目真实案例 记录(Struts2)
这里列出 页面代码 和 Action类相关代码 供参考: 页面代码(jQuery ajax异步请求获取数据): //保存决策信息 function saveDecision() { var rowid ...
- layui table 分页 记住之前勾选的数据
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...
- SpringBoot处理JSON数据
SpringBoot内置了JSON解析功能,默认使用Jackson来自动完成 当Controller返回的是一个Java对象或者是List集合时,SpringBoot自动将其转换成JSON数据 一.新 ...
- Spring MVC--自定义HttpMessageConverter接收JSON格式的数据
替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...
- Spring MVC--接收JSON格式的数据
Spring mvc使用开源的Jackson包来处理JSON格式的请求或相应消息. index.jsp <%@ page language="java" contentTyp ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- data中的数据如何在innerhtml中调用_Vuex中调用state数据
/src/store/index.js文件的所需内容state:{ //state中存在的数据 num:0, age:19, msg:"jiajia", },mutations:{ ...
- excel数据命令导入mysql_如何将EXCEL数据导入MYSQL
VBA对MySql数据库进行读取和写入操作时间:2009-10-06 09:18:47来源:网络 作者:未知 点击:178次 '以下代码用于32位系统,Office 2003,环境,MySql版本5. ...
最新文章
- pip freeze requirements.txt 分隔 sudo pip install -r requirements.txt
- 数据回归分析和拟合的Matlab实现
- matlab 系统辨识工具箱,MATLAB系统辨识工具箱的应用.ppt
- android p正式版,国内首家!一加正式推送Android P正式版
- 找到符合条件的索引_高频面试题:MySQL联合索引的最左前缀匹配原则
- linux adc是什么设备,Linux 驱动--ADC驱动
- 【MTSP】基于matlab蚁群和粒子群算法求解多旅行商问题【含Matlab code 1156期】
- Python 实用技巧
- linux 锐捷客户端 脚本,常熟理工学院锐捷客户端 for Linux
- macOS下R语言入门操作教程
- Web Polygraph 安装
- 网页配色方案及方法[网上配色文章集合
- 缓慢变化维解决方案——拉链表实现详解
- Spring系列学习之Spring Data Elasticsearch数据访问
- excel怎么筛选?教你一个简单粗暴的筛选技巧
- 如何批量提取过期域名,如何批量查询权重域名、收录域名
- wps里为什么没有华文楷体_如何用WPS演示做电影滚动字幕
- 教你怎么用c++基本语法实现一个简单的五子棋小游戏
- c++,输入一个整数,判断它是奇数还是偶数
- dumpsys meminfo分析