李晓楠,冯国胜,彭朝亮,季浩浩,张小荣
(1.石家庄铁道大学 机械工程学院,河北 石家庄 050043;2.长城汽车股份有限公司 哈弗技术中心技术管理部,河北 保定 071000)
基于TMS320F2812的多路信号采集与控制设计
李晓楠1,冯国胜1,彭朝亮1,季浩浩2,张小荣1
(1.石家庄铁道大学 机械工程学院,河北 石家庄 050043;2.长城汽车股份有限公司 哈弗技术中心技术管理部,河北 保定 071000)
基于TMS320F2812开发板,通过模/数转换器ADC将模拟采集信号转换为数字量传输到开发板中进行处理计算,并通过SCI串口通信将数据传输到PC机上,使用LabVIEW编制了多路信号的显示界面和发送数据界面。通过在LabVIEW界面中输入控制变量,实现了对某路输出电压的控制,为后续的利用LabVIEW界面输入控制变量进而直接控制电机奠定了基础。
信号采集;串口通信;TMS320F2812;LabVIEW
信号采集是系统状态监测必不可少的环节,而系统的状态参数往往是多个,如汽车上的信号包含了电压、电流、发动机转速、节气门开度等。通过对系统的各路信号进行采集从而实时监测系统的运行状态,进而对监测结果作出判断并处理[1]。实验采用了合众电子研发的TMS320F2812开发板,将模拟信号转换为数字量处理,最终通过LabVIEW实时进行监测,使采集结果更加直观。此外,考虑到DSP开发板控制外部设备运转时,经常会涉及到手动更改程序或者更改外部电路负载来控制变量的输入,给实际操作带来了很大不便,于是模拟了通过在LabVIEW中添加发送界面来直接控制外部设备的运行。
1.1 ADC模/数转换原理
本系统信号采集部分主要涉及到了DSPF2812的模/数转换器ADC模块,ADC采集模块为12位,16个采样通道,分别为ADCINA0~ADCINA7和ADCINB0~ADCINB7。由于ADC在进行数模转换时遵循线性关系,3 V的模拟量对应着数字量为0xFFF0,转换为十进制为65 520;0 V的模拟量转换后的数字量为0。由图1的ADC线性转换关系可得以下关系式:
ADResult=(VoltInput-ADCLO)/3.0×65 520
(1)
式中:ADResult为结果寄存器值,VoltInput为电压输入值,ADCLO为参考电压默认值0 V。
将结果寄存器值ADResult向右移4位,这样低四位将被占用,高四位将空闲出来等待下一个数据的传入。此时3 V的电压值将对应数字量为0x0FFF,转换为十进制是4 095;同样0 V的电压值转换后的数字量仍为0[2]。根据图2的线性转换关系可以推算出另一个换算公式:
(ADResult>>4)=(VoltInput-ADCLO)/3.0×4 095
(2)
分析以上两个公式可知,只要把握其线性关系及其原理,就可以在需要时对其进行移位调整,最终结果是一样的。
1.2 系统的总体设计
此次设计使用ADCINA0~ADCINA2三路通道进行信号采集,采用的方式为级联式顺序采样模式,通过采集开发板的三路电压信号,将采集到的电压信号通过RS232串口线传回PC机,并通过LabVIEW界面显示。此外,在LabVIEW界面中设计了发送缓冲区作为控制模块,通过在发送缓冲区输入数值来控制某一路电压输出值的大小。整体设计如图3所示。
2.1 TMS320F2812程序设计
查询方式传输通信,就是通过判断发送缓冲器和接收缓冲器的就绪标志位TXRDY和RXRDY是否已经被置位进而完成操作。发送数据流程如图4所示,当发送缓冲器SCITXBUF把数据发送给移位寄存器TXSHF后,SCITXBUF清空,TXRDY置1,表示可以发送新的数据;同样当接收移位寄存器RXSHF把接收到的数据传给接收缓冲器SCIRXBUF后,RXRDY置1,表示可以读取新数据[3]。通过查询二者的置位情况,CPU才能够执行下一个命令。
2.2 LabVIEW界面及后面板设计
将RS232与PC机连接后,自动识别COM串口。LabVIEW前后面板设计如图5、图6所示,添加VISA串口通信协议,并设置其数据格式;在While循环中嵌套条件结构用于判断是否发送数据;在条件结构中嵌套一个4层顺序结构,第0层为写入缓冲区,第1层设置等待200 ms,第2层为读取缓冲区,第3层添加了三个局部变量,分别设置写入缓冲区、读取缓冲区和数据通信;同时在顺序结构中又嵌套了一个条件结构,用于判断写入与读取的是否一致;若写入与读取数据一致,则显示通信正常,否则通信异常[5]。
在LabVIEW前面板中选择COM3串口,将波特率改为19 200,分别运行CCStudio v3.3中的程序与LabVIEW程序。通过在写入缓冲区写入ADRESULT65520,点击发送按钮。在接收缓冲区中收到同样的字符,且数据通信显示通信正常。在CCStudio v3.3主程序中通过Watch Window观察数据结果寄存器Sci-VarRx的ASCII码值i从0~12分别为65、68、82、69、83、85、76、84、54、53、53、50 、48,刚好对应着ADRESULT65520十三个字符的ASCII码值,表示SCI传输信号正常。其中观察到的0~6位ASCII码值如图7所示。
3.1 TMS320F2812三路数据传输编程
本文对ADCINA0~ADCINA2三个通道进行电压信号采集,选择级联模式的顺序采样方式。SEQ1与SEQ2级联成 16状态的序列发生器SEQ,最大转换通道寄存器的值MAXCONV1设置为2[6],ADCINA0~ADCINA2三路通道转换结果分别对应着adc[0]~adc[2]三个结果寄存器的值。
DSP需要接收LabVIEW传输过来的数据,于是定义了两个无符号整型变量a、b。其中a为控制模拟电压输出的倍数,对应于LabVIEW界面的写入缓冲区窗口,其输入范围为0~9十个整数。当a值等于0时,控制输出电压为0 V,当a等于9时,即控制输出电压为初始值的9倍。b值为用于储存最终输出电压值的结果寄存器,其范围值在0~3 V之间。在while循环下,a读取接收缓冲寄存器的值,该值由在LabVIEW界面写入缓冲区输入并发送,由于a读取完后储存的数值为ASCII码值,需要将a值减去0所对应的ASCII码值48后,再与第一路的结果寄存器值adc[0]相乘。将此运算结果传输给结果寄存器b,最后发送缓冲器读取b的值,并通过LabVIEW显示输出电压值。
ADC采集时是12位的,而串行通信SCI在进行收发时是8位的,所以在将ADC采集到的数据通过SCI发送时,将高8位和低4位分组进行发送。即先将ADC采集到的12位数据位向右移8位,传输到发送缓冲寄存器中,再将剩余的4位一并发送,最后在LabVIEW中进行数据重组。由于在发送过程中涉及到了数据的拆分与重组,计算机无法识别接收到的数据是高8位还是低4位,导致最后结果的不确定性。于是在发送数据时添加了ABCD标志位,用于判断读取数据的初始位置,即当计算机接收到十六进制数ABCD时,便从其下一位开始读取数据,这样就解决了读取数据的不确定性问题。SCI接收与发送的主程序如下:
while(SciaRegs.SCIRXST.bit.RXRDY == 1)
a= SciaRegs.SCIRXBUF.all;
b=(a-48)*adc[0];
while(SciaRegs.SCICTL2.bit.TXEMPTY==0){};
SciaRegs.SCITXBUF=0xAB;
while(SciaRegs.SCICTL2.bit.TXEMPTY==0){};
SciaRegs.SCITXBUF=0xCD;
……
3.2 三路数据传输LabVIEW设计
在LabVIEW界面加入了发送数据窗口,设计了0~9十个档位,分别对应了将第三路的输出电压值扩大到最初值的0~9倍。而第一、二路输出的电压值作为对比保持不变。此应用可以通过LabVIEW界面控制输出电压值进而对外部设备运行状态进行控制。
LabVIEW后面板程序如图8所示,在while循环嵌套了一个条件结构,用于控制信号采集的开始与停止,在此条件结构中又嵌套了一个三层顺序结构,分别为VISA写入程序,等待20 ms,数据接收程序[7]。其中VISA写入程序对应于前面板的写入缓冲区,用于输入控制模拟电压放大的倍数;数据接收程序则对应输出的波形图。在将接收到的数据高8位与低4位进行重组时,需要先将数据向右移8位再与剩余值组合,于是将高8位乘以28后再按照ADC数/模转换公式运算,将数字量转换为模拟量并通过波形图显示。
本系统为三路信号采集与控制设计,测试结果如图9所示。其中信号输出1与信号输出2为实际测得电压值常量,分别为0.33 V和1.75 V。信号输出3为可控输出电压值,其初始值与信号输出1相同,为0.33 V。通过在界面中的写入缓冲区依次输入0~9十个数字,并分别点击确定按钮,可以观察到信号输出3中,电压值由初始值的0.33V产生阶梯性跳变。一共产生了0~9十层阶梯数,每个数字代表着输出电压值变为初始值得N倍,当输入数值为0时,电压值为0 V,当输入值为9时,信号输出3值为2.89 V,正好为初始值0.33 V的9倍。
基于TMS320F2812的多路信号采集与控制设计可同时对多路信号进行采集与分析,通过与LabVIEW的结合,使采集到的数据更加直观,方便,准确。此外,在信号采集的基础上添加了控制过程,通过LabVIEW界面输入数值,可以实现对某路输出电压的控制,为后续的通过控制输出电压方式驱动外围电路,进而控制外部设备的运行状态奠定了基础。免去了通过修改程序或是更改外部电路负载来控制变量的不便,减小了工作量,在实际工程中有较好的应用前景。
[1] 韩丰田.TMS320F281xDSP原理及应用技术[M].北京:清华大学出版社,2009.
[2] 顾卫钢.手把手教你学DSP-基于TMS320X281x[M].北京:北京航空航天大学出版社,2011.
[3] 刘瑞涛,容海亮,张华.基于单片机的多路信号采集系统设计[J].数字技术与应用,2013,31(2):138-139.
[4] 王彬,王灵莉,王旭柱.基于LabVIEW与USB2.0的DSP数据采集与处理系统[J].微型机与应用,2013,32(6):32-34.
[5] 段永杰,赵河明,刘振强,等.基于DSP的多通道无线数据采集方法研究[J].水电能源科学,2010,28(6):109-111.
[6] 郭伟,潘仲明,杜金榜,等.多通道高速实时数据采集与处理平台的设计[J].计算机测量与控制,2009,17(8):1644-1647.
[7] 张雪华,万舟,吴建德.基于LabVIEW与DSP串口通信的数据采集系统设计[J].云南大学学报(自然科学版),2009,72(S2):106-111.
Designof Multi-Channel Signal Acquisition and Control
Based on TMS320F2812
LI Xiao-nan1, FENG Guo-sheng1, PENG Chao-liang1, JI Hao-hao2, ZHANG Xiao-rong1
(1.Department of Mechanical Engineering, Shijiazhuang Tiedao University, Shijiazhuang 050043, Hebei, China; 2.Department of HAVAL Technology Center, Great Wall Motor Co., LTD, Baoding 071000, Hebei, China)
The TMS320F2812 development board was used to convert analog signals to digital value through the A/D converter ADC, and transmit data to PC through the SCI serial communication. Besides, the software LabVIEW was used to compile the multipath signal display and send data interface. It realized controlling a channel output voltage through inputting controlled variable in the LabVIEW interface, which laid a foundation for controlling the motor speed directly through LabVIEW interface.
signal acquisition; serial communication; TMS320F2812; LabVIEW
河北省自然科学基金项目(混合动力客车能量控制策略研究):Z2014210050;石家庄市科研计划项目(混合动力客车能量控制系统开发):161080401A;河北省研究生创新项目(公铁两用通用化回转底盘的设计与模型制作):yc2016003
2016-05-18
李晓楠(1990-),男,河北石家庄人,在读硕士研究生,主要从事车辆电子控制研究,邮箱284289502@qq.com。
TP274
A
1008-9446(2016)06-0039-06