还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
北京科技大学课程设计(软件设计)报告班级姓名同组人学号指导教师日期2013年10月26日目录TOC\*MERGEFOR__T1设计内容12应用程序总体分析与设计13应用程序各功能模块分析与设计
13.1连接程序与服务器相连
13.2加项程序用于加载数据
23.3退出程序程序退出
23.4窗体卸载__处理断开连接
33.5定时器定时时间处理数据读取,__,实时时间显示
33.6SyncRead子程序54程序测试
74.1测试过程两项均正常
74.2测试结果两项均不正常
74.3测试结果一项正常,一项不正常75程序文档
85.1使用说明
85.2程序说明
86.实验总结和心得171设计内容制作一个实际的OPC访问程序,能够实现数据的读取,并能在棒图上显示,实现意外情况的__,显示当前日期、时间2应用程序总体分析与设计要实现设计内容,必须有连接,加项,实时读取,__等子程序,程序总体流程图如下3应用程序各功能模块分析与设计
3.1连接程序与服务器相连PrivateSubCom__nd1_Click调用Connect子程序CallConnectOPCJ.SampleServer.1Label
1.Caption=与服务器连接成功EndSub
3.2加项程序用于加载数据PrivateSubCom__nd2_Click调用AddItem子程序CallAddItemIfNoto__TestGrpIsNothingThenIfo__TestGrp.OPCItems.Count0Then启动定时器Timer
1.Enabled=TrueElseEndIfEndIfEndSub
3.3退出程序程序退出PrivateSubCom__nd3_Click卸载窗体UnloadForm1EndSub
3.4窗体卸载__处理断开连接PrivateSubForm_UnloadCan__lAsInteger调用Disconnect子程序CallDisconnectEndSub
3.5定时器定时时间处理数据读取,__,实时时间显示PrivateSubTimer1_TimerDimvtItemValuesAsVariantDimlErrorsAsLongDimstrBufAsStringDimnWidthAsIntegerDimnHeightAsIntegerDimnDrawHeightAsIntegerDimsglScaleAsSingleDimIAsIntegerDimaAsIntegerDimbAsInteger同期读取SyncReadOPCCachevtItemValueslErrors棒图的表示ForI=1To2数据的格式化strBuf=For__tvtItemValuesI###.000表示数据字符串lbBarI.Caption=strBuf计算棒的宽和高nWidth=Picture1I.ScaleWidthnHeight=Picture1I.ScaleHeightsglScale=vtItemValuesI/700nDrawHeight=CIntnHeight*sglScale清除现棒图Picture1I.Cls绘制棒图Picture1I.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFNext指示警戒值,警戒值以上改变显示颜色IflbBar
1.Caption50OrlbBar
2.Caption80ThenLabel
1.Caption=出现异常!Else:Label
1.Caption=正在观测!EndIfIflbBar
1.Caption50ThenText
1.Text=温度过高!Picture
11.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFEndIfIflbBar
1.Caption50ThenText
1.Text=温度平稳!Picture
11.Line0nHeight-nDrawHeight-nWidthnHeight_RGB02550BFEndIfIflbBar
2.Caption80ThenText
2.Text=液面过高!Picture
12.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFEndIfIflbBar
2.Caption80ThenText
2.Text=液面平稳!Picture
12.Line0nHeight-nDrawHeight-nWidthnHeight_RGB02550BFEndIfLabel
5.Caption=Nowa=a+1b=a*
0.1Label
6.Caption=已观测时间:+Trimb+秒EndSub
3.6SyncRead子程序SubSyncReadnSour__AsIntegerByRefvtItemValuesAsVariant_ByReflErrorsAsLongDimlServerHandlesTemp2AsLongDimjAsIntegerIfo__TestGrpIsNothingThenExitSubEndIfIfo__TestGrp.OPCItems.Count0Then同期读取o__TestGrp.SyncReadnSour__2lServerHandles_vtItemValueslErrorsEndIfEndSub4程序测试
4.1测试过程两项均正常
4.2测试结果两项均不正常
4.3测试结果一项正常,一项不正常5程序文档
5.1使用说明程序运行时,先按下连接按钮,再按下加项按钮,系统就可以观测了,如果想退出的话,按下退出按钮即可
5.2程序说明SubConnectstrProgIDAsStringOptionalstrNodeAsStringIfo__ServerIsNothingThen建立一个OPC服务器对象Seto__Server=NewOPCServerEndIfIfo__Server.ServerState=OPCDisconnectedThen连接OPC服务器o__Server.ConnectstrProgIDstrNodeEndIfIfo__GroupsIsNothingThen建立一个OPC组__Seto__Groups=o__Server.OPCGroupsEndIfIfo__TestGrpIsNothingThen添加一个OPC组Seto__TestGrp=o__Groups.AddTestGrpEndIfEndSubSubAddItemDimstrItemIDs2AsStringDimlClientHandles2AsLongDimlErrorsAsLongDimIAsIntegerIfo__TestGrpIsNothingThenExitSubEndIfIfNoto__ItemsIsNothingThenIfo__Items.Count0ThenExitSubEndIfEndIf设置组活动状态o__TestGrp.IsActive=True取消组非同期通知o__TestGrp.IsSubscribed=False建立OPC项__Seto__Items=o__TestGrp.OPCItems生成标签的项标识符strItemIDs1=TAG
1.ValuestrItemIDs2=TAG
2.ValuelClientHandles1=1lClientHandles2=2添加OPC项Callo__Items.AddItems2strItemIDs_lClientHandleslServerHandleslErrorsEndSubSubDisconnectDimlErrorsAsLongIfNoto__ItemsIsNothingThenIfo__Items.Count0Then清除OPC项o__Items.Remove2lServerHandleslErrorsEndIfSeto__Items=NothingEndIfIfNoto__TestGrpIsNothingThen清除OPC组o__Groups.RemoveTestGrpSeto__TestGrp=NothingEndIfIfNoto__GroupsIsNothingThenSeto__Groups=NothingEndIfIfNoto__ServerIsNothingThenIfo__Server.ServerStateOPCDisconnectedThen断开OPC服务器.o__Server.DisconnectEndIfSeto__Server=NothingEndIfEndSubPrivateSubCom__nd1_Click调用Connect子程序CallConnectOPCJ.SampleServer.1Label
1.Caption=与服务器连接成功EndSubPrivateSubCom__nd2_Click调用AddItem子程序CallAddItemIfNoto__TestGrpIsNothingThenIfo__TestGrp.OPCItems.Count0Then启动定时器Timer
1.Enabled=TrueElseEndIfEndIfEndSubPrivateSubCom__nd3_Click卸载窗体UnloadForm1EndSubPrivateSubForm_LoadTimer
1.Enabled=FalseTimer
1.Interval=100EndSubPrivateSubFrame1_DragDropSour__AsControlXAsSingleYAsSingleEndSubPrivateSubForm_UnloadCan__lAsInteger调用Disconnect子程序CallDisconnectEndSubSubSyncReadnSour__AsIntegerByRefvtItemValuesAsVariant_ByReflErrorsAsLongDimlServerHandlesTemp2AsLongDimjAsIntegerIfo__TestGrpIsNothingThenExitSubEndIfIfo__TestGrp.OPCItems.Count0Then同期读取o__TestGrp.SyncReadnSour__2lServerHandles_vtItemValueslErrorsEndIfEndSubPrivateSubTimer1_TimerDimvtItemValuesAsVariantDimlErrorsAsLongDimstrBufAsStringDimnWidthAsIntegerDimnHeightAsIntegerDimnDrawHeightAsIntegerDimsglScaleAsSingleDimIAsIntegerDimaAsIntegerDimbAsInteger同期读取SyncReadOPCCachevtItemValueslErrors棒图的表示ForI=1To2数据的格式化strBuf=For__tvtItemValuesI###.000表示数据字符串lbBarI.Caption=strBuf计算棒的宽和高nWidth=Picture1I.ScaleWidthnHeight=Picture1I.ScaleHeightsglScale=vtItemValuesI/700nDrawHeight=CIntnHeight*sglScale清除现棒图Picture1I.Cls绘制棒图Picture1I.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFNext指示警戒值,警戒值以上改变显示颜色IflbBar
1.Caption50OrlbBar
2.Caption80ThenLabel
1.Caption=出现异常!Else:Label
1.Caption=正在观测!EndIfIflbBar
1.Caption50ThenText
1.Text=温度过高!Picture
11.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFEndIfIflbBar
1.Caption50ThenText
1.Text=温度平稳!Picture
11.Line0nHeight-nDrawHeight-nWidthnHeight_RGB02550BFEndIfIflbBar
2.Caption80ThenText
2.Text=液面过高!Picture
12.Line0nHeight-nDrawHeight-nWidthnHeight_RGB25500BFEndIfIflbBar
2.Caption80ThenText
2.Text=液面平稳!Picture
12.Line0nHeight-nDrawHeight-nWidthnHeight_RGB02550BFEndIfLabel
5.Caption=Nowa=a+1b=a*
0.1Label
6.Caption=已观测时间:+Trimb+秒EndSub
6.实验总结和心得
(1)总结本次课程设计的任务以VB设计的界面显示从模拟OPC服务器接收到的数据,显示的同时增加一些其他的功能,结果也表明,本次课程设计的设计任务得到了很好的完成
(2)体会1)通过这次实验,进一步认识了OPC服务器在工业过程控制中的应用价值和优势,数据的异步同步读取方法和处理,对今后的工作都将是一个很大的帮助2)本次课程设计所使用的工具为MicrisoftVisualBasic
6.0,这一软件在可视化的__和应用领域应用面很广,之前也曾经作为一门选修课学习过,这次通过和OPC服务器应用结合,极大地锻炼了自己运用VB__可视化界面的能力和经验3)本次课程设计三人一组自由组合,大家可以根据自己的想法选择组员在小组内部大家集思广益同时也有着明确的分工,锻炼了自己的团队合作意识,增长了才干。