原创 基于LabVIEW的实时数据测量系统的设计

2008-6-20 21:52 4581 0 分类: 测试测量

摘要:在对汽车变速箱的转速与扭矩测量过程中,设计了一个软件由LabVIEW与嵌入式实时操作系统组成,硬件由计算机单片机构成的上下位机测量系统。详细介绍了对μC/OS-Ⅱ操作系统的应用和LabVIEW串口数据通信与显示的实现。从而做到了对数据的实时采集与处理。
关键字:数据采集;LabVIEW; 嵌入式实时操作系统; 串口通信


1 引言


实时操作系统适用于对可靠性、安全性和响应时间要求十分高的场合。对实时操作系统的合理应用,可使整个计算机控制系统实现高度自动化、高效率及高可靠性。而LabVIEW作为一种图形程序设计语言,采用全图形化编程,用来为测试系统提供输入值并接收其输出值。故此使用嵌入式操作系统和LabVIEW能够进行实时地测量与控制并兼有操作简便和易于升级扩展等优点。


由于NI公司的数据采集卡较为昂贵,所以在对变速箱的转速与扭矩性能检测过程中用飞利浦公司的P89LPC938单片机和方波信号转换电路替代。这样下位机采用移植了嵌入式操作系统μC/OS-Ⅱ的高速单片机,上位机采用装有LabVIEW的PC机。通过这样的硬件既能达到监控功能分离的目的同时也能够满足测量任务对精度与实时等方面的要求。


 


2 测控系统硬件与原理


    首先我们把输入输出转速和扭矩经过JC2B型转矩转速传感器转换后得到四路正弦信号。如果把此四路正弦信号直接送入数据采集卡且变速箱的输入转速如为3000转/分,对每个正弦信号采样250个点,则需要的采样率为:250 3000 60=12.5K。那么使用中档的最高采样率为100K数据采集卡,如四路正弦信号至少要采集10路信号,则每路分配到的采样率仅为10K,也就不能满足12.5K的采样率要求。同时过于依赖上位机软件的信号处理功能,会过多占用CPU,以致影响整个测控系统的性能。


由于一般的数据采集卡并不能很好地达到要求,故整个系统的硬件构造如图一所示:


                            


 


                              图一 测试系统硬件原理图


通过传感器把被测变速箱扭矩、转速转换成具有相位差的两组正弦电信号,再通过信号转换电路将正弦信号转换为方波信号输入到单片机的捕获单元,并在单片机中计算出正弦信号的频率与相位差,再转化为转速和转矩值,最后由串口RS232传到上位机,LabVIEW中有串口接收函数可以接受单片机发来的数据并显示。由于传送到上位机的是经过单片机处理得到的ASCⅡ码字符串,而非正弦信号。这样传送到串口的数据流量可大大的减小。RS232的最高传输率可达56K,足以完成普通的传输。同时单片机还可接受操作人员根据试验要求通过计算机所给定的转矩值,实时对发电机励磁转矩进行控制,从而使发电机提供的输出转矩恒定在要求值。这样设计,充分发挥了单片机适应长时间工作、控制速度快以及计算机功能齐全的特点。


单片机选用PHILIPS的P89LPC938,它是基于80C51内核的高速、8位单片机,其内部集成了捕获比较单元CCU。在在设计中,使其中的两个模块工作在输入捕获模式下,即两路方波信号的输出分别接单片机的P2.0/ICA和P2.7/ICB引脚,用来测量两路方波信号的周期和宽度。对上升沿和下降沿不断进行交替捕获,并将每次捕获值存入捕获寄存器。通过比较计算两相邻的上升沿和下降沿的捕获值就可转换为转矩和转速。


所以通过信号转换电路将正弦信号转换为方波信号并输入到单片机的捕获单元。在单片机中计算出正弦信号的频率与相位差,再转化为转速和转矩值,并由串口发送给上位机。PC机可通过LabVIEW对数据进行显示、分析和处理。由于对于单片机捕获是单片机硬件动作,不存在软件滞后,对数据采集的精度非常高,速度可达到微妙级。


 


3 μC/OSⅡ在单片机上的应用


μC/OS-Ⅱ是一个免费的源代码公开的实时嵌入式内核,它不但提供了实时系统所需的基本功能而且可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器上运行。由于这个操作系统使用硬件定时器作为时钟中断源,所以可以进行毫秒级别的任务调度。我们使用51单片机的T0定时器作为系统时钟的中断源。在6MHZ晶振下,对于高速单片机P89LPC938来说,记数频率能达到3MHZ。设置定时器0为10ms中断:TH0=0x8a;TL0=0xd0。这样使实时系统任务在若干毫秒的时间内作出响应。整个实时系统任务由下位机任务与上位机任务组成。各任务和中断分配见表1:


表1 各任务和中断分配表




部件


动作


中断/任务


优先级


传感器


捕获采样


硬件中断


 


转速


数据处理


任务


5


扭矩


数据处理


任务


6


串口


接收上位机数据


硬件中断


 


串口


发送转矩或转速


任务


7


可控硅


励磁电流控制


任务


8


 


 


 


 


 


 


 


 


其中下位机任务包括:


1、  计算任务  每100ms计算相位差并转换为转矩和计算方波周期并转换为转速;


2、  接收任务  随时准备接收上位机的握手信号或其他数据;


3、  发送任务  将采集的数据实时的通过RS232串口发送给上位机处理。


4、  控制任务  接收上位机给定的转矩值,对转矩自动调节。


上位机任务包括:


1、  接收任务 实时的通过RS232串口接收来自下位机传送来的数据;


2、  动态显示 对整个系统的转矩和转速实现动态的显示;


3、  发送任务 向下位机发送握手信号和给定转矩值。


由于动态显示需要消耗很多的系统资源,我们让它用PC机的LabVIEW显示。而对转矩和转速的测量留给单片机来处理。LabVIEW的功能主要集中在于动态显示,几乎不受到其他程序模块的影响,故能做到实时显示;最后在单片机上独立采用嵌入式实时操作系统μC/OSⅡ便能提供最大的确定性与可靠性。


 为了更好实现系统功能,首先把系统按动作分类。把最重要的动作使用硬件中断的办法来处理,而另外一些比较紧急的任务分配较高的优先级别。由于计算转速和转矩的数据在系统中是很重要的,所以在所有任务级的动作中,把数据计算处理放在较高优先级5级和6级上。由于计算得到转矩或转速便要通过串口发送给上位机显示。故把发送转矩或转速任务的优先级设为稍低一点的7级。通过单片机接收上位机给定的转矩值,实时对发电机励磁转矩进行双闭环控制控制,通过对转矩外环和电流内环控制以达到转矩自动调节。


捕获采样是一切任务的基础,故通过单片机CCU单元的硬件中断既捕获中断产生。输入捕获总是处于使能状态。单片机先通过内部寄存器ICESx设置捕获ICx为上升沿触发,当脉冲上升沿时,定时器的内容都会传送到捕获寄存器ICRxH:ICRxL中,并产生捕获中断,在中断服务程序中读取捕获寄存器的数值存入数据区,再将ICx设置为下降沿触发。这样,由两次捕获记录的计数值之差,便可获得脉冲的宽度,由两次上升沿数值之差,便可得到频率。


在串行通信方面,两任务在执行上有先后,只有在计算得到转矩或转速的时候才能通过串口把其发送给上位机。故系统使用消息邮箱进行信息传递。当主控制器有需要通过串口通信给主控计算机发送的数据时,只要把数据的指针放在相应的消息邮箱里去,则μC/OSⅡ会选择相应的任务进行处理。为了达到这个目的,可以在内存中创建一个消息缓冲区,把数据处理任务所得到的数据存放于消息缓冲区。然后通过传递消息缓冲区的指针的方法完成任务之间的传递数据。这样就能使这两个任务在操作系统的调度下很好地协调工作。有关这两个任务的通信如下图二所示:     




 


图二 任务间使用消息邮箱通信示意图


首先通过函数OSMboxcreate()创建消息邮箱,然后数据采集计算任务调用函数OSMboxPost()向消息邮箱发送消息,这包括消息邮箱指针和消息指针。当串口发送数据任务请求邮箱时调用函数OSMboxPend()查看邮箱指针是否为空,如果其为非空则把消息指针返回给串口发送数据任务,如为空则任务进入等待状态。直到串口发送数据任务得到消息指针以后才能执行自己的任务。


在移植了μC/OS-Ⅱ的单片机上,对整个系统主任务的设置为:主程序首先为各个任务分配堆栈空间,用于任务切换时保存各个任务的数据和指针。然后创建和初始化各信号量和消息邮箱,用于任务间及中断与任务的通信。在使用μC/OS Ⅱ提供的任何功能之前,先调用函数OSInit(),它完成的初始化并建立空闲任务。接着就通过调用函数OSTaskCreate()建立用户任务,并确立任务优先级,为开始多任务做好准备。最后函数main()调用函数OSStart()将控制权交给μC/OS-Ⅱ内核,开始此个多任务操作系统的操作。


4 LabVIEW串口数据通信与显示系统


虚拟仪器软件体系结构VISA是I/O接口软件库及其规范的总称。LabVIEW中用于串行通信的节点是VISA节点,使用其中的函数可实现初始化串口、串口写、串口读、检测串口缓存、中断以及关闭串口等功能。单片机和上位机之间是用RS232串口通信,LabVIEW中可以用VISA接口模块进行串行通信。


在串口数据通信与显示系统的前面板中,可根据实际情况需要改变。在测量转速时,定义串口通道为COM1,波特率为115200,8位数据位,停止位为1,输入缓冲区大小为4096个字节。具体情况如下图所示:



   


                             图三 测控系统前面板


在程序框图的设计中,首先调用VISA Configure Serial Port vi进行串口参数设置。通过它,我们可以根据实际需要设置串口号、波特率、数据位、奇偶校验位、握手信号类型和输出错误代码等。然后调用VISA Set I/O Buffer Size vi来定义输入缓冲区大小。此部分程序框图如下所示:




                                 图四 串口参数设置


LabVIEW与单片机通信的过程中,主要要实现通过串口写数据至单片机以及读串口数据并显示的功能。此部分程序框图与上面VISA Set I/O Buffer Size vi的输出信号—dup VISA resource name以及error out相连而一起控制串口的读写。其具体设计如下:




                          图五 测控系统框图程序


这里通过VISA Write vi将write buffer 端口输入的数据写入由VISA resource name指定的设备中。从而向串口写入数据或命令,以对单片机实现握手控制和给定转矩值的操作。通过VISA Read vi从串口读取数据并送到仪表显示,由于从单片机输出缓存中读出的字符串为ASCⅡ码字符串,故使用类型转换节点来实现字符串和数字之间的转换,再从仪表中就可读出实际的转速和转矩。在整个while循环里,定义循环延时为5ms。每5ms系统根据按钮的状态执行一次读或写串口的操作。这样的速度足够确保实时接收和发送串口缓冲区内的数据。通过虚拟仪器对此测量系统可进行简便的操作和监控。


 


5 结语


由于μC/OS-Ⅱ的硬实时性和LabVIEW灵活、丰富的功能,从而此测量系统在对事件响应以及在测量精度等方面都是较令人满意的。在不影响测试系统性能的前提下,减少了资金的投入并增强了系统的通用性和可扩展性。可见在工业测控领域,使用嵌入式操作系统和虚拟仪器技术相结合的方法不失为一种不错的选择。


 


本文作者创新点: 对变速箱进行模拟工况加载过程中对变速箱的输入、输出转速及转矩等参数进行实时自动检测,对变速箱试验进行实时自动控制。


 


参考文献


[1]任哲.嵌入式实时操作系统μC/OS-Ⅱ原理及应用[M].北京航空航天大学出版社.2005


[2]杨乐平.LabVIEW程序设计与应用[M].电子工业出版社.2005


[3]魏晨阳.基于LabVIEW和声卡的数据采集系统[J].微计算机信息.2005



文章评论0条评论)

登录后参与讨论
相关推荐阅读
jizzll_617398179 2010-02-08 10:53
正确理解A/D转换器的输入
http://www.freescale.com.cn/tech_ariticles/2005/1102_1.asp 许多嵌入式应用都会用到A/D转换器。然而,如果错误连接了A/D转换器输入端的电路,...
jizzll_617398179 2010-01-12 13:37
好久没来,都长草了
好久没来,都长草了,呵呵。整天忙得很,不过估计再过两个月会轻松点~\(≧▽≦)/~啦啦啦...
jizzll_617398179 2009-03-16 21:57
很奇怪,我收到站内信,但是却找不到发信人呢
发信人是个[],点击就跳到我自己的主页了。只好在这里给那位朋友留言了。 我不知道你说的哪篇文章,还有我也不知道你的EDN的ID。你可以在博客上面留言的。...
jizzll_617398179 2009-03-14 13:08
如何在EXCEL中使用16进制数
最近需要计算串口发送的数据,太多而且比较麻烦。知道EXECL功能强大,所以网上找了找,刚好,不错,很方便。网上找到的http://hi.bccn.net/space-99452-do-blog-id-...
jizzll_617398179 2009-03-05 14:37
〖常识〗不同晶振的最大波特率及其误差
最近犯了个错误,呵呵,晶振和波特率的问题,特查了记在这里,O(∩_∩)O~〖常识〗不同晶振的最大波特率及其误差http://www.aoxue.org/bbs/read.php?tid=65585不同...
jizzll_617398179 2009-02-11 14:30
大端模式和小端模式
转载http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则...
广告
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /6 下一条