如何学习c#开发opcclient

如何学习c#开发opcclient,第1张

展开全部
新建C#应用程序,命名为OPC
Client,将OPCAutomationdll引用,如图。
using
OPCAutomation;
2
定义OPC的三个接口类OPCServer类、OPCGroup类和OPCItem类;
OPCServer
KepServer;
OPCGroups
KepGroups;
OPCGroup
KepGroup;
OPCItems
KepItems;
OPCItem
KepItem;
3
枚举网络OPC服务器
枚举OPC服务器用到GetOPCServers()函数
//获取计算机IP,计算机名称
IPHostEntry
IPHost
=
DnsResolve(EnvironmentMachineName);
if
(IPHostAddressListLength
>
0)
{
strHostIP
=
IPHostAddressList[0]ToString();
}
else
{
return;
}
//通过IP来获取计算机名称,可用在局域网内
IPHostEntry
ipHostEntry
=
DnsGetHostByAddress(strHostIP);
strHostName
=
ipHostEntryHostNameToString();//获取本地计算机上的OPCServerName
try
{
KepServer
=
new
OPCServer();
object
serverList
=
KepServerGetOPCServers(strHostName);
//枚举网络所有OPC服务器并写入ComboBox控件
foreach
(string
turn
in
(Array)serverList)
{
cmbServerNameItemsAdd(turn);
}
cmbServerNameSelectedIndex
=
0;
btnConnServerEnabled
=
true;
}
catch
(Exception
err)
{
MessageBoxShow("枚举本地OPC服务器出错:"
+
errMessage,
"提示信息",
MessageBoxButtonsOK,
MessageBoxIconWarning);
}
4
连接OPC服务器
try
{
KepServerConnect(remoteServerName,
remoteServerIP);
if
(KepServerServerState
==
(int)OPCServerStateOPCRunning)
{
tsslServerStateText
=
"已连接到-"
+
KepServerServerName
+
"
";
}
else
{
//这里你可以根据返回的状态来自定义显示信息,请查看自动化接口API文档
tsslServerStateText
=
"状态:"
+
KepServerServerStateToString()
+
"
";
}
}
catch
(Exception
err)
{
MessageBoxShow("连接远程服务器出现错误:"
+
errMessage,
"提示信息",
MessageBoxButtonsOK,
MessageBoxIconWarning);
return
false;
}
5
创建组和列出OPC服务器中所有节点
//创建组
try
{
KepGroups
=
KepServerOPCGroups;
KepGroup
=
KepGroupsAdd("OPCDOTNETGROUP");
SetGroupProperty();
KepGroupDataChange
+=
new
DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);
KepGroupAsyncWriteComplete
+=
new
DIOPCGroupEvent_AsyncWriteCompleteEventHandler(KepGroup_AsyncWriteComplete);
KepItems
=
KepGroupOPCItems;
}
catch
(Exception
err)
{
MessageBoxShow("创建组出现错误:"+errMessage,"提示信息",MessageBoxButtonsOK,MessageBoxIconWarning);
return
false;
}
//列出OPC服务器中所有节点
//展开分支
oPCBrowserShowBranches();
//展开叶子
oPCBrowserShowLeafs(true);
foreach
(object
turn
in
oPCBrowser)
{
listBox1ItemsAdd(turnToString());
}

服务器的话要看,如果是client-server结构的DCS,服务器位于上位和控制器之间,他将你的指令和现场数据通过服务器来经过交换,服务器一般是冗余配置,如果是并行结构来说没有所谓服务器的概念,只有个工程师站,程序的下装通过工程师站,但是数据的获取和指令的下达通过 *** 作员站就行,这个好处就是当工程师站坏了的话 *** 作员站可以正常工作
OPC服务器的作用是通过OPC协议将DCS的数据取出,并开放,一般一个OPC服务器下面连接一个或多个客户端,客户端通过安装相应的软件(也支持OPC协议),来取得DCS的协

sim simulation driver只相当于一个内部变量使用的驱动,你不给变量值,它就默认为0。要使用OPC,需要在在OPC POWERTOOL里面设置变量地址,这些地址要来自opc服务器,然后再标记数据库中就可以建立标记符号,去对应opc powertool中的地址。这样是比直接连接KEPOPC通道来的麻烦,但可以进入标记数据库,可以设置报警等等好多功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10765192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存