无线通信实验Word格式.docx

上传人:b****4 文档编号:7035455 上传时间:2023-05-07 格式:DOCX 页数:21 大小:427.88KB
下载 相关 举报
无线通信实验Word格式.docx_第1页
第1页 / 共21页
无线通信实验Word格式.docx_第2页
第2页 / 共21页
无线通信实验Word格式.docx_第3页
第3页 / 共21页
无线通信实验Word格式.docx_第4页
第4页 / 共21页
无线通信实验Word格式.docx_第5页
第5页 / 共21页
无线通信实验Word格式.docx_第6页
第6页 / 共21页
无线通信实验Word格式.docx_第7页
第7页 / 共21页
无线通信实验Word格式.docx_第8页
第8页 / 共21页
无线通信实验Word格式.docx_第9页
第9页 / 共21页
无线通信实验Word格式.docx_第10页
第10页 / 共21页
无线通信实验Word格式.docx_第11页
第11页 / 共21页
无线通信实验Word格式.docx_第12页
第12页 / 共21页
无线通信实验Word格式.docx_第13页
第13页 / 共21页
无线通信实验Word格式.docx_第14页
第14页 / 共21页
无线通信实验Word格式.docx_第15页
第15页 / 共21页
无线通信实验Word格式.docx_第16页
第16页 / 共21页
无线通信实验Word格式.docx_第17页
第17页 / 共21页
无线通信实验Word格式.docx_第18页
第18页 / 共21页
无线通信实验Word格式.docx_第19页
第19页 / 共21页
无线通信实验Word格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

无线通信实验Word格式.docx

《无线通信实验Word格式.docx》由会员分享,可在线阅读,更多相关《无线通信实验Word格式.docx(21页珍藏版)》请在冰点文库上搜索。

无线通信实验Word格式.docx

图1中,采用台湾威达(ICP)无线通信模块SST900EXT,通信距离1km;

波特率最大19200;

232/485通信接口。

 

二无线通信平台的VB控制系统实验

1实验目的

1)掌握电热炉温度控制的原理及方法。

2)掌握基于无线通信平台VB电热炉温度控制系统PID控制算法。

2实验仪器

微机、自动控制实验箱、无线通信网络(泓格i7000系列)或以太网通信平台

3实验内容

(1)利用VisualBasic6.0软件和无线通信控制网络来设计模拟加热炉温度控制实验。

(2)通过VisualBasic6.0界面,调节PID实现对模拟加热炉温度的实时控制。

4实验电路

图2温度自动控制实验连接图

5实验步骤

(1)按照实验指导书上的电路图连线连接实验箱。

(2)在电脑上打开7000Utility界面双击7000Utility图标,进入&

#8220;

7000Utility&

#8221;

界面,程序自动搜索模块。

再点击7012模块,点击setting。

(3)在电脑上打开串口监视精灵双击串口监视精灵软件,进程ID选择25847000util.exe,串口号选择所有COM口,点击启动。

(4)串口监视精灵界面通过观察监视结果的数据得知指令为#02&

回车&

打开串口调试助手,在串口调试助手的界面下方中:

加入指令,#02回车,打开串口,手动发送,则在界面上就会显示实时的温度数据。

(5)打开VisualBASIC的对象窗体界面双击VisualBASIC,在对象窗体的工具栏处双击,选择部件选项,勾选MicrosoftCommControl6.0。

(6)部件界面添加按钮控件、文本控件,及com控件。

(7)VisualBASIC的代码窗体界面根据各个空件的功能,进行编程。

(8)将Pt100放入电烤箱能观察主界面温度曲线的变化,并且做记录。

三基于无线通信平台的VB温度PID控制系统硬件设计

1系统硬件设计

图3硬件电路设计

2系统界面设计

图4系统界面设计

3数据采集与显示程序设计

7000Utility界面双击7000Utility图标,进入&

结果如图5所示

图57000Utility界面

&

界面6串口监视精灵双击串口监视精灵软件,进程ID选择25847000util.exe,串口号选择所有COM口,点击启动,界面如图6所示:

图6串口监视精灵

串口监视精灵界面通过观察监视结果的数据得知指令为#02&

#8221;

串口调试助手在串口调试助手的界面下方中:

加入指令,#02回车,打开串口,手动发送,则在界面上就会显示实时的温度数据,串口调试助手的界面如图所示:

图7串口调试助手界面

VisualBASIC的对象窗体界面双击VisualBASIC,在对象窗体的工具栏处双击,选择部件选项,勾选MicrosoftCommControl6.0,结果如图8所示

图8VisualBASIC界面

图9VisualBASIC主界面

VisualBASIC的代码窗体界面根据各个空件的功能,进行编程,程序代码如图10所示

图10程序代码界面

4系统控制方法设计

控制系统主要由控制器和控制对象两部分组成,通过一定的控制方法使系统达到所要求的控制性能。

控制模式有开环控制、闭环控制和复合控制三种。

所谓的开环控制是控制器与控制对象之间只有正向作用,没有反向联系,是一种单向的控制过程。

如果控制器与控制对象之间既有正向作用又有反向联系,这种控制方式称为闭环控制或反馈控制。

在某种情况下,为了达到较好的控制效果,往往将开环控制和闭环控制结合起来,这种控制方式称为复合控制。

过程控制的基本算法很多,本实验主要采用PID控制算法。

PID控制是最早发展起来的控制策略之一,由于算法简单、鲁棒性好和可靠性高,被广泛应用于过程控制和运动控制中,尤其适用于可建立精确数学模型的确定性控制系统。

随着计算机进入控制领域,不仅可以用软件实现PID控制,而且可以利用计算机的逻辑功能,使PID控制更加灵活。

常规的PID控制系统原理框图如下图所示,系统由PID控制器和被控对象组成。

PID控

图11PID控制系统框图

制器是一种线性控制器,它根据给定值r(t)与实际输出值c(t)构成控制偏差:

e(t)=r(t)-c(t)将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。

PID控制器各校正环节的作用如下:

1.比例环节:

比例调节的方程为y=

.e(t)其中y为比例调节器的输出,

为比例系数,e(t)为调节器的输入或偏差值,而e(t)=

-

这里

为设定的目标值,

为tt时刻的采样值。

比例调节器的输出变化与输入偏差成比例。

比例调节作用的大小除了与偏差e(t)有关外,主要取决于比例系数

的大小。

越大,比例调节作用越强,反之则越弱。

但对于大多数来说,

太大时,会引起系统自激振荡。

2.积分环节:

积分调节的方程为:

其中,Ti为积分时间。

积分调节的主要特点是调节器的输出不仅取决于偏差信号的大小,而且还主要与偏差存在时间有关。

只要有偏差存在,输出就会随时间不断增长,直到偏差消除后,调节器的输出才不会变化。

因此,积分作用能消除静差,这是它的主要优点。

但是它的主要缺点是动作缓慢。

而且在偏差刚一出现时,积分作用很弱,不能及时克服扰动的影响,使被调参数的动偏差增大,调节过程变长。

3.微分环节:

微分调节的方程如下:

,其中,dT为微分时间。

微分调节的主要特点是输出可以反映偏差的变化速度。

因此,对于一个固定不变的偏差,不管其数值有多大,也不会有微分作用输出。

所以微分作用不能消除静差,而只能在偏差发生变化时,产生调节作用。

4.系统设计程序代码

DimDin,OutPid,OutVAsSingle'

输入输出电压

DimLimTempAsSingle'

阈值

DimfCountAllOutv,fCountAllDinAsSingle'

DimiCounterOutv,iCounterDinAsInteger

Dimm_i_testAsInteger

DimdVoltAsSingle

DimdTempAsSingle

Dimm_i_TargTempAsSingle

'

DimTimeAsLong

Dimm_start_timeAsDate

DimCtlTimeAsLong

Dimm_v_DinAsSingle

------------输出电压曲线

PrivateSubCmdCurOutV_MouseEnter()

EndSub

'

‘WarmCurve1.YMaxValue=10

WarmCurve1.YAxisDiv=10

WarmCurve1.XAxisDiv=10

TimerCurOutV.Enabled=True

CallTimerCurOutV_Timer

PrivateSubCmdStart_Click()

DimXAsLong

DimRetAsVariant

IfText1.Text="

"

OrText2.Text="

OrText3.Text="

OrText4.Text="

Then

Ret=MsgBox("

请设定好各参数"

vbDefaultButton1+vbOKOnly,"

警告"

ExitSub

EndIf

------------设置PID参数

T=Val(Text1.Text)*1000

Kp=Val(Text2.Text)

Td=Val(Text3.Text)

Ti=Val(Text4.Text)

TimerOutV.Interval=T

Td=kp*Td/Val(Text1.Text)

Ti=Kp*Val(Text1.Text)/Ti

TargTemp=Val(Text6.Text)

TargTemp=TargTemp*1/20

m_i_TargTemp=TargTemp*1/10

-----------设置模块参数

NAP7000X1.PortOpen=True

NAP7000X1.BaudRate=Val(Combo2.Text)

NAP7000X1.CheckSum=True

NAP7000X1.COMPort=Val(Combo1.Text)

NAP7000X1.ModuleAddress=Val("

&

H"

+Combo3.Text)

NAP7000X1.ChannelNo=Val(Text7.Text)

NAP7000X1.ModuleID=CLng("

+Combo4.Text)

-----------开始工作

Text8.Text=Str(20*Din)+"

"

+Str(u)

WarmCurve1.iCurCuve=2

ForX=WarmCurve1.LeftToWarmCurve1.Left+WarmCurve1.WidthStep7

WarmCurve1.AddLineDot(TargTemp*20)

WarmCurve1.AddLineDot(m_i_TargTemp*10)

NextX

TimerDin.Enabled=True

TimerOutV.Enabled=True

m_start_time=Time

PrivateSubCmdExit_Click()

TimerDin.Enabled=False

TimerOutV.Enabled=False

------------使PID输出0

+"

01"

7021"

NAP7000X1.AnalogOut(0)

Text5.Text="

0.00"

PrivateSubForm_Unload(CancelAsInteger)

TimerCurOutV.Enabled=False

OpenIconFrmFace.hWnd

PrivateSubText8_Change()

phoenixaddition'

m_v_Din=(20/2)*Din

Text8.Text=Format(m_v_Din,"

###.0"

)'

每0.1秒显示一次温度

PrivateSubTimerDin_Timer()

-------------输入温度

Din=NAP7000X1.AnalogIn

IfDin<

0ThenDin=0

fCountAllDin=Din+fCountAllDin

iCounterDin=iCounterDin+1

If(iCounterDin>

9)Then

Din=fCountAllDin/10

Text8.Text=Format(20*Din,"

iCounterDin=0

fCountAllDin=0

PrivateSubTimerOutV_Timer()

Fori=0To9

=9)Then

Text8.Text=Format(20*Din,"

每显示一次温度

Next

-------------平均处理

Text8.Text=Format(10*Din,"

每0.6显示一次温度

------------计算偏差及PID输出值

CurTemp=Din

CurTemp=m_v_Din

ETemp(3)=ETemp

(2)

ETemp

(2)=ETemp

(1)

ETemp

(1)=TargTemp-CurTemp

ETemp

(1)=m_i_TargTemp-CurTemp

IfTargTemp-CurTemp>

LimTempThen

OutV=5

Else

OutPid=Ti*ETemp

(1)+Kp*(ETemp

(1)-ETemp

(2))'

+'

Td*(ETemp

(1)-2*ETemp

(2)+ETemp(3))

OutV=OutV/2

OutPid=OutPid/2

OutV=OutV+OutPid

OutV=OutV/2+OutPid/2

IfOutV>

4.95Then

ElseIfOutV<

0.05Then

OutV=0

OutV=OutV+OutPid

IfOutV>

1Then

OutV=1

EndIf

IfOutV<

0Then

OutV=OutV*5

m_i_test=OutV

NAP7000X1.AnalogOut(OutV)

Text5.Text=Format(OutV,"

#0.00"

EndSub

-----Picture2初始设置

FrmPID.Picture2.AutoRedraw=True

FrmPID.Picture2.ScaleWidth=1000

FrmPID.Picture2.ScaleHeight=10

FrmPID.Picture2.ScaleTop=-5

FrmPID.Picture2.ScaleLeft=0

FrmPID.Picture2.Line(0,0)-(FrmPID.Picture2.ScaleLeft+FrmPID.Picture2.ScaleWidth,0),RGB(192,192,0)

FrmPID.Picture2.PSet(0,0)

Me.AutoRedraw=True

----------纵坐标

Line5.Y1=(WarmCurve1.Top+WarmCurve1.Height/2)

Line5.Y2=Line5.Y1

Line6.Y1=(WarmCurve1.Top+WarmCurve1.Height)

Line6.Y2=Line6.Y1

Yd=(WarmCurve1.Height)/10

Fori=0To10

FrmPID.Line(WarmCurve1.Left-150,WarmCurve1.Top+i*Yd)-(WarmCurve1.Left,WarmCurve1.Top+i*Yd),RGB(0,0,255)

Next

Fori=0To19

FrmPID.Line(WarmCurve1.Left-150/2,WarmCurve1.Top+((i+1)/2)*Yd)-(WarmCurve1.Left,WarmCurve1.Top+((i+1)/2)*Yd),RGB(0,0,255)

----------横坐标

Line8.X1=WarmCurve1.Left+WarmCurve1.Width/2

Line8.X2=Line8.X1

Line9.X1=WarmCurve1.Left+WarmCurve1.Width

Line9.X2=Line9.X1

Xd=(WarmCurve1.Width/10)

FrmPID.Line(WarmCurve1.Left+i*Xd,WarmCurve1.Top+WarmCurve1.Height)-(WarmCurve1.Left+i*Xd,WarmCurve1.Top+WarmCurve1.Height+150),RGB(0,0,255)

FrmPID.Line(WarmCurve1.Left+((i+1)/2)*Xd,WarmCurve1.Top+WarmCurve1.Height)-(WarmCurve1.Left+((i+1)/2)*Xd,WarmCurve1.Top+WarmCurve1.Height+150/2),RGB(0,0,255)

PrivateSubCombo5_Click()

DimiAsInteger

CtlTime=Val(Combo5.Text)

Label15(i).Caption=(i+1)*Val(Combo5.Text)/10

TimerCurReTemp.Interval=Val(Combo5.Text)*60

PrivateSubWarmCurve1_MouseMoveGetData(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

StatusBar1.Panels

(1).Text="

当前坐标为:

+Str(X)+"

"

+Str(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2