计算机类论文范文数据库,与用VB编程实现计算机通讯相关毕业设计论文
本论文是一篇计算机类毕业设计论文,关于用VB编程实现计算机通讯相关大学毕业论文范文。免费优秀的关于计算机及量程及数据方面论文范文资料,适合计算机论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
【摘 要】VB是一种具有很好的图形用户接口(Graphicuserinterface,简写为GUI)的程序设计语言,同时又是一种完全支持结构化程序设计的面向对象的程序设计语言.其特点不仅语法口语化,浅显易懂,易于掌握,而且编程界面友好,操作简便,模块化结构化程度高.尤其其功能强大,编程面广.本文根据作者长期使用VB进行工业控制的编程经验,并结合热力发电厂化学水车间的运作过程,介绍如何用VB来编程实现计算机与下位机之间的通讯.
【关 键 词】下位机、ADAM模块、模拟量、开关量.
中图分类号:G201
一、工作原理
热力发电厂为确保发电机组运转正常,化学水车间必须24小时对机组的化学水性质进行监视测量.需要测量的数据项很多,根据热电厂的规模和设备情况的不同而不同.比如有:凝结水电导值,凝结水溶氧值、疏水电导值,除氧水溶氧值、给水电导值、给水PH值,炉水PH值,饱和汽电导值,过热汽电导值等,这些值测出来的都是一些离散性的数值,统称模拟量.而象“凝结水超温阀”、“过热汽超温阀”、“冷却水压力低”等这种状态量数据测出来只有两种值:“正常”用“-1”表示,“不正常”用“0”表示,这些数据统称开关量.这些模拟量和开关量首先经过一种智能仪表转换成电信号.一般,模拟量为电流信号,开关量为电压信号.这些信号再由模数转换器转换成数字信号送到计算机端口(如1口).用户编制的监控程序其功能便是要能准确及时地从计算机端口捕获这些数据,再按用户的量程要求转换成数值进行显示并生成数据文件进行报表管理.
二、模数转换器
在整个控制流程中,我们通常把计算机称为上位机,模数转换器称为下位机.ADAM系列模块在计算机工业控制应用中是一种常用的A/D转换器.它具有性能稳定、精确度高、量程宽等特性.其中ADAM4520用于地址管理和通讯.ADAM4017用于连接模拟量,ADAM4053用于连接开关量,其连接图如下,Vc一般为+12伏电压.
一般来说明,4520只须一个,而4017和4053的个数要须根据具体模拟量和开关量的个数来确定.一个4053可连接16路开关量,一个4017可连接8路模拟量.使用前还必须用ADAM专用测试程序设置模块的量程档,并对多个模块进行地址分配.如若要用到2个4017,则将其中一个地址设定为01H,另一个地址设置为02H.用VB编程时,程序中的接口地址必须与这个设定一致,否则将导致捕获的数据张冠李戴,不合实际而失去意义.模块的地址和量程设定好后,由ADAM测试程写入模块中的EPROM中.
有关论文范文主题研究: | 计算机类论文范文 | 大学生适用: | 电大论文、专升本论文 |
---|---|---|---|
相关参考文献下载数量: | 82 | 写作解决问题: | 如何写 |
毕业论文开题报告: | 文献综述、论文结论 | 职称论文适用: | 期刊发表、高级职称 |
所属大学生专业类别: | 如何写 | 论文题目推荐度: | 优秀选题 |
本篇论文来自 http://www.sxsky.net/jiaoxue/020785081.html
三、程序实例
窗体中要建立定时器对象(名为timer1)和通讯对象(名为m1).假设目前有10个模拟量,10个开关量,有一个机组.下位机有:一个4520,两个4017,地址分别为01H和02H,每个4017只用到5路端口;一个开关量,地址为03H.并假设ADAM4017用0--20毫安档,模量实际电流信号的变化范围是4--20毫安,先定义如下变量:
CONSTmnlnum等于10'模拟量个数
constkglnum等于10'开关量个数
CONSTjznum等于1'机组个数
Dimbi(1To8)AsInteger'开关量转换后的值
DimaM4000(1Tomnlnum)asString'用于存放从端口捕获到的字串
Dimcurrkgl(1Tokglnum,1Tojznum)AsInteger'最后得到的开关量的值
Dimcurrmnl(1Tomnlnum,1Tojznum)AsInteger'最后得到的模拟量的值
Dimlcmax(1tomnlnum,1tojznum)'用户最大量程
Dimlcmin(1tomnlnum,1tojznum)'用户最小量程
编制时钟事件,以便程序定时去端口采集数据.定时器对象Timer1的interval值可设置为60000,目的是让程序每分钟采集一次数据.
SubTimer1_Timer()
Dummy等于DoEvents()'响应Windows的其它任务
getmnl'捕获模拟量的值
mnlzh'模拟量根据量程转换
Dummy等于DoEvents()
kgin'开关量转换
Dummy等于DoEvents()
EndSub
Subgetmnl()'ADAM通讯
OnErrorResumeNext
Comm1.PortOpen等于True
Fori等于1To5'01H只用5路通道
SelectCasei
Case1
aab$等于"#010"'通道的具体地址
Case2
aab$等于"#011"
Case3
aab$等于"#012"
Case4
aab$等于"#013"
Case5
aab$等于"#014"
EndSelect
ccb$等于adam_mnli(aab$)
Ifccb$<>"fail"ThenaM4000(i)=ccb$
Dummy等于DoEvents()
Nexti
Forj等于1To5'02H只用5路通道
SelectCasej
Case1
aab$等于"#020"
Case2
aab$等于"#021"Case3
aab$等于"#022"
Case4
aab$等于"#023"
Case5
aab$等于"#024"
EndSelect
ccb$等于adam_mnli(aab$)
Ifccb$<>"fail"Then
aM4000(j+5)等于ccb$
EndIf
Dummy等于DoEvents()
Nextj
Comm1.PortOpen等于False
EndSub
Functionadam_mnli(mnloAsString)AsString
'模拟量输入4017address01,02H
OnErrorResumeNext
Comm1.Output等于mnlo&Chr$(13)
rx$等于""
flag等于0
Do
Dummy等于DoEvents()
flag等于flag+1
LoopUntilComm1.InBufferCount>1Orflag>600
Ifflag>600Then
adam_mnli等于"fail"
ExitFunction
Else
rx$等于Comm1.Input'捕获到的字串放rx$变量中
EndIf
IfMid$(rx$,Len(rx$),Len(rx$))等于Chr$(13)Then
adam_mnli等于Mid$(rx$,3,6)'截取有效部分赋给函数
EndIf
EndFunction
Submnlzh()'下位机组模拟量转换
ReDimpmnl(1Tomnlnum,1Tojznum)AsSingle
Fori等于1Tomnlnum
pmnl(i,1)等于(Val(aM4000(i))-4)/(20#-4)'根据毫安档转换
currmnl(i,1)等于pmnl(i,1)*(lcmax(i,1)-lcmin(i,1))+lcmin(i,1)
'根据最大和最小量程转换成显示需要的值
Nexti
EndSub
Subkgin()'4053地址03H
h_kgl1$等于adam_kglin("$03")
ssY%等于Val("&H"&Mid$(h_kgl1$,3,2))'低8路开关
kglzh(ssY%)'开关量转换
currkgl(1,1)等于bi(1)
currkgl(2,1)等于bi(2)
currkgl(3,1)等于bi(3)
currkgl(4,1)等于bi(4)
currkgl(5,1)等于bi(5)
currkgl(6,1)等于bi(6)
currkgl(7,1)等于bi(7)
currkgl(8,1)等于bi(8)
ssY%等于Val("&H"&Mid$(h_kgl1$,1,2))
kglzh(ssY%)
currkgl(9,1)等于bi(1)
currkgl(10,1)等于bi(2)
EndSub
Functionadam_kglin(kinAsString)AsString
'ADAM开关量输入变频器4053,捕获开关量数据
OnErrorResumeNext
Comm1.Port
计算机类论文范文数据库
Comm1.Output等于kin&Chr$(13)
flag等于0
Do
Dummy等于DoEvents()
flag等于flag+1
LoopUntilComm1.InBufferCount>1Orflag>1300
Ifflag>1300Then
adam_kglin等于"fail"
Comm1.PortOpen等于False:ExitFunction
Else
rx&
计算机类论文范文数据库,与用VB编程实现计算机通讯相关毕业设计论文参考文献资料: