CAPL语言学习文档_第1页
CAPL语言学习文档_第2页
CAPL语言学习文档_第3页
CAPL语言学习文档_第4页
CAPL语言学习文档_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上CAPL语言学习文档(一)CAPL简介CAPL全称为Communication Access Programming Language。CAPL语言允许你编写单独的应用程序。比如说:当你添加新节点的时候,你要测试新添加的节点能否与以前的节点正常通信。在CAPL的帮助下就能够对系统环境进行仿真,也就是说能够仿真以前节点之间的数据通信,然后与新节点相连,就可以测试出新节点的功能性和可靠性,这也就是半实物仿真。通过CAPL你也能够对你网络上的数据通信进行分析优化,也能做一个网关程序连接2种不同的总线,保证不同类型总线之间的数据通信。 CAPL程序与数据库结合起来,通过调用数

2、据库中的信号,消息,环境变量和实际测试环境联系起来,从而你能够实时监测总线上的数据通信;能够接受总线上的控制信息,使得模拟面板上的控件进行动作;也能够通过总线发出控制信息,控制外部环境动作,从而支持开发全仿真,半实物仿真,测试分析全实物系统3个仿真阶段,对节点的仿真很重要的地方就是准确的描述节点在总线上的动作。(二)CAPL功能Ø 编写解决问题的函数Ø 仿真控制设备Ø 仿真控制系统的环境Ø 执行测试和验证Ø 作为网关(三)CAPL特征Ø 基于事件建模的语言总线事件属性事件时间事件Ø 类似C语言Ø 友好的开发界面&#

3、216; 可用用户的动态连接库(四)CAPL编辑器CAPL程序在一个被划分为4个小窗口的浏览器窗口建立。左上角的窗格是浏览器树,包括所有CAN事件节点。右边的两个窗格是程序编辑窗口,其中上面的是全局变量编辑器,下面的是具体程序编辑窗口。 最底下的窗格是消息窗口。当程序编好后,编译运行的结果会在消息窗口中显示,并指出该程序的路径,若运行有错,则会在指出哪行程序出错。(五)数据类型Ø 整型有符号:int(16 bit),long(32 bit)无符号:byte(8 bit),word(16 bit),dword(32 bit)Ø 浮点数Float (64 bit)Double

4、(64 bit)Ø 单个字符Char (8 bit)Ø 定时器(timers)Timer (s)Mstimers (ms)这些数据类型在声明中已被初始化。整数和浮点数的用法跟其他程序设计语言相同。(六)全局变量的声明与初始化在浏览器中,全程变量的声明写在全局变量窗口的右上方。数据类型DWORD, LONG, WORD, INT, BYTE ,CHAR的用法与在C语言中的用法近似。64位浮点数FLOAT 和DOUBLE遵照IEEE标准。当编写一个定时器语句时产生一个定时器,当程序跳转到定时器运行语句时,开始执行定时器。与定时器相关的事件程序被唤醒。定时器的建立和取消通过关键字

5、setTimer和cancelTimer执行。通过关键字将数据库中的消息定义成变量。变量在声明中被初始化。单一的符号和大括号 形式都是允许的。除了定时器和省略补充的量,所有变量都被编译器初始化。消息变量DIR的发送方向通过发送请求(TXREQUEST)来初始化。CAPL语言允许数组(arrays, vectors, matrices)的声明,包括消息变量。局部变量在CAPL语言中是静态的(与C语言形成对比),这就是说要在程序开始时设定初值。假定变量进入程序的值是它们上次跳出程序时的值。Simple types:Int j, k = 2; / j = 0 Double f = 17.5

6、;MsTimer t1; / No initializationInitialization of message variables:Message 100 msg = dlc = 4, word (0) = 0x1234;Arrays:Int lookUpTable 3 = 1, 2, 3;Char text 12 = "Hello world"Int matrix 2 2 = 11,12,21,22;(七)事件程序Ø 总线事件(on message)On message 100Write (“Message 100”)Ø 键盘事件(on

7、key)On key a Write (“apressed”);Ø 时间事件(on timer)On timer Time_1 Write (“time elapsed”);Ø 出错事件(on errorFrome) On errorFrameIf (ABS_NM_State)Switch (Error_Status)Case 0:CountTx += 8;CountRx += 8;if (countTx > 127)|(countRx > 127)Error_Status = 1; /Error_Pass;Break;Ø 环境变量事件(on envV

8、ar) On envvar Switch / declare a CAN message to be transmitteedMessage Controller msg;/ Read out the value of the switch/ Assign to the signal Stopmsg.Stop = getvalue (this);/ Output the message on the busoutput (msg);(八)消息选择器你可以通过以下选择器控制CAN消息的收发:Ø ID 消息标识符On message * If (this.ID = 0x600) Writ

9、e ("message 0x600 received; triggering logging.");Trigger ();Ø CAN 通道编号Message 0x100 msg = dlc = 2, word (0) = 0x1234;On key '1' Write ("sende via CAN 1");msg.CAN = 1;Output (msg);on key '2' write("sende via CAN 2");msg.CAN = 2;output(msg);Ø DL

10、C 数据编码长度on message OneByteMessage if (this.DLC != 1) write("error: OneByteMessage hat DLC != 1");stop();Ø DIR Direction of transmission, event classification; possible values: RX, TX, TXREQUESTSelector DIR (direction of transmission) on message 0x100 if (this.DIR = RX) write(&quo

11、t;message 0x100 received");if (this.DIR = TX) write("message 0x100 sent");Ø RTR 远距离传输;可能值:0(no RTR),1(RTR)Selector RTR (remote transmission request)/ send remote framemessage 0x100 rmsg;rmsg.RTR = 1;output(rmsg);Ø TYPE 与DIR和RTR相互作用产生有效值(TYPE=(RTR<< 8) | DIR)message 0x1

12、00 resp_msg = dlc = 2, word(0) = 0x1234; on message 0x100 if (this.TYPE = RXREMOTE) / remote frame 0x100 receivedoutput(resp_msg);Ø TIME 指明时间,单位;10微秒Selector TIME (time stamp of message in units of 10 microseconds)const dword sendDist = 10000; / *10 us = 100mson message CP24TX int delta;dw

13、ord lastTime;delta = (this.TIME - lastTime - sendDist); / in 10 uslastTime = this.TIME;if (delta != 0) write("deviation of send distance: %d us",10*delta); Ø MsgFlags 表示接收和发送 0 x 02 表示在传输消息前传输缓冲器是空闲的 0 x 04 表示消息收发器主动接收消息 0 x 08 表示在high voltage模式时消息被发送或接收 0x10 表示远程帧 0x40 表示发送(等同于DIR=TX

14、) 0x80 发送请求(等同于DIR=TXREQUEST)Ø SIMULATED 表示通过仿真的CAPL节点发送消息;可能值:0 (no), 1 (yes)Selector SIMULATED (message from simulated node)On message LightState If (this.dir = RX) If (! this.SIMULATED) Write("message LightState received from real system");Putvalue (Bulb, this.OnOff);Else / write ("message LightState received as TX");以下是能完成独立编码的DIR 和 RTR的表示方法:Ø DIR:RX 接收消息(DIR = RX)TX 发送消息(DIR = TX)TXREQUEST 发送请求(DIR = TXREQUEST)Ø TYPE:RXREMOTE 远程消息接收(DIR = RX) && RTR)TXREMOTE 远程消息发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论