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





《北京科技大学软件课程设计报告-自动化专业.doc》由会员分享,可在线阅读,更多相关《北京科技大学软件课程设计报告-自动化专业.doc(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .科技大学课程设计软件设计报告班 级:姓 名:学 号:同组同学:指导教师: 曾 慧 日 期: 2021 年 11 月 13 日. .word. .目录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.
2、4数据保存83.5实时曲线绘制84程序测试104.1测试过程104.2测试结果105程序文档125.1使用说明125.2程序清单126总结176.1问题与解决176.2感想与致谢177参考文献18. .word. .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 Autom
4、ation 2.0。图2.2 引用的设置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对象,用于添
5、加OPC标签的OPC标签集合。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定时器
6、(Timer)dataUpdate对话框(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
7、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 N
8、othing Then 添加一个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
9、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 生成标签的项标识符 For I = 1 To 2 strItemIDs(I) = TAG lClientHandles(I) = I Next 添加OPC项 Call objItems.AddItems(8
10、, strItemIDs, _ 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 Nothi
11、ng 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 I
12、s Nothing Then 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).ScaleHei
14、ghtsglScale = vtItemValues(I) / 100nDrawHeight = CInt(nHeight * sglScale) 去除现棒图 picBar(I).Cls 绘制棒图 If vtItemValues(I) tHoldValue1 Then picBar(I).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), RGB(0, 0, 255), BF Else If vtItemValues(I) 0 Then Open monDialog1.FileName For Output As #1 Print #1, da
15、taInfo.Text Close #1 SaveFlag = True End IfEnd Sub3.5实时曲线绘制Picture是功能强大坐标图绘制软件,本次设计中采用VB中Picture控件进展实时曲线绘制。在设计时添加2个系列曲线,代表两个通道,即温度和液位与时间的关系。并在图中绘出两条戒备线,能更直观地比对数据的变化。图3.2Picture设置局部程序代码如下所示:Picture1.ClsIf Check1.Value = 0 Then If col = 2 Then For w = 1 To 2 Picture1.PSet (px(1, w), py(1, w) For j = 2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京科技大学 软件 课程设计 报告 自动化 专业

限制150内