当前位置: 华文世界 > 数码

0216 【万泉河】 WINCC与TC2实现OPC UA通讯

2024-02-16数码

0216 【万泉河】 WINCC与TC2实现OPC UA通讯

两台电脑(或虚拟机系统):

电脑1:

操作系统:WIN7 32位

安装软件:

BECKHOFF TWINCAT V2.11.2308

BECKHOFF TwinCAT OPC UA Configurator V3.2.1

SIEMENS OPC UA CLIENT V2.2(无需安装,直接复制使用,也可以随便其它的OPC UA CLIENT工具)

电脑2:

操作系统:WIN10 64位

安装软件:

SIEMENS WINCC 7.5

步骤:

  1. 新建PLC工程,类型选择x86 , 即使用本电脑模拟PLC RUNTIME运行。
  1. 主程序MAIN中输入语句:

AAA:=AAA+1;

  1. 输入完成后自动在MAIN的局部标签中建立变量AAA,类型INT, 并在变量后面添加注释(* ~ (OPC : 1 : available for OPC-clients) *)。完成后程序如图:

Rebuild All并存盘。

  1. 在TWINCAT SYSTEM MANAGER中选择程序,并Active Configuration激活配置
  1. PLC程序下载到RUNTIME中,LOGIN并START后,可以看到变量AAA数据在增长,PLC程序运行成功。
  2. 打开TwinCAT OPC UA Configurator,配置驱动,并将PLC程序指定给Symbol File。
  1. 激活配置并Restart Server 重启动服务。在Online Panel中得到endpoints地址:

TcOpcUaServer@TC2 [None, None] [opc.tcp://TC2:4840]

其中TC2为电脑名称。

  1. 本机运行Siemens.OpcUA.Client.exe,输入endpoints地址,点connect连接
  2. 在提示对话框时选择Y,则连接成功
  3. 浏览树中找到注册的变量AAA,将其拖拽到下方的监控窗口,即看到了数值在变化,说明OPC UA通讯成功。
  1. 另一台电脑2中,在局域网网络常通的情况下,同样运行OPC UA CLIENT,也同样可以成功。
  2. 打开WINCC,新建项目,新建OPC UA驱动, 右键选择「连接参数」:

弹出的窗口中 <双击以添加服务器>的位置,填入服务器地址opc.tcp://TC2:4840

图6.7‑6 OPC条目管理器

  1. 完成后回到右键菜单中,点「浏览OPC服务器」,浏览到OPC驱动中的变量,选中后即在WINCC中建立了变量。
  2. 然后WINCC变量表中可以看到增加了驱动连接和变量,标题中取消隐藏列「值」,即显示数值列,激活WINCC运行模式,即看到变量的值:

图‑8 WINCC变量运行值

与PLC中运行值同步变化,证明通讯成功。

  1. WINCC中建立画面,画面中加入变量,可以显示和修改数值。

即实现了WINCC与TC2 PLC的OPC UA 通信功能。

如果将WINCC换做其它支持OPC UA的上位机系统,同样的方法也可以成功。而如果从OPC UA换成其它的通讯协议,也都同样可以。只要选择上位机和PLC同时支持的协议即可。

理论上讲, 上述的实验当然也可以在同一台电脑上完成。 只要电脑上同时安装了所有软件。 然而在实际操作中发现,当电脑上安装了WINCC之后, 原本组态成功的TcOpcUaServer会失效。经过研究发现是因为WINCC安装时也自动带了OPC UA SERVER组件,两者可能发生了干扰。 将WINCC OPC UA SERVER卸载后即可通讯正常。 然而也还有其他方面的问题。有读者如要测试,请留意其中的坑。

本文是我正在撰写的新书【倍福标准化编程烟台方法】的其中一节。 标准化编程烟台方法实现了编程的模块化,即在原本S7-1500+WINCC的配置下,可以只将S7-1500更换为倍福PLC,即实现了程序移植,而WINCC部分可以保留不动。 当然这只是第一步。 只要需要,还可以继续进行模块化的更换,比如上位机从WINCC更换为其它类型的软件或者HMI。

在进行移植的第一步时,选择了OPC UA协议作为WINCC与TC2的通讯协议,原本这些属于基础的通讯技能,然而考虑到大多数的读者之前未做过相关配置的通讯,所以就把这部分基础功能先演示讲解。并在完成这个章节后第一时间发表在公众号上,奉献给读者。

如果有读者想演练复现文中实现的功能,缺少的软件可以私信向我索取。