# MES 与 CCD 视觉检测 — 接口说明 > 模块:`MesProductRecordController#ccdcheck` > 协议:HTTP POST,`application/x-www-form-urlencoded` > 认证:匿名接口(`application.yml` 中已配置 `anon`) > 正式地址示例:`http://192.168.9.180:8980/js/a/mes/mesProductRecord/ccdcheck` > 本地调试示例:`http://127.0.0.1:8980/js/a/mes/mesProductRecord/ccdcheck` --- ## 调用流程 ```text ① 01 序号检查 扫码后校验工件是否允许在本工位检测 ↓ ② 04 测试结果上传 检测过程中/结束后上传明细(有数据就传,没有可跳过) ↓ ③ 05 序号过站 上报整件 OK/NG,MES 记录过站结果 ``` > 三个命令通过同一 URL、同一参数名 `commandString` 区分,首字段为命令编号(TestType)。 --- ## 通用约定 ### 请求 | 项目 | 说明 | |------|------| | URL | `/js/a/mes/mesProductRecord/ccdcheck` | | 方法 | `POST` | | Content-Type | `application/x-www-form-urlencoded` | | 参数名 | `commandString`(整条命令字符串) | ### 命令字符串格式 - 字段之间用英文分号 `;` 分隔。 - 末尾建议保留分号 `;`(与驭视科技 CCD 标准格式一致)。 - 工位号格式为 `OP` 开头,可带后缀字母区分子工位,例如 `OP290B`、`OP390B`;MES 内部会规范化处理。 ### 响应 返回 XML 字符串,正文为 `OK;` 或 `NG;原因;`: ```xml OK; ``` 失败示例: ```xml NG;工件码不能为空; ``` --- ## 命令字段对照(通用头部) | 序号 | 字段名 | 01 必填 | 04 必填 | 05 必填 | 说明 | |------|--------|---------|---------|---------|------| | 0 | TestType | 是 | 是 | 是 | 命令编号:`01` / `04` / `05` | | 1 | 工号 | 是 | 是 | 是 | 操作员工号 | | 2 | 序号(工件码) | 是 | 是 | 是 | 产品条码/SN | | 3 | 工序名称(工位号) | 是 | 是 | 是 | 如 `OP290B` | | 4 | 资源名称 | 是 | 是 | 是 | 检测设备/工位资源名称 | | 5 | 设备编码 | 否 | 否 | 否 | 无则传空 | | 6 | 工治具编码 | 否 | 否 | 否 | 无则传空 | --- ## 1. 序号检查(TestType = 01) 检测前校验工件是否允许在当前工位进行 CCD 检测(工艺路线、质量状态等)。 ### 命令格式 ```text 01;工号;序号;工序名称;资源名称;设备编码;工治具编码; ``` 共 **8** 段(含末尾空段),`split(";", -1)` 后长度为 8。 ### 参数示例 ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/mesProductRecord/ccdcheck' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'commandString=01;EMP001;502402660085119990EBMA100082;OP390;Res001;MACHINE01;Fixture001;' ``` ### 返回说明 | 返回内容 | 含义 | |----------|------| | `OK;` | 允许检测 | | `NG;{原因};` | 不允许检测,原因由 MES 工艺/质量校验返回 | ### 备注 - 工号、序号、工序名称、资源名称为必填。 - 设备编码、工治具编码为非必填,没有时传空即可。 --- ## 2. 测试结果上传(TestType = 04) 上传 CCD 各测点明细数据,写入 `mes_product_ccd` 表。**有明细就传,没有可不调用。** ### 命令格式 ```text 04;工号;序号;工序名称;资源名称;设备编码;工治具编码;测试开始时间;测点明细; ``` 共 **10** 段(含末尾空段)。 其中 **测点明细**(第 9 段,`parts[8]`)格式: ```text 序号&拍照序号&检测名称&检测参数&检测值&检测结果&检测时间,序号&拍照序号&... ``` - 多个测点之间用英文逗号 `,` 分隔。 - 单个测点内 7 个字段之间用 `&` 分隔。 - `检测时间` 格式:`yyyy-MM-dd HH:mm:ss` - `检测结果` 取值:`OK` / `NG` ### 测点字段说明 | 字段 | 说明 | 示例 | |------|------|------| | 序号 | 测点编号 | `1` | | 拍照序号 | 拍照区序号 | `2` | | 检测名称 | 检测项名称 | `拉铆螺母` | | 检测参数 | 规格/阈值描述 | `直径:3.5~15高度:1~10` | | 检测值 | 实测值 | `直径:6.50\|高度:2.22\|` | | 检测结果 | OK/NG | `OK` | | 检测时间 | 该测点检测时间 | `2024-05-06 15:19:07` | ### 参数示例(单条测点) ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/mesProductRecord/ccdcheck' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'commandString=04;15112184644;502402660085119990E4GA100296;OP290B;OP290B;;;20240506120729;1@1@二维码有无@有无:1~1@502402660085119990E4GA100296重复扫描@OK@2024-05-06 12:03:44;' ``` ### 参数示例(多条测点) ```text 04;15112184644;502402660085119990E54A100352;OP290B;OP290B;;;20240506152248;1@1@二维码有无@有无:1~1@502402660085119990E54A100352@OK@2024-05-06 15:19:02,2@2@拉铆螺母@直径:3.5~15高度:1~10@直径:10.59|高度:2.21|@OK@2024-05-06 15:19:07; ``` ### 返回说明 | 返回内容 | 含义 | |----------|------| | `OK;` | 明细保存成功 | | `NG;参数错误3;` | 分段数量不是 10 | | `NG;参数错误4;` | TestType 不是 04 | | `NG;参数错误5;` | 某个测点字段数不是 7 | | `NG;检测时间格式错误;` | 检测时间格式不正确 | | `NG;工件码不能为空;` | SN 为空 | | `NG;工位号不能为空;` | 工位号为空 | ### 备注 - `测试开始时间` 字段(第 8 段)格式为 `yyyyMMddHHmmss`,当前 MES 实现主要解析第 9 段测点明细,开始时间作记录参考。 - 设备编码、工治具编码无值时保持空位(连续 `;`)。 --- ## 3. 序号过站(TestType = 05) 整件检测完成后,向 MES 上报最终 OK/NG 并执行过站。 ### 命令格式 ```text 05;工号;序号;工序名称;资源名称;设备编码;工治具编码;测试结果;不良现象; ``` 共 **10** 段(含末尾空段)。 | 字段 | 说明 | |------|------| | 测试结果(第 8 段) | 必填,`OK` 或 `NG` | | 不良现象(第 9 段) | NG 时必填,填写最主要的一条不良描述;OK 时传空 | ### 参数示例 **过站 OK:** ```bash curl --location --request POST 'http://127.0.0.1:8980/js/a/mes/mesProductRecord/ccdcheck' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'commandString=05;15112184644;151245P00001213100100025072501024;OP390B;OP390B;;;OK;;' ``` **过站 NG:** ```text 05;EMP001;SN001;Station001;Res001;MACHINE01;Fixture001;NG;无法开机; ``` ### 返回说明 | 返回内容 | 含义 | |----------|------| | `OK;` | 过站成功 | | `NG;结果不能为空;` | 未传测试结果 | | `NG;结果错误;` | 测试结果不是 OK/NG | | `NG;操作失败;` | MES 内部过站处理异常 | ### 备注 - 工号、序号、工序、资源名称为必填。 - 设备编码、工治具编码为非必填,没有时传空。 - NG 时不良现象必须有值,且建议只传一条最重要的描述。 --- ## 附录:标准模板示例 以下为 Excel 原始标准格式示例,便于联调对照。 ### 01 模板 ```text 01;EMP001;SN001;Station001;Res001;MACHINE01;Fixture001; ``` ### 04 模板 ```text 04;EMP001;SN001;Station001;Res001;MachineNo;Fixture001;20181002131019;序号1&拍照序号1&检测名称1&检测参数1&检测值1&检测结果1&2024-11-11 11:11:11,序号2&拍照序号2&检测名称2&检测参数2&检测值2&检测结果2&2025-10-22 22:22:22; ``` ### 05 模板 ```text 05;EMP001;SN001;Station001;Res001;MACHINE01;Fixture001;OK;; 05;EMP001;SN001;Station001;Res001;MACHINE01;Fixture001;NG;无法开机; ``` --- ## 附录:MES 侧数据落库 | 命令 | 处理逻辑 | 数据表 | |------|----------|--------| | 01 | 调用 `checkQualityCommon` 做进站校验 | — | | 04 | 批量插入测点明细 | `mes_product_ccd` | | 05 | 调用 `updateRecordResult` 写过站记录 | 生产记录相关表 | `mes_product_ccd` 主要字段:工件码、产线编号、工位号、检测设备名称、拍照区序号、测点编号、检测名称、检测参数、检测值、检测结果、检测时间。 --- *文档来源:`docs/ccd/MES与CCD接口.xlsx`(标准格式页),并结合 `MesProductRecordController` / `MesProductCcdService` 实现整理。*