记使用kepserver模拟opcserver端,使用代码连接kepserver的过程。
opc存小白,且用的还是不擅长的C#语言。
①下载Kepserver,不多赘述。
②配置OPCUA本地访问KepServer实现【匿名登陆】【https://blog.csdn.net/xiaochenXIHUA/article/details/117070003】
a:
b:打开【OPC UA 配置】界面编辑默认的服务端点url,如下图配置所示
c:打开KEPServerEX 6 Configuration软件进行如下设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/aeb9ca3f3e89441b8d3d2f657fc37390.png
d:重新初始化
③在代码中尝试连接,这段代码大家应该不陌生,直接用的OPC UA的连接方法。
/// <summary>
/// 无用户名密码登陆,前提服务器登陆不需要用户名密码
/// </summary>
/// <param name="opcServerURL"></param>
/// <returns></returns>
public bool ConnectOpcServerWithNoPwd(string opcServerURL)
{
bool conStatus = false;
opcUaClient.UserIdentity = new UserIdentity();
Task t1 = opcUaClient.ConnectServer(opcServerURL);
Task.WaitAll(t1);
if (t1.Status == TaskStatus.RanToCompletion)
{
conStatus = true;
}
else
{
conStatus = false;
}
return conStatus;
}
a:首次连接报错
Opc.Ua.ServiceResultException: ApplicationCertificate must be specified.解决必须指定应用程序证书问题。
不知道是不是需要证书。
我就用UaExpert软件尝试连接下KEPserver的服务器
这个是配置
b:然后第一次连接还是报错
添加完成后,UaExpert并未自动连接UA服务器,需要选中UA服务器并点击导航栏的连接图标,才会连接UA服务器。如UA服务器证书属于自签名证书,将弹出如下提示,点击信任服务器证书按钮,点击continue按钮即可。
c:完成后就可以正确访问到kepserver中的信息
④然后这时候去代码中访问kepserver的信息
此时显示代码可以连接到kepserver
结论:判断是因为没有kepserver证书属于自签名证书,需要本地信任,但是代码里面不清楚在哪里添加。使用UaExpert后给本地添加了信任文件,然后代码就可以访问了。