




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京科技大学课程设计(软件设计)报告 班 级: 姓 名: 同组人: 学 号: 指导教师: 日 期: 2013 年 10 月 26 日北京科技大学自动化学院 课程设计(软件设计)报告目 录1设计内容12应用程序总体分析与设计13应用程序各功能模块分析与设计13.1连接程序:与服务器相连13.2 加项程序:用于加载数据23.3 退出程序:程序退出23.4 窗体卸载事件处理:断开连接33.5 定时器定时时间处理:数据读取,报警,实时时间显示33.6 SyncRead子程序54程序测试74.1测试过程:两项均正常74.2测试结果:两项均不正常74.3测试结果:一项正常,一项不正常75程序文档85.1使用说明85.2 程序说明86.实验总结和心得171设计内容制作一个实际的OPC访问程序,能够实现数据的读取,并能在棒图上显示,实现意外情况的报警,显示当前日期、时间。2应用程序总体分析与设计要实现设计内容,必须有连接,加项,实时读取,报警等子程序,程序总体流程图如下:3应用程序各功能模块分析与设计3.1连接程序:与服务器相连Private Sub Command1_Click() 调用Connect子程序 Call Connect(OPCJ.SampleServer.1) Label1.Caption = 与服务器连接成功End Sub3.2 加项程序:用于加载数据Private Sub Command2_Click() 调用AddItem子程序 Call AddItem If Not objTestGrp Is Nothing Then If objTestGrp.OPCItems.Count 0 Then 启动定时器 Timer1.Enabled = True Else End If End IfEnd Sub3.3 退出程序:程序退出Private Sub Command3_Click() 卸载窗体 Unload Form1End Sub3.4 窗体卸载事件处理:断开连接 Private Sub Form_Unload(Cancel As Integer) 调用Disconnect子程序Call DisconnectEnd Sub3.5 定时器定时时间处理:数据读取,报警,实时时间显示Private Sub Timer1_Timer()Dim vtItemValues() As Variant Dim lErrors() As Long Dim strBuf As String Dim nWidth As Integer Dim nHeight As Integer Dim nDrawHeight As Integer Dim sglScale As Single Dim I As Integer Dim a As Integer Dim b As Integer 同期读取 SyncRead OPCCache, vtItemValues, lErrors 棒图的表示 For I = 1 To 2 数据的格式化 strBuf = Format(vtItemValues(I), #.000) 表示数据字符串 lbBar(I).Caption = strBuf 计算棒的宽和高 nWidth = Picture1(I).ScaleWidth nHeight = Picture1(I).ScaleHeight sglScale = vtItemValues(I) / 700 nDrawHeight = CInt(nHeight * sglScale) 清除现棒图 Picture1(I).Cls 绘制棒图 Picture1(I).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFNext 指示警戒值,警戒值以上改变显示颜色If lbBar(1).Caption 50 Or lbBar(2).Caption 80 Then Label1.Caption = 出现异常!Else: Label1.Caption = 正在观测! End If If lbBar(1).Caption 50 Then Text1.Text = 温度过高! Picture1(1).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BF End If If lbBar(1).Caption 80 ThenText2.Text = 液面过高!Picture1(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFEnd IfIf lbBar(2).Caption 0 Then 同期读取 objTestGrp.SyncRead nSource, 2, lServerHandles, _ vtItemValues, lErrorsEnd IfEnd Sub4程序测试4.1测试过程:两项均正常4.2测试结果:两项均不正常4.3测试结果:一项正常,一项不正常5程序文档5.1使用说明 程序运行时,先按下连接按钮,再按下加项按钮,系统就可以观测了,如果想退出的话,按下退出按钮即可5.2 程序说明Sub Connect(strProgID As String, Optional strNode As String) If objServer Is Nothing Then 建立一个OPC服务器对象 Set objServer = New OPCServer End If If objServer.ServerState = OPCDisconnected Then 连接OPC服务器 objServer.Connect strProgID, strNode End If If objGroups Is Nothing Then 建立一个OPC组集合 Set objGroups = objServer.OPCGroups End If If objTestGrp Is Nothing Then 添加一个OPC组 Set objTestGrp = objGroups.Add(TestGrp) End If End SubSub AddItem() Dim strItemIDs(2) As String Dim lClientHandles(2) As Long Dim lErrors() As Long Dim I As Integer If objTestGrp Is Nothing Then Exit Sub End If If Not objItems Is Nothing Then If objItems.Count 0 Then Exit Sub End If End If 设置组活动状态 objTestGrp.IsActive = True 取消组非同期通知 objTestGrp.IsSubscribed = False 建立OPC项集合 Set objItems = objTestGrp.OPCItems 生成标签的项标识符 strItemIDs(1) = TAG1.Value strItemIDs(2) = TAG2.Value lClientHandles(1) = 1 lClientHandles(2) = 2 添加OPC项 Call objItems.AddItems(2, strItemIDs, _ lClientHandles, lServerHandles, lErrors)End SubSub Disconnect()Dim lErrors() As Long If Not objItems Is Nothing Then If objItems.Count 0 Then 清除OPC项 objItems.Remove 2, lServerHandles, lErrors End If Set objItems = Nothing End If If Not objTestGrp Is Nothing Then 清除OPC组 objGroups.Remove TestGrp Set objTestGrp = Nothing End If If Not objGroups Is Nothing Then Set objGroups = Nothing End If If Not objServer Is Nothing Then If objServer.ServerState OPCDisconnected Then 断开OPC服务器. objServer.Disconnect End If Set objServer = Nothing End If End SubPrivate Sub Command1_Click() 调用Connect子程序 Call Connect(OPCJ.SampleServer.1) Label1.Caption = 与服务器连接成功End SubPrivate Sub Command2_Click() 调用AddItem子程序 Call AddItem If Not objTestGrp Is Nothing Then If objTestGrp.OPCItems.Count 0 Then 启动定时器 Timer1.Enabled = True Else End If End IfEnd SubPrivate Sub Command3_Click() 卸载窗体 Unload Form1End SubPrivate Sub Form_Load()Timer1.Enabled = FalseTimer1.Interval = 100End SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)End SubPrivate Sub Form_Unload(Cancel As Integer) 调用Disconnect子程序 Call DisconnectEnd SubSub SyncRead(nSource As Integer, ByRef vtItemValues() As Variant, _ ByRef lErrors() As Long) Dim lServerHandlesTemp(2) As Long Dim j As Integer If objTestGrp Is Nothing Then Exit Sub End If If objTestGrp.OPCItems.Count 0 Then 同期读取 objTestGrp.SyncRead nSource, 2, lServerHandles, _ vtItemValues, lErrors End IfEnd SubPrivate Sub Timer1_Timer()Dim vtItemValues() As Variant Dim lErrors() As Long Dim strBuf As String Dim nWidth As Integer Dim nHeight As Integer Dim nDrawHeight As Integer Dim sglScale As Single Dim I As Integer Dim a As Integer Dim b As Integer 同期读取 SyncRead OPCCache, vtItemValues, lErrors 棒图的表示 For I = 1 To 2 数据的格式化 strBuf = Format(vtItemValues(I), #.000) 表示数据字符串 lbBar(I).Caption = strBuf 计算棒的宽和高 nWidth = Picture1(I).ScaleWidth nHeight = Picture1(I).ScaleHeight sglScale = vtItemValues(I) / 700 nDrawHeight = CInt(nHeight * sglScale) 清除现棒图 Picture1(I).Cls 绘制棒图 Picture1(I).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFNext 指示警戒值,警戒值以上改变显示颜色If lbBar(1).Caption 50 Or lbBar(2).Caption 80 Then Label1.Caption = 出现异常!Else: Label1.Caption = 正在观测! End If If lbBar(1).Caption 50 Then Text1.Text = 温度过高! Picture1(1).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BF End If If lbBar(1).Caption 80 ThenText2.Text = 液面过高!Picture1(2).Line (0, nHeight - nDrawHeight)-(nWidth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省绥江县2025年上半年事业单位公开遴选试题含答案分析
- 河北省宣化县2025年上半年事业单位公开遴选试题含答案分析
- 河北省涉县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省满城县2025年上半年事业单位公开遴选试题含答案分析
- 河北省海兴县2025年上半年公开招聘城市协管员试题含答案分析
- 2025年文化广场场地租赁合同范本
- 2025版电子商务平台商标转让合同示范文本
- 2025版家具维修与专利技术合作合同下载
- 2025年度基础设施建设项目施工合作协议书
- 2025年度高科技产业园水电设施建设合同范本
- DL∕T 976-2017 带电作业工具、装置和设备预防性试验规程
- 近几年大学英语四级词汇表(完整珍藏版)
- 儿科护理学教学案
- 盐酸罂粟碱在腰背痛治疗中的应用
- 一年级硬笔书法教学计划
- 静电安全在纸浆与造纸行业中的应用
- 培养团队协调能力
- 汤小丹《计算机操作系统》官方课件 第四版
- 走近昆曲《牡丹亭》
- 3D打印混凝土材料性能试验方法
- 装饰色彩课件
评论
0/150
提交评论