qm-api-设备对接手册.md 9.1 KB

气密工位 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:

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 返回怎么判断(设备程序重点看这里)

返回示例:

{
  "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 测试结果 OKNG(必须大写)
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 明文 备注

关于 Base64testPressureleakValtestTime 三个字段,需要先把原始字符串做 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(最简版):

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 返回怎么判断

成功:

{
  "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