首页 > 范文大全 > 正文

基于xPC目标的串口数据实时通信

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于xPC目标的串口数据实时通信范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对半实物仿真中串口数据实时通信要求,提出一种xPC系统下简单可行的串口通信方法。利用该方法设计的某型电液疲劳试验机的数据通信模块,可间隔1ms发送一次数据,试验验证利用普通PC机串口可使最大可靠数据传输速率达80000bit/s。

关键词:xPC目标;串口通信;大数据量

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)19-4381-04

xPC Target是美国MathWorks公司提供和发行的一个基于RTW(Real-Time Workshop)体系框架的产品,采用“宿主机(Host PC)—目标机(Target PC)”的技术途径将两台PC机组建成一个快速实时系统,系统架构如图1所示[1,2]。该实时系统定时精度达到微秒级,同时由于其价格便宜,容易实现,所以在半实物仿真领域应用广泛。

图1 “双机”模式的xpc目标系统

串口是计算机上一种非常通用设备通信的协议,大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议,很多GPIB兼容的设备也带有RS-232口[3]。在xPC实时系统平台中,利用串口向外高速实时的传递数据非常有用,但现有文献对此很少介绍。在搭建疲劳试验机试验系统中,需要将疲劳试验机的位置信号和力信号实时输出,而利用xPC系统平台中对串口通信的支持可方便解决这一问题。

1 串口通信建立

1.1串口介绍

RS-232(ANSI/EIA-232标准)是串行连接标准,其通用接口为DB-9针连接头,在简单串口通讯中可只用其2、3、5针脚,其功能表如表1所示。

1.2 串口通信数据编码

在数据传输中,数据有一定的范围,并对数据传输的精度有要求,所以在对数据二进制编码之前,要计算编码的二进制位数。

假如对任一范围[[a,b]]编码为n位二进制数据,那么编码精度为:[Δ=|b-a|2n-1]。

如果计算得出的[Δ]不满足条件,则要提高二进制编码的位数。

二进制编码公式为:[Z=(x-a)×(2n-1)(b-a),x∈[a,b]]。

同样可得,二进制解码公式为:[x=Z×(b-a)2n-1+a]。

针对疲劳试验机,需要传递其位移传感器信号和压力信号,位移传感器的范围为[-100mm,100mm],压力传感器的范围为[0,10000N],如将他们编码为15位,则计算得出位移传感器的数据精度为0.0061mm,压力传感器数据精度为0.3N,完全满足了输出精度要求。

串口通讯数据一般以字节进行传输,每字节共8位,所以位移传感器和压力传感器的数据分2个字节传输。传感器数据前要加入帧头,帧头的作用是为了串口数据解码时分辨每组数据的起始位置,保证解码不会出错。位移传感器和压力传感器的编码范围为[0000,7FFF],所以帧头取8000。制定通讯协议如表2所示。

由图2程序可以看到,对[-100,100]之间的数a,先转化为对应[0,[215-1]]之间的数X,然后将X通过Shift Arithmeticl模块转化为2个8位二进制数据,再通过MUX合并。当输入为100时,输出为7FFF,输入为-100时,输出为0000,从而完成了[a,b]到[0,[215-1]]的编码。

1.3 串口通信模块设定

在Matlab/Simulink/xPC Target/RS232工具箱中,xPC Target对串口通讯设置的模块有六个:Enable TX, Filter Int Reason, Read HW FIFO, Read Int Status, Setup, Write HW FIFO。

在串口数据发送程序中,需要对Baseboard Serial Setup,Write HW FIFO进行设置。如图3所示,通过Baseboard Serial Setup可以对串口波特率、数据位、停止位、校验位、FIFO大小、握手协议以及串口地址进行设置,这些设置要和主板上的串口COM1配置一致。

Write HW FIFO模块和Read HW FIFO模块可以写入或读出串口数据,模块中需设置串口的地址。同时,要想正确的编译,还要对这两个模块有连个设置:①在模块的Link Options选项中要选择Disable Link;②在模块的“Edit Mask”中,将Evaluate的钩去掉,如图4所示。

将串口的Baseboard Serial Setup、Write HW FIFO、Read HW FIFO配置好后,就可以进行串口实时数据传输。

2 串口通信试验

疲劳试验机利用台湾研华公司的PCL-818L数据采集卡对位移传感器和位移传感器的数据进行采集,并通过电脑主板上的串口COM1口将数据传输出去,在xPC Target中建立串口数据发送的Simulink程序框图,如图5所示。Subsystem模块是通信数据的编码模块。

如图5所示,在串口发送程序中,在编码数据的起始位置,有一个Constant中为[6],6代表通过串口每次传输的字节数,32768(8000H)为帧头,Sensor Parameter模块是利用PCL-818L数据采集卡将传感器数据输出,Subsystem模块是通信数据的编码模块。将数据通过MUX组合后,传递给Write HW FIFO就可以通过串口输出。串口数据输出的频率由程序的执行周期决定,在Simulink/Configuration Parameters/Solver中设定,如果设置程序1ms执行一次,则串口1ms向外发送一次数据。

疲劳试验机串口数据通信测试时,将xPC系统的下位机串口连接到另一台电脑的串口,利用串口调试助手接收到的串口数据如图6所示,试验结果显示利用该方法实现串口数据传输的方法是可靠的。试验测试,当串口的波特率设置为115200时,实际可靠传输速率大约为80000bit/s,当超过这个速率,测试中有丢失数据情况。

3 结束语

本文提供了一种在xPC目标实时环境下利用串口方式大数据量发送数据的方法。运用该方法可以简单实现xPC目标实时系统中大数据量的实时采集,使串口数据传输在快速原型开发和硬件在环仿真测试中有更广泛的应用,有很强的工程应用价值。

参考文献:

[1] 杨涤,李立涛,杨旭,等. 系统实时仿真开发环境与应用[M].北京:清华大学出版社,2002.

[2] 宋炜,祖家奎.基于xPC目标的实时I/O接口技术研究[J].计算机应用,2008,27(1):61-64.

[3] 路军杰,周军,赵斌.基于循环缓冲区的xPC目标串口通信研究[J].测控技术,2011,30(7):53-57.