如何通过opc与服务器对接
① opc客户端与服务器建立连接
服务器的话要看,如果是client-server结构的DCS,服务器位于上位和控制器之间,他将你的指令和现场数据通过服务器来经过交换,服务器一般是冗余配置,如果是并行结构来说没有所谓服务器的概念,只有个工程师站,程序的下装通过工程师站,但是数据的获取和指令的下达通过操作员站就行,这个好处就是当工程师站坏了的话操作员站可以正常工作
OPC服务器的作用是通过OPC协议将DCS的数据取出,并开放,一般一个OPC服务器下面连接一个或多个客户端,客户端通过安装相应的软件(也支持OPC协议),来取得DCS的协议
② wincc如何通过opc与外部设备连接
通过 OPC scout实现。
是从opc server中获得相关plc数据,用于监控指定的数据 ,是专门针对西门子PLC的OPC服务器。
当然也可以用其他的OPC服务器,在OPC服务器上加载相关的驱动,连接即可。
然后在wincc的变量连接里,添加OPC连接,就可以看到你OPC服务器上发布的变量了。
需要注意的是:OPC服务器连接相关的设备是需要这些设备的OPC驱动的。
③ opc服务器和客户端如何连接,通讯
服务器的话要看,如果是client-server结构的DCS,服务器位于上位和控制器之间,他将你的指令和现场数据通过服务器来经过交换,服务器一般是冗余配置,如果是并行结构来说没有所谓服务器的概念,只有个工程师站,程序的下装通过工程师站,但是数据的获取和指令的下达通过操作员站就行,这个好处就是当工程师站坏了的话操作员站可以正常工作
OPC服务器的作用是通过OPC协议将DCS的数据取出,并开放,一般一个OPC服务器下面连接一个或多个客户端,客户端通过安装相应的软件(也支持OPC协议),来取得DCS的协议
乐拾芗逸盆然朵邢浏晔链特磊枫待谨璀楷塘丞彰
④ C#如何连接西门子Wincc的OPC服务器
1. 可在安装Wincc的主机上配置西门子的虚拟主机,并在虚拟主机内配置OPC-Server 及通讯卡,可以是CP5611 系列,或普通以太网卡,2.使s7-300配置通讯卡与计算机相连3.在WinCC 内的驱动程序中添加OPC驱动程序这样便可实现s7-300与wincc通过opc方式连接
⑤ 如何通过代码连接远程OPC服务器
第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 = Type.GetTypeFromCLSID(guid);
OPCListObj = Activator.CreateInstance(typeoflist);
ifList = (IOPCServerList)OPCListObj;
if (ifList == null)
Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);
ifList.EnumClassesOfCategories(1, ref catid, 0, ref catid, out EnumObj);
if (EnumObj == null)
Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);
ifEnum = (IEnumGUID)EnumObj;
if (ifEnum == null)
Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);
int maxcount = 300;
IntPtr ptrGuid = Marshal.AllocCoTaskMem(maxcount * 16);
int count = 0;
ifEnum.Next(maxcount, ptrGuid, out count);
if (count < 1)
{ Marshal.FreeCoTaskMem(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();
Marshal.Copy((IntPtr)runGuid, guidbin, 0, 16);
serverslist[i].ClsID = new Guid(guidbin);
ifList.GetClassDetails(ref serverslist[i].ClsID,
out serverslist[i].ProgID, out serverslist[i].ServerName);
runGuid += 16;
}
Marshal.FreeCoTaskMem(ptrGuid);
Dispose();
}
用此代码连接本地OPC服务器是没有问题的,但是通过上面对注册表的编辑,将服务器换成远程服务器,就不能访问,代码运行起来还是连接的是本地OPC服务器。请教各位我该如何设置才能连接远程OPC服务器
⑥ 如何配置远程运行的OPC服务器
主要软件版本: 7.1 主要软件修正版本:次要软件: N/A 解答: 如果你正在通过DataSocket,使用opc的网页地址(URL)连接一个OPC服务器并且得到拒绝访问的错误的话,你可以使用windows应用工具,dcomcnfg.exe将OPC服务器配置成为远程运行模式。如果你使用dcomcnfg.exe并选择了一个远程服务器的话,该服务器只能在本地计算机或者远程的计算机上运行一个版本。你不能在多台计算机上运行同样的服务器。 如果你正在通过DataSocket,使用opc的网页地址(URL)连接一个OPC服务器,可以按照以下的步骤完成OPC服务器的配置。 1. 查找并运行dcomcnfg.exe。 2. 单击“应用”标签。 3. 从列表中选择OPC服务器。 4. 单击属性按钮调出属性对话框。 5. 单击“位置”标签。 6. 取消“在本机运行应用程序”复选框的选择,同时选择“在以下的计算机上运行应用程序”的复选框。 7. 输入远程计算机名或者单击”浏览”按钮,选择你的远程计算机。 8. 单击“确定”按钮。 9. 单击“默认属性”标签,设置以下选项。 1. 选择“在本机上使能DCOM功能”。 2. 设置“默认的签证等级”为连接。 3. 设置“默认的身份模拟等级”为识别。 10. 单击“默认安全”标签。 11. 单击“编辑默认”按钮。确保你想要运行OPC服务器的计算机允许你的计算机的访问。这对于远程计算机访问你的计算机上的DSC模块以存储OPC数值,是十分必要的。 12. 单击“确定”按钮。