MES 系统、上位机(西门子 PLC 对接)数据交互技术与使用文档

1. 文档总览

1.1 文档目标

本文档整合技术规范操作指南双重维度,明确 MES 系统、上位机软件(支持西门子 PLC 数据读取)的三层对接逻辑:

  1. 上位机与西门子 PLC 的底层数据采集实现;
  2. MES 与上位机的中层数据交互规则;
  3. 全链路的部署、运维与故障处理方法,为开发、运维及生产人员提供标准化操作依据。

1.2 适用范围与对象

适用阶段 目标用户 核心用途
系统部署与联调 开发工程师、PLC 工程师 指导接口开发、PLC 配置与联调测试
日常生产运行 运维人员、生产管理员 支撑数据监控、异常处理与日常操作
系统升级与扩展 技术负责人、开发团队 保障对接架构兼容性与功能扩展可行性

1.3 核心术语补充(新增 PLC 相关)

术语 定义
S7 协议 西门子 PLC 专用通信协议,支持数据块(DB)、输入输出(I/O)等地址区的读写操作
全局数据块(DB 块) 西门子 PLC 中存储系统信息、工艺参数的结构化数据区域,如 SystemInfo 数据块
OPC UA 网关 实现 PLC 协议与 OPC UA 协议转换的硬件设备(如 BL110UA),降低跨平台对接成本
字节序列反序列化 将 PLC 读取的字节流转换为可读数据类型(如整数、浮点型)的过程

2. 系统架构与技术实现(新增 PLC 对接层)

2.1 四层交互架构

在原有三层架构基础上新增PLC 数据采集层,形成全链路架构:

  1. PLC 数据采集层:上位机通过 S7 协议读取西门子 PLC 的 DB 块、I/O 区数据,实现设备状态与工艺参数的原始数据获取;
  2. 数据交互层:负责 PLC 数据格式转换(字节流→JSON/XML)及 MES - 上位机间的协议传输(TCP/IP/OPC UA/MQTT);
  3. 业务逻辑层:MES 侧负责工单管理与数据校验,上位机侧负责 PLC 指令解析与数据预处理;
  4. 数据存储层:MES 存储全量生产数据,上位机缓存 PLC 本地数据,PLC 保留系统核心参数(如 SystemInfo 块)。

2.2 西门子 PLC 对接技术实现

2.2.1 PLC 数据采集方案选择
对接方案 适用场景 优势 配置要求
直连 S7 协议 单台 / 少量西门子 PLC(S7-1200/1500) 延迟低(≤50ms),无需额外硬件 上位机安装 S7 协议库(如 Snap7),配置 PLC IP 与 CPU 型号
OPC UA 网关对接 多品牌 PLC 混合场景或远距离传输 标准化协议,降低兼容性问题 部署 OPC UA 网关(如 BL110UA),配置 PLC 通信参数
MQTT+S7 协议批量采集 离散型车间、低带宽环境 轻量化传输,支持批量读写 上位机部署 MQTT 客户端,PLC 数据通过 XML 配置批量读取
2.2.2 PLC 标准化数据配置(基于西门子 PLC)
  1. 系统信息数据块配置 新建全局数据块DB100_SystemInfo,数据类型基于typeSystemInfo自定义,包含以下核心字段:

    plaintext

    复制代码
    TYPE typeSystemInfo :
    STRUCT
       CPUInfo: STRUCT          // CPU模块信息
          Name: STRING[32];     // PLC名称
          IP: STRING[16];       // IP地址(如192.168.0.100)
          MAC: STRING[12];      // MAC地址
          SubnetMask: STRING[16];// 子网掩码
       END_STRUCT;
       RunInfo: STRUCT          // 运行信息
          FirstScan: BOOL;      // 首次扫描标志
          CycleTime: REAL;      // 循环周期(ms)
          Status: INT;          // 运行状态(0-停止,1-运行)
       END_STRUCT;
       DateInfo: STRUCT         // 日期时间信息
          DateTime: DATE_AND_TIME;// 实时时间
          HourPulse: BOOL;      // 小时脉冲信号
       END_STRUCT;
    END_STRUCT;
    END_TYPE

    调用标准功能块FB_SystemInfo置于 OB1 末端,自动填充DB100_SystemInfo数据。

  2. 工艺参数数据块配置 新建DB101_ProcessParam,按工序划分数据区,示例如下:

    地址偏移 数据名称 数据类型 含义 对应 MES 参数
    0.0 Temp_Set REAL 目标温度 工艺标准值
    4.0 Temp_Actual REAL 实际温度 工艺实际值
    8.0 Temp_Upper REAL 温度上限 工艺参数上限
    12.0 Prod_Count INT 生产计数 已生产数量
2.2.3 上位机 PLC 数据读取流程(S7 协议 + XML 配置)
  1. XML 配置文件定义 按设备 - 数据块 - 数据点三级结构配置,示例如下:

    xml

    复制代码
    <Root>
       <Device IP="192.168.0.100" CPUType="S7-1500" Name="Press01">
          <DataBlock DBNo="100" StartAddr="0" ByteCount="32">
             <DataPoint Addr="0" Type="STRING" Index="1" Meaning="PLC_Name"/>
             <DataPoint Addr="32" Type="INT" Index="2" Meaning="Run_Status"/>
          </DataBlock>
          <DataBlock DBNo="101" StartAddr="0" ByteCount="16">
             <DataPoint Addr="0" Type="REAL" Index="3" Meaning="Temp_Actual"/>
             <DataPoint Addr="12" Type="INT" Index="4" Meaning="Prod_Count"/>
          </DataBlock>
       </Device>
    </Root>
  2. 数据读取与解析步骤 ① 上位机解析 XML 文件,获取 PLC 连接参数与数据点配置;② 开辟独立线程,调用 S7 协议S7Client.ConnectTo()建立连接;③ 按ByteCount批量读取数据块字节流,超出 N 字节时分次读取;④ 字节序列反序列化:将偏移地址转换为字节列表,按数据类型重组(如 REAL 占 4 字节);⑤ 封装为Key-Value格式(Key=PLC IP,Value = 解析后数据)。

2.3 通信协议与接口适配(新增 PLC 数据映射)

2.3.1 协议适配规则
通信协议 PLC 数据传输适配方式 配置示例
TCP/IP 解析后的 PLC 数据直接封装为 JSON,通过 Socket 传输 上位机 IP:192.168.0.200,端口:8080
OPC UA 将 PLC 数据映射为 OPC UA 节点(如 DB101.DBD0→Temp_Actual) 节点路径:opc.tcp://192.168.0.200:4840/PLC/Press01/Temp_Actual
MQTT 按 PLC 设备创建主题(如 /plc/press01/data),发布解析后数据 MQTT 服务器:192.168.0.150,主题:/plc/press01/data
2.3.2 接口数据映射示例(上位机→MES)

生产进度上报接口(Upper-MES-001)新增 PLC 源数据字段:

json

复制代码
{
   "workOrderNo": "WO20240520001",
   "已生产数量": 120,
   "合格数量": 118,
   "不合格数量": 2,
   "PLC源数据": {
      "PLC_IP": "192.168.0.100",
      "数据块地址": "DB101.DBW12",
      "采集时间": "2024-05-20 10:30:00",
      "原始值": 120
   }
}

3. 操作指南(新增部署与使用流程)

3.1 前期部署配置步骤

3.1.1 西门子 PLC 配置(工程师站操作)
  1. 打开 TIA Portal,创建新项目并添加对应 CPU 型号(如 S7-1500);
  2. 导入FB_SystemInfo功能块,创建DB100_SystemInfoDB101_ProcessParam数据块;
  3. 在 OB1 主循环末端调用FB_SystemInfo,关联输入参数(如i_HwId绑定本地 PN 接口);
  4. 下载程序至 PLC,通过在线监控确认DB100_SystemInfo数据正常更新。
3.1.2 上位机 PLC 连接配置
  1. 直连 S7 协议配置

    • 安装 Snap7 库(Windows:pip install python-snap7;C#:引用 Snap7.dll);
    • 打开上位机软件 "PLC 配置" 模块,输入 PLC IP(192.168.0.100)、CPU 型号(S7-1500)、Rack=0、Slot=1;
    • 导入 XML 数据配置文件,点击 "测试连接",确认数据块读取状态为 "正常"。
  2. OPC UA 网关配置

    • 连接 BL110UA 网关至 PLC 与上位机网络,通过 Web 管理页配置 PLC 参数(协议类型:S7,IP:192.168.0.100);
    • 上位机 OPC UA 客户端添加网关地址(opc.tcp://192.168.0.110:4840),订阅 PLC 数据节点。
3.1.3 MES 与上位机对接配置
  1. MES 侧进入 "系统集成 - 接口管理",新增上位机对接节点,选择通信协议(如 MQTT);
  2. 配置 MQTT 服务器地址(192.168.0.150)、订阅主题(/plc/press01/data)、发布主题(/mes/workorder);
  3. 上位机侧配置相同 MQTT 参数,测试 "工单下发" 与 "数据上报" 功能,确保交互正常。

3.2 日常操作流程

3.2.1 生产工单执行操作
  1. 工单下发

    • MES 管理员在 "生产计划" 模块创建工单(WO20240520001),点击 "下发至上位机";
    • 上位机接收工单后弹窗提示,操作员确认后系统自动将工艺参数写入 PLC(DB101.DBD0=200.0);
    • 上位机返回 "工单接收成功" 确认至 MES,MES 工单状态更新为 "执行中"。
  2. 生产监控

    • 运维人员通过上位机界面查看 PLC 实时数据(温度、压力、生产计数);
    • MES "生产监控" 页面自动刷新进度(基于上位机每 3 秒上报的 PLC 数据);
    • 若 PLC 数据超出阈值(如温度 > 220),上位机立即上报异常,MES 触发声光告警。
3.2.2 设备故障处理操作
  1. 上位机检测到 PLCDB100.RunInfo.Status=0(故障),自动读取故障代码(DB100.FaultCode=102)并上报 MES;
  2. MES 推送故障信息至设备管理员手机端,管理员通过上位机查看 PLC 故障描述(如 "温度传感器断线");
  3. 故障排除后,PLC 状态恢复为 1,上位机自动上报 "恢复运行",MES 记录故障处理时长。

3.3 常见问题处理(新增 PLC 相关)

问题现象 可能原因 处理步骤
上位机无法读取 PLC 数据 S7 协议连接参数错误 1. 核对 PLC IP、Rack/Slot;2. 检查 PLC 在线状态;3. 测试网络连通性(ping 192.168.0.100)
PLC 数据上报延迟 > 1s 批量读取字节数过大 1. 拆分 XML 数据块配置,减少单次读取字节数;2. 优化线程调度,避免读取阻塞
OPC UA 节点无数据 网关配置错误 1. 登录网关 Web 页,检查 PLC 协议配置;2. 重启 OPC UA 服务;3. 重新订阅节点
数据反序列化错误 数据类型匹配错误 1. 核对 XML 中数据点类型(如 REAL 对应 4 字节);2. 检查 PLC 数据块地址偏移量

4. 技术规范(整合原有内容并补充 PLC 适配)

4.1 数据交互接口补充(PLC 数据关联)

4.1.1 下行接口:工艺参数写入 PLC 接口
  • 接口编号:MES-Upper-PLC-001
  • 数据格式:JSON
  • 数据字段:工单编号、PLC_IP、数据块编号、参数地址、目标值、写入超时时间
  • 示例:

json

复制代码
{
   "workOrderNo": "WO20240520001",
   "PLC_IP": "192.168.0.100",
   "DBNo": 101,
   "ParamAddr": "DBD0",
   "TargetValue": 200.0,
   "Timeout": 5000
}
4.1.2 上行接口:PLC 系统信息上报接口
  • 接口编号:Upper-MES-PLC-001
  • 数据格式:JSON
  • 数据字段:PLC_IP、CPU 名称、运行状态、循环周期、采集时间
  • 示例:

json

复制代码
{
   "PLC_IP": "192.168.0.100",
   "CPU_Name": "S7-1511C",
   "Run_Status": 1,
   "Cycle_Time": 1.2,
   "CollectTime": "2024-05-20 10:30:00"
}

4.2 异常处理补充(PLC 相关)

异常码 异常类型 处理建议
2001 PLC 连接失败 检查 PLC 电源、网络接线,重启 PLC 与上位机
2002 PLC 数据块写入超时 确认 PLC 处于运行状态,减少单次写入数据量
2003 数据类型不匹配 核对 XML 配置与 PLC 数据块类型,重新生成配置文件

4.3 运维规范补充

  1. PLC 定期维护 :每月通过 TIA Portal 备份 PLC 程序与数据块,检查FB_SystemInfo运行状态;
  2. 网关运维:每季度重启 OPC UA 网关,清理缓存;检查网关与 PLC 的通信日志;
  3. 数据一致性校验:每周对比 MES 生产数据与 PLC 原始数据(DB101.Prod_Count),确保无偏差。
相关推荐
御控工业物联网9 小时前
二供泵房物联网控制解决方案
物联网·数据采集·plc·远程控制·工业自动化
张人玉1 天前
C#编写西门子S7PLC通信的相关知识点
microsoft·c#·wpf·plc·西门子s7通信
御控工业物联网1 天前
工业网关新玩法:手机变“移动触摸屏”,局域网内远程操控PLC
物联网·智能手机·自动化·数据采集·plc·远程控制·远程操控plc
控电PLC2 天前
21-1. PLC的基本逻辑指令(逻辑取及线圈驱动指令)
硬件工程·plc
御控工业物联网3 天前
智慧水务新突破:基于工业网关的二次供水泵房物联网采集解决方案
物联网·自动化·数据采集·plc·远程监控·远程控制·多品牌plc数据采集
小徐敲java3 天前
plc通过opcua订阅或s7读取数据慢的原因
plc·博途
远创智控研发五部1 个月前
EtherCAT转EtherNet/IP工业智能网关:保障罗克韦尔 PLC 与欧姆龙 PLC 双向稳定通讯
数据采集·plc·工业物联网·工业自动化·协议转换网关·网关模块
我想我不够好。1 个月前
plc学习路线
学习·plc
远创智控研发五部1 个月前
欧姆龙NJ系列PLC借助EtherCAT转CCLink IE协议网关实现与三菱MR-J5伺服无缝对接
数据采集·plc·工业自动化·伺服驱动·网关模块·欧姆龙plc·ethercat通讯