251126-西门子wincc 读取变量地址 如何通过tcp协议

西门子wincc 读取变量地址 如何通过tcp协议

WinCC 本身并不提供“裸 TCP”方式去直接读写 PLC 变量,它只通过 3 类“带应用层协议”的通道与 CPU 打交道,这 3 条通道全部跑在 TCP
之上,因此只要 PLC 的以太网口没被禁用,就可以“用 TCP 读地址”,区别只是你在 WinCC 里选哪条通道、填什么地址。下面把 3 种场景一次说清:

1. S7 Protocol Suite(端口 102,原生 S7 协议)

  • 适用:S7-300/400/1200/1500
  • PLC 侧要求:
    – 硬件组态 → “允许在线访问”必须打钩;
    – 如果只想“读”,可以不勾“允许 PUT/GET”;WinCC 用的是周期读服务,不走 PUT/GET。
  • WinCC 侧步骤:
    1. 变量管理器 → 右键“添加新的驱动程序” → 选“SIMATIC S7 Protocol Suite.chn”;
    2. 在“TCP/IP”单元下建“新连接”,填入 PLC 的 IP 地址(如 192.168.0.1),端口固定 102;
    3. 在连接下建变量,地址直接写绝对地址,如 DB100,DW20、M50.0、IW256;符号名读不到。
  • 特点:速度最快,支持位、字节、字、双字、浮点;1200/1500 的优化块必须关掉“优化的块访问”。

2. Modbus TCP(端口 502,需要 PLC 做 Modbus 服务器)

  • 适用:
    – 200 SMART、S7-1200/1500(需调用 MB_SERVER 指令),或第三方仪表。

  • PLC 侧:
    – 在程序里插入 MB_SERVER,指定寄存器映射(例如 %MW1000 对应 40001)。

  • WinCC 侧:

    1. 变量管理器 → 添加驱动“Modbus TCP/IP.chn”;

    2. 建连接,IP 填 PLC 地址,端口 502,Slave ID 255;

    3. 建变量,地址用 Modbus 格式:。

  • 特点:跨品牌通用,但只能访问连续寄存器区,位变量要按字读回后再位屏蔽。

3. OPC UA / OPC Classic(端口 4840 或 4862,走 TCP)

  • 适用:S7-1200/1500 自带 OPC UA 服务器;WinCC 也可以当 OPC Client。

  • PLC 侧:
    – 激活“OPC UA 服务器”并建证书,把需要访问的变量拖进“OPC UA 元素”。

  • WinCC 侧:

    1. 变量管理器 → 添加“OPC UA WinCC Channel”;

    2. 新建连接,URL 写 opc.tcp://PLC_IP:4840;

    3. 浏览名称空间,直接把符号变量拖进来即可,无需记绝对地址。

  • 特点:能读符号名、结构体、数组,安全性高,适合多客户端同时访问。

快速选型建议

  • 手里是纯西门子方案,追求极简配置——直接用“S7 Protocol Suite.chn”,端口 102,地址写绝对地址即可。
  • PLC 是 200 SMART,或者需要第三方一起读——用 Modbus TCP,端口 502,PLC 里先做 MB_SERVER。
  • 想读符号名、结构体,或者以后上云——用 OPC UA,端口 4840。

只要记住:WinCC 必须通过上述 3 种“应用层协议”之一才能解析变量,裸 TCP 套接字方式在 WinCC 端是不开放的。