OpenOPC

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.介绍大部分的DCS(集散控制系统)和很多新的设备(比如分析仪表)支持OPC(OLEforProcessControl)。OPC是数据历史存储的一个可选项,作为处理数据的一种工具。从另外一个电脑的第三方软件来通过OPC进行链接是一个很痛苦的过程。OPC使用微软的protocolsCOM(本地访问)和DCOM(远程访问)作为通讯手段,从而使得从其他操作系统,比如Linux访问很困难。远程访问通常要更改DCOM权限设置。Matrikon的网站上有文档来解释怎么来设置DCOM,但实际上,远程访问OPC链接的过程有诸多抱怨,特别是XPSP2的用户。OpenOPC就尝试改善这个情况,使用OpenOpc你可以从其他平台访问OPC服务器。OpcOpen通过安装一个服务,允许远程的TCP/IP链接传输OPC数据,从而越过DCOM来访问远程OPC服务器。这个网关协议将会安装在OPC服务器上,只要确保网关协议拥有正确的权限来访问本机上的OPC服务器就可以了。这个网关协议同样可以用在非windowns操作系统上,当然也就不支持DCOM。软件可以从下面的网址下载:这篇文档主要是站在用户的角度,来使用例子尽可能的解释OpenOPc软件是如何工作的。2.测试机上的安装在真实的产品环境下使用软件之前,在一个测试的机器上先实验是一个比较好的习惯。下面假设一个OPC软件已经安装到了一个windows机器上,而且运行良好,没有任何的故障和bug,接下来讲述一个OPC服务器和一个OpenOPC网关协议的安装,从而让远程计算机(可能非non-wooindow系统)来接收数据。下文中我们会把这台电脑叫做:server2.1安装OPC服务器如果要测试OpenOPC软件,就需要一个OPC服务器。Matrikon有免费的一个测试服务器,可以从下面的网址下载::这里还有很多的免费OPC服务器可供下载:工具已经在MarkOPC仿真服务器上进行了重度测试,默认的设定也都是连接到MarktrikonOPC服务器。毕竟这篇文档也是只要讲述怎么连接到MatrikonOPC服务器。两个不同的OPC服务器功能上也会有轻微的不同。在一台服务器上的所有功能并不能适用到另外一台服务器上。所有的OPC服务器一般都支持读和写,但是浏览(使用OPC服务器来查看在服务器上的变量)则一般都执行的不一样,甚至并非所有的OPC服务器都支持。相对于写入一个OPC服务器到DCS来说,这可能是(处于明显的原因)是附加的权限。2.2安装OpenOPC软件要安装OpenOPC软件,只要运行安装文件就可以了。当安装文件询问要安装哪些组件时:命令行客户端:这将安装命令行客户端(opc.exe),这也是一个功能很强大的命令行工具OPC网管协议:这个协议允许非windows机器来访问OPC数据,基本来说,这个协议获得OPC的数据,然后传送给需求数据的客户端。这个协议也允许避过DCOM的设置来获得数据。开发库:当你开发你自己的OPC应用的时候,你需要这个库。例子将会放在第四节。源代码:这个选项将会安装源代码,在客户端和网关服务器上。注意这个安装器将会警告,如果你没有安装Python的话。但是你的文件仍然会放在SRC文件夹中。这个文档并不讨论源代码。源代码仅仅占很小的空间。安装完毕之后不需要重启,但是如果你实在NT4.0上安装,最好重启一下。OpenOPC软件一般会安装在``C:\OpenOPC。如果你是在NT4.0上安装,安装器将会将msvcr71.dll(微软运行库)放在C:\WINNT\SYSTEM32文件夹。如果是XP的话,这个文件就已经有了。在Windows2000上,可能默认不会有,但是一般安装其他软件的时候,会被安装上。2.3本地快速测试软件的一些默认设置已经通过环境变量设置完毕,你可以通过在命令行中输入“SET”来看到设置:OPC_CLASS=Matrikon.OPC.Automation;Graybox.OPC.DAWrapper;HSCOPC.Automation;OPC_CLIENT=OpenOPCOPC_GATEHOST=localhostOPC_GATEPORT=7766OPC_HOST=localhostOPC_MODE=dcomOPC_SERVER=Hci.TPNServer;Matrikon.OPC.Simulation;Prosys.OPC.Simulation使用默认的设置来从MatrikonOPC服务器来读取数据,只要输入:opcRandom.Int4你可以获得默认OPC服务器的一下信息:opc-i你也可以列出本机上的OPC服务器的列表:opc-q如果OPC服务器支持浏览(比如MartrikonOPC服务器),你也可以搜索匹配的变量,使用通配符的形式:opc-f*.Real8然后就会从Martrikon仿真服务器获得一个列表:BucketBrigade.Real8Random.Real8ReadError.Real8Saw-toothedWaves.Real8SquareWaves.Real8TriangleWaves.Real8WriteError.Real8WriteOnly.Real8opc.exe对于管道有很好的支持,可以这样子命令行中读取OPC的值:opc-f*.Real8|opc-返回结果列表为BucketBrigade.Real80.0000Good22:41:16Random.Real816499.4963Good22:41:16ReadError.Real8-1073479676Good22:41:16Saw-toothedWaves.Real83.1416Good22:41:16SquareWaves.Real80.0000Good22:41:16TriangleWaves.Real83.1416Good22:41:16WriteError.Real80.0000Good22:41:162.4核查网关协议的安装网关服务器用于远程的客户端来获得OPC数据。接下来的小节介绍了怎么样来检查一个网关服务器通过远程客户端访问之前,是工作在正确的状态。首先检查任务管理器,看看进程“openopcservice”是否正在运行,如果没有,输入以下的命令来开启:NETSTARTzzzopenopcservice如果发生了像这样的错误“theservicenameisinvalid”,说明协议没有正确的安装,检查“OpenOPCService.exe”在C:\OpenOPC\bin,然后安装协议:openopcservice-install-autoNETSTAERzzzopenopcservice尝试着去列出网关服务器上的当前链接:opc-S尝试去使用网关服务器来读取一个变量:opc-mopenRandom.Int4接下来你可以坚信你的网关服务器正在处理数据了。关闭网关服务器然后再读取数据,你将会得到一条错误信息。3在客户端机器上的手动安装这个小节介绍了在一个独立的机器上(客户端)来手动安装OpenOPC软件。手动安装的目的是让用户有一个更清晰的认识,知道这个软件是怎么工作的。数据将会通过远程计算机上的网管协议进行处理,这将会绕开DCOM设置。客户端机器上不用安装OPC服务器。安装过程没有什么复杂的,只要复制“opc.exe”到新的机器上就可以了。复制的路径由你说了算,如果你使用的是NT4.0的话,你就需要把msvcr71.dll复制到C:\WINNT\SYSTEM32文件夹中。3.1使用网关从远程主机上读取一个值环境变量不会自动设置,如果我们没有运行安装程序的花,这意味着调用要指定一些选项。假设我们安装MatrikonOPC仿真和OpenOPC软件的机器(服务器)叫做“TESTBOX”。快速测试的话,opc.exe会告诉服务器上的网关协议,在客户端上执行下面的语句:opc-S-HTESTBOX这条命令将会显示连接到网关协议的远程连接,实际上现在还没有远程连接。如果有错误发生,就要确保远程机器上的网关协议正在运行。如果使用名字不能起作用的话,可以使用IP地址:opc-S-H10.36.16.100(replacewithIPaddressofTESTBOX)尝试从TESTBOX的MatrikonOPC服务器上读取一个值,使用下面的命令:opc-mopen-HTESTBOX-hTESTBOX-sMatrikon.OPC.Simulation-rRandom.Int4“-H”选项意思是我们要使用TESTBOX上的网关协议。“-h”选项制定远程主机的名字,“-s”选项指定OPC服务器的名字,“-r”选项意思是读,但这是可选的。你可以设定下面的环境变量来避免输入这么长的命令行,只要从命令行里面输入下面的命令就可以了:SETOPC_GATE_HOST=TESTBOXSETOPC_OST=TESTBOXSETOPC_MODE=openSETOPC_SERVER=Matrikon.OPC.Simulation设置完成之后,接下来的命令就简单多了:opc-rRandom.Int4(注意“-r”是可选项)。网关端口。网管协议使用端口7766作为默认的TCP/IP通讯。如果你更改这个端口数(设置环境变量OPC_GATE_PORT),你需要同时在服务器上和客户端上进行更改。无论是远程还是本地的电脑上面的防火墙都会造成链接问题,要确保网关端口在服务器和客户端上都是开放的。要检查网管协议正在使用的端口号可以使用下面的命令:opc-rRandom.Int4-L1这条命令假设你的环境变量已经设置过了。“-L1”选项告诉opc.exe程序来处理数据,每隔一秒的间隔。现在接着输入“netstat”来看看TCP/IP的链接,你可以清晰的看到端口7766已经被TCP/IP使用。服务器上的网管协议也可以被用来显示链接信息。执行下面的语句就可以了:opc-S-HTESTBOX输出将会是下面的这个样子的:RemoteClientStartTimeLastTransaction10.36.16.58(labtop)06/27/0814:53:0106/27/0814:53:074使用python开发OPC应用程序OpenOPC的真正强大之处是在于能够使用python来进行编程。Python提供了非常轻松的链接到许多数据库,也很轻松开发网络应用。python可以运行在很多平台上,包括Windows,Linux,也许PDA上也可以。为了进行下面的学习,一些Python的插件包是需要的(看看包含在OpenOPC包中的readme.txt文件):PythonRomoteObjects(Pyro)PythonforWindowsExtensions(pywin32)这篇文档并不介绍怎么使用Python来处理OpenOPC,仅仅是知道可以使用python来编写强大的应用程序来访问OPC数据。4.1简单的例子下面是一个简单的代码列表,来展示下从远程的网关服务器上来读取两个OPC的值:importOpenOPCgateway=’testbox’opchost=’testbox’opcserv=’Matrikon.OPC.Simulation’taglist=[’Random.Int4’,’Random.Real4’]print’ConnectingtoGatewayServeron:’,gatewayopc=OpenOPC.open_client(gateway)opc.connect(opcserv,opchost)v=opc.read(taglist)opc.close()fori

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功