浙大中控opc服务器在电脑怎么查找
ForeverCreditOPCServer服务器软件,简称OPCServer。
OPC客户端的使用方法:
建立和删除OPC设备:
组态王中支持多OPC服务器。
在使用OPC服务器之前,需要先在组态王中建立OPC服务器设备。
在组态王工程浏览器的设备”项目中选中OPC服务器”,工程浏览器的右侧内容区显示当前工程中定义的OPC设备和新建OPC”图标。
双击新建”图标,组态王开始自动搜索当前的计算机系统中已经安装的所有OPC服务器,然后弹出查看OPC服务器”对话框。
OPC设备定义:
网络节点名”编辑框中为要查看OPC服务器的计算机名称,默认为本机”。
如果需要查看网络上的其它站点的OPC服务器,在编辑框中输入节点的UNC路径。
如计算机名称为数据采集站”,则输入数据采集站”,然后单击查找”按钮,如果查找成功,则在右边的OPC服务器”列表中显示目标站点的所有已安装的OPC服务器名称,如果没有查找到,则提示查找失败。
OPC服务器信息”文本框中显示OPC服务器”列表中选中的OPC服务器的相关说明信息,如选中KingViewView1”,则在信息中显示KingViewView”。
读写方式”是用来定义该OPC设备对应的OPC变量在进行读写数据时采用同步或异步方式,尝试恢复间隔”和最长恢复时间”用来设置当组态王与OPC服务器之间的通讯出现故障时,系统尝试恢复通讯的策略参数。
订阅频率”,目前组态王异步读是按照订阅的方式实现的,可以根据不同的需要进行设置,使用动态优化”是组态王对通讯过程采取动态管理的办法。
尝试恢复间隔”,最长恢复时间”,使用动态优化”的具体含义与IO设备定义向导中的相同。
用户可以在列表中选择所需的OPC服务器。
单击确定”按钮,查看OPC服务器”对话框自动关闭,OPC设备建立成功。
OPC服务器的建立:
对于已经建立的OPC设备,如果您确认不再需要,可以将它删除。
选中要删除的OPC设备,单击鼠标右键,在弹出的快捷菜单中选择删除,弹出的提示信息,如果选择是”,则将该设备从组态王中删除。
使用NI OPC服务器查看现有的PLC标签
1 选择开始》程序》National Instruments》NI OPCServers》NI OPCServers,启动NI OPC服务器。使用NI OPC服务器,您可以创建、配置、查看与PLC关联的标签。
2 NI OPC服务器需要与已经载入的PLC仿真工程一起启动。这个工程仿真在NI OPC服务器中已经建立配置的PLC。
说明:如果没有载入仿真工程,在NI OPC服务器中选择文件》打开,浏览C:\Program Files\National Instruments\Shared\NI OPC Servers\Projects\simdemoopf。工程如图1所示。
图1:显示仿真PLC的NI OPC服务器
展开Channel_0_User_Defined,选择Sine,查看正弦标签。标签在最右边的窗口中显示。这些标签被绑定到PLC的寄存器上,由LabVIEW读取。
通过PLC OPC标签查看数据。
1 在NI OPC服务器中,选择Tools»Launch OPC Quick Client。这样可以启动OPC快速客户端,您可以用来查看OPC标签数据。
2 展开National InstrumentsNIOPCServers文件夹,选择Channel_0_User_DefinedSine。这样可以选定需要监视的设备。
3 请注意所有的正弦标签都列出在右边的窗口中,且如图2所示正在更新显示仿真正弦数据。
图2:NI OPC快速客户端显示仿真正弦OPC标签
说明:要获取NI OPC支持的设备/驱动程序列表,请访问nicom/opc。
通过创建I/O服务器将LabVIEW连接到OPC标签
在本小节中,将创建OPC标签的LabVIEW接口,称为I/O服务器。I/O服务器以您指定的速率,用当前标签数值更新LabVIEW。
1 在LabVIEW的使用入门窗口中,点击文件》新建项目。这将打开新建LabVIEW项目。
2 如果即时帮助窗口不可见,按Ctrl+H键显示窗口。保持窗口打开,可以得到鼠标指针所指向对象的帮助信息。
3 在LabVIEW项目浏览器窗口中,右键点击我的电脑,选择新建》I/O服务器,如图3所示。
图3:通过LabVIEW项目新建I/O服务器
4 在新建I/O服务器窗口中选择OPC客户端,点击继续。
5 仍已注册OPC服务器框中选择National InstrumentsNIOPCServers,设置更新速率(ms)为100。这将创建LabVIEW与OPC标签的连接,每隔100 ms更新。
Figure 4 Configuring the OPC Client I/O Server
6 选择确定。在您的项目浏览器窗口中自动创建了库,用于管理I/O服务器。
7 仍项目浏览器窗口中选择文件》保存所有,将项目保存为OPCDemoProject,将库保存为OPCDemoLibrary。
创建通过I/O服务器连接到OPC标签的共享变量
在本小节中,将创建绑定到OPC标签上的共享变量,仍而可以在LabVIEW中本地访问PLC数据。使用共享变量,您可以在一台计算机或是网络中,在多个LabVIEW应用程序间共享数据。
创建绑定到PLC OPC标签上的新共享变量。
在LabVIEW项目窗口中,右击我的电脑,选择新建》库。这样可以为共享变量建立一个新库,用于连接到PLC的OPC标签。
右击新建的库,选择创建绑定变量……
在创建绑定变量窗口中,选择OPC标签,通过浏览来自OPC服务器的仿真正弦数据,选择共享变量所需绑定的OPC标签,如图5所示。
图5:选择需要绑定到共享变量的OPC标签
4 选择所有正弦项目,点击添加确定。这样就创建了绑定到PLC OPC标签上的共享变量,将它们载入到多变量编辑器中。
5 在多变量编辑器中,选择完成。这将把新的共享变量添加到前所建立的库中。
说明:LabVIEW DSC模块通过为数据库直接添加记录数据、报警和事件的功能,在无需编写LabVIEW应用程序的情冴下,增强了共享变量。
通过右击库,选择另存为,将新库以OPCItemlvlib为文件名保存在项目浏览器窗口中。
通过右击OPCItems库,选择部署,对共享变量部署。这样就可以収布共享变量,使它们可以在网络上通过其他计算机、OPC客户端和LabVIEW实时自动化控制器(PAC)使用。
您现在可以通过共享变量在LabVIEW中本地访问PLC数据。
第62行的代码,DCOM既然是远程服务器,那它就应该是可以运行在另外一台机器上,然后被其他机器的客户端所使用。所以C++的客户端代码里,你可以通过编程的方式指定服务器的名称,但是对于C#来说,因为连接到DCOM服务器并激活COM对象的操作是由CLR完成的,没有办法在代码里指定。不过不用着急,指定DCOM服务器还有另外一个方式,就是修改注册表的键值,告诉本机的COM运行库,服务器在另外一台机器上,请把下面的键值添加到客户端机器的注册表里:
HKEY_CLASSES_ROOT\APPID\{5e9ddec7-5767-11cf-beab-00aa006c3606}\RemoteServerName=<机器名>
下面的是我的代码
public void ListAll(Guid catid, out OpcServers[] serverslist)
{
serverslist = null;
Dispose();
Guid guid = new Guid("13486D51-4821-11D2-A494-3CB306C10000");
Type typeoflist = TypeGetTypeFromCLSID(guid);
OPCListObj = ActivatorCreateInstance(typeoflist);
ifList = (IOPCServerList)OPCListObj;
if (ifList == null)
MarshalThrowExceptionForHR(HRESULTSE_ABORT);
ifListEnumClassesOfCategories(1, ref catid, 0, ref catid, out EnumObj);
if (EnumObj == null)
MarshalThrowExceptionForHR(HRESULTSE_ABORT);
ifEnum = (IEnumGUID)EnumObj;
if (ifEnum == null)
MarshalThrowExceptionForHR(HRESULTSE_ABORT);
int maxcount = 300;
IntPtr ptrGuid = MarshalAllocCoTaskMem(maxcount 16);
int count = 0;
ifEnumNext(maxcount, ptrGuid, out count);
if (count < 1)
{ MarshalFreeCoTaskMem(ptrGuid); return; }
serverslist = new OpcServers[count];
byte[] guidbin = new byte[16];
int runGuid = (int)ptrGuid;
for (int i = 0; i < count; i++)
{
serverslist[i] = new OpcServers();
MarshalCopy((IntPtr)runGuid, guidbin, 0, 16);
serverslist[i]ClsID = new Guid(guidbin);
ifListGetClassDetails(ref serverslist[i]ClsID,
out serverslist[i]ProgID, out serverslist[i]ServerName);
runGuid += 16;
}
MarshalFreeCoTaskMem(ptrGuid);
Dispose();
}
用此代码连接本地OPC服务器是没有问题的,但是通过上面对注册表的编辑,将服务器换成远程服务器,就不能访问,代码运行起来还是连接的是本地OPC服务器。请教各位我该如何设置才能连接远程OPC服务器
0条评论