# 气密工位 MES 对接说明(设备方) **文档用途**:气密检测设备与 MES 系统对接,完成本工位进站校验与结果上传。 **对接方**:气密设备软件 / 上位机开发 **MES 地址**:`http://192.168.16.99:8980` --- ## 一、先看这个 您的设备软件只需要做 **2 件事**: | 时机 | 调用哪个接口 | 作用 | |------|-------------|------| | **扫码后、开始测试前** | 接口 1:`qmcheck` | 问 MES:这个工件能不能测? | | **测试结束后** | 接口 2:`qmresult` | 告诉 MES:测完了,结果 OK 还是 NG | **不需要登录、不需要 Token**,设备能访问 MES 服务器 IP 即可。 **MES 会提前提供给您的固定参数**(请填入下表,对接前向 MES 方确认): | 参数 | 含义 | 示例(以 MES 方确认为准) | |------|------|--------------------------| | `oprno` | 工位号 | `OP450` | | `lineSn` | 产线编号 | `XT` | --- ## 二、整体流程(设备侧逻辑) ``` 操作员扫码(得到 sn) │ ▼ ┌───────────────────┐ │ 调用 qmcheck │ ← 进站校验 └─────────┬─────────┘ │ result=true 且 data=UD ? │ 否 ──┴── 是 │ │ ▼ ▼ 屏幕提示 开始气密测试 message (设备自行测试) 禁止测试 │ ▼ ┌──────────────┐ │ 调用 qmresult │ ← 上传结果 └──────┬───────┘ │ result=true ? │ 否 ────┴──── 是 │ │ ▼ ▼ 提示失败 显示上传成功 可本地记录 放行/打印等 ``` --- ## 三、通信方式(统一约定) | 项目 | 值 | |------|-----| | 协议 | HTTP | | 方法 | `POST` | | 参数格式 | 表单:`application/x-www-form-urlencoded` | | 编码 | UTF-8 | | 返回格式 | JSON 字符串 | **请求示例格式**(所有接口相同): ``` POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/接口名 Content-Type: application/x-www-form-urlencoded 参数1=值1&参数2=值2&... ``` 建议每个请求都带上:`__ajax=json`(固定值,便于返回 JSON)。 --- ## 四、接口 1:进站校验 qmcheck ### 4.1 什么时候调 - 操作员扫完条码、**设备尚未开始充气/测试之前** - 每个工件测一次(换件后重新调) ### 4.2 地址 ``` POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmcheck ``` ### 4.3 要传哪些参数 | 参数 | 必填 | 从哪里来 | 说明 | |------|:----:|----------|------| | sn | ✅ | 扫码枪 / 人工输入 | 工件条码 | | oprno | ✅ | MES 提供,写死在配置里 | 工位号 | | lineSn | ✅ | MES 提供,写死在配置里 | 产线号 | | workNum | 建议 | 登录工号,没有就传 `system` | 操作员 | | __ajax | 建议 | 固定 `json` | — | ### 4.4 请求示例(可直接用 Postman / curl 测) **表单内容:** ``` __ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system ``` **curl:** ```bash curl -X POST "http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmcheck" ^ -H "Content-Type: application/x-www-form-urlencoded" ^ -d "__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system" ``` ### 4.5 返回怎么判断(设备程序重点看这里) **返回示例:** ```json { "result": "true", "message": "工件可以加工", "data": "UD" } ``` **判断规则(写进设备程序):** ``` IF result == "true" AND data == "UD" → 允许开始测试 ELSE → 不允许测试,屏幕显示 message 原文 ``` | result | data | 设备怎么处理 | |--------|------|-------------| | true | UD | ✅ **允许测试** | | false | 任意 | ❌ 禁止测试,显示 `message` | **常见 message 含义(给用户看):** | message 示例 | 含义 | |-------------|------| | 工件可以加工 | 正常,可以测 | | 该工件OP180未加工 | 前面工位没做,不能测 | | 该工件本工位已加工,结果:OK | 已经测过且合格,不必再测 | | 该工件未录入系统 | 条码错误或 MES 无此件 | | 两次气密必须间隔15分钟 | 同一工件 15 分钟内不能重复测 | | 参数错误1 | sn / oprno / lineSn 有缺失 | --- ## 五、接口 2:结果上传 qmresult ### 5.1 什么时候调 - 气密测试**结束后**(无论 OK 还是 NG 都要调) - **必须先 qmcheck 通过再测**;测完再调本接口 ### 5.2 地址 ``` POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmresult ``` ### 5.3 要传哪些参数 #### 必填(少了会报「参数错误1」) | 参数 | 说明 | 示例 | |------|-----|-------------------| | sn | 工件条码(与 qmcheck 相同) | 扫码值 | | oprno | 工位号 | OPXXX | | lineSn | 产线号 | XT | | result | 测试结果 | `OK` 或 `NG`(必须大写) | | craft | 工艺号 | **固定传 `100000`** | | __ajax | 建议 | `json` | #### 建议传 | 参数 | 说明 | |------|------| | workNum | 操作员工号,没有传 `system` | #### 可选(有就传,便于 MES 存过程数据) | 参数 | 是否编码 | 说明 | |------|:--------:|------| | testPressure | Base64 | 测试压力 | | testPressureUnit | 明文 | 单位,如 Pa | | leakVal | Base64 | 泄漏值 | | leakValUnit | 明文 | 单位 | | testTime | Base64 | 测试时间,原文格式 `yyyy-MM-dd HH:mm:ss` | | cxm | 明文 | 设备程序号 | | deviceType | 明文 | 设备编号 | | remark | 明文 | 备注 | > **关于 Base64**:`testPressure`、`leakVal`、`testTime` 三个字段,需要先把原始字符串做 Base64,再作为表单参数提交。 > 若暂时不想做 Base64,**最少只传必填项也能完成工位对接**;过程数据可后续再补。 **Base64 对照(方便联调):** | 原始值 | 传参值 | |--------|--------| | 200 | MjAw | | 5 | NQ== | | 2024-05-16 12:12:00 | MjAyNC0wNS0xNiAxMjoxMjowMA== | ### 5.4 请求示例 #### 最简版(能完成工位对接) ``` __ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&craft=100000&result=OK&workNum=system ``` #### 完整版(含过程数据) ``` __ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&craft=100000&result=OK&workNum=system&testPressure=MjAw&testPressureUnit=Pa&leakVal=NQ==&leakValUnit=Pa&testTime=MjAyNC0wNS0xNiAxMjoxMjowMA==&cxm=PROGRAM_01 ``` **curl(最简版):** ```bash curl -X POST "http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmresult" ^ -H "Content-Type: application/x-www-form-urlencoded" ^ -d "__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&craft=100000&result=OK&workNum=system" ``` ### 5.5 返回怎么判断 **成功:** ```json { "result": "true", "message": "操作成功!" } ``` **失败:** ```json { "result": "false", "message": "该工件本工位已加工,结果:OK" } ``` **判断规则:** ``` IF result == "true" → 上传成功,MES 工位结果已更新 ELSE → 上传失败,显示 message,建议本地保存待人工处理 ``` | 常见 message | 原因 | 建议 | |-------------|------|------| | 操作成功! | 正常 | — | | 参数错误1! | 缺 sn/oprno/lineSn/result | 检查必填参数 | | 子工位未配置! | MES 未配置该工位 | 联系 MES 管理员 | | 该工件本工位已加工… | 重复上传 | 提示用户,勿重复提交 | | 该工件OPxxx未加工 | 未做 qmcheck 或前序工位未完成 | 先校验流程 | --- ## 六、设备程序伪代码(可直接交给开发) ```text // ===== 配置项(MES 方提供,写死在设备软件里)===== MES_HOST = "192.168.16.99" MES_PORT = 8980 OPRNO = "OP450" // 工位号,向 MES 确认 LINE_SN = "XT" // 产线号,向 MES 确认 // ===== 1. 扫码后 ===== sn = 扫码结果 body = "__ajax=json&sn=" + urlEncode(sn) + "&oprno=" + OPRNO + "&lineSn=" + LINE_SN + "&workNum=" + urlEncode(当前工号或"system") resp = HTTP_POST("http://" + MES_HOST + ":8980/js/a/mes/mesProductRecord/qmcheck", body) if resp.result != "true" OR resp.data != "UD": 显示(resp.message) 停止,不允许测试 end if // ===== 2. 设备自行做气密测试 ===== testResult = 设备判定结果 // "OK" 或 "NG" // ===== 3. 测试结束后上传 ===== body = "__ajax=json&sn=" + urlEncode(sn) + "&oprno=" + OPRNO + "&lineSn=" + LINE_SN + "&craft=100000" + "&result=" + testResult + "&workNum=" + urlEncode(当前工号或"system") // 可选:追加 testPressure、leakVal、testTime 等 resp = HTTP_POST("http://" + MES_HOST + ":8980/js/a/mes/mesProductRecord/qmresult", body) if resp.result != "true": 显示("MES上传失败:" + resp.message) 本地记录,供补传 else 显示("MES上传成功") end if ``` **文档版本**:v1.0 **更新日期**:2026-06-08