




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CAPL语言学习文档(一)CAPL简介CAPL全称为CommunicationAccessProgrammingLanguageCAPL语言允许你编写单独的应用程序。比如说:当你添加新节点的时候,你要测试新添加的节点能否与以前的节点正常通信。在CAPL的帮助下就能够对系统环境进行仿真,也就是说能够仿真以前节点之间的数据通信,然后与新节点相连,就可以测试出新节点的功能性和可靠性,这也就是半实物仿真。通过CAPL你也能够对你网络上的数据通信进行分析优化,也能做一个网关程序一一连接2种不同的总线,保证不同类型总线之间的数据通信。CAPL程序与数据库结合起来,通过调用数据库中的信号,消息,环境变量和实际测试环境联系起来,从而你能够实时监测总线上的数据通信;能够接受总线上的控制信息,使得模拟面板上的控件进行动作;也能够通过总线发出控制信息,控制外部环境动作,从而支持开发全仿真,半实物仿真,测试分析全实物系统3个仿真阶段,对节点的仿真很重要的地方就是准确的描述节点在总线上的动作。(二)CAPL功能编写解决问题的函数>仿真控制设备>仿真控制系统的环境执行测试和验证>作为网关(三)CAPL特征基于事件建模的语言总线事件属性事件时间事件类似c语言友好的开发界面可用用户的动态连接库
(四)CAPL编辑器-inixiCAPL程序在一个被划分为4个小窗口的浏览器窗口建立。-inixi■JCAPLBrowser-[GatewayJCAN]|~:F-ilsEdtCarlierCptonsViindawHelp□基唱11X晤帽I口口I醐MM)奏催■■■■0Variables-口sysBZJCACATi+■■■■0Variables-口sysBZJCACATi+7由..回-®jtGatevay_l苞1+■Sleep\二。tWheelSpin
Keyboard
ErrorFrame
ErLvirijnment
Funct-1ononstart•-■■■■-■■■■-Send•type:gMs:qGat-ow-3.y_2-gMsqGat.ew3.y_2-gMsgG.gtew.ay_2gMagGateway_2=;pDntaneau-Vcilt-age.phys--11age_)FetroLLevsL.phys=•get.Value〔EnvPetrolLevelEngS口巳巳d.口hy/=•getV-alue(EnvEngSpeecL):CaiEpeed.phys=-getValue(EnvCaxEpeed_)EngiaeTemp.pbys--getVa.1ue(EnvEtig1neTenp_)—————motbusjbusReady左上角的窗格是浏览器树,包括所有CAN事件节点。右边的两个窗格是程序编辑窗口,其中上面的是全局变量编辑器,下面的是具体程序编辑窗口。最底下的窗格是消息窗口。当程序编好后,编译运行的结果会在消息窗口中显示,并指出该程序的路径,若运行有错,则会在指出哪行程序出错。数据类型>整型有符号:int(16bit),long(32bit)无符号:byte(8bit),word(16bit),dword(32bit)>浮点数Float(64bit)Double(64bit)>单个字符Char(8bit)定时器(timers)Timer(s)Mstimers(ms)这些数据类型在声明中已被初始化。整数和浮点数的用法跟其他程序设计语言相同。全局变量的声明与初始化在浏览器中,全程变量的声明写在全局变量窗口的右上方。数据类型DWORD,LONG,WORD,INT,BYTE,CHAR的用法与在C语言中的用法近似。64位浮点数FLOAT和DOUBLE遵照IEEE标准。当编写一个定时器语句时产生一个定时器,当程序跳转到定时器运行语句时,开始执行定时器。与定时器相关的事件程序被唤醒。定时器的建立和取消通过关键字setTimer和cancelTimer执行。通过关键字将数据库中的消息定义成变量。变量在声明中被初始化。单一的符号和大括号{}形式都是允许的。除了定时器和省略补充的量,所有变量都被编译器初始化。消息变量DIR的发送方向通过发送请求(TXREQUEST)来初始化。CAPL语言允许数组(arrays,vectors,matrices)的声明,包括消息变量。局部变量在CAPL语言中是静态的(与C语言形成对比),这就是说要在程序开始时设定初值。假定变量进入程序的值是它们上次跳出程序时的值。Simpletypes:Intj,k=2;//j=0Doublef=17.5;MsTimert1;//NoinitializationInitializationofmessagevariables:Message100msg={dlc=4,word(0)=0x1234};Arrays:IntlookUpTable[3]={1,2,3};Chartext[12]="Helloworld";Intmatrix[2][2]={{11,12},{21,22}};事件程序总线事件(onmessage{})Onmessage100(Write(“Message100”)}键盘事件(onkey{})Onkey‘a’(Write("’a’pressed”);}时间事件(ontimer{})OntimerTime_1(Write(“timeelapsed”);}出错事件(onerrorFrome{})OnerrorFrame{If(ABS_NM_State){Switch(Error_Status){Case0:CountTx+=8;CountRx+=8;if((countTx>127)||(countRx>127)){Error_Status=1;//Error_Pass;Break;环境变量事件(onenvVar{})OnenvvarSwitch(//declareaCANmessagetobetransmitteedMessageControllermsg;//Readoutthevalueoftheswitch//AssigntothesignalStopmsg.Stop=getvalue(this);//Outputthemessageonthebusoutput(msg);}消息选择器你可以通过以下选择器控制CAN消息的收发:ID消息标识符Onmessage*(If(this.ID==0x600)(Write("message0x600received;triggeringlogging...");Trigger();}}CAN通道编号Message0x100msg=(dlc=2,word(0)=0x1234};Onkey'1'{Write("sendeviaCAN1");msg.CAN=1;Output(msg);onkey'2'{write("sendeviaCAN2");msg.CAN=2;output(msg);}DLC数据编码长度onmessageOneByteMessage{if(this.DLC!=1){write("error:OneByteMessagehatDLC!=1");stop();}}DIRDirectionoftransmission,eventclassification;possiblevalues:RX,TX,TXREQUESTSelectorDIR(directionoftransmission)onmessage0x100{if(this.DIR==RX){write("message0x100received");}if(this.DIR==TX){write("message0x100sent");}>RTR远距离传输;可能值:0(noRTR),1(RTR)SelectorRTR(remotetransmissionrequest)//sendremoteframemessage0x100rmsg;rmsg.RTR=1;output(rmsg);TYPE与DIR和RTR相互作用产生有效值(TYPE=(RTR<<8)|DIR)message0x100resp_msg={dlc=2,word(0)=0x1234};onmessage0x100{if(this.TYPE==RXREMOTE){//remoteframe0x100receivedoutput(resp_msg);}}TIME指明时间,单位;10微秒SelectorTIME(timestampofmessageinunitsof10microseconds)constdwordsendDist=10000;//*10us=100msonmessageCP24TX{intdelta;dwordlastTime;delta=(this.TIME-lastTime-sendDist);//in10uslastTime=this.TIME;if(delta!=0){write("deviationofsenddistance:%dus”,10*delta);}}»MsgFlags表示接收和发送0x02表示在传输消息前传输缓冲器是空闲的0x04表示消息收发器主动接收消息0x08表示在highvoltage模式时消息被发送或接收0x10表示远程帧0x40表示发送(等同于DIR==TX)0x80发送请求(等同于DIR==TXREQUEST)>SIMULATED表示通过仿真的CAPL节点发送消息;可能值:0(no),1(yes)SelectorSIMULATED(messagefromsimulatednode)OnmessageLightState(If(this.dir==RX)(If(!this.SIMULATED)(Write("messageLightStatereceivedfromrealsystem");}Putvalue(Bulb,this.OnOff);}Else(//write("messageLightStatereceivedasTX");以下是能完成独立编码的DIR和RTR的表示方法:>RTR远距离传输;可能值:0(noRTR),1(RTR)DIR:RX接收消息(DIR==RX)TX发送消息(DIR==TX)TXREQUEST发送请求(DIR==TXR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区块链技术在商业地产业态调整中的作用
- 春节的地方特色与文化解读
- 《客户服务提升策略》课件
- 区块链的机制优化与企业战略紧密融合之策
- 《销售团队建设与优化》课件
- 优化医疗行业信息交互流程的策略分析
- 区块链技术在商业医疗领域的创新应用
- 人工智能在医药行业的应用及伦理论坛
- 《矿产资源评估》课件
- 2025建筑模板租赁合同
- 信息系统网络安全应急预案
- 变电站万能钥匙管理制度
- 【图文】GB8624-2012建筑材料及制品燃烧性能分级(精)
- 高压配电安装工程施工组织设计
- 小学数学-课前三分钟.ppt
- 缺血性脑卒中患者血压管理之路
- 钢纤维混凝土检查井盖J
- 辽宁工程技术大学开题报告示例
- 河北省初中生综合素质评价实施
- 德国化学成分牌号与DIN17007系统的数字材料号对照表[1]
- 房屋租赁合以装修费抵租金
评论
0/150
提交评论