欢迎访问我的个人网站,网站正在创建期间,主要供自己学习交流使用!

Python通过OPC UA协议和WinCC通讯



  1. 使用KEPServerEX6WinCC通讯来实时查看变量

读取WinCC变量的数据类型和地址可以通过KEPServerEx实现

设置OPC服务器:opc.tcp://192.168.0.252:4862/

  1. OPC服务器端设置

1)系统启动OpcUaServerWinCC服务,查看端口4862是否开放

netstat -an

上述命令会显示当前开放的端口号以及应用程序占用的端口号,其中"-a"表示列出所有连线中的Socket,而"-n"表示不把界面和端口名转换成数字和名称,这样能大大提高查询效率

2)修改WinCC文件设置,并重启WinCC

安全策略Basic256,消息模式:SignAndEncrypt

3) OPENSLL生成Python连接证书

set OPENSSL_CONF=D:\works\Python_Qt\wincc\ssl.conf

openssl genrsa -out private_key.pem 2048

openssl req -x509 -days 365 -new -out certification.pem -key private_key.pem -config ssl.conf

a.生成私钥-首先,需要生成一个私钥,该私钥将与证书绑定,并用于加密和解密通信数据。私钥是一个保密的文件,只有证书持有者可以访问和使用。

b.创建证书签名请求-接下来,证书持有者需要使用私钥生成一个证书签名请求(CSR)CSR包含证书申请者的基本信息,如名称、组织机构等,并将公钥提交给证书颁发机构(CA)作为申请证书的证据。

c.验证申请者身份-CA会对申请者提交的信息进行验证,以确保其身份的真实性和合法性。这通常涉及到与申请者进行会话,并要求提供相关的id明文件,以验证其身份。

d.签发证书-一旦CA确认申请者的身份,它将使用自己的私钥对申请者的公钥和信息进行签名,生成一个包含申请者信息和签名的证书。该证书即为OPCUA证书,将与私钥一起提供给申请者。

e.安装证书-申请者需要将私钥和证书安装到其设备中,以便在OPC UA通信过程中进行身份验证和数据加密。私钥通常存储在受保护的区域,而证书则存储在可读取的位置。

f.验证证书-在建立OPC UA通信连接时,双方会交换证书以验证对方的身份。每个设备都会验证对方的证书,以确保其来自受信任的CA,并没有被篡改。

g.加密通信-一旦双方的证书被验证通过,他们将使用对方的公钥来加密和解密数据,确保通信数据的保密性。这样,即使在网络传输过程中被截获,也无法解密其中的内容。

PythonUA客户端)与WinCCUA服务器)通讯流程如下:

1.    UA客户端首次连接UA服务器时,客户端将获取服务器数字证书,验证是否可信任;

2.    UA客户端接受UA服务器证书,并将其存放于Client Certificate Store

3.    UA客户端发起创建环境请求,并传递Client.derUA服务器;

4.    UA服务器自动将Client.der存放于Rejected目录下,用户需要手动剪切至certs目录下。

在完成证书校验后,OPC UA服务器与客户端可以进行数据的交换。

4) 信任证书

client.connect后会在WinCC OPCUA服务器C:\Program Files (x86)\Siemens \WinCC\opc\UAServer\PKI\CA\rejected\certs 产生一个被拒绝的证书,将该证书移动到C:\Program Files (x86)\Siemens\WinCC\opc\UAServer\PKI\CA \certs下,然后安装该证书,将证书存储于-受信任的根证书颁发机构。


湘公网安备43012102001039    湘ICP备14007447号-1    邮箱:35744243#qq.com