L/O/G/O工控系统中数据的读取技术(下)问题:如何开发OPC客户端程序网络环境部署和DCOM配置检查OPC组态情况查找OPC服务器123代码编写方法4查找OPC服务器——确定现有网络拓扑面对一个新的需要采集OPC数据的工控网络,首先要搞清楚控制网络的网络结构及类型,如果是PLC网络,要搞清PLC的品牌型号、已经采集数据的工位点的数量、工控网络内的通信方式、工程师站和操作站各有哪些,是否和其它的一般局域网络连接等等。查找OPC服务器使用第三方工具(例如WXOPC)或PLC厂商提供的工具,在工程师站或操作站上运行,来浏览工程师站或操作站上安装的OPC服务器。检查OPC组态情况使用第三方工具(如WXOPC)或PLC厂商提供的工具,在工程师站或操作站上运行,连接到要读取数据的OPC服务器,检查该OPC服务器的组态情况,浏览下需取数的工位点数据是否已经组态完毕。如果组态未完毕,联系仪表工程师或相关人员。确定、搭建测试网络或正式网络开发OPC客户端程序前,最好先连接好取数所需的网络环境,部署好OPC客户端程序所在的计算机,并做好安全隔离,采取严格的安全措施。先期部署有利于程序的测试。如果现场测试条件不具备或不允许测试,也可在其他地方建立模拟环境。取数网络的搭建原则M网络结构保持简单不改变原有控制网络主体结构123安全稳定是首要原则(网络隔离、相关软硬件的安全措施和稳定性考虑)DCOM配置M配置DCOM的步骤什么是DCOM123为什么要配置DCOM什么是DCOM直白点说,DCOM就是远程访问COM组件。因为OPC服务器是一种COM组件,一般OPC客户端程序运行的计算机和OPC服务器所在的工程师站(操作站)不是同一台电脑,因此客户端程序要通过局域网远程访问OPC服务器的COM接口,因此需要DCOM支持。DCOM基于组件对象模型(COM),DCOM即分布式组件对象模型,是Windows提供的远程访问COM组件的机制,利用这些机制,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。,Windows对DCOM提供了原生支持,使用一系列机制能够使COM组件能被远程访问。主要包括DCOM远程通讯的支持、代理和存根的支持、通信安全的支持等。DCOM技术要点MCOM对象的远程激活借助RPC技术实现通信123代理和存根严格的安全配置4为什么要配置DCOMM取到OPC服务器的数据!让Windows机制知晓123DCOM的安全策略要求DCOM相关配置步骤MWindows账号配置检查防火墙及Windows服务123Windows安全策略配置(仅服务端)4服务端DCOM配置(仅服务端)检查防火墙及Windows服务MServer服务最好禁用Windows防火墙123Workstation服务4RPC服务服务端计算机DCOM配置(一)“开始”—“运行”—“dcomcnfg”,在树目录中右键点击“我的电脑”,在弹出的界面中选择“默认属性”选项卡,将默认身份验证级别设为“无”。服务端计算机DCOM配置(二)1.点击“COM”安全选项卡,点击上半部“访问权限”中的“编辑默认值”(左图)。2.在弹出的界面中,添加用户Everyone和ANONYMOUSLOGON,本地访问和远程访问选择允许。(中图)3.点击“COM”安全选项卡,点击上半部“访问权限”中的“编辑限制”(左图)。添加用户Everyone和ANONYMOUSLOGON,本地访问和远程访问选择允许。(右图)服务端计算机DCOM配置(三)1.点击“COM”安全选项卡,点击下半部“启动和激活权限”中的“编辑默认值”(左图)。2.在弹出的界面中,添加用户Everyone和ANONYMOUSLOGON,本地启动和激活和远程启动和激活选择允许。(中图)3.点击“COM”安全选项卡,点击下半部“启动和激活权限”中的“编辑限制”(左图)。添加用户Everyone和ANONYMOUSLOGON,本地启动和激活和远程启动和激活选择允许。(右图)服务端计算机DCOM配置(四)1.“开始”—“运行”—“dcomcnfg”,在树目录中依次找到“我的电脑”—“DCOM配置”—OPC服务组件名称节点(图中ACORTInfo只是示例),右键单击此节点选择“属性”。(左图)2.在弹出的界面中,选择“常规”选项卡,身份验证级别设置为“无”(中图)3.选择“标示”选项卡,选择“交互式”用户(右图)Windows账号配置1.在桌面上右击“我的电脑”,在菜单中选择“管理”,在界面的树中选择“本地用户和组”。2.在右侧界面中,为OPC访问添加一个新的专用账号并设置密码(用户名OPC只是示例名,其它任意名字皆可),一般隶属于User组即可,必要时可添加至管理员组Administrators。OPC客户端和服务端最好都添加相同的账号,配置相同,最好密码也相同。服务端本地安全策略配置1.“开始”—“运行”—“Secpol.msc”,在树目录中依次找到“本地策略”-“安全选项”节点,点击该节点。(左图)2.在界面右半部列表中,将“网络访问:本地账户的共享和安全模型”设为经典。(左图)3.在界面右半部列表中,将“网络访问:将Everyone权限用于匿名用户”设为已启用。(右图)OPC客户端的开发要点(C#)M谨慎选择同步或异步读写方式引入相关DLL123调用类的相关函数OPC服务器的两种接口类型COM组件在开发时,可以输出两种类型的接口,一种为自定义接口,一种为自动化接口(IDispatch接口),自定义接口一般由C++编写的程序调用,调用时较为繁琐,全部使用COM相关的WindowsAPI,自动化接口调用较为简单,为调用方隐蔽了COM开发的相关细节,调用自动化接口不需要掌握太多的COM编程知识。自动化接口一般由VB、C#、Delphi、JavaScript等语言开发的程序调用。引入相关DLLDLL类型(前三种为OPC基金会提供):•使用OPCNetAPI2.0,需要用到OPCNetAPI.dll,OPCNetAPI.Com.dll;使用自动化接口,需要用到OPCDAAuto.dll;使用自定义接口,需要用到多个.NETWrapper:OpcRcw.Ae.dll,OpcRcw.Batch.dll,OpcRcw.Comn.dll,OpcRcw.Da.dll,OpcRcw.Dx.dll,OpcRcw.Hda.dll,OpcRcw.Sec.dll;特定厂商提供的DLL,如RsiOPCAuto.dll读取实时数据OPC客户端的流程使用自定义接口的流程,使用自动化接口与之相似C#开发OPC客户端的流程:三大步M同步或异步读写数据声明和初始化OPC服务器类对象123组管理GO!关于同步和异步M根据实际场景灵活选择同步读写影响性能,异步读写影响时序123适时引入多线程读写具体实例参照附件:1、如何在C#中实现OPC数据访问.pdf2、横河CS3000OPCDEMO