MES 项目最难的不是接入 PLC,而是让车间和 IT 都点头

MES 集成商系列 | 写给做选型与交付决策的人

项目进场第一天,车间主任就问:

「这个网关接上 PLC,会不会影响正常生产?」

还没来得及回答,客户 IT 又发来一份安全问卷:

「需要开放哪些端口?数据有没有加密?账号权限怎么控制?」

这两个问题,几乎是工业数据采集项目进场时绕不开的。

车间关心的是生产不能受影响,IT 关心的是网络不能留下安全隐患。对于集成商来说,这两边都得交代清楚。

这篇文章就从现场交付的角度,聊聊采集网关进场前需要确认哪些事情,以及遇到车间和 IT 的问题应该怎么回答。

项目地址:

  • GitHub:https://github.com/Ellisata/iot-gateway
  • Gitee:https://gitee.com/wang4856304/iot-gateway

一、先分清楚:车间和 IT 关注的不是一回事

同样是接入一台采集网关,车间和 IT 的关注点完全不同。

对接人员主要关注的问题
车间、设备人员会不会影响 PLC?会不会占用设备资源?断网后会不会影响生产?
IT、信息安全人员开放哪些端口?有没有身份认证?数据怎么传输?出了问题能不能追查?

所以,现场沟通时不要拿一套技术说明同时回答两边。

跟车间沟通,重点是说明采集方式、设备负载和异常处理方式。

跟 IT 沟通,则需要准备网络拓扑、端口清单、认证方式和数据流向。

下面分别来看。

二、先解决车间最关心的问题:接入网关会不会影响生产?

先说明一个事实:PLC 数据采集不是完全没有资源开销。

无论使用 Modbus TCP、S7 还是其他协议,网关都需要与 PLC 建立通信连接,定期读取数据。这些操作会占用设备的通信资源,也会带来一定的网络负载。

关键不在于有没有影响,而在于能不能控制影响范围。

1. 默认只读,不主动修改 PLC 数据

这是进场时首先需要向车间说明的事情。

iot-gateway 的控制下发功能默认关闭:

  • control.enabled=false,默认不允许控制下发。
  • 即使开启控制功能,还需要同时满足协议的 Writable 配置、点位的 W 权限以及物模型属性的 W 权限。
  • 普通数据采集只执行读取操作,不会主动修改 PLC 的寄存器或控制变量。

因此,现场可以这样解释:

「我们先按只读方式接入,只读取 PLC 中已有的数据,不执行写入操作。如果后续有控制需求,需要单独评估和配置,不会在采集过程中自动开启。」

这比简单地说「不会影响设备」更有说服力。

2. 采集周期可以调整,不是所有点位都要每秒读取

采集频率越高,通信请求就越频繁,PLC 和网络承担的负载也会相应增加。

iot-gateway 支持按点位配置采集周期,范围为 100ms 到 60s。

现场配置时,不建议所有点位都设置成 1 秒。

可以根据数据用途区分:

  • 需要快速响应的状态或报警点位,可以设置较短周期。
  • 用于趋势分析和报表的数据,5 秒、10 秒甚至 30 秒通常就能满足需求。
  • 电表、水表等累计量,通常可以采用 30 秒或 60 秒的采集周期。

采集周期还需要结合 PLC 性能、点位数量和通信协议综合评估,不能只看网关本身。

关于容量和采集周期,可以参考系列文章:

  • 《这个点位规模,网关扛得住吗?——投标前的容量估算》
  • 《客户要 1 秒一个点,设备扛得住吗?》

3. RS-485 总线不能随便接入第二个主站

如果现场使用的是 RS-485 设备,这一点尤其需要注意。

一条 RS-485 总线上,通常采用一个主站轮询多个从站的通信方式。同一时刻不能让两个主站同时争用总线。

例如,现场原本已经有一套上位机在读取电表,现在又准备接入采集网关。如果两边同时发送请求,就可能出现通信冲突,导致数据读取异常。

因此,进场前要确认:

  • 当前 RS-485 总线由哪套系统负责读取?
  • 原来的组态软件或上位机是否需要继续运行?
  • 如果新旧系统必须同时使用,是否需要增加串口服务器、隔离器,或者调整原有通信架构?

不要等网关部署完成后,才发现串口已经被其他软件占用。

4. 设备扫描不是必须开启的

iot-gateway 支持扫描指定网段,主动探测网络中的 PLC 等设备。

这个功能可以帮助工程师发现设备,但它会向网段内的 IP 地址发起连接探测。

对于普通办公网络,这通常不是什么问题。但在一些工厂网络中,IT 会明确禁止主动扫描。

如果客户有相关规定,可以在运行开关中关闭设备扫描。

关闭后,不影响已经配置好的设备正常采集。

另外,网关还有局域网自动发现功能,它与设备扫描不是一回事,后面介绍网络安全时再具体说明。

5. 不要第一天就接入整条产线

即使前面的配置都没有问题,也不建议刚进场就把所有设备一次性接入。

比较稳妥的方式是先选一台非关键设备进行试点。

建议按下面的顺序推进:

  1. 选择一台非关键设备,先配置少量点位,采用较长的采集周期。
  2. 连续运行 24 小时,观察 PLC 扫描周期、通信连接数以及网关 CPU、内存占用。
  3. 确认没有异常后,再逐步增加点位和同类型设备。
  4. 最后再接入关键设备。

这里有一个很重要的沟通细节:

不要向车间承诺「接入后绝对不会影响生产」。

更合理的说法是:

「我们先选一台非关键设备试运行 24 小时,你们一起观察设备运行情况,确认没有问题后再扩大接入范围。」

生产现场最看重的是可控,而不是口头保证。

三、再解决 IT 的问题:网关应该部署在哪里?

车间确认可以接入后,接下来通常就是 IT 部门的网络安全审核。

首先要确定网关在工厂网络中的位置。

不同的部署方式,安全要求也不一样。

方案一:管理网络和采集网络分开(推荐)

             IT 管理网络
                  |
                防火墙
                  |
              网关管理口

              采集网络
                  |
                交换机
                  |
          网关采集口 ---- PLC

              网关出站
                  |
                防火墙
                  |
          MQTT / 时序数据库 / MES

这种方式将设备采集和网关管理分开,IT 可以分别控制两类网络的访问权限。

方案二:网关与 PLC 使用同一个网段

       工厂内部网络
              |
           交换机
          /      \
       网关       PLC
        |
    管理端口 9082
        |
   仅允许 MES 或运维网段访问

如果现场网络条件有限,也可以采用这种方式,但需要通过防火墙限制管理端口的访问来源。

方案三:网关直接连接公网(不推荐)

如果确实需要远程访问,应通过反向代理、TLS 加密和访问控制进行保护。

不建议直接把网关管理端口暴露在公网。

需要特别说明:iot-gateway 当前管理界面使用 HTTP,没有内置 HTTPS。

如果客户要求通过 HTTPS 访问,可以在网关前面部署 Nginx 等反向代理,由代理负责 TLS 加密;也可以通过 VPN 或专线进行远程运维。

四、网络防火墙需要放行哪些端口?

IT 部门通常会要求提供端口清单。

下面是 iot-gateway 常见的端口配置。

方向端口/协议用途说明
入站TCP 9082管理控制台、内部 API、OpenAPI默认端口,HTTP
入站UDP 9083局域网自动发现默认开启,可以关闭
入站TCP 4840OPC UA Server创建 OPC UA 通道后才监听
出站TCP 502Modbus TCP根据设备配置
出站TCP 102Siemens S7常见默认端口
出站TCP/UDP 9600Omron FINS常见默认端口
出站TCP 44818EtherNet/IP(CIP)常见默认端口
出站TCP 4840OPC UA Client根据服务端配置
出站TCP 1883/8883MQTT普通连接 / TLS 连接
出站TCP 80/443HTTP/Webhook根据 MES 地址配置
出站TCP 6041TDenginetaosAdapter WebSocket 默认端口
出站TCP 8181InfluxDB 3.xHTTP 默认端口

注意,这些是常见默认值,不代表每个现场都使用相同端口。

例如,Modbus TCP 默认使用 502,但设备也可能经过修改,使用其他端口。

正式进场时,应该根据实际设备配置逐一核对,再提交给 IT 部门。

还有一个容易忽略的问题:Windows 防火墙。

如果网关运行在 Windows 上,作为服务启动时,防火墙不会像普通桌面程序那样弹出交互式放行提示。

尤其是 UDP 9083,如果入站规则没有放行,可能出现这样的情况:

管理平台能够看到网关的广播信息,但主动探询时收不到网关应答。

遇到类似问题,不要只检查网关程序,还要检查 Windows 防火墙规则。

五、账号、认证和数据加密,目前是什么情况?

端口开放只是第一步,IT 通常还会继续问:

  • 管理界面怎么登录?
  • API 调用有没有认证?
  • 数据传输有没有加密?
  • 不同用户能不能限制操作权限?

这部分建议按照项目当前的实际能力回答,不要为了通过审核而做过度承诺。

1. 管理控制台:账号密码登录,但目前没有内置 HTTPS

当前管理控制台采用账号密码登录,并使用 JWT 进行身份认证。

初始账号口令在首次启动时从环境变量或配置中读取。如果没有设置,会随机生成,并且只在日志中打印一次。

需要注意的是:

管理控制台目前使用 HTTP,没有内置 TLS 加密。

因此,正式部署时建议:

  • 修改初始管理员密码。
  • 限制管理端口 9082 的访问来源。
  • 需要 HTTPS 时,在前面部署反向代理。
  • 远程管理优先使用 VPN 或专线。

2. OpenAPI:通过 X-Api-Key 验证调用身份

如果 MES 或其他系统需要通过 API 获取网关数据,可以使用 OpenAPI。

接口通过请求头中的 X-Api-Key 进行身份验证。

但这里有一个需要提前说明的问题:

当前 X-Api-Key 通过 HTTP 传输时是明文的。

这意味着,如果通信链路没有额外保护,密钥可能被网络中的其他人获取。

因此建议:

  • 只在隔离内网或专线上使用。
  • 不同系统使用不同的 API Key。
  • 人员或系统发生变更时,及时更换密钥。
  • 不要将密钥写入前端代码或提交到公开代码仓库。

另外,这个 Key 不只是读取数据的凭据。在控制功能开启的情况下,它也可能用于执行点位写入操作。

所以不能把它当成普通的查询密钥来管理。

3. Agent API:默认关闭,不要随意开放

网关还提供了一组供 AI Agent 或外部程序调用的接口,路径为:

/agentApi/*

这组接口目前没有身份认证。

而且,它不仅包含数据查询,还包括设备删除、插件上传和控制下发等操作。

虽然功能比较方便,但从安全角度看,这意味着调用方可能获得较大的操作权限。

因此,Agent API 出厂默认关闭。

关闭状态下,通过 /agentApi/systemConfig/update 也不能直接把它打开,因为该接口同样会被 403 拦截。

如果确实需要使用,应确保网关运行在隔离内网,或者与调用程序部署在同一台机器上。

不满足这些条件时,不建议开启。

4. 账号暂时没有细粒度角色权限

目前系统采用登录用户级别的账号管理,还没有实现完整的角色权限矩阵。

也就是说,不能简单地认为给客户创建一个普通账号,就能限制他只能查看数据、不能执行其他管理操作。

目前主要依靠以下方式控制访问:

  • 网络隔离。
  • 管理端访问限制。
  • API Key 的分发和管理。
  • 控制功能默认关闭。

如果客户要求不同人员具有不同的菜单权限、设备权限和操作权限,需要提前说明当前能力边界,不能把尚未实现的功能当成已有功能介绍。

六、还有几个容易忽略的网络行为

除了端口和账号,IT 有时还会关心网关会不会主动向外发送数据,或者在网络中执行其他操作。

这里有几个需要提前说明的地方。

局域网自动发现

网关默认会通过 UDP 广播自己的身份信息,方便局域网内的管理平台发现网关。

如果客户不允许广播,可以关闭自动发现功能。关闭后不影响已经配置的设备采集。

设备扫描

设备扫描会主动向指定网段的 IP 地址发起连接探测。

如果客户禁止网络扫描,需要关闭这个功能。

数据推送

网关向 MQTT、HTTP 或时序数据库推送数据时,采用主动发起出站连接的方式。

正常情况下,不需要为了这些推送任务在网关上开放额外的入站端口。

协议插件

管理端支持上传和加载协议插件。

这项功能需要特别注意,因为加载插件相当于在网关本机执行代码。

因此,插件上传权限应当只交给可信任的管理员,不能随意开放给普通运维人员。

运行日志

请求日志可能记录请求参数和响应内容,其中可能包含业务数据。

因此,日志目录也应按照敏感数据进行管理,限制访问权限,并提前确定日志保留策略。

七、IT 安全问卷,常见问题怎么回答?

实际项目中,IT 部门经常会发来一份安全问卷。下面整理了几个常见问题,可以作为填写时的参考。

IT 常见问题需要说明的内容
网关开放哪些端口?入站 TCP 9082、UDP 9083(可关闭)、按需启用 TCP 4840;出站端口根据 PLC 和数据推送配置确定。
通信是否加密?管理界面目前为 HTTP,需要通过反向代理或 VPN 保护;OpenAPI 的 Key 在 HTTP 下明文传输;MQTT 支持 TLS 连接。
如何进行身份认证?管理端采用 JWT;OpenAPI 使用 X-Api-Key;MQTT 使用 Broker 账号;Agent API 无认证,默认关闭。
是否支持角色权限?目前没有细粒度角色权限矩阵,主要依靠网络隔离和密钥管理控制访问。
是否会连接公网?仅向配置的 MQTT、HTTP 或数据库目标发起连接,不会主动连接未配置的公网服务;设备扫描和自动发现可以关闭。
是否有操作日志?提供请求日志和控制日志,可记录控制操作的人员、来源、写入内容、回读结果及确认状态。
如何升级?通过替换程序文件和 plugins/ 目录进行升级;插件支持热升级,没有自动联网升级机制。
数据保存在哪里?数据保存在本地 SQLite 和日志目录中,没有默认云端存储;备份可以通过复制数据目录完成。

还有一点需要特别提醒:

不要向客户承诺网关能够直接通过等保测评。

等保涉及整个系统的网络架构、主机安全、访问控制、日志审计等多个方面,不是一个采集网关就能决定的。

集成商能提供的是网关自身的技术资料,包括端口、认证、数据流向和日志能力。最终是否满足客户的安全要求,需要结合实际部署环境,由相关测评或审核人员判断。

把现状和限制讲清楚,比简单承诺「符合安全要求」更可靠。

八、进场前,建议按这张清单逐项确认

前面的内容涉及不少技术细节,真正到了现场,可以把它们整理成一张检查表。

建议在网关正式接入生产网络之前,由交付人员、车间代表和 IT 人员共同确认。

【采集网关进场检查表】

一、网络环境

□ 网关部署位置已确认(管理网 / 采集网 / 单网段)
□ 管理端 9082 的访问范围已限制
□ 远程访问方式已确认(反向代理 / VPN / 专线)
□ 防火墙入站、出站规则已逐项确认
□ 自动发现 9083 已确认(开启 / 关闭)
□ 设备扫描已确认(开启 / 关闭)

二、设备接入

□ PLC 型号、通信协议和端口已核对
□ PLC 最大连接数已确认
□ 网关采集连接数未超过设备允许范围
□ RS-485 串口归属已确认
□ 原有组态软件或上位机的运行情况已确认
□ 关键设备和非关键设备已区分
□ 试点设备及观察时间已确定(建议 24 小时)

三、账号与安全

□ 初始管理员密码已修改
□ JWT 密钥已通过环境变量固定,或已确认重启后的影响
□ OpenAPI 密钥已按系统分配并记录持有人
□ Agent API 保持关闭,或已确认隔离条件
□ 控制下发保持关闭,或已完成单独审批
□ 协议插件上传权限已明确

四、时间与日志

□ 网关主机时间和时区已确认
□ NTP 时间同步已配置,或已确认手工校时方式
□ PLC、表计与网关的时间偏差已记录
□ 日志目录容量及保留策略已确认
□ 日志查看和下载权限已明确

五、数据推送与备份

□ MQTT、HTTP、时序数据库地址及端口已确认
□ 数据推送测试已通过
□ 数据目录和配置目录的备份方式已确认
□ 断网缓存容量及默认批次上限已确认

交付方:____________

车间代表:__________

IT 代表:____________

日期:________________

九、最后说几句:现场交付,重要的是把边界提前讲清楚

采集网关进场,真正难的往往不是把 PLC 数据读出来,而是让车间和 IT 都认可这套接入方案。

有些事情必须提前说明:

  • 管理界面目前没有内置 HTTPS,需要通过反向代理或 VPN 保护,不能直接暴露 9082 到公网。
  • OpenAPI 的 X-Api-Key 在 HTTP 下明文传输,只适合有额外网络保护的环境。
  • /agentApi 没有身份认证,默认关闭,不应随意开放。
  • 当前没有细粒度角色权限,不能承诺可以按人员精确限制所有操作。
  • 采集会占用 PLC 的通信资源,需要结合设备情况设置采集周期和连接数量。
  • 是否满足客户的安全合规要求,需要结合整个部署环境进行评估,不能只凭网关本身下结论。

这些问题并不意味着网关不能用于工业现场,而是交付时必须知道它能做什么、不能做什么,以及需要通过哪些部署措施弥补不足。

对集成商来说,提前把这些事情讲清楚,远比设备接入完成后再处理安全和生产方面的争议要省事。


项目地址

iot-gateway 是一个开源工业数据采集网关项目,采用 AGPL-3.0 协议开源。

  • GitHub:https://github.com/Ellisata/iot-gateway
  • Gitee:https://gitee.com/wang4856304/iot-gateway

欢迎工业自动化集成商、MES 厂商及相关技术人员交流使用,也欢迎围绕项目开展技术合作。


MES 集成商系列文章

  • 01 ·《做 MES 集成的都懂:PLC 采集不难,难在每个项目重来一遍》
  • 02 ·《接一个采集项目,工期该报几天?》
  • 03 ·《这个点位规模,网关扛得住吗?——投标前的容量估算》
  • 04 ·《开源网关交付给客户,我会被要求开源吗?》
  • 05 ·《RS-485 挂 20 台电表,为什么总是读不全?》
  • 06 ·《工业数据采集项目验收清单》
  • 07 ·《多厂区复制:一套模板交付四个工厂》
  • 08 ·《老设备改造场景集:拿到一台十年前的老设备,数据怎么接?》
  • 09 ·《采集网关的四种路线:把授权成本算清楚》
  • 10 ·《协议驱动真机验证清单:哪些上过真机,哪些还没有》
  • 11 ·《数据没上去?从上位机到 MES 的七段排查》
  • 12 ·《项目交付后,怎么把自己摘出来》
  • 13 ·《采集项目的合同,该写死哪几件事》
  • 14 ·《客户掏出一台没人认识的设备:专有协议,现在能自己写驱动了》
  • 15 ·《设备台账怎么进 MES:接口现成,但别用翻页去取》
  • 16 ·《点位录入别再手敲:三条路,共用同一套结果契约》
  • 17 ·《点位全绿了,怎么证明读的是对的?》
  • 18 ·《MES 收到的值,字段该怎么定?》
  • 19 ·《电表读数对不上,差在哪一段?》
  • 20 ·《采集网关能不能顺手做控制?》
  • 21 ·《进场第一周:车间怕停产,IT 怕出事》(本文)
Logo

更多推荐