北京科技大学软件课程设计报告-自动化专业

上传人:壹****1 文档编号:560874259 上传时间:2023-07-31 格式:DOC 页数:20 大小:108.50KB
返回 下载 相关 举报
北京科技大学软件课程设计报告-自动化专业_第1页
第1页 / 共20页
北京科技大学软件课程设计报告-自动化专业_第2页
第2页 / 共20页
北京科技大学软件课程设计报告-自动化专业_第3页
第3页 / 共20页
北京科技大学软件课程设计报告-自动化专业_第4页
第4页 / 共20页
北京科技大学软件课程设计报告-自动化专业_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《北京科技大学软件课程设计报告-自动化专业》由会员分享,可在线阅读,更多相关《北京科技大学软件课程设计报告-自动化专业(20页珍藏版)》请在金锄头文库上搜索。

1、.科技大学课程设计软件设计报告班 级:姓 名:学 号:同组同学:指导教师: 曾 慧 日 期: 2021 年 11 月 13 日. v.目录1设计内容11.1实验目的11.2实验内容12应用程序总体分析与设计12.1工程建立22.1.1建立一个Visual Basic工程22.2 OPC建立22.2.1设置OPC包装DLL22.2.2建立一个OPC对象23应用程序各功能模块分析与设计43.1界面设计43.2效劳器的断开与53.2.1连接OPC效劳器和建立OPC组53.2.2添加OPC标签53.2.3断开效劳器63.3数据读取与显示73.3.1棒状图显示73.3.2文本框显示73.4数据保存83.

2、5实时曲线绘制84程序测试104.1测试过程104.2测试结果105程序文档125.1使用说明125.2程序清单126总结176.1问题与解决176.2感想与致谢177参考文献18. v.1设计内容1.1实验目的通过实际操作进一步了解OPC的各种概念,掌握OPC客户端的编写方法。并对微软的D有一定的了解,要求通过适宜的D配置,使客户端能够读取网络上效劳器中的数据。1.2实验内容1利用VB语言编写出一个简单的OPC客户端程序,要求这个客户端能够读取效劳器中的数据,并显示出来。2配置D,使客户端能够能过D读取另一台效劳器上的数据。2应用程序总体分析与设计应用程序与OPC效劳器进展连接并读取效劳器端

3、的数据,同时把读取到的数据通过棒柱和文本框显示,并可以保存数据便于查找,同时应用了Picture控件对实时数据变化趋势分析。2.1工程建立2.1.1建立一个Visual Basic工程1启动Visual Basic,新建一个Visual Basic工程。选择Standard EXE作为新建工程的类型。图2.1 Visual Basic 工程的建立2.2 OPC建立2.2.1设置OPC包装DLL对OPC包装DLL进展注册:从Visual Basic菜单里选择Project-References。在Available References表示中,选择 OPC Automation 2.0。图2.2

4、 引用的设置2.2.2建立一个OPC对象在Visual Basic里,是以对象的单位对OPC效劳器进展访问。OPC自动化接口是由以下四种对象所定义。OPC效劳器OPC组OPC组集合OPC标签OPC标签集合OPC浏览器1) 变量声明图2.3 OPC对象变量的声明其中,局部变量声明意义见表所示。表2.1 OPC对象变量的声明变量名说明objServerOPCServer对象,用于连接OPC效劳器。objGroupsOPCGroups对象,用于添加OPC组的OPC组集合objTestGrpOPCGroup对象,演示用的OPC组。objItemsOPCItems对象,用于添加OPC标签的OPC标签集合

5、。lServerHandles()长整型的数组,用于保存OPC标签的效劳器句柄。3应用程序各功能模块分析与设计3.1界面设计图3.1界面效果图窗体中所使用的控件种类如表3.1所示。表3.1FmMain的控件控件名称窗体(Form)FmMain命令按钮(mandButton)BtnConnect命令按钮(mandButton)BtnAddItem命令按钮(mandButton)BtnQuit命令按钮(mandButton)BtnSave命令按钮(mandButton)BtnStop命令按钮(mandButton)Btndraw定时器(Timer)tmUpdate定时器(Timer)dataUpd

6、ate对话框(monDialog)monDialog1图像(PictureBox)picBar(作为数组使用,从左开场12)标签(Label)lbBar(作为数组使用。从左开如12)文本框(TextBox)dataInfo图像(Picture)Picture13.2效劳器的断开与3.2.1连接OPC效劳器和建立OPC组这里用“NEW关键词生成OPC效劳器的对象,然后调用OPC效劳器对象的“Connect方法,和OPC效劳器连接。Connect子程序如下:连接OPC效劳器和建立OPC组Sub Connect(strProgID As String, Optional strNode As Str

7、ing) 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 添加

8、一个OPC组 Set objTestGrp = objGroups.Add(TestGrp) End IfEnd Sub3.2.2添加OPC标签对OPC效劳器进展访问前,必须先在OPC组里添加要访问的OPC标签。AddItem子程序如下: 添加OPC标签Sub AddItem() Dim strItemIDs(8) As String Dim lClientHandles(2) As Long Dim lErrors() As LongDim I As Integer If objTestGrp Is Nothing Then Exit Sub End If If Not objItems I

9、s Nothing Then If objItems.Count 0 Then Exit Sub End If End If 设置组活动状态 objTestGrp.IsActive = True 取消组非同期通知 objTestGrp.IsSubscribed = False 建立OPC项集合 Set objItems = objTestGrp.OPCItems 生成标签的项标识符 For I = 1 To 2 strItemIDs(I) = TAG lClientHandles(I) = I Next 添加OPC项 Call objItems.AddItems(8, strItemIDs,

10、_ lClientHandles, lServerHandles, lErrors)End Sub3.2.3断开效劳器连接着OPC效劳器的OPC应用程序,在退出前必须断开和OPC效劳器的连接。因为OPC效劳器并不知道OPC应用程序的退出,如果不先断开连接,那么OPC效劳器使用的计算机资源就不被释放。如果这样的问题反复发生,久而久之,连续运转的自动控制系统可能会使计算机资源渐渐枯竭从而发生严重问题。Disconnect子程序如下:断开OPC效劳器Sub Disconnect()Dim lErrors() As Long If Not objItems Is Nothing Then If obj

11、Items.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

12、 If objServer.ServerState OPCDisconnected Then 断开OPC效劳器. objServer.Disconnect End If Set objServer = Nothing End IfEnd Sub3.3数据读取与显示客户端使用2个定时器TmUpdate和dataUpdate,定时为1S。在TmUpdate事件中调用同步读取数据函数SyncRead,每隔1S读取效劳器端的数据,同时对棒柱的显示进展刷新。在定时器dataUpdate事件中读取系统时间并不断刷新TextBox的内容,显示当前的时间和数据。3.3.1棒状图显示为了是显示更加人性化,对不同

13、X围的数值显示采用了不同的颜色。当数值过低或者过高时分别显示深蓝色和红色以示警告。中间值显示绿色和橙黄色。程序代码如下所示:SyncRead OPCCache, vtItemValues, lErrors 棒图的表示For I = 1 To 2 数据的格式化strBuf = Format(vtItemValues(I), *.000) 表示数据字符串lbBar(I).Caption = strBufdataTemp(I) = strBuf 计算棒的宽和高nWidth = picBar(I).ScaleWidthnHeight = picBar(I).ScaleHeightsglScale = vtItemValues(I) / 100nDrawHeight = CInt(nHeight * sglScale) 去除现棒图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号