CAPL编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京恒润科技有限公司浏览器——概述„创建、修改、编译CAPL程序„以结构形式显示变量、事件程序和函数„CAPL浏览器可同时打开多个CAPL程序窗口„快速编译„错误自动定位通过通过CANoeCANoe工具条按钮工具条按钮打开打开CAPLCAPL浏浏览器。鼠标双击览器。鼠标双击CAPLCAPL节点也可打开。节点也可打开。北京恒润科技有限公司程序的编译„CAPL程序必须通过编译才可执行„CAPL的可执行文件扩展名为*.cbf„编译可通过菜单命令、工具条按钮、或快捷键来激活„信息窗格显示编译信息„通过错误信息定位错误北京恒润科技有限公司搜索运行时错误„测量过程中自动检测CAPL程序:{被0除{超出数组的上限或下限{超出消息数据域的上偏移或下偏移{在CAPL子程序调用时堆栈溢出„使用浏览器菜单命令Compiler│Findrun-timeerrors通过错误索引号查找„使用runError()函数自定义运行时错误北京恒润科技有限公司数据库的访问„直接从CANoe的测量设置或仿真设置窗口打开CAPL浏览器,自动关联数据库„通过浏览器菜单命令关联数据库„在浏览器的编辑窗格中,通过交互菜单选项插入信号或消息名到CAPL程序中北京恒润科技有限公司导入/导出ASCII文件„File│Import…导入纯ASCII文件到CAPL浏览器中„File│Export…导出CAPL程序为ASCII文件导出的导出的ASCIIASCII格式的格式的CAPLCAPL程序程序浏览器格式的浏览器格式的CAPLCAPL程序程序浏览器格式结构信息北京恒润科技有限公司编程概述„CAPL是CAN总线访问编程语言(CANAccessProgrammingLanguage)„类C语言„应用于VectorCAN工具节点编程„基于事件建模的语言{总线事件{属性事件{时间事件CAPLCAPL程序程序并口串口启动/停止键盘输入环境变量定时CAN总线CAN总线…北京恒润科技有限公司程序的应用„节点仿真„网络仿真„仿真控制系统的环境„节点测试„网关北京恒润科技有限公司程序对于事件的响应„CAPL程序能够检测事件,并执行和事件相关的程序。检测的事件类型包括:{程序开始执行事件{程序停止执行事件{键盘输入事件{CAN消息的接收事件{定时器超时事件{图形面板输入事件(该项只在CANoe中应用)„CAPL程序是基于事件程序的组合北京恒润科技有限公司的事件类型事件类型事件类型事件名事件名程序执行条件程序执行条件事件过程语法结构事件过程语法结构**PreStartCANoe初始化时执行onpreStart{…}Start测量开始时执行onstart{…}StopMeasuremet测量结束时执行onstopMeasurement{…}BusOff硬件检测到BusOff时执行onbusOff{…}ErrorActive硬件检测到ErrorActive时执行onerrorActive{…}ErrorPassive硬件检测到ErrorPassive时执行onerrorPassive{…}WarningLimit硬件检测到WarningLimit时执行onwarningLimit{…}CAN消息事件自定义接收到指定的消息时执行onmessageMessage{…}时间事件自定义定时时间朝过时执行ontimerTimer{…}键盘事件自定义键值指定的键被下时执行onkeyKey{…}错误帧事件ErrorFrame硬件每次检测到错误帧时执行onerrorFrame{…}环境变量事件自定义指定的环境变量值改变时执行onenvVarEnvVar{…}CAN控制器事件系统事件*“事件过程语法结构”列中兰色字体表示该程序的关键字;深红色字体表示用户自定义的名称;“{…}”内是CAPL程序体,用户可根据需要使用CAPL语言编写。北京恒润科技有限公司基本语法„CAPL语言的语法与C语言基本相同:„注释{//放置在需要注释的语句之前,注释单行{/*注释起始符,其后的内容被注释{*/注释结束符,结束由‘/*’开始的注释„事件过程„分号语句结束符„大括号北京恒润科技有限公司消息过程„onmessage123//对消息123(dec)反应„onmessage0x123//对消息123(hex)反应„onmessageMotorData//对消息MotorData(符号//名字)反应„onmessageCAN1.123/*对CAN通道1收到消息123反应*/„onmessage*//对所有消息反应„onmessage100-200//对100-200间消息反应北京恒润科技有限公司键盘过程„onkey‘a’//按‘a’键反应„onkey‘’//按空格键反应„onkey0x20//按空格键反应„onkeyF1//按F1键反应„onkeyCtrl-F12//按Ctrl+F12键反应„onkeyPageUP//按PageUp键反应„onkeyHome//按Home键反应„onkey*//按所有键反应北京恒润科技有限公司时间过程„时间过程表示法:{ontimermyTimer//对myTimer设定的时间到反应„定时器的申明{msTimermyTimer;//将myTimer申明ms为单位的变量{timermyTimer;//将myTimer申明s为单位的变量„定时器的设置{setTimer(myTimer,20);//将定时值设定为20ms,并启动{cancelTimer(myTimer);//停止定时器myTimer每次使用每次使用setTimersetTimer的设置,只能触发一次时间过程的设置,只能触发一次时间过程北京恒润科技有限公司环境变量过程„环境变量过程onenvVar对环境变量值的改变产生反应„测量设置中的CAPL节点不会阻止环境变量在数据流图中的传输„环境变量过程常用的函数:{getValue()//获取环境变量的值{putValue()//设置环境变量的值„可使用this在过程内部访问环境变量的值北京恒润科技有限公司中的数据类型„无符号整数{byte(1字节){word(2字节){dword(4字节)„有符号整数{int(2字节){long(4字节)„浮点数{float(8字节){double(8字节)„CAN消息类型{message„定时器类型{timer(秒为单位){msTimer(毫秒为单位)„单个字符{char(1字节)北京恒润科技有限公司消息的申明„消息申明的格式{Message0xAmy_msg1;{Message100my_msg2;{MessageEngineDatamy_msg3;„消息数据的索引{my_msg1.byte(0)//数据字节0{my_msg2.word(2)//从第2字节开始的一个字{my_msg3.EngSpeed/*如果使用了符号数据库,可使用信号符号名来索引消息中的信号*/北京恒润科技有限公司程序的组成„一个完整的CAPL程序由三个部分组成:{申明与定义全局变量{各种事件过程{申明与定义自己的函数variables{…//申明全局变量}onstart{…//过程指令块}onmessagexxx{…//过程指令块}onkey‘1’{…//过程指令块}…My_function_1(Para_1,Para_2,…){…//函数体}…My_function_n(Para_1,Para_2,…){…//函数体}北京恒润科技有限公司程序执行顺序„事件过程之间无关联,执行顺序由运行时间事件决定„事件过程通过全局变量和子程序决定„事件过程为一整体,不能被其它事件中断variables{intcounter};onmessage0x1a1{counter=counter+1;}onkey‘a’{write(“%d”,counter);}writeread北京恒润科技有限公司针对消息的一些常用语句„常进行读写if(this.id==100){…}//消息ID„常写的msg.can=2;//消息所使用的CAN控制器编号msg.dlc=8;//消息中包含的数据字节长度„常读的dwordt;t=this.time;//消息的时标,单位是10usif(this.dir!=RX){return;}//消息的收发特性注意:注意:thisthis是关键字,在事件过程中代表所定义的触发事件名是关键字,在事件过程中代表所定义的触发事件名北京恒润科技有限公司关键字——this„在事件过程中,关键字this指定事件对象的数据结构„this可作为参数使用„对于this值的改变仅在过程内部有效onmessage100{bytebyte_0;byte_0=this.byte(0);...}onenvVarSwitch{intval;val=getvalue(this);...}北京恒润科技有限公司=counter+1;if(counter==256){counter=0;stop();}北京恒润科技有限公司=100;charch=‘a’;chars100[8]=“hundred”;write(“Hundredasanumber:%d,%x”,h,h);write(“Hundredasastring:%s”,s100);write(“Thesquarerootoftwois%6.4g”,sqrt(2.0));北京恒润科技有限公司{if(this.byte(2)==0xFF)write(“Thirdbyteofthemessageisinvalid”);}onmessageMotorData{if(this.temperature.phys=150)write(“Warning:criticaltemperature”);}北京恒润科技有限公司‘a’{messageMotorDatamMoDa;mMoDa.temperature.phys=60;mMoDa.speed.phys=4300;output(mMoDa);}onkey‘b’{message100m100={dlc=1};m100.byte(0)=0x0B;output(m100);}北京恒润科技有限公司定义全局变量{message0x555msg1={dlc=1};//定义消息变量msg1,并初始化数据字节代码为1msTimertimer1;//定义定时器变量timer1}onstart//系统过程{setTimer(timer1,100);//初始化定时器变量timer1的值为100msec,并启动}ontimertime

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功