更新转台程序 增加程序号

This commit is contained in:
XingCheng3
2026-05-27 16:33:15 +08:00
parent 30fa01aa56
commit cf6831dfbe

View File

@@ -48,6 +48,18 @@
<el-input v-model="ws1Result.错误消息" readonly size="small" style="width: 100%;color:red;" />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="程序版本" style="width: 100%;">
<el-select v-model="ws1Result.程序版本" filterable allow-create default-first-option size="small" style="width: 100%;">
<el-option v-for="item in programVersionOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="14">
<div style="height: 32px;"></div>
</el-col>
<el-col :span="10">
<el-form-item label="验证结果" style="width: 100%;">
<div v-if="ws1Result.验证结果 == 1"
@@ -211,6 +223,18 @@
<el-input v-model="ws2Result.错误消息" readonly size="small" style="width: 100%;color:red;" />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="程序版本" style="width: 100%;">
<el-select v-model="ws2Result.程序版本" filterable allow-create default-first-option size="small" style="width: 100%;">
<el-option v-for="item in programVersionOptions" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="14">
<div style="height: 32px;"></div>
</el-col>
<el-col :span="10">
<el-form-item label="验证结果" style="width: 100%;">
<div v-if="ws2Result.验证结果 == 1"
@@ -338,8 +362,14 @@ import { mqttIp, mqttTopic, mqttInitRequestTopic, writePlcApi_BtnType, selectOpN
// ==================== 常量定义 ====================
/** 程序版本 PLC 字符串信号标识 */
const PROGRAM_VERSION_TAG_ID = '208640'
/** 程序版本下拉选项 */
const PROGRAM_VERSION_OPTIONS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')
/** 轮询读取的所有 PLC 信号标识 */
const POLL_TAG_IDS = ['200004', '200005', '200006', '200007', '200380', '203240', '200440']
const POLL_TAG_IDS = ['200004', '200005', '200006', '200007', '200380', '203240', '200440', PROGRAM_VERSION_TAG_ID]
/** 状态灯信号 → data 属性映射 */
const STATUS_TAG_MAP = {
@@ -372,8 +402,9 @@ export default {
opNameList: [],
mqtt: window.mqtt,
// 双工位扫码验证数据
ws1Result: { 扫码值: '', 工单号: '', 扫码物料编码: '', 扫码序列号: '', 错误消息: '', 验证结果: '' },
ws2Result: { 扫码值: '', 工单号: '', 扫码物料编码: '', 扫码序列号: '', 错误消息: '', 验证结果: '' },
ws1Result: { 扫码值: '', 工单号: '', 扫码物料编码: '', 扫码序列号: '', 错误消息: '', 验证结果: '', 程序版本: '' },
ws2Result: { 扫码值: '', 工单号: '', 扫码物料编码: '', 扫码序列号: '', 错误消息: '', 验证结果: '', 程序版本: '' },
programVersionOptions: PROGRAM_VERSION_OPTIONS,
// 双工位托盘信息
ws1Tray: { 托盘号: '', 托盘物料编码: '', 托盘工件状态: '' },
ws2Tray: { 托盘号: '', 托盘物料编码: '', 托盘工件状态: '' },
@@ -451,12 +482,22 @@ export default {
}
},
/** 写入单个PLC信号值 */
async writePLCValue(opName, tagID, tagValue) {
return axios.post(writePlcApi_BtnType, {
tagTypeCodeID: tagID,
OPName: opName,
tagValue
}, { timeout: 5000 })
},
/** 根据工位名获取对应的状态对象和托盘对象 */
getWorkstationData(opName) {
const isWs1 = opName === this.opNameList[0]
return {
status: isWs1 ? this.ws1Status : this.ws2Status,
tray: isWs1 ? this.ws1Tray : this.ws2Tray
tray: isWs1 ? this.ws1Tray : this.ws2Tray,
result: isWs1 ? this.ws1Result : this.ws2Result
}
},
@@ -466,7 +507,7 @@ export default {
signalValues.forEach(item => {
valueMap[item.tagTypeCodeID] = item.tagValue
})
const { status, tray } = this.getWorkstationData(opName)
const { status, tray, result } = this.getWorkstationData(opName)
// 更新四个状态灯
Object.entries(STATUS_TAG_MAP).forEach(([tagId, key]) => {
if (valueMap[tagId] !== undefined) {
@@ -477,6 +518,7 @@ export default {
if (valueMap['200380'] !== undefined) tray.托盘号 = valueMap['200380']
if (valueMap['203240'] !== undefined) this.convertMaterialCode(opName, valueMap['203240'])
if (valueMap['200440'] !== undefined) tray.托盘工件状态 = TRAY_STATUS_TEXT[valueMap['200440']] || ''
if (valueMap[PROGRAM_VERSION_TAG_ID] !== undefined) result.程序版本 = valueMap[PROGRAM_VERSION_TAG_ID] || ''
},
/** 将PLC读取到的物料号通过存储过程转换为物料编码 */
@@ -756,6 +798,12 @@ export default {
return
}
const programVersion = result.程序版本 ? result.程序版本.toString() : ''
if (!programVersion) {
this.$message.warning('请先选择或输入程序版本!')
return
}
try {
await this.$confirm('确定要执行手动请求上线操作吗?', '确认操作', {
confirmButtonText: '确定',
@@ -776,11 +824,13 @@ export default {
return
}
axios.post(writePlcApi_BtnType, {
tagTypeCodeID: '205015',
OPName: opName,
tagValue: 'true'
}, { timeout: 5000 })
this.writePLCValue(opName, PROGRAM_VERSION_TAG_ID, programVersion)
.then(response => {
if (response.data.code != 0) {
return Promise.reject(new Error(response.data.msg || '程序版本写入失败'))
}
return this.writePLCValue(opName, '205015', 'true')
})
.then(response => {
if (response.data.code == 0) {
partLoadStatus.success = true