当前位置:自动化网>智慧工厂门户>应用案例>金属矿山实时数据采集传送软件开发设计

金属矿山实时数据采集传送软件开发设计

发布时间:2019-12-02 09:35   类型:解决方案   人浏览
1 引言 在构建工业互联平台生态体系,促进产业优化升级的过程中,对底层工业设备的数据采集,包括各种仪器仪表,DCS系统,PLC等等工业生产中用到的重要设备,为工业互联网的提供了基础数据支持。目前大多数的生产设备都支持OPC通讯接口, OPC 为多种多样的过程控制设备提供了一个公共的接口,可以减化和促进企业内部各系统的集成,更好的实现数据采集。本设计通过OPC接口采集各种生产数据并上传到云端服务器,并用手机APP显示这些生产数据,把工业自动化生产过程中的数据与互联网相结合的系统软件。 2 OPC 标准概要 微软OPC标准中文全称是(基于Windows的)用于过程控制的链接与嵌入(Object Linking and Embedding(OLE) for Process Control)。 OPC标准的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。 在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。 在这种情况下,OPC标准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE 2技术,OLE标准允许多台微机之间交换文档、图形等对象。 OPC 是工业自动化过程中数据交换的一个标准, OPC的出现为基于 windows 平台的组态软件和基于现场控制的控制器之间的数据交换提供了确实可行的方法。 它实际上提供了一种机制, 使系统以标准的方式从数据源获取数据, 并提供标准的接口给客户应用程序。 各客户应用程序利用这些接口访问数据。 这样, 现场设备生产商只需要开发一套遵循 OPC 规范的服务器,由服务器与数据源进行通信, 获取现场数据。 客户应用程序通过服务器访问现场设备。 通过全球统一致标准的 OPC 接口可以共享所有提供了 OPC 服务器的现场设备的数据。 现场设备中 OPC 服务器的功能类似于I/O 驱动器, 它负责与作为数据供应方的现场设备通信, 将来自数据供应方的数据通过标准的 OPC 接口传送给给数据使用方(人机界面软件)。OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automation interface);自定义接口(Custom interface)。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。 OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者,如果它不能全方位地支持OPC,则必将被历史所淘汰。 3 金属矿山数据系统 金属矿山数据系统总体架构参见图1所示。 图1 矿业数据系统总体结构 在现代化发展的进程中,陈盛矿业生产装备发展越发精密,设备环境越来越复杂,对日常储存的数据监控提出了更高的要求。以往维护都是个很难解决的现实问题,需要安排特定人员完成监测工作,由于人工监控的方式非常容易将出现的异常情况忽视,因此迫切的需要对数据采集监控系统进行开发和研究,此系统能够全天候实时监测现场的环境参数和设备工作状况并实时反映到移动端APP上,以至于不需要人员随时呆在电脑旁,在任何区域只要有互联网即可知道现场生产情况,对异常情况能够及时报警并推送到手机端,从而保证企业人员及时了解现场设备运行情况及生产情况。  本设计数据采集端采用VB6.0为开发工具,编写OPC客户端程序,实现对现场数据的实时采集。并通过互联网把数据上传到云端服务器,数据库采用sql server 2008。通过C# 语言在.net平台下开发WebAPI云端服务。手机APP采用android系统Java开发语言进行开发。 3.1 系统总方案设计 本项目中,底层采集设备为西门子PLC。德国西门子公司PLC 及相关软件因其具有功能强、 速度快、 扩展灵活等优点, 在工业控制领域占据了重要地位, 得到了十分广泛的应用。数据采集程序采用了VB语言进行编写,通过OPC接口进行以太网数据通讯。通过数据采集到的工业生产数据进行处理后上传到云端服务器SQL Server2008,并通过编写.net webAPI作为服务接口给手机端APP提供相关数据显示,数据报警,报警消息推送等等功能。为了能实时快速的显示当前生产数据在手机APP上,本系统读取数据周期为1秒,为了加快数据读取及实时上传数据,系统经过了各种优化,能同时满足同时读取1500个点的,而保证手机端显示数据不会卡死。 3.2 VB语言开发OPC采集系统特点 (1)采集程序采用了VB开发语言,这里用VB语言编写是为了兼容一些老旧的操作系统,由于工业生产中某些计算机的操作系统还比较旧,例如WINDOWS XP,且部分计算机本身配置不足,造成用其他新式语言编写时,由于新式语言的运行平台和相关配置对系统及计算机本身有一定的要求,所以这里选用VB语言更加轻量级,发布的程序不需要安装配套任何软件运行的相关平台或配置,能大大的提高兼容相关低配计算机的实际情况。即使工业计算机配置达不到要求,但一样可以轻松运行。也给相关生产企业降低相关升级计算机软硬件的成本。 (2)VB开发语言对OPC通讯来说更加支持对OPC相关组件的调用,不会出现和其他语言一样兼容性问题。 3.3 选用SQL server数据库作为云数据库特点 (1)高性能设计,可充分利用WindowsNT的优势。 (2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。 (3)强壮的事务处理功能,采用各种方法保证数据的完整性。 (4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。 3.4 选用.net WebAPI服务特点        (1)是简单的 构建HTTP服务的新框架。        (2)在.net平台上WebApi是一个开源的,理想的,构建REST-FUL服务的技术。        (3)不想WCF REST Server 它可以使用HTTP的全部特点。(URI,request/response头,缓存,版本控制,多种内容格式)。        (4)支持MVC的特征。像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。        (5)可以部署在IIS和应用程序上。        (6)轻量级框架,并且对限制带宽的设备,比如智能手机等支持的很好。        (7)Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。        (8)Web API非常适合构建移动客户端服务。 3.5选用Java开发手机APP(android) 选用Java开发手机端APP是,一是因为支持android系统,二是因为android系统的占有率比较高,开发效率高,成本低的特点。 4 数据采集程序软件设计 4.1 OPC 对象 OPC 数据存取规范规定的基本对象有三类:  服务器(sevrer)、 组(Group)和数据项(Item)。 服务器对象包含服务器的所有信息,也是组对象的容器,一个服务器对应于一个OPCSevrer,即一种设备的驱动程序。 组对象除了包含它自身信息外,还负责管理数据项。每一个数据项代表到数据源的一个连接,但它没有提供外部接口,客户端程序无法对数据项直接进行操作,应用程序必须依靠数据项的容器组对象来对它进行操作。   4.2 OPC 数据访问方式 OPC 客户端与 OPC 服务器交互包括两个方面:一个是客户端程序从服务器读取数据;一个是客户端向服务器写入数据. 客户端程序读取数据有四种基本方法:同步读、 异步读、 订阅和刷新;客户端向服务器写数据有两种方式:同步写和异步写. 也就是说,OPC 服务器与 OPC 客户端的交互存在 4 种方式:同步、 异步、订阅和刷新。同步通讯时, OPC 客户端向 OPC 服务器进行请求时, OPC 客户端必须等到 OPC 服务器对应的响应全部完成以后才能返回, 在此期间 OPC 客户端一直处于等待状态, 若进行读操作, 那么必须等待 OPC 服务器响应后才返回。 4.3连接OPCServer及建立OPCGroup组部分代码 Dim NewGroupSelection As OPCGroupClass     Dim OPCServerGroupsCls As Collection     With OPCServers         Set Module1.SelectedOPCServer = .Item("Server 0")     End With     Set OPCServerGroupsCls = Module1.SelectedOPCServer.GetOPCServerGroupCollection     Set NewGroupSelection = OPCServerGroupsCls.Item("Group 1 0")     If (Not NewGroupSelection Is Module1.SelectedOPCGroup) Then         Set Module1.SelectedOPCGroup = NewGroupSelection         GetNewItemList End If   Sub AddSelectedOPCServerMain(OPCServerName As String)     Dim OPCServer As OPCServerClass     Set OPCServer = New OPCServerClass     Dim result As Boolean     Dim SrvName As String     SrvName = "Server" + str(Module1.ServerIndex)     result = OPCServer.ConnectOPCServer(OPCServerName, SrvName, Module1.ServerIndex)     If result = False Then         result = OPCServer.ConnectOPCServer("KEPware.KEPServerEx.V5", SrvName, Module1.ServerIndex)     End If     Module1.ServerIndex = Module1.ServerIndex + 1     If (result = True) Then                     With OPCServers            .Add OPCServer, SrvName         End With        Dim nodX As Node    'declareNode variable.        Set nodX = fMainForm.tvTreeView.nodes.Add(, , SrvName, OPCServerName)        nodX.EnsureVisible         Set Module1.SelectedOPCServer = OPCServer         Set Module1.SelectedOPCGroup = Nothing         Set Module1.SelectedOPCItem = Nothing         lvListView.ListItems.Clear     End If     End Sub 4.4 建立读取Item项部分代码 Function AddOPCItemMain(ByVal ItemID As String, ByVal DataTypeSelected As Integer, ByVal ActiveState As Integer)     Dim ItemKey As String     If Not Module1.SelectedOPCGroup Is Nothing Then If Module1.SelectedOPCGroup.AddOPCItem(ItemID, DataTypeSelected, ActiveState, ItemKey) = False Then        &

成为会员,继续阅读。
       

本文地址:http://www.ca800.com/apply/d_1o1ak73bk5331_1.html

拷贝地址

版权声明:版权归中国自动化网所有,转载请注明出处!

留言反馈
  • 评价:

  • 关于:

  • 联系人:

  • 联系电话:

  • 联系邮箱:

  • 需求意向:

  • 验证码:

    看不清楚?

  • 在线咨询