文档用途:气密检测设备与 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)。
POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmcheck
| 参数 | 必填 | 从哪里来 | 说明 |
|---|---|---|---|
| sn | ✅ | 扫码枪 / 人工输入 | 工件条码 |
| oprno | ✅ | MES 提供,写死在配置里 | 工位号 |
| lineSn | ✅ | MES 提供,写死在配置里 | 产线号 |
| workNum | 建议 | 登录工号,没有就传 system |
操作员 |
| __ajax | 建议 | 固定 json |
— |
表单内容:
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system
curl:
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"
返回示例:
{
"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 有缺失 |
POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmresult
| 参数 | 说明 | 示例 |
|---|---|---|
| sn | 工件条码(与 qmcheck 相同) | 扫码值 |
| oprno | 工位号 | OPXXX |
| lineSn | 产线号 | XT |
| result | 测试结果 | OK 或 NG(必须大写) |
| craft | 工艺号 | 固定传 100000 |
| __ajax | 建议 | json |
| 参数 | 说明 |
|---|---|
| workNum | 操作员工号,没有传 system |
| 参数 | 是否编码 | 说明 |
|---|---|---|
| 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== |
__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(最简版):
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"
成功:
{
"result": "true",
"message": "操作成功!"
}
失败:
{
"result": "false",
"message": "该工件本工位已加工,结果:OK"
}
判断规则:
IF result == "true"
→ 上传成功,MES 工位结果已更新
ELSE
→ 上传失败,显示 message,建议本地保存待人工处理
| 常见 message | 原因 | 建议 |
|---|---|---|
| 操作成功! | 正常 | — |
| 参数错误1! | 缺 sn/oprno/lineSn/result | 检查必填参数 |
| 子工位未配置! | MES 未配置该工位 | 联系 MES 管理员 |
| 该工件本工位已加工… | 重复上传 | 提示用户,勿重复提交 |
| 该工件OPxxx未加工 | 未做 qmcheck 或前序工位未完成 | 先校验流程 |
// ===== 配置项(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