欢迎来到天天文库
浏览记录
ID:37823975
大小:525.73 KB
页数:8页
时间:2019-05-31
《CAPL编程简介》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、消息与信号�消息,数据容器�数据标识�传输的数据块(最多8字节)用符号描述�信号,实际使用的信息�信号长度可能从1位到多字节�需要物理单位,需要转换单位�对错误的描述用符号描述CAPL编程�CAPL是CAN总线访问编程语言(CANAccessProgrammingLanguage)�类C语言�应用于VectorCAN工具节点编程�基于事件建模的语言�总线事件�属性事件�时间事件应用(1)节点仿真(2)网络仿真�(3)仿真控制系统的环境(4)节点测试(5)网关CAPL程序对事件的响应CAPL程序能够检测事件,并执行和事件相关的程序。检测
2、的事件类型包括:程序开始执行事件程序停止执行事件�键盘输入事件�CAN消息的接收事件�定时器超时事件�图形面板输入事件(该项只在CANoe中应用)�CAPL程序是基于事件程序的组合CAPL事件的基本类型消息过程�onmessage123//对消息123(dec)反应�onmessage0x123//对消息123(hex)反应�onmessageMotorData//对消息MotorData(符号//名字)反应�onmessageCAN1.123/*对CAN通道1收到消息123反应*/�onmessage*//对所有消息反应�onmessage
3、100-200//对100-200间消息反应键盘过程onkey„a‟//按‘a’键反应onkey„‟//按空格键反应onkey0x20//按空格键反应onkeyF1//按F1键反应onkeyCtrl-F12//按Ctrl+F12键反应onkeyPageUP//按PageUp键反应onkeyHome//按Home键反应onkey*//按所有键反应时间过程时间过程表示法:ontimermyTimer//对myTimer设定的时间到反应定时器的申明msTimermyTimer;//将myTimer申明ms为单位的变量timermyTime
4、r;//将myTimer申明s为单位的变量定时器的设置setTimer(myTimer,20);//将定时值设定为20ms,并启动cancelTimer(myTimer);//停止定时器myTimer每次使用etTimer的设置,只能触发一次时间过程环境变量过程环境变量过程onenvVar对环境变量值的改变产生反应�测量设置中的CAPL节点不会阻止环境变量在数据流图中的传输�环境变量过程常用的函数:�getValue()//获取环境变量的值�putValue()//设置环境变量的值�可使用this在过程内部访问环境变量的值数据类型无符号
5、整数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)//
6、从第2字节开始的一个字�my_msg3.EngSpeed/*如果使用了符号数据库,可使用信号符号名来索引消息中的信号*/程序执行顺序事件过程之间无关联,执行顺序由运行时间事件决定事件过程通过全局变量和子程序决定事件过程为一整体,不能被其它事件中断针对消息的一些常用语句常进行读写if(this.id==100){…}//消息ID常写的msg.can=2;//消息所使用的CAN控制器编号msg.dlc=8;//消息中包含的数据字节长度常读的dwordt;t=this.time;//消息的时标,单位是10usif(this.dir!=RX){
7、return;}//消息的收发特性注意:thisthis是关键字,在事件过程中代表所定义的触发事件名CAPL指令块Counter=counter+1;If(counter==256){Counter=0;Stop();}CAPL中输出文本Inth=100;Charch=‟a‟;Chars100[8]=”hundred”;Write(“Hundredasanumber:%d,%x”,h,h);Write(“Hundredasastring:%s,%x”,s100);Write(“Hundredasanumber:%6.4g”,sqrt(2.0)
8、)处理信号:Onmessage0x64{If(this.byte(2)=0xFF);Write(“thirdbyteofmessageisinvalid”);}On
此文档下载收益归作者所有