现在 MES、SCADA、云平台上位机要数据,首选几乎都是 OPC UA —— 跨厂商、带加密、能建模。西门子 S7-1200 / S7-1500 原生支持,但配置里坑不少,尤其是证书双向信任和权限模型。本文以 TIA Portal V21 为例,把整条链路一次讲通。
一、先记住三个概念
- 服务器 / 客户端:PLC 做服务器(Server)暴露数据,上位机做客户端(Client)去读。一个服务器可接多个客户端。
- Endpoint / 端口:客户端连服务器的地址是 opc.tcp://<IP>:4840,端口默认 4840,可改。
- X.509 证书:OPC UA 安全的核心。服务器和客户端各自持有一张证书,必须互相导入对方为“受信”才能通信——这是 90% 连接问题的根源。
二、支持矩阵(先对号入座,别配错方向)
| 平台 | OPC UA 服务器 | OPC UA 客户端 | 关键限制 |
| S7-1500(FW≥V2.0) | ✓ | ✓(FW≥V2.5) | 需 OPC UA 运行许可证(Small / Medium / Large,按 CPU 分档) |
| S7-1200(FW≥V4.4) | ✓(精简版) | ✗ | 需单独 OPC UA 授权;并发仅 5 个连接 |
| S7-300 / S7-400 | ✗ | ✗ | 需网关(如 SCALANCE / IOT2050)转发 |
| G120 / G120C 等传动 | ✗ | ✗ | 无原生 OPC UA,常规走 PROFINET 到 PLC 后再统一对外 |
最容易被坑的两点① S7-1200 做服务器要买授权:SIMATIC OPC UA S7-1200 Basic(订货号 6ES7823-0BA00-2BA0),一个 PLC 一张;② S7-1200 只能当服务器、不能当客户端去读别的设备,方向别搞反。另外再提醒一句:S7-1500 的 OPC UA 服务器同样要许可证,别等设备到现场才发现起不来,见下方说明。
· 许可证:S7-1500 同样需要,按 CPU 分档
运行 S7-1500 CPU 的 OPC UA 服务器需要购买运行许可证,类型取决于 CPU 的性能,分三档(一张许可证同时覆盖 OPC UA 服务器与客户端):
| 档位 | 适用 CPU | 订货号 |
| Small(小型) | CPU 1511 / 1512 / 1513、ET 200SP CPU、CPU 1504D、CPU 1505S(含 F/T 衍生) | 6ES7823-0BA00-1BA0 |
| Medium(中型) | CPU 1515 / 1516(F)、CPU 1507S | 6ES7823-0BA00-1CA0 |
| Large(大型) | CPU 1517 / 1518(F) | 6ES7823-0BA00-1DA0 |
经验提示许可证要在 TIA Portal 中下载进 CPU 才生效。买小了性能受限、买大了浪费钱——先确认 CPU 型号再下单。订货号另有下载版(如 -0BE00 系列),以西门子官方目录为准。
三、S7-1500 作为服务器:TIA 四步配置
Step 1 · 激活 OPC UA 服务器
出于安全考虑,S7-1500 的 OPC UA 服务器默认是禁用的:
项目树 → CPU → 属性 → OPC UA → 服务器 → 勾选“激活 OPC UA 服务器”
端口:默认 4840(可改,改完记住放行防火墙)
会话数:默认 100(并发连接上限)
Step 2 · 配置安全策略
在 OPC UA → 安全策略 里勾选所需策略。生产环境强烈建议只保留:
| 安全策略 | 加密 / 签名 | 建议 |
| None | 无 | 仅调试用,生产关闭 |
| Basic128Rsa15 | AES-128 / RSA / SHA1 | 老设备兼容,SHA1 已过时 |
| Basic256 | AES-256 | 可用 |
| Basic256Sha256 | AES-256 / RSA-OAEP / SHA256 | 官方推荐,首选 |
提示客户端选择的安全策略必须和服务器开启的匹配,否则报“安全策略不匹配 / BadSecurityModeRejected”。
Step 3 · 证书管理(核心步骤)
CPU 会自动生成一张自签名证书,但建议手动生成更规范:
OPC UA → 安全 → 证书 → 新增(证书创建向导)
公共名称:建议填 PLC 名称或 IP(便于识别)
签名算法:SHA256
有效期:默认只有 10 年,建议删掉重生成 20 ~ 30 年(见下方经验)
证书用途:勾选“服务器身份验证”
URI / IP 地址:填 PLC 的实际 IP
生成后:
- 导出服务器证书 → 在客户端侧把这张证书导入“受信”列表;
- 导入客户端证书 → 客户端(如 UaExpert)首次连接会给出自己的证书,把客户端证书导入 PLC 的“受信证书”,并分配为可信客户端。
经验提示很多“连得上服务器、但一加密就断”的现场问题,都是证书只信任了一边。两边都要导入才算信任闭环。
证书有效期(实战经验):CPU 默认生成的自签名证书只有 10 年,到期后客户端会因证书校验失败突然断连,而且现场往往没人记得去换。我的做法是删掉默认证书,手动重新生成一张 20~30 年的,一次到位、避免将来到期通讯不上。
Step 4 · 用户与角色(生产必做)
默认匿名访问在调试期省事,但生产环境请关闭:
OPC UA → 安全 → 取消勾选“允许匿名访问”
项目树 → 安全设置 → 用户和角色 → 创建用户并分配角色
| 角色 | 权限 | 典型用途 |
| Viewer | 只读(Browse / Read) | 上位机只读采集、监控 |
| Operator | 读写部分变量 | 需要下发设定值/参数的场景 |
| Administrator | 最高权限(含 Write / Call) | 调试、维护 |
OPC UA 的权限模型按节点授予:Browse(浏览)、Read(读)、Write(写)、Call(调用方法)。原则是权限最小化——上位机只采集数据就给它 Viewer,别给写权限。
经验提示TIA Portal V21 之后,S7-1500 的用户 / 权限配置明显变复杂:用户和角色统一在项目树“安全设置 → 用户和角色”里管理,登录用户必须有“OPC UA 服务器访问”功能权限才能连上;V21 还引入了“共享角色”(Shared Role)机制——OEM 在项目中定义角色,其中要开放给最终客户的角色必须标记为“共享角色”,配合两层用户体系,配置链路比老版本长不少。建议先在实验室把用户 / 角色 / 共享角色这套跑通,再上现场。
四、S7-1200 作为服务器:和 1500 的差异
S7-1200(固件 V4.4 起)也能做 OPC UA 服务器,但功能和 1500 有明显差距:
- 授权:必须购买 OPC UA 授权(6ES7823-0BA00-2BA0),下载进 CPU 才生效,否则服务器起不来;
- 功能子集:按“Micro Embedded Device 2017 Server Profile”实现,方法调用(Method)需要 V4.5 固件;
- 并发:最大 5 个并发连接(如 1214C/1215C),多客户端采集会超限;
- 组态:需要 TIA Portal V16 及以上才能组态 V4.4 的 1200;
- 不支持客户端:1200 不能主动去读别的 OPC UA 服务器。
怎么选设备多、要双方向通讯、要调方法 → 选 S7-1500;只做简单数据上送、对并发要求低 → S7-1200 + 授权也能跑。
· 数据开放策略:1500 默认全开,1200 显式发布
还有一个常被忽略的安全差异:S7-1500 默认把所有已启用的 PLC 变量、DB 元素和服务器方法都开放给 OPC UA 客户端;而 S7-1200 只有放进服务器、显式发布的块才暴露。从安全角度,1200 的“最小暴露”方式更值得推荐。
根因在于 1500 在 CPU 属性 → OPC UA → 服务器 → 常规里默认勾选了 “启用 SIMATIC 服务器标准接口”(Enable standard SIMATIC server interface)——它会把该 CPU 中的所有 PLC 变量、数据块和方法自动放进 OPC UA 地址空间;而 S7-1200 根本没有这个选项,只能在项目树 CPU → “OPC UA communication”里显式添加服务器接口、把需要的标签放进去才会暴露。
想把 1500 改成 1200 那种“放进服务器的才开放”:
CPU 属性 → OPC UA → 服务器 → 常规
(左侧导航:OPC UA → 服务器 → 常规)
取消勾选 “启用 SIMATIC 服务器标准接口”(默认是勾上的)
下方同页还有 “激活类型字典”,保持默认即可
官方说明:该选项提供 CPU 中的所有 PLC 变量、数据块和方法;
禁用后,需在项目树 → CPU → OPC UA 通信 文件夹内添加
一个服务器接口,只显式发布你放进去的变量
更细粒度的补充控制:
· 单个 DB:DB 属性 → 取消勾选 “DB 可从 OPC UA 访问”
· 单个变量:取消勾选 “从 HMI / OPC UA 可访问”
· 新建默认值:Options → Settings → PLC programming → General
经验我习惯按 1200 的思路来:关掉标准接口,需要哪个块 / 变量就显式放进服务器接口,只给上位机真正要读的数据——安全又清爽。
五、客户端接入:UaExpert 实操
UaExpert(Prosys 出品)是免费的 OPC UA 客户端,做测试最好用:
① 服务器列表 → 添加服务器
URL: opc.tcp://<PLC IP>:4840
② 选择安全策略(与服务器一致)→ 连接
首次连接会提示“不受信任的证书” → 点 Trust Server Certificate
③ 把 UaExpert 的客户端证书导出,导入 PLC 受信证书(见上 Step 3)
④ 浏览命名空间 → 服务器接口 → 对象 → 找到 DB/变量
⑤ 右键变量 → 订阅监视(Data Change)
S7-1500 的优化访问 DB默认可被 OPC UA 读取。若看到服务器但看不到数据:
- 检查 DB 属性里“从 HMI / OPC UA 可访问”是否勾选(非优化块需要);
- 检查该节点的角色权限是否给了当前用户 Read。
六、常见坑排查表
| 症状 | 原因 | 处理 |
| 连接超时 / 连不上 | 4840 端口被防火墙挡 | PLC 侧与 PC 侧防火墙都放行 TCP 4840 |
| 报安全策略不匹配 | 客户端与服务器策略不一致 | 两边统一到 Basic256Sha256 |
| 加密连接被拒 | 证书只信任了一边 | 服务器 / 客户端证书双向导入受信 |
| 能连上但看不到变量 | DB 未勾选“从 HMI / OPC UA 可访问”,或权限不足 | 勾选属性 + 检查角色 Read 权限 |
| 客户端能看到全部数据(想最小暴露) | 1500 默认开了“启用 SIMATIC 服务器标准接口” | CPU 属性 → OPC UA → 服务器 → 常规里取消勾选,再在项目树 OPC UA 通信下添加服务器接口显式发布 |
| S7-1200 服务器起不来 | 缺少 OPC UA 授权 | 购买并下载授权(6ES7823-0BA00-2BA0) |
| S7-1500 服务器起不来 / 运行受限 | 缺少对应档位许可证 | 按 CPU 型号选 Small / Medium / Large 并下载 |
| 匿名访问连不上 | 已关闭匿名 | 改用配置的用户名 / 密码认证 |
| 改配置后不生效 | 未重新下载 / 复位 | 重新编译下载,必要时 STOP → RUN |
七、生产环境安全清单
- 关闭 None 策略、关闭匿名访问;
- 统一使用 Basic256Sha256 + SignAndEncrypt;
- 证书有效期管理:默认证书仅 10 年,建议直接生成 20~30 年长有效期证书,避免现场到期断连;
- 权限最小化:采集只读用 Viewer,不轻易给 Write;
- OPC UA 通讯网段与办公网隔离,配合防火墙限制来源 IP。
八、写在最后
OPC UA 的配置逻辑其实就一句话:激活服务器 → 约定安全策略 → 证书双向信任 → 按角色授权。把这四步走顺,上位机、MES、云平台要数据就是几分钟的事。
这篇是产品通用配置,不含任何现场项目细节。如果你想深入某个环节(比如 S7-1200 / S7-1500 许可证选型下载、G120 通过 1500 转发 OPC UA、或对接具体云平台),或者需要现场服务 / 培训,欢迎联系我。