基于ARM的OFDM技术在采煤机电力载波通信中的研究

(整期优先)网络出版时间:2016-11-21
/ 3

基于ARM的OFDM技术在采煤机电力载波通信中的研究

杨超孔祥春苏畅田聪田铁刚刘丹

杨超孔祥春苏畅田聪田铁刚刘丹

(黑龙江工业学院黑龙江鸡西158100)

摘要:电力线载波通信(PLC),在民用通信中已经广泛应用。煤矿开采技术应用中还没有大量开展,尤其是采煤机控制通信中没有得到应用。在煤矿开采过程中采煤机控制计算机采集的数据实时传输给顺槽集中控制计算机,通过OFDM技术,结合目前广泛使用的ARM,可以实现采煤机相关数据的采集传输。经过测试,传输效果较好。用电力通信取代采煤机传统的通信线路,可以解决采煤机专用通信线路移动过程中折断的问题。

关键词:载波通信;ARM;OFDM技术;采煤机

中图分类号:文献标识码:A

近年来,通过配电网实现通信,又称电力载波通信(PLC)越来越引起人们的广泛关注。随着调制解调和信号处理技术的发展,PLC技术也得到了飞速的发展。随着ARM技术的迅猛发展和正交频分复用技术(OFDM)技术应用于PLC领域,传输的可靠性和速率也达到了一个新的高度。PLC应用广泛:Internet的接入、智能家庭组建、自动远程抄表等。社会需求的不断提升和对生活、工作便捷等各方面的要求,使得电力线载波技术在工业、民用等领域快速发展,但是在煤矿开采自动化技术中电力载波通信还未得到广泛应用,本文旨在研究电力载波技术应用到采煤机控制信号传输以解决井下信号传输问题。

1.采煤机控制信号通信中应用电力线载波通信的意义

电力载波通信是以电网设备为依托,主要是通过高压电力线(35kV及以上电压等级)、中压电力线(10kV电压等级)或低压配电线(380/220V用户线)传输语音或数据。

常用的电力载波通信主要是在信号发射端将数据信号通过载波通信设备调制并将功率放大,随后通过耦合的方式把信号输送到电网上,信号接收端通过信号耦合接收所发射的数据信号。接收端接收到信号后需要解调得到原信号。为避开电网50Hz的工频信号及其谐波频率的干扰,通常电力载波通信选择的工作频率在40—500kHz之间。电力载波通信的优点是传输信道已经由电力部门建设完成,不需要额外投资线路,且电网具有可靠性高的特点,但是由于变压器具有物理隔离的特点,所以电力载波通信只能在一个局域电网内使用。电力载波通信的原理如图1所示。

图1电??力线载波通信原理

2.基于ARM的采煤机通信系统的设计

通过电力载波通信,就是要利用信号处理芯片完成目标数据的处理和传输。对采煤机通信系统设计,对每一个处理环节模块化设计,将系统内的强电和弱电隔离开,并屏蔽电磁干扰。对系统功能细化,则可简单地分为传感器信号采集处理模块和电力载波通信模块两部分。系统整体上包括信号的采集、处理和传输三个模块,采集电路完成采煤机摇臂摆角、采煤机机身二维倾角等数据的监测。信号处理主要是对信号的滤波降噪、模数转换以方便ARM的处理,最后通过OFDM调制解调算法来实现电力载波通信实现数据传输。系统中信号处理模块又可以分为运算放大、模数转化、数据缓冲、数字信号处理、模拟滤波、系统管理等模块。电力线载波通信模块包括耦合电容器(或电容分压器),线路阻波器,结合设备及高频电缆等耦合装置。

3.基于电力线载波通信的系统软件算法的实现

用ARM来实现OFDM的电力调制解调功能,就是在ARM中编写实现OFDM系统的一些主要算法,算法主要是调制和解调的过程。其中调制过程有信道编码、串/并转换、QPSK调制、IFF工并/串变换。解调过程有串/并变换、FFT、QPSK解调、并/串变换、信道译码。调制和解调是两个相对的过程。

图2是OFDM系统处理基带信号的流程,首先要将目标数据进行信道编码再串并转化,串并转化是OFDM的基础,是为了形成若干个子载波信号。经过QPSK调制后,把N点的IFFT变换加入到循环前缀,再送到D/A转换器中,将变换后的模拟信号耦合到电力线上即可。D/A转换是通过硬件来实现的。

图3OFDM系统实现框图

解调是调制的相反环节,将耦合得到的电力线上的OFDM信号通过A/D转换后,去掉循环前缀,再经过FFT变换,最后经过QPSK解调和信道译码的过程,可得到原信息序列,除A/D转换过程是由硬件来实现的,其余过程均由ARM芯片编程实现。算法程序为:

(1)、FFT算法程序

void1FFT(void)

{

inti=0,j=0,k=0,l=0;

complexup,down,product;

change();

for(i=0:i<log(size-x)/log(2);i++)

{

l=l<<i;

for(j=0;j<size-x);j+=2*1)

{

for(k=0;k<l;k++)

{

mul(x[j=k+1],W[size-x*k/2/l],&product);

add(x[j+k],produet,&up);

sub(x[j+k],product,&down);

x[j+k]=up;

x[j+k+l]=down;

}}}}

(2)、IFFT算法程序

voidOFDMIFFT(void)

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#defineN1000

/*定义复数类型*/

typedefstruct{

doublereal;

doubleimg;

}complex;

complexx[N],*W;/*输入序列,变换核*/

intsize_x=0;/*输入序列的大小,在本程序中仅限2的次幂*/

doublePI=3.1415926;/*圆周率*/

voidfft();/*快速傅里叶变换*/

voidifft();

voidinitW();/*初始化变换核*/

voidchange();/*变址*/

voidadd(complex,complex,complex*);/*复数加法*/

voidmul(complex,complex,complex*);/*复数乘法*/

voidsub(complex,complex,complex*);/*复数减法*/

voidoutput();

voidmain()

{

inti=0;

printf("pleaseinputthenumbersize_x:\n");

scanf("%d",&size_x);

for(i=0;i<size_x;i++)

{x[i].real=sin(2*PI*i/size_x);

x[i].img=0;

}//在此处添加用户所要计算的数组

initW();

ifft();

output();

}

voidfft()

{

inti=0,j=0,k=0,l=0;

complexup,down,product;

change();

for(i=0;i<log(size_x)/log(2);i++){/*一级蝶形运算*/

l=1<<i;

for(j=0;j<size_x;j+=2*l){/*一组蝶形运算*/

for(k=0;k<l;k++){/*一个蝶形运算*/

mul(x[j+k+l],W[size_x*k/2/l],&product);

add(x[j+k],product,&up);

sub(x[j+k],product,&down);

x[j+k]=up;

x[j+k+l]=down;

}

}

}

}

voidifft()

{inti;

for(i=0;i<size_x;i++)

x[i].img=(-1)*x[i].img;

fft();

for(i=0;i<size_x;i++)

{

x[i].img=(-1)*x[i].img/size_x;

x[i].real=x[i].real/size_x;

}

}

voidinitW(){

inti;

W=(complex*)malloc(sizeof(complex)*size_x);

for(i=0;i<size_x;i++){

W[i].real=cos(2*PI/size_x*i);

W[i].img=-1*sin(2*PI/size_x*i);

}

}

/*变址计算,将x(n)码位倒置*/

voidchange(){

complextemp;

unsignedshorti=0,j=0,k=0;

doublet;

for(i=0;i<size_x;i++){

k=i;j=0;

t=(log(size_x)/log(2));

while((t--)>0){

j=j<<1;

j|=(k&1);

k=k>>1;

}

if(j>i){

temp=x[i];

x[i]=x[j];

x[j]=temp;

}

}

}

/*输出傅里叶变换的结果*/

voidoutput(){

inti;

printf("Theresultareasfollows\n");

for(i=0;i<size_x;i++){

printf("%.4f",x[i].real);

if(x[i].img>=0.0001)printf("+%.4fj\n",x[i].img);

elseif(fabs(x[i].img)<0.0001)printf("\n");

elseprintf("%.4fj\n",x[i].img);

}

}

voidadd(complexa,complexb,complex*c){

c->real=a.real+b.real;

c->img=a.img+b.img;

}

voidmul(complexa,complexb,complex*c){

c->real=a.real*b.real-a.img*b.img;

c->img=a.real*b.img+a.img*b.real;

}

voidsub(complexa,complexb,complex*c){

c->real=a.real-b.real;

c->img=a.img-b.img;

}

OFDM通信系统本身的一些优势可以有效地对抗多径时延。具体阐述是把输入的高速串行数据流通过串并转换后分配到N个并行的子载波信道中,从而使得每个用于区调制子载波的数据符号周期变为原始数据符号周期的N倍,因此时延扩展与符号周期的比值也同样降低了N倍。采用多载波进行调制可以增加符号周期,因为OFDM符号周期和N成正比关系,所以要进行调制的子载波数目N越多,OFDM符号周期就越长,则该系统抗码间干扰151性能就越强,继而所需要的均衡就越少,系统提供的分集也越大,信道传输特性在每个子信道中呈现出常熟,每个子信道就会非常平坦。为了最大限度地消除符号间干扰,还可以在每个OFDM符号之间插入保护间而且该保护间隔长度一般要大于电力线信道的最大时延扩展,这样一个符号的多径分量就不会对下一个符号造成干扰。

OFDM系统还可以在每个OFDM码元的前面插入循环前缀CP来对抗151。循环前缀CP指的是将OFDM符号后面一部分复制到该符号前面去,也就是将运算结果后面长度为L的部分复制到前面去。循环前缀CP主要有两个作用:一是作为保护间隔,只要CP的长度大于信道最大时延扩散长度,基本上可以完全消除由于多径引起的151;二是由于保持了各信道间的正交性,它大大减少了151。我们必须选择最佳数目的循环前缀,在保证系统一定性能的前提下,最大程度的保证系统的带宽和能量利用效率。

4.测试结果

本实验选用LPC2210型ARM芯片,存储系统选用RAM,使用KS8721SL和INT5200作为电力线调制解调模块,其中KS8721Sl作为以太网物理层收发器,INT5200完成电力线数据包和以太网数据包之间的转换和传输。在矿井下的试验中,ARM发送板与ARM接收板通过矿井下的电力线进行通信ARM接收板通过串口与PC机进行通信。经过测试得到如下结果。

参考文献

[1]侯青波.基于OFDM的电力载波通信的智能家居系统设计与实现[D],云南大学,2013:10-20.

[2]陈凤,郑文刚,申长军,周平,吴文彪.低压电力线载波通信技术及应用[J],电力系统保护与控制,2009(3):15-30.

[3]袁舟.基于电力载波通信的路灯监控系统设计[D],电子科技大学,2014:13-24.

[4]崔爱霞.基于PL3200的电力载波通信系统的研究[D],山东科技大学,2005:5-15.

[5]向敏,王时贺,赵星宇.一种基于电力载波通信的路灯控制系统集中器的设计[J].重庆邮电大学学报(自然科学版),2013(6):175-

177.

[6]孙海.OFDM技术及其在低压电力载波通信中的应用研究[D],河海大学,2007:3-13.

[7]孙萍,马维华.基于电力载波通信的家电控制系统设计与实现[J],微型机与应用,2012(13):20-23.

[8]吴子卿.基于DSP的电力载波通信系统及音频处理[D],西安电子科技大学,2015:25-28.

[9]汪义旺,张波,吴铄.基于电力载波通信的LED隧道照明控制器设计[J],电源技术,2011(38):112-114.

[10]冯蓉珍.基于电力载波通信的远程路灯监控系统设计[J]电力系统通信,2010(48):213-214.

[11]周如宝.基于OFDM技术的低压电力载波系统的研究与实现[D]南京理工大学,2014:5-10.

作者简介

杨超,硕士,副教授,黑龙江工业学院。研究方向:电气自动化。

基金项目

2014年黑龙江省青年科学基金项目“基于ARM的OFDM技术在采煤机电力载波通信中的研究”,项目编号:QC2014C082。