三维PLC交互API文档
## PLC后端返回说明
- 使用flask-resful搭建后端web程序,Response结构如下:
```json
{
"lang": "zh_CN",
"data": {
"name": "ljh",
"age": 18
},
"msg": "成功",
"code": 0
}
```
注:
- code返回是-1表示fail,说明该操作出现异常
- 下面的返回只有data里的数据
- ip:127.0.0.1
- 端口:5000
## Read接口
#### 1. 读取心跳位(PLC地址0.0)
- 请求方法:GET
- 接口:``/api/readHeartBeat``
- 参数:None
- 返回:
```json
{
"heart_beat_value": "0"
}
```
- 说明:心跳接口建议1秒钟请求一次,能获取PLC上1001之类的心跳
#### 2. 读取数据清除位(PLC地址0.1),该位用于清除中间文件夹数据,且清除各握手标志位
- 请求方法:GET
- 接口:``/api/readClearFileDataRequest``
- 参数:None
- 返回:
```json
{
"clear_file_data_req_value": "0"
}
```
#### 3. 读取3D扫描完成位(PLC地址0.2)
- 请求方法:GET
- 接口:``/api/read3DTriggerDone``
- 参数:None
- 返回:
```json
{
"trigger_done_value": "0"
}
```
#### 4. 读取AI检测请求位(PLC地址0.3)
- 请求方法:GET
- 接口:``/api/readAICheckRequest``
- 参数:None
- 返回:
```json
{
"AI_check_req_value": "0"
}
```
#### 5.读取确认收到了AI检查结果位(PLC地址0.4)
- 请求方法:GET
- 接口:``/api/readAIDoneACK``
- 参数:None
- 返回:
```json
{
"ai_done_ACK_value": "0"
}
```
#### 6.读取激活相机正面程序位(PLC地址0.5)
- 请求方法:GET
- 接口:``/api/readActiveProgramUp``
- 参数:None
- 返回:
```json
{
"ActiveProgramUp_value": "0"
}
```
#### 7.读取激活相机侧面程序位(PLC地址0.6)
- 请求方法:GET
- 接口:``/api/readActiveProgramSide``
- 参数:None
- 返回:
```json
{
"ActiveProgramSide_value": "0"
}
```
#### 8.读取相机正面程序号(PLC地址4.0-4.7)
- 请求方法:GET
- 接口:``/api/readProgramNoTop``
- 参数:None
- 返回:
```json
{
"ProgramNoTop_value": "1"
}
```
#### 9.读取相机侧面程序号(PLC地址5.0-5.7)
- 请求方法:GET
- 接口:``/api/readProgramNoSide``
- 参数:None
- 返回:
```json
{
"ProgramNoSide_value": "2"
}
```
#### 10. 读取DMC码(PLC地址20.0-99.7)
- 请求方法:GET
- 接口:``/api/readDMC``
- 参数:None
- 返回:
```json
{
"DMC_value": "123456789012345678901234567890666"
}
## write接口
写接口的data返回无内容,看是否写成功主要看整个response的code是否是0,并且msg为"成功"
#### 1. 写心跳
- 请求方法:POST
- 接口:``/api/writeHeartBeat``
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------------ | ---- | ---- | ------- |
| heart_signal | True | int | 0 或者1 |
- 返回:None
- 说明:请求间隔建议1.6s
#### 2.写DMC码
- 请求方法:POST
- 接口:``/api/writeDMC``
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| -------- | ---- | ------ | ----- |
| DMC_data | True | String | DMC码 |
- 返回:None
#### 3. 文件清除完成(PLC地址100.1)
根据需求写入PLC的DB块,clear_req为1或者0
- 请求方法:POST
- 接口:`/api/writeClearReq`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| --------- | ---- | ---- | -------------------------------------------------- |
| clear_req | True | Int | 文件夹数据,且各握手标志位都复位完成,0或者1,下同 |
- 返回:None
#### 4. 确定3D文件已收到(PLC地址100.2)
- 请求方法:POST
- 接口:`/api/writeFileRec`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| -------- | ---- | ---- | ------------------ |
| file_rec | True | Int | 确认3D文件已经收到 |
- 返回:None
#### 5. AI分析完成(PLC地址100.3)
- 请求方法:POST
- 接口:`/api/writeAICheckDone`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---------- | ---- | ---- | ---------- |
| check_done | True | Int | AI分析完成 |
- 返回:None
#### 6. AI正面结果OK(PLC地址100.4)
- 请求方法:POST
- 接口:`/api/writeAIUPOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ------------ |
| OK | True | Int | AI正面结果OK |
- 返回:None
#### 7. AI正面结果NOK(PLC地址100.5)
- 请求方法:POST
- 接口:`/api/writeAIUPNOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ------------- |
| NOK | True | Int | AI正面结果NOK |
- 返回:None
#### 8. 相机正面程序调整结束(PLC地址100.6)
- 请求方法:POST
- 接口:`/api/writeActiveProgramUpOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------------ | ---- | ---- | -------------------- |
| ac_pro_up_ok | True | Int | 相机正面程序调整结束 |
- 返回:None
#### 9. 相机侧面程序调整结束(PLC地址100.7)
- 请求方法:POST
- 接口:`/api/writeActiveProgramUSideOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| -------------- | ---- | ---- | -------------------- |
| ac_pro_side_ok | True | Int | 相机侧面程序调整结束 |
- 返回:None
#### 8.AI侧面结果OK(PLC地址102.0)
- 请求方法:POST
- 接口:`/api/writeAISideOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ------------ |
| OK | True | Int | AI侧面结果OK |
- 返回:None
#### 9. AI侧面结果NOK(PLC地址102.1)
- 请求方法:POST
- 接口:`/api/writeAISideNOK`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ------------- |
| NOK | True | Int | AI侧面结果NOK |
- 返回:None
#### 10. 正面Pin1的形态(PLC地址102.2)
- 请求方法:POST
- 接口:`/api/writePin1UpAppearance`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---------- | ---- | ---- | ----------------------------------------------------- |
| appearance | True | Int | Pin1_Up_Appearance=1:不合格,Pin1_Up_Appearance=0合格 |
- 返回:None
#### 11. 正面Pin2的形态(PLC地址102.3)
- 请求方法:POST
- 接口:`/api/writePin2UpAppearance`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---------- | ---- | ---- | ----------------------------------------------------- |
| appearance | True | Int | Pin2_Up_Appearance=1:不合格,Pin2_Up_Appearance=0合格 |
- 返回:None
#### 12. 正面Pin3的形态(PLC地址102.4)
- 请求方法:POST
- 接口:`/api/writePin3UpAppearance`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---------- | ---- | ---- | ----------------------------------------------------- |
| appearance | True | Int | Pin3_Up_Appearance=1:不合格,Pin3_Up_Appearance=0合格 |
- 返回:None
#### 13. 特定区域1是否有锡珠(PLC地址102.5)
- 请求方法:POST
- 接口:`/api/writeSpecialPosition1`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ---------------------- |
| have | True | Int | hava=1:有,hava=0:无 |
- 返回:None
#### 14. 特定区域2是否有锡珠(PLC地址102.6)
- 请求方法:POST
- 接口:`/api/writeSpecialPosition2`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ---------------------- |
| have | True | Int | hava=1:有,hava=0:无 |
- 返回:None
#### 15. 特定区域3是否有锡珠(PLC地址102.7)
- 请求方法:POST
- 接口:`/api/writeSpecialPosition3`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ---- | ---- | ---- | ---------------------- |
| have | True | Int | hava=1:有,hava=0:无 |
- 返回:None
#### 16. 写侧面Pin1的体积(PLC地址104.0-107.7)
- 请求方法:POST
- 接口:`/api/writePin1SideVolume`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------ | ---- | ---- | ------- |
| volume | True | flt | "12.21" |
- 返回:None
#### 17. 写侧面Pin2的体积(PLC地址108.0-111.7)
- 请求方法:POST
- 接口:`/api/writePin2SideVolume`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------ | ---- | ---- | ------- |
| volume | True | str | "12.21" |
- 返回:None
#### 18. 写侧面Pin3的体积(PLC地址112.0-115.7)
- 请求方法:POST
- 接口:`/api/writePin3SideVolume`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------ | ---- | ---- | ------- |
| volume | True | str | "12.21" |
- 返回:None
#### 19. 初始化:所有点位清空、所有检测结果
- 请求方法:GET
- 接口:`/api/InitAll`
- 参数:None
- 返回:None
## 相机相关接口
#### 1. 相机切换程序
- 请求方法:POST
- 接口:`/api/cameraChange`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| ------------- | ---- | ---- | ------- |
| programNo_set | True | int | 0 1 2 3 |
- 返回:
data字段里返回当前的活跃程序``activate_programNo_set``,``ori_programNo_set``是原来的活跃程序。通过判断给的切断程序号以及活跃程序号判断是否改变成功,``change_status``为1是成功,为0修改是失败,-1就是相机出现问题通讯失败
```json
{
"ori_programNo_set": 0,
"activate_programNo_set": 1,
"change_status": 1
}
```
```json
{
"ori_programNo_set": 1,
"activate_programNo_set": 4,
"change_status": 0
}
```
```json
{
"ori_programNo_set": false,
"activate_programNo_set": false,
"change_status": -1
}
```
#### 2. 相机拿数据
- 请求方法:GET
- 接口:`/api/cameraGetData`
- 参数:
| 参数 | 必选 | 类型 | 说明 |
| --------- | ---- | ---- | ---------------------------------------------- |
| dmc | True | str | 0 |
| direction | True | int | 正面数据或者侧面数据<br />正面为1<br />侧面为0 |
- 返回:
获取失败的msg汇总
| msg |
| ------------------------------------------------------------ |
| LJX8IF_InitializeHighSpeedDataCommunicationSimpleArray Error |
| LJX8IF_PreStartHighSpeedDataCommunication Error |
| LJX8IF_StartHighSpeedDataCommunication Error |
| Failed to acquire image (timeout) |
```json
{
"msg": "LJX8IF_InitializeHighSpeedDataCommunicationSimpleArray Error",
"get_status": -1
}
```
```json
{
"msg": "get success",
"get_status": 1
}