This commit is contained in:
2022-12-15 22:07:55 +08:00
parent 35d074c00e
commit cdd0e3c6af
2 changed files with 214 additions and 128 deletions

View File

@@ -109,7 +109,6 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
String device_code; String device_code;
//后工位申请任务请求时间 //后工位申请任务请求时间
private Date instruction_require_time = new Date(); private Date instruction_require_time = new Date();
//前工位申请任务请求时间 //前工位申请任务请求时间
@@ -140,10 +139,6 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
task2 = this.itemProtocol.getTask2(); task2 = this.itemProtocol.getTask2();
if (mode != last_mode) { if (mode != last_mode) {
if (mode == 2){
this.setRequireBackSucess(false);
this.setRequireHeadSucess(false);
}
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode); logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode);
} }
@@ -156,10 +151,16 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
logServer.deviceExecuteLog(this.device_code, "", "", "信号status" + last_status + "->" + status); logServer.deviceExecuteLog(this.device_code, "", "", "信号status" + last_status + "->" + status);
} }
if (move1 != last_move1) { if (move1 != last_move1) {
if (move1 == 0) {
this.setRequireHeadSucess(false);
}
logServer.deviceItemValue(this.device_code, "move1", String.valueOf(move1)); logServer.deviceItemValue(this.device_code, "move1", String.valueOf(move1));
logServer.deviceExecuteLog(this.device_code, "", "", "信号move1" + last_move1 + "->" + move1); logServer.deviceExecuteLog(this.device_code, "", "", "信号move1" + last_move1 + "->" + move1);
} }
if (move2 != last_move2) { if (move2 != last_move2) {
if (move2 == 0) {
this.setRequireBackSucess(false);
}
logServer.deviceItemValue(this.device_code, "move2", String.valueOf(move2)); logServer.deviceItemValue(this.device_code, "move2", String.valueOf(move2));
logServer.deviceExecuteLog(this.device_code, "", "", "信号move2" + last_move2 + "->" + move2); logServer.deviceExecuteLog(this.device_code, "", "", "信号move2" + last_move2 + "->" + move2);
} }
@@ -225,10 +226,10 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
acsToWmsService.feedbackTaskStatusToWms(array); acsToWmsService.feedbackTaskStatusToWms(array);
} }
} }
writing("to_command1", "0"); this.writing("to_command1", "0");
writing("to_onset1", "0"); this.writing("to_onset1", "0");
writing("to_target1", "0"); this.writing("to_target1", "0");
writing("to_task1", "0"); this.writing("to_task1", "0");
} }
} }
} }
@@ -275,10 +276,10 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
acsToWmsService.feedbackTaskStatusToWms(array); acsToWmsService.feedbackTaskStatusToWms(array);
} }
} }
writing("to_command2", "0"); this.writing("to_command2", "0");
writing("to_onset2", "0"); this.writing("to_onset2", "0");
writing("to_target2", "0"); this.writing("to_target2", "0");
writing("to_task2", "0"); this.writing("to_task2", "0");
} }
} }
} }
@@ -419,16 +420,26 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
return false; return false;
} else { } else {
this.instruction_head_time = date; this.instruction_head_time = date;
//工位取货关联设备 //工位取货关联设备
List<String> getDeviceCodeList = this.getExtraDeviceCodes("head_get_device_code"); List<String> getDeviceCodeList = this.getExtraDeviceCodes("head_get_device_code");
//工位放货关联设备 //工位放货关联设备
List<String> putDeviceCodeList = this.getExtraDeviceCodes("head_put_device_code"); List<String> putDeviceCodeList = this.getExtraDeviceCodes("head_put_device_code");
//前工位重复关联设备
List<String> repeatDeviceCodeList = this.getExtraDeviceCodes("head_repeat_device_code");
//前工位重复关联设备放货设备
List<String> repeatPutDeviceCodeList = this.getExtraDeviceCodes("head_repeat_put_device_code");
TaskDto task = null; TaskDto task = null;
for (int i = 0; i < getDeviceCodeList.size(); i++) { for (int i = 0; i < getDeviceCodeList.size(); i++) {
String startDeviceCode = getDeviceCodeList.get(i); String startDeviceCode = getDeviceCodeList.get(i);
List<TaskDto> taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); List<TaskDto> taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode);
if (ObjectUtil.isNotEmpty(taskDtos)) { if (ObjectUtil.isNotEmpty(taskDtos)) {
TaskDto taskDto = taskDtos.get(0); TaskDto taskDto = taskDtos.get(0);
if (repeatDeviceCodeList.contains(startDeviceCode)) {
String next_device_code = taskDto.getNext_device_code();
if (!repeatPutDeviceCodeList.contains(next_device_code)) {
continue;
}
}
Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code());
instruction.setInstruction_status("1"); instruction.setInstruction_status("1");
instruction.setUpdate_time(DateUtil.now()); instruction.setUpdate_time(DateUtil.now());
@@ -440,6 +451,12 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
List<TaskDto> taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); List<TaskDto> taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode);
if (ObjectUtil.isNotEmpty(taskDtoList)) { if (ObjectUtil.isNotEmpty(taskDtoList)) {
task = taskDtoList.get(0); task = taskDtoList.get(0);
String next_device_code = task.getNext_device_code();
if (repeatDeviceCodeList.contains(startDeviceCode)) {
if (!repeatPutDeviceCodeList.contains(next_device_code)) {
continue;
}
}
} }
if (ObjectUtil.isNotEmpty(task)) break; if (ObjectUtil.isNotEmpty(task)) break;
} }
@@ -506,6 +523,10 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
List<String> getDeviceCodeList = this.getExtraDeviceCodes("back_get_device_code"); List<String> getDeviceCodeList = this.getExtraDeviceCodes("back_get_device_code");
//后工位放货关联设备 //后工位放货关联设备
List<String> putDeviceCodeList = this.getExtraDeviceCodes("back_put_device_code"); List<String> putDeviceCodeList = this.getExtraDeviceCodes("back_put_device_code");
//后工位重复关联设备
List<String> repeatDeviceCodeList = this.getExtraDeviceCodes("back_repeat_device_code");
//后工位重复关联设备放货设备
List<String> repeatPutDeviceCodeList = this.getExtraDeviceCodes("back_repeat_put_device_code");
TaskDto task = null; TaskDto task = null;
for (int i = 0; i < getDeviceCodeList.size(); i++) { for (int i = 0; i < getDeviceCodeList.size(); i++) {
@@ -513,6 +534,12 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
List<TaskDto> taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode); List<TaskDto> taskDtos = taskserver.queryTaskByDeviceCodeAndStatus(startDeviceCode);
if (ObjectUtil.isNotEmpty(taskDtos)) { if (ObjectUtil.isNotEmpty(taskDtos)) {
TaskDto taskDto = taskDtos.get(0); TaskDto taskDto = taskDtos.get(0);
if (repeatDeviceCodeList.contains(startDeviceCode)) {
String next_device_code = taskDto.getNext_device_code();
if (!repeatPutDeviceCodeList.contains(next_device_code)) {
continue;
}
}
Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code()); Instruction instruction = instructionService.findByTaskcode(taskDto.getTask_code());
instruction.setInstruction_status("1"); instruction.setInstruction_status("1");
instruction.setUpdate_time(DateUtil.now()); instruction.setUpdate_time(DateUtil.now());
@@ -524,6 +551,12 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
List<TaskDto> taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode); List<TaskDto> taskDtoList = taskserver.queryTaskByDeviceCode(startDeviceCode);
if (ObjectUtil.isNotEmpty(taskDtoList)) { if (ObjectUtil.isNotEmpty(taskDtoList)) {
task = taskDtoList.get(0); task = taskDtoList.get(0);
String next_device_code = task.getNext_device_code();
if (repeatDeviceCodeList.contains(startDeviceCode)) {
if (!repeatPutDeviceCodeList.contains(next_device_code)) {
continue;
}
}
} }
if (ObjectUtil.isNotEmpty(task)) break; if (ObjectUtil.isNotEmpty(task)) break;
} }
@@ -632,6 +665,7 @@ public class HfTwoRGVDeviceDriver extends AbstractOpcDeviceDriver implements Dev
itemMap.put(to_param, value); itemMap.put(to_param, value);
ReadUtil.write(itemMap, server); ReadUtil.write(itemMap, server);
log.info("设备号:{},下发信号{},下发信号值{}", device_code, to_param, value);
} }
public boolean exe_business() { public boolean exe_business() {

View File

@@ -52,106 +52,154 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="电气调度号" label-width="150px"> <el-form-item label="电气调度号" label-width="150px">
<el-input v-model="form.OPCServer" /> <el-input v-model="form.OPCServer"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="前工位取货点" prop="device_code" label-width="200">
<el-select
v-model="form.head_get_device_code"
multiple
filterable
reserve-keyword
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="前工位放货点" prop="device_code" label-width="200">
<el-select
v-model="form.head_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="前工位重复点" prop="device_code" label-width="200">
<el-select
v-model="form.head_repeat_device_code"
multiple
filterable
reserve-keyword
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="前重复放货点" prop="device_code" label-width="200">
<el-select
v-model="form.head_repeat_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="后工位取货点" prop="device_code" label-width="200">
<el-select
v-model="form.back_get_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="后工位放货点" prop="device_code" label-width="200">
<el-select
v-model="form.back_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="后工位重复点" prop="device_code" label-width="200">
<el-select
v-model="form.back_repeat_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="后重复放货点" prop="device_code" label-width="200">
<el-select
v-model="form.back_repeat_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-col>
<el-form-item label="前工位取货点" prop="device_code" label-width="200">
<el-select
v-model="form.head_get_device_code"
multiple
filterable
reserve-keyword
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="装货点" prop="device_code">-->
<!-- <el-select-->
<!-- v-model="form.load_device_code"-->
<!-- filterable-->
<!-- multiple-->
<!-- placeholder="请选择"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in deviceList"-->
<!-- :key="item.device_code"-->
<!-- :label="item.device_name"-->
<!-- :value="item.device_code"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="前工位放货点" prop="device_code" label-width="200">
<el-select
v-model="form.head_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="后工位取货点" prop="device_code" label-width="200">
<el-select
v-model="form.back_get_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="装货点" prop="device_code">-->
<!-- <el-select-->
<!-- v-model="form.load_device_code"-->
<!-- filterable-->
<!-- multiple-->
<!-- placeholder="请选择"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in deviceList"-->
<!-- :key="item.device_code"-->
<!-- :label="item.device_name"-->
<!-- :value="item.device_code"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="后工位放货点" prop="device_code" label-width="200">
<el-select
v-model="form.back_put_device_code"
filterable
reserve-keyword
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-form> </el-form>
</el-card> </el-card>
@@ -163,17 +211,17 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="检验有货"> <el-form-item label="检验有货">
<el-switch v-model="form.inspect_in_stocck" /> <el-switch v-model="form.inspect_in_stocck"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="忽视取货校验" label-width="150px"> <el-form-item label="忽视取货校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check" /> <el-switch v-model="form.ignore_pickup_check"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="忽视放货校验" label-width="150px"> <el-form-item label="忽视放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check" /> <el-switch v-model="form.ignore_release_check"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -181,12 +229,12 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="呼叫"> <el-form-item label="呼叫">
<el-switch v-model="form.apply_task" /> <el-switch v-model="form.apply_task"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="响应" label-width="150px"> <el-form-item label="响应" label-width="150px">
<el-switch v-model="form.manual_create_task" /> <el-switch v-model="form.manual_create_task"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -228,7 +276,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="是否输入物料" label-width="150px"> <el-form-item label="是否输入物料" label-width="150px">
<el-switch v-model="form.input_material" /> <el-switch v-model="form.input_material"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -243,12 +291,12 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="取货"> <el-form-item label="取货">
<el-switch v-model="form.is_pickup" /> <el-switch v-model="form.is_pickup"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="放货"> <el-form-item label="放货">
<el-switch v-model="form.is_release" /> <el-switch v-model="form.is_release"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -268,8 +316,8 @@
style="width: 100%;margin-bottom: 15px" style="width: 100%;margin-bottom: 15px"
> >
<el-table-column prop="name" label="用途" /> <el-table-column prop="name" label="用途"/>
<el-table-column prop="code" label="别名要求" /> <el-table-column prop="code" label="别名要求"/>
<el-table-column prop="db" label="DB块"> <el-table-column prop="db" label="DB块">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input <el-input
@@ -285,7 +333,7 @@
<el-link type="primary" :underline="false" @click.native="test_read1()">测试读</el-link> <el-link type="primary" :underline="false" @click.native="test_read1()">测试读</el-link>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input" /> <el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -305,8 +353,8 @@
style="width: 100%;margin-bottom: 15px" style="width: 100%;margin-bottom: 15px"
> >
<el-table-column prop="name" label="用途" /> <el-table-column prop="name" label="用途"/>
<el-table-column prop="code" label="别名要求" /> <el-table-column prop="code" label="别名要求"/>
<el-table-column prop="db" label="DB块"> <el-table-column prop="db" label="DB块">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input <el-input
@@ -322,7 +370,7 @@
<el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link> <el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input" /> <el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -331,7 +379,7 @@
<el-card class="box-card" shadow="never"> <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="role-span" /> <span class="role-span"/>
<el-button <el-button
:loading="false" :loading="false"
icon="el-icon-check" icon="el-icon-check"
@@ -398,7 +446,11 @@ export default {
head_get_device_code: [], head_get_device_code: [],
back_get_device_code: [], back_get_device_code: [],
head_put_device_code: [], head_put_device_code: [],
back_put_device_code: [] back_put_device_code: [],
back_repeat_device_code: [],
back_repeat_put_device_code: [],
head_repeat_device_code: [],
head_repeat_put_device_code: []
}, },
rules: {} rules: {}
} }