增加点击防抖事件
增加笼子使用详情的计算优化。
增加数据推送时的报错处理
测量台交互逻辑增加
参数界面增加翻转加减速度
| | |
| | | { |
| | | "Value cannot be empty":"Value cannot be empty", |
| | | "Manual":"Manual", |
| | | "Starting position":"Starting position", |
| | | "Starting position":"Start bit", |
| | | "Target position":"End position", |
| | | "Status":"Status", |
| | | "B01 film processing vehicle":"B01 film processing vehicle", |
| | | "B01 film processing vehicle":"B01 Transport vehicle", |
| | | "A01 Conveyor Platform":"A01 Conveyor Platform", |
| | | "Y-axis current bit":"Y-axis current bit", |
| | | "No task":"No task", |
| | | "Not on board":"Not on board", |
| | | "Already on board":"Already on board", |
| | | "accomplished":"accomplished", |
| | | "A02 measuring table":"A02 measuring table", |
| | | "C02 film cage":"C02 film cage", |
| | | "C01 film cage":"C01 film cage", |
| | |
| | | "Delete":"Delete", |
| | | "Out":"Out", |
| | | |
| | | |
| | | "Operation successful":"Operation successful", |
| | | "The glass for this order is still in the cage and cannot be deleted":"The glass for this order is still in the cage and cannot be deleted.", |
| | | "Operation canceled":"Operation canceled", |
| | | "There is no glass for this order":"There is no glass for this order", |
| | | "There are currently tasks":"There are currently tasks", |
| | |
| | | { |
| | | |
| | | "Value cannot be empty":"值不能为空", |
| | | "Manual":"手动", |
| | | "Starting position":"开始位置", |
| | | "Target position":"目标位置", |
| | | "Status":"状态", |
| | | "B01 film processing vehicle":"B01理片车", |
| | | "A01 Conveyor Platform":"A01输送台", |
| | | "Y-axis current bit":"Y轴当前位置", |
| | | "No task":"无任务", |
| | | "Not on board":"玻璃未上车", |
| | | "Already on board":"玻璃已上车", |
| | | "accomplished":"已完成", |
| | | "A02 measuring table":"A02测量台", |
| | | "C02 film cage":"C02理片笼", |
| | | "C01 film cage":"C01理片笼", |
| | |
| | | "Save":"保存", |
| | | "Select file":"选择文件", |
| | | |
| | | "ip2":"192.168.10.2", |
| | | "ip":"localhost", |
| | | "ip":"192.168.10.2", |
| | | "ip2":"localhost", |
| | | "systemTitle": "登录系统", |
| | | "usernamePlaceholder": "请输入用户名", |
| | | "passwordPlaceholder": "请输入密码", |
| | |
| | | "Delete": "删除", |
| | | "Out": "配片出片", |
| | | "Operation successful": "操作成功", |
| | | "The glass for this order is still in the cage and cannot be deleted": "此订单的玻璃还在笼子里,不能删除", |
| | | "Operation canceled": "操作取消", |
| | | "There is no such order": "没有此订单的玻璃", |
| | | "There are currently tasks": "当前有任务", |
| | |
| | | <span style="float: right; padding: 3px 0"> {{ language=="zh-CN"?plcSigns[11].name:plcSigns[11].usname }}<el-input style="width: 30%;" v-model="plcSigns[11].value" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')" |
| | | @keyup.enter.native="writeValue(plcSigns[11])" @focus="refresh()" @blur="writeValue(plcSigns[11])"></el-input>mm</span> |
| | | <!-- <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button> --> |
| | | </div> |
| | | <div style="display: flex;"> |
| | | <div> |
| | |
| | | @keyup.enter.native="writeValue(plcSigns[19])" @focus="refresh()" @blur="writeValue(plcSigns[19])"></el-input>m/min |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[20])">{{ language=="zh-CN"?plcSigns[20].name:plcSigns[20].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[20], 0)" |
| | | :style="{ backgroundColor: plcSigns[20].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[20].name : plcSigns[20].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[21].value" @focus="refresh()" @blur="writeValue(plcSigns[21])" |
| | | @keyup.enter.native="writeValue(plcSigns[21])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[22])">{{ language=="zh-CN"?plcSigns[22].name:plcSigns[22].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[22], 0)" |
| | | :style="{ backgroundColor: plcSigns[22].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[22].name : plcSigns[22].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[23].value" @focus="refresh()" @blur="writeValue(plcSigns[23])" |
| | | @keyup.enter.native="writeValue(plcSigns[23])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | |
| | | :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[32])">{{ language=="zh-CN"?plcSigns[32].name:plcSigns[32].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[32], 0)" |
| | | :style="{ backgroundColor: plcSigns[32].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[32].name : plcSigns[32].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[33].value" @focus="refresh()" @blur="writeValue(plcSigns[33])" |
| | | @keyup.enter.native="writeValue(plcSigns[33])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[34])">{{ language=="zh-CN"?plcSigns[34].name:plcSigns[34].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[34], 0)" |
| | | :style="{ backgroundColor: plcSigns[34].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[34].name : plcSigns[34].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[35].value" @focus="refresh()" @blur="writeValue(plcSigns[35])" |
| | | @keyup.enter.native="writeValue(plcSigns[35])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | |
| | | @keyup.enter.native="writeValue(plcSigns[51])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | {{ language=="zh-CN"?plcSigns[137].name:plcSigns[137].usname }}<el-input style="width: 30%;" v-model="plcSigns[137].value" |
| | | @focus="refresh()" @blur="writeValue(plcSigns[137])" |
| | | @keyup.enter.native="writeValue(plcSigns[137])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | {{ language=="zh-CN"?plcSigns[138].name:plcSigns[138].usname }}<el-input style="width: 30%;" v-model="plcSigns[138].value" |
| | | @focus="refresh()" @blur="writeValue(plcSigns[138])" |
| | | @keyup.enter.native="writeValue(plcSigns[138])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;"> |
| | | <div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[52])">{{ language=="zh-CN"?plcSigns[52].name:plcSigns[52].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[52], 0)" |
| | | :style="{ backgroundColor: plcSigns[52].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[52].name : plcSigns[52].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[53].value" @focus="refresh()" @blur="writeValue(plcSigns[53])" |
| | | @keyup.enter.native="writeValue(plcSigns[53])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[54])">{{ language=="zh-CN"?plcSigns[54].name:plcSigns[54].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[54], 0)" |
| | | :style="{ backgroundColor: plcSigns[54].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[54].name : plcSigns[54].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[55].value" @focus="refresh()" @blur="writeValue(plcSigns[55])" |
| | | @keyup.enter.native="writeValue(plcSigns[55])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[56])">{{ language=="zh-CN"?plcSigns[56].name:plcSigns[56].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[56], 0)" |
| | | :style="{ backgroundColor: plcSigns[56].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[56].name : plcSigns[56].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[57].value" @focus="refresh()" @blur="writeValue(plcSigns[57])" |
| | | @keyup.enter.native="writeValue(plcSigns[57])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[58])">{{ language=="zh-CN"?plcSigns[58].name:plcSigns[58].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[58], 0)" |
| | | :style="{ backgroundColor: plcSigns[58].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[58].name : plcSigns[58].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[59].value" @focus="refresh()" @blur="writeValue(plcSigns[59])" |
| | | @keyup.enter.native="writeValue(plcSigns[59])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[60])">{{ language=="zh-CN"?plcSigns[60].name:plcSigns[60].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[60], 0)" |
| | | :style="{ backgroundColor: plcSigns[60].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[60].name : plcSigns[60].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[61].value" @focus="refresh()" @blur="writeValue(plcSigns[61])" |
| | | @keyup.enter.native="writeValue(plcSigns[61])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[62])">{{ language=="zh-CN"?plcSigns[62].name:plcSigns[62].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[62], 0)" |
| | | :style="{ backgroundColor: plcSigns[62].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[62].name : plcSigns[62].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[63].value" @focus="refresh()" @blur="writeValue(plcSigns[63])" |
| | | @keyup.enter.native="writeValue(plcSigns[63])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[64])">{{ language=="zh-CN"?plcSigns[64].name:plcSigns[64].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[64], 0)" |
| | | :style="{ backgroundColor: plcSigns[64].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[64].name : plcSigns[64].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[65].value" @focus="refresh()" @blur="writeValue(plcSigns[65])" |
| | | @keyup.enter.native="writeValue(plcSigns[65])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | |
| | | </div> |
| | | <div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[69])">{{ language=="zh-CN"?plcSigns[69].name:plcSigns[69].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[69], 0)" |
| | | :style="{ backgroundColor: plcSigns[69].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[69].name : plcSigns[69].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[70].value" @focus="refresh()" @blur="writeValue(plcSigns[70])" |
| | | @keyup.enter.native="writeValue(plcSigns[70])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[71])">{{ language=="zh-CN"?plcSigns[71].name:plcSigns[71].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[71], 0)" |
| | | :style="{ backgroundColor: plcSigns[71].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[71].name : plcSigns[71].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[72].value" @focus="refresh()" @blur="writeValue(plcSigns[72])" |
| | | @keyup.enter.native="writeValue(plcSigns[72])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[73])">{{ language=="zh-CN"?plcSigns[73].name:plcSigns[73].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[73], 0)" |
| | | :style="{ backgroundColor: plcSigns[73].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[73].name : plcSigns[73].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[74].value" @focus="refresh()" @blur="writeValue(plcSigns[74])" |
| | | @keyup.enter.native="writeValue(plcSigns[74])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[75])">{{ language=="zh-CN"?plcSigns[75].name:plcSigns[75].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[75], 0)" |
| | | :style="{ backgroundColor: plcSigns[75].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[75].name : plcSigns[75].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[76].value" @focus="refresh()" @blur="writeValue(plcSigns[76])" |
| | | @keyup.enter.native="writeValue(plcSigns[76])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[77])">{{ language=="zh-CN"?plcSigns[77].name:plcSigns[77].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[77], 0)" |
| | | :style="{ backgroundColor: plcSigns[77].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[77].name : plcSigns[77].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[78].value" @focus="refresh()" @blur="writeValue(plcSigns[78])" |
| | | @keyup.enter.native="writeValue(plcSigns[78])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[79])">{{ language=="zh-CN"?plcSigns[79].name:plcSigns[79].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[79], 0)" |
| | | :style="{ backgroundColor: plcSigns[79].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[79].name : plcSigns[79].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[80].value" @focus="refresh()" @blur="writeValue(plcSigns[80])" |
| | | @keyup.enter.native="writeValue(plcSigns[80])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[81])">{{ language=="zh-CN"?plcSigns[81].name:plcSigns[81].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[79], 0)" |
| | | :style="{ backgroundColor: plcSigns[79].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[79].name : plcSigns[79].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[82].value" @focus="refresh()" @blur="writeValue(plcSigns[82])" |
| | | @keyup.enter.native="writeValue(plcSigns[82])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | {{ language=="zh-CN"?plcSigns[83].name:plcSigns[83].usname }} |
| | |
| | | </div> |
| | | <div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[85])">{{ language=="zh-CN"?plcSigns[85].name:plcSigns[85].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[85], 0)" |
| | | :style="{ backgroundColor: plcSigns[85].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[85].name : plcSigns[85].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[86].value" @focus="refresh()" @blur="writeValue(plcSigns[86])" |
| | | @keyup.enter.native="writeValue(plcSigns[86])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[87])">{{ language=="zh-CN"?plcSigns[87].name:plcSigns[87].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[87], 0)" |
| | | :style="{ backgroundColor: plcSigns[87].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[87].name : plcSigns[87].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[88].value" @focus="refresh()" @blur="writeValue(plcSigns[88])" |
| | | @keyup.enter.native="writeValue(plcSigns[88])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>° |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[89])">{{ language=="zh-CN"?plcSigns[89].name:plcSigns[89].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[89], 0)" |
| | | :style="{ backgroundColor: plcSigns[89].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[89].name : plcSigns[89].usname |
| | | }}</el-button> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[90])">{{ language=="zh-CN"?plcSigns[90].name:plcSigns[90].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[90], 0)" |
| | | :style="{ backgroundColor: plcSigns[90].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[90].name : plcSigns[90].usname |
| | | }}</el-button> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[91])">{{ language=="zh-CN"?plcSigns[91].name:plcSigns[91].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[91], 0)" |
| | | :style="{ backgroundColor: plcSigns[91].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[91].name : plcSigns[91].usname |
| | | }}</el-button> |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | {{ language=="zh-CN"?plcSigns[92].name:plcSigns[92].usname }} |
| | |
| | | </el-card> |
| | | <el-card class="box-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <span>笼子参数</span> |
| | | <span>{{ language=="zh-CN"?"笼子参数":"Cage parameter" }}</span> |
| | | </div> |
| | | <div style="display: flex;"> |
| | | <div> |
| | |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[109])">{{ language=="zh-CN"?plcSigns[109].name:plcSigns[109].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[109], 0)" |
| | | :style="{ backgroundColor: plcSigns[109].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[109].name : plcSigns[109].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[110].value" @focus="refresh()" @blur="writeValue(plcSigns[110])" |
| | | @keyup.enter.native="writeValue(plcSigns[110])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[111])">{{ language=="zh-CN"?plcSigns[111].name:plcSigns[111].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[111], 0)" |
| | | :style="{ backgroundColor: plcSigns[111].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[111].name : plcSigns[111].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[112].value" @focus="refresh()" @blur="writeValue(plcSigns[112])" |
| | | @keyup.enter.native="writeValue(plcSigns[1112])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | |
| | | :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[119])" >{{ language=="zh-CN"?plcSigns[119].name:plcSigns[119].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[119], 0)" |
| | | :style="{ backgroundColor: plcSigns[119].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[119].name : plcSigns[119].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[120].value" @focus="refresh()" @blur="writeValue(plcSigns[120])" |
| | | @keyup.enter.native="writeValue(plcSigns[120])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | |
| | | :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min |
| | | </div> |
| | | <div v-if="plcSigns.length > 0"> |
| | | <el-button type="primary" @click="writeValue(plcSigns[127])">{{ language=="zh-CN"?plcSigns[127].name:plcSigns[127].usname }}</el-button> |
| | | <el-button type="primary" @mousedown.native="writeValue(plcSigns[127], 0)" |
| | | :style="{ backgroundColor: plcSigns[127].value == '0' ? '' : 'green' }">{{ language == "zh-CN" ? plcSigns[127].name : plcSigns[127].usname |
| | | }}</el-button> |
| | | <el-input style="width: 30%;" v-model="plcSigns[128].value" @focus="refresh()" @blur="writeValue(plcSigns[128])" |
| | | @keyup.enter.native="writeValue(plcSigns[128])" |
| | | oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm |
| | |
| | | // import ManualonePosition2 from './ManualonePosition2.vue'; |
| | | // import ManualJog from './ManualJog.vue'; |
| | | import { |
| | | writeValue |
| | | writeValue, writeButton |
| | | } from "../../api/home"; |
| | | // import { createWebSocket } from '../../api/websocket.js'; |
| | | let socket; |
| | |
| | | }, |
| | | writeValue(plcSign) { |
| | | const value = plcSign.value || 1; // 默认值为1 |
| | | if (plcSign.ratio==2) { |
| | | let state=plcSign.value ; |
| | | if(state=="1"){ |
| | | state=0; |
| | | }else{ |
| | | state=1; |
| | | } |
| | | writeButton(plcSign.unit, state, plcSign.ratio).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | }else{ |
| | | writeValue(plcSign.unit, value, plcSign.ratio).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | this.updates = false; |
| | | }, |
| | | // updateButtonValue(dataGroup, itemIndex) { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* 使用 ::v-deep 来覆盖 Element UI 插件的样式 */ |
| | | ::v-deep .el-input__inner { |
| | | padding: 0 !important; /* 去除内边距 */ |
| | | text-align: center; |
| | | } |
| | | * { |
| | | font-size: 13px; /* 设置字体大小 */ |
| | | } |
| | |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | | <el-table :data="this.tasklist1" border style="width: 700px;"> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column> |
| | | <el-table :data="this.tasklist1" border style="width: 730px;"> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Start bit')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" |
| | | width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" |
| | | width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" |
| | | width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')" width="70"></el-table-column> |
| | | |
| | | <el-table-column :min-width="120" :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table :data="this.tasklist2" border style="width: 100%"> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.cage" :label="$t('Start bit')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" |
| | | width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" |
| | | width="70"></el-table-column> |
| | | <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" |
| | | width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column> |
| | | <el-table-column prop="storageCage.films" :label="$t('Films')" width="70"></el-table-column> |
| | | <el-table-column :min-width="120" :label="$t('Terminate Task')"> |
| | | <template slot-scope='scope'> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | |
| | | @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)"> |
| | | {{ scope.row.disabled == 0 ? $t('Disable') : $t('Enable') }}</el-button> |
| | | <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" |
| | | :disabled="(scope.row.width < scope.row.glassWidth + 100 ? true : false)" |
| | | :disabled="(scope.row.width < scope.row.glassWidth + 300 ? true : false)" |
| | | @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 1)">{{ $t('Add') |
| | | }} |
| | | </el-button> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="finishnumber" :label="$t('Finish No')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mate No')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="films" :label="$t('Films')" align="center"> |
| | | </el-table-column> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')" align="center"> |
| | |
| | | <el-table-column width="420" :label="$t('Operate')"> |
| | | |
| | | <template slot-scope='scope' > |
| | | <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')" style="min-width: 70px; max-width: 70px;" |
| | | v-show="scope.row.state >= 0 ? true : false"> |
| | | <el-select v-model="selected[scope.$index]" :placeholder="$t('Line')" |
| | | style="min-width: 70px; max-width: 70px;" v-show="scope.row.state >= 0 ? true : false"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')" align="center"> |
| | | <template slot-scope="scope"> |
| | | <div :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '',width: '105%', height: '100%', lineHeight: '38px' }"> |
| | | <div |
| | | :style="{ backgroundColor: scope.row.state === 0 ? '#00FFFF' : '', width: '105%', height: '100%', lineHeight: '38px' }"> |
| | | {{ scope.row.mateid }} |
| | | </div> |
| | | </template> |
| | |
| | | </div> |
| | | <el-table :data="this.StorageCageAddInfo" :height="700" border style="width: 100%;overflow: auto;"> |
| | | <el-table-column prop="flowcard" :label="$t('Order')"></el-table-column> |
| | | <el-table-column prop="tier" :label="$t('Tier')"></el-table-column> |
| | | <el-table-column prop="width" :label="$t('Width')"></el-table-column> |
| | | <el-table-column prop="height" :label="$t('Height')"></el-table-column> |
| | | <el-table-column prop="thickness" :label="$t('Thickness')"></el-table-column> |
| | | <el-table-column prop="films" :label="$t('Films')"></el-table-column> |
| | | <el-table-column prop="tier" :label="$t('Tier')"></el-table-column> |
| | | <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column> |
| | | <el-table-column :label="$t('Operate')"> |
| | | <template slot-scope='scope'> |
| | |
| | | import LanguageMixin from '../../lang/LanguageMixin'; |
| | | import * as XLSX from "../../../node_modules/xlsx/xlsx.mjs"; |
| | | let socket; |
| | | export function debounce(func, wait = 300) { |
| | | let timeout; |
| | | return function (...args) { |
| | | clearTimeout(timeout); // 清除上次的定时器 |
| | | timeout = setTimeout(() => func.apply(this, args), wait); // 设置一个新的定时器 |
| | | }; |
| | | } |
| | | export default { |
| | | name: "Home", |
| | | data() { |
| | |
| | | console.log("@" + flowcard + "@"); |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('The glass for this order is still in the cage and cannot be deleted')); |
| | | } |
| | | }); |
| | | }, |
| | | // 防抖版的 DeleteOutTask 方法 |
| | | //删除出片队列 |
| | | DeleteOutTask(id) { |
| | | debouncedDeleteOutTask: debounce(function (id) { |
| | | DeleteOutTask(id).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | | } else { |
| | | this.$message.error(this.$t('Operation failed')); |
| | | } |
| | | }); |
| | | }, 200), // 防抖延迟时间为 200 毫秒 |
| | | |
| | | // 修改原方法,调用防抖版的 DeleteOutTask |
| | | DeleteOutTask(id) { |
| | | // 调用防抖版本的 DeleteOutTask |
| | | this.debouncedDeleteOutTask(id); |
| | | }, |
| | | |
| | | //保存测量膜系的参数 |
| | |
| | | |
| | | //修改理片笼玻璃信息 |
| | | UpdateStroageCageByCell(cell, nownum, num) { |
| | | // 调用防抖方法 |
| | | this.debouncedUpdateStroageCageByCell(cell, nownum, num); |
| | | |
| | | // if (nownum == null && num == 1) { |
| | | // this.StorageCageAdd = true; |
| | | // this.Measuermode = true; |
| | | // this.cell = cell; |
| | | // } else { |
| | | // if (nownum + num == 0) { |
| | | // num = 0; |
| | | // } |
| | | // UpdateStroageCageByCell(cell, num).then(res => { |
| | | // if (res.data.message3 == 200) { |
| | | // this.$message.success(this.$t('Operation successful')); |
| | | // } |
| | | // }); |
| | | // } |
| | | |
| | | }, |
| | | // 防抖版的 UpdateStroageCageByCell 方法 |
| | | debouncedUpdateStroageCageByCell: debounce(function (cell, nownum, num) { |
| | | if (nownum == null && num == 1) { |
| | | this.StorageCageAdd = true; |
| | | this.Measuermode = true; |
| | |
| | | } |
| | | }); |
| | | } |
| | | }, 200), // 设置防抖的时间间隔为 200 毫秒 |
| | | |
| | | |
| | | AddOutGlass(cell, glasstype) { |
| | | this.debouncedAddOutGlass(cell, glasstype); |
| | | // AddOutGlass(cell, glasstype).then(res => { |
| | | // if (res.data.message == 200) { |
| | | // this.$message.success(this.$t('Operation successful')); |
| | | // } else { |
| | | // this.$message.error(this.$t('Operation failed')); |
| | | // } |
| | | // }); |
| | | |
| | | }, |
| | | AddOutGlass(cell, glasstype) { |
| | | debouncedAddOutGlass: debounce(function (cell, glasstype) { |
| | | AddOutGlass(cell, glasstype).then(res => { |
| | | if (res.data.message == 200) { |
| | | this.$message.success(this.$t('Operation successful')); |
| | |
| | | this.$message.error(this.$t('Operation failed')); |
| | | } |
| | | }); |
| | | }, 200), // 设置防抖的时间间隔为 200 毫秒 |
| | | |
| | | }, |
| | | //启用//理片笼禁用 |
| | | UpdateDisabled(cage, cell, disabled) { |
| | | Disabled(cage, cell, disabled).then(res => { |
| | |
| | | storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class); |
| | | spianService = WebSocketServer.applicationContext.getBean(SpianServiceNew.class); |
| | | albaniaMapper = WebSocketServer.applicationContext.getBean(AlbaniaMapper.class); |
| | | |
| | | // spianService.selectout(1); |
| | | // storageCageService.ScanMatch("123",1,1); |
| | | // spianService.mateOut(); |
| | | // 读取DB14区文件 |
| | | PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; |
| | |
| | | // 运送车请求和测量完成请求 |
| | | GlassInfo glass = albaniaMapper.SelectGlass(); |
| | | if (PLCToMES != null && glass != null && MESToPLC != null) { |
| | | if (PLCToMES.equals("1")&& MESToPLC.equals("0")&&("1".equals(GaToMES)||"2".equals(GaToMES))) { |
| | | if (PLCToMES.equals("1")&& MESToPLC.equals("0")&&("1".equals(GaToMES)||"2".equals(GaToMES))&& taskcont == 0) { |
| | | try { |
| | | Thread.sleep(100); // 每100毫秒检查一次 |
| | | } catch (InterruptedException e) { |
| | |
| | | String cleanedLayer = cleanedLayers.isEmpty() ? "" : cleanedLayers; |
| | | |
| | | if ("4".equals(PlcRequest)) { |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0); |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), |
| | | (short) 0); |
| | | System.out.println("收四归零"); |
| | | } |
| | | // 扫码请求时 |
| | |
| | | cleanedMateid="0"; |
| | | cleanedLayer="0"; |
| | | } |
| | | int cont = storageCageService.ScanMatch(celanedOrder, Integer.parseInt(cleanedMateid),Integer.parseInt(cleanedLayer)); |
| | | int cont = storageCageService.ScanMatch(celanedOrder, Integer.parseInt(cleanedMateid), |
| | | Integer.parseInt(cleanedLayer)); |
| | | if (cont > 0) { |
| | | System.out.println("扫码成功"); |
| | | System.out.println( |
| | |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home"); |
| | | |
| | | if (sendwServer != null) { |
| | | try { |
| | | Iterator<WebSocketServer> iterator = sendwServer.iterator(); |
| | | while (iterator.hasNext()) { |
| | | |
| | | WebSocketServer webserver = iterator.next(); |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | |
| | | webserver.clearMessages(); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); // 打印堆栈信息,方便定位问题 |
| | | System.out.println("webserver出现异常: " + e.getMessage()); |
| | | // TODO: handle exception |
| | | } |
| | | } |
| | | |
| | | // ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home"); |
| | | // ArrayList<WebSocketServer> sendwServer = |
| | | // WebSocketServer.sessionMap.get("Home"); |
| | | // if (sendwServer != null) { |
| | | // for (WebSocketServer webserver : sendwServer) { |
| | | // webserver.sendMessage(jsonObject.toString()); |
| | |
| | | // } |
| | | |
| | | } catch (InterruptedException e) { |
| | | System.out.println("线程出现异常"); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | |
| | | List<String> addressList21 = Arrays.asList(config.getProperty("PlcIO.State").split(",")); |
| | | List<Boolean> plclist = S7control.getinstance().readBits(addressList21); |
| | | // System.out.println("急停"+S7control.getinstance().ReadBits("DB10.0.5", 1)); |
| | | // int index = 0; |
| | | // for (String item : addressList21) { |
| | | // System.out.println("地址:"+item+"值"+plclist.get(index)+"下标"+index); |
| | | // index++; |
| | | // } |
| | | |
| | | if (plclist != null) { |
| | | // 将获取的布尔类型转换为整数类型 |
| | | List<Integer> Intlist = new ArrayList<>(); |
| | | // System.out.println("长度"+plclist.size()); |
| | | for (Boolean value : plclist) { |
| | | if (value != null) { |
| | | Intlist.add(value == true ? 0 : 1); |
| | | }else { |
| | | Intlist.add(1); |
| | | System.out.println("null"); |
| | | } |
| | | |
| | | } |
| | |
| | | new PLCAutoMes().start(); |
| | | new PlcHoldNew().start(); |
| | | new Plchome().start(); |
| | | // // new PlcAlbaniaServo().start(); |
| | | new Plcsign().start(); |
| | | new PlcSigns().start(); |
| | | |
| | | // new PlcAlbaniaServo().start(); |
| | | |
| | | } |
| | | } |
| | |
| | | // 更改笼子数量 |
| | | @PostMapping("/UpdateStroageCageByCell") |
| | | public Result UpdateStroageCageByCell(Integer cell, Integer num) { |
| | | return storageCageService.UpdateStroageCageByCell(cell, num); |
| | | return storageCageService.UpdateStroageCageByCells(cell, num); |
| | | } |
| | | |
| | | @PostMapping("/AddOutGlass") |
| | | public Result AddOutGlass(Integer cell, Integer glasstype) { |
| | | return storageCageService.AddOutGlass(cell,glasstype); |
| | | } |
| | | |
| | | |
| | | // 手动完成任务 |
| | | @PostMapping("/FinishTask") |
| | | public Result FinishTask(Integer id) { |
| | | return storageCageService.FinishTask(); |
| | | } |
| | | |
| | | // 手动结束任务 |
| | | @PostMapping("/TerminateTask") |
| | | public Result TerminateTask(Integer id) { |
| | |
| | | public Result StartChange(String flowcard,Integer orderstate) { |
| | | return storageCageService.StartChange(flowcard,orderstate); |
| | | } |
| | | |
| | | // 开始/暂停出片队列 |
| | | @PostMapping("/UpdateOutTask") |
| | | public Result UpdateOutTask(Integer id,Integer state) { |
| | |
| | | System.out.println("控制器:" + num); |
| | | return storageCageService.deleteTasks(num); |
| | | } |
| | | |
| | | //删除出片队列 |
| | | @PostMapping("/DeleteOutTask") |
| | | public Result DeleteOutTask(Integer id) { |
| | |
| | | |
| | | @GetMapping("/writeValue") |
| | | public Result writeValue(String address, float value, String type) { |
| | | |
| | | if ("0".equals(type)) { |
| | | System.err.println("写入word" + address + "+" + value); |
| | | S7control.getinstance().WriteWord(address, (short) value); |
| | | } else if("1".equals(type)) { |
| | | |
| | | System.err.println("写入float" + address + "+" + value); |
| | | S7control.getinstance().writeFloat32(address, value); |
| | | }else if("2".equals(type)) { |
| | | System.err.println("写入bit" + address + "+" + value); |
| | | S7control.getinstance().WriteBit(address, true); |
| | | Boolean boolvue; |
| | | if (value == 0) { |
| | | boolvue = false; |
| | | } else { |
| | | boolvue = true; |
| | | } |
| | | S7control.getinstance().WriteBit(address, boolvue); |
| | | System.err.println("写入bit" + address + "+" + boolvue); |
| | | }else{ |
| | | S7control.getinstance().writetime(address, (long)value); |
| | | System.err.println("写入time" + address + "+" + value); |
| | |
| | | } |
| | | // S7control.getinstance().WriteBit(address, false); |
| | | |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | |
| | | |
| | | @GetMapping("/writeButton") |
| | | public Result writeButton(String address, float value, String type) { |
| | | if(value==0){ |
| | | System.err.println("写入bit" + address + "+" + value); |
| | | String pd = String.valueOf(S7control.getinstance().ReadBits(address, 1).get(0)); |
| | | if ("true".equals(pd)) { |
| | | System.err.println("写入bit" + address + "+" + false); |
| | | S7control.getinstance().WriteBit(address, false); |
| | | }else{ |
| | | System.err.println("写入bit" + address + "+" + value); |
| | | System.err.println("写入bit" + address + "+" + true); |
| | | S7control.getinstance().WriteBit(address, true); |
| | | } |
| | | |
| | | if(value==0){ |
| | | System.err.println("写入bit" + address + "+" + false); |
| | | // S7control.getinstance().WriteBit(address, false); |
| | | }else{ |
| | | System.err.println("写入bit" + address + "+" + true); |
| | | // S7control.getinstance().WriteBit(address, true); |
| | | } |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | |
| | | //获取进片数据 |
| | | @Select("select glassid,flowcard,glasswidth as width,glassheight as height,glasswidthmm,glassheightmm,glasstype,thickness from queue where state=1 limit 1") |
| | | GlassInfo SelectGlass(); |
| | | //一号线查询任务 |
| | | @Select("select * from v_cagerelease1 where mateid not in(select mateid from v_cagerelease1 where surplus=0 group by mateid);") |
| | | GlassInfo SelectOutGlass1(); |
| | | //二号线查询任务 |
| | | @Select("select * from v_cagerelease2 where mateid not in(select mateid from v_cagerelease2 where surplus=0 group by mateid)LIMIT 1;") |
| | | GlassInfo SelectOutGlass2(); |
| | | |
| | | //待出片任务查询 |
| | | @Select("select * from out_task where task_state=0 order by id asc;") |
| | | List<StorageTask> SelectOutTask(); |
| | |
| | | @Select("select method,flowcard from flowcard where state=1 and line=#{line} ORDER BY starttime LIMIT 1;") |
| | | GlassInfo SelectMethod(int line); |
| | | //直出模式任务查询 |
| | | @Select("select b.flowcard,b.glassid,b.glasstype,b.mateid,b.width,b.tier,a.totaltier as id,IFNULL(c.number,0)as number,b.glassid from flowcard a left join glassinfo b on a.flowcard=b.flowcard left join(select sum(number)as number,glasstype from storage_cage GROUP BY glasstype)c on b.glasstype=c.glasstype where a.line=1 and a.state=1 and c.number>0 ORDER BY b.mateid,b.tier asc limit 1") |
| | | GlassInfo SelectOutGlass2(int line); |
| | | @Select("select b.flowcard,b.glassid,b.glasstype,b.mateid,b.width,b.tier,a.totaltier as id,IFNULL(c.number,0)as number from flowcard a left join glassinfo b on a.flowcard=b.flowcard left join(select sum(number)as number,glasstype from storage_cage GROUP BY glasstype)c on b.glasstype=c.glasstype where a.state=1 and c.number>0 ORDER BY b.mateid,b.tier asc limit 1") |
| | | GlassInfo SelectOutGlass2(); |
| | | //查询直通模式下最后一块 |
| | | @Select("select IFNULL(b.tier, 0) from flowcard a left join glassinfo b on a.flowcard=b.flowcard left join(select sum(number)as number,glasstype from storage_cage GROUP BY glasstype)c on b.glasstype=c.glasstype where a.line=#{line} and c.number>0 ORDER BY b.tier desc LIMIT 1") |
| | | int SelectOutGlassend(int line); |
| | |
| | | @Select("select*from glassinfo where glasstype=#{glasstype} limit 1;") |
| | | GlassInfo SelectGlassinfo(Integer glasstype); |
| | | //查询纯配片模式可出配片id |
| | | @Select("select gls.flowcard,gls.mateid,gls.tier,gls.glasstype,kc.number from glassinfo as gls left join (select glasstype,sum(number) as number from storage_cage where number>0 and disabled=0 GROUP BY glasstype)as kc on gls.glasstype=kc.glasstype where gls.flowcard=#{flowcard} and gls.number>gls.finishnumber and kc.number>0 GROUP BY gls.flowcard, gls.mateid, gls.tier, gls.glasstype, kc.number,mateid order by gls.mateid;") |
| | | @Select("select gls.flowcard,gls.mateid,gls.tier,gls.glasstype,kc.number from glassinfo as gls left join (select glasstype,sum(number) as number from storage_cage where number>0 and disabled=0 GROUP BY glasstype)as kc on gls.glasstype=kc.glasstype where gls.flowcard=#{flowcard} and kc.number>0 GROUP BY gls.flowcard, gls.mateid, gls.tier, gls.glasstype, kc.number,mateid order by gls.mateid;") |
| | | List<GlassInfo> SelectOutGlass3(String flowcard); |
| | | //判断此配片id是否有足够的玻璃 |
| | | @Select("SELECT CASE WHEN storage.number >= required.number THEN '足够' ELSE '不足' END AS status FROM (SELECT a.glasstype, COUNT(a.glasstype) AS number FROM glassinfo a WHERE a.flowcard =#{flowcard} AND a.mateid =#{mateid} GROUP BY a.glasstype) AS required LEFT JOIN (SELECT a.glasstype, SUM(a.number) AS number FROM storage_cage a WHERE a.number > 0 and disabled=0 GROUP BY a.glasstype) AS storage ON required.glasstype = storage.glasstype;") |
| | |
| | | //完成出片队列的任务 |
| | | @Update("update out_task set task_state=1 where id=#{id};") |
| | | void UpdateOutTask(int id); |
| | | //判断此格子是否在出片队列有数据 |
| | | @Select("select count(*) from out_task where shelf_rack=#{cell} and (task_state=0 or task_state=2)") |
| | | int SelectOutTasksum(int cell); |
| | | } |
| | |
| | | @Select("select cage,round(100-(21-sum(if(state>0,1,state)))/21*100) as cell,21-sum(if(state>0,1,state)) as state from (select cage,cell,max(state) as state from storage_cage group by cage,cell) as cages group by cage") |
| | | List<StorageCage> selectAll(); |
| | | |
| | | @Select("Select cage,sum(case when number=0 or number is null then 1 else 0 end) as cell,100-sum(case when number=0 or number is null then 1 else 0 end)/count(id)*100 as width from storage_cage group by cage") |
| | | // @Select("Select cage,sum(case when number=0 or number is null then 1 else 0 end) as cell,100-sum(case when number=0 or number is null then 1 else 0 end)/count(id)*100 as width from storage_cage group by cage") |
| | | // List<StorageCage> selectAlls(); |
| | | // 查询每个笼子的使用情况 |
| | | // @Select("Select a.cage,sum(case when a.number=0 or a.number is null then 1 else 0 end)-b.cells as cell,100+b.cells-sum(case when a.number=0 or a.number is null then 1 else 0 end)/count(a.id)*100 as width from storage_cage a left join (select `cage_numbers`.`cage` AS `cages`,count(`a`.`shelf_rack`) AS `cells` from ((select 1 AS `cage` union all select 2 AS `2` union all select 3 AS `3` union all select 4 AS `4`) `cage_numbers` left join `out_task` `a` on((((case when (`a`.`shelf_rack` between 1 and 40) then 1 when (`a`.`shelf_rack` between 41 and 80) then 2 when (`a`.`shelf_rack` between 81 and 120) then 3 when (`a`.`shelf_rack` between 121 and 160) then 4 else NULL end) = `cage_numbers`.`cage`) and (`a`.`task_state` = 0)))) group by `cage_numbers`.`cage` order by `cage_numbers`.`cage`) as b on a.cage=b.cages group by a.cage;") |
| | | // List<StorageCage> selectAlls(); |
| | | @Select("Select a.cage, GREATEST(sum(case when a.number is null and disabled=0 then 1 else 0 end),0) as cell,LEAST(100-sum(case when a.number is null and disabled=0 then 1 else 0 end)/count(a.id)*100,100) as width from storage_cage a left join (select `cage_numbers`.`cage` AS `cages`,count(`a`.`shelf_rack`) AS `cells` from ((select 1 AS `cage` union all select 2 AS `2` union all select 3 AS `3` union all select 4 AS `4`) `cage_numbers` left join `out_task` `a` on((((case when (`a`.`shelf_rack` between 1 and 40) then 1 when (`a`.`shelf_rack` between 41 and 80) then 2 when (`a`.`shelf_rack` between 81 and 120) then 3 when (`a`.`shelf_rack` between 121 and 160) then 4 else NULL end) = `cage_numbers`.`cage`) and (`a`.`task_state` = 0)))) group by `cage_numbers`.`cage` order by `cage_numbers`.`cage`) as b on a.cage=b.cages group by a.cage;") |
| | | List<StorageCage> selectAlls(); |
| | | |
| | | // 查询10-6笼内层格子状态 |
| | |
| | | void updateStroageCageByCell(Integer cell, Integer num); |
| | | |
| | | // 计算格子内剩余宽度 |
| | | @Update("update storage_cage set width=4300-if(glasswidth is null,0,glasswidth+300)*number+300 where cell=#{cell}") |
| | | @Update("update storage_cage set width=4300-if(glasswidth is null,0,glasswidth)*number-(number*300)+300 where cell=#{cell}") |
| | | void UpdateStroageCageWidthByCell(Integer cell); |
| | | |
| | | // 根据任务类型获取任务 |
| | |
| | | // int deleteGlassinfo(String flowcard); |
| | | @Update("Update flowcard set state=2, flowcard=CONCAT('已删除', #{flowcard}),orderstate=0 where flowcard=#{flowcard}") |
| | | int deleteFlowcard(String flowcard); |
| | | //查询当前笼子是否还有该订单的玻璃 |
| | | |
| | | @Select("select count(*) from storage_cage where flowcard=#{flowcard}") |
| | | int selectflowcardCage(String flowcard); |
| | | //修改出片队列状态 |
| | | @Update("Update out_task set task_state=#{state} where id=#{id}") |
| | | int UpdateOutTask(Integer id, Integer state); |
| | |
| | | List<Map> Selecttiersum(); |
| | | |
| | | // 查询笼内玻璃信息 |
| | | @Select("select * from storage_cage where cage=#{cage} order by id desc") |
| | | @Select("select DISTINCT * from storage_cage where cage=#{cage} order by id desc") |
| | | List<StorageCage> SelectStorageCageByCage(Integer cage); |
| | | |
| | | // 添加出片队列 |
| | |
| | | } |
| | | } |
| | | // 增加任务记录 |
| | | albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), glassfilms.getTier()); |
| | | albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), |
| | | glassfilms.getTier()); |
| | | albaniaMapper.UpdateQueueState(glassid); |
| | | return (200); |
| | | |
| | |
| | | } |
| | | } |
| | | // 本次配片完成发送启动命令 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 出片任务启动 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), |
| | | // (short) 1);// 出片任务启动 |
| | | while (true) { |
| | | String currentValue = plcmes.getPlcParameter("MESToPLC").getValue(); |
| | | // 检查 MESToPLC 的值是否为 0 |
| | |
| | | int glassend = 0; |
| | | double carwidth = -300; |
| | | double width = 0; |
| | | for (int i = 1; i <= 7; i++) { |
| | | |
| | | method = albaniaMapper.SelectMethod(line); |
| | | if (method == null) { |
| | | return (400); |
| | |
| | | |
| | | } |
| | | // 本次配片完成发送启动命令 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(),(short) 1);// 出片任务启动 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(),(short) |
| | | // 1);// 出片任务启动 |
| | | MestoPlc(); |
| | | return (200);// 结束 |
| | | } |
| | |
| | | } |
| | | |
| | | } else { |
| | | for (int i = 1; i <= 7; i++) { |
| | | // 直通模式时按顺序直出 |
| | | // glassmate = albaniaMapper.SelectOutGlass(1); |
| | | glassmate = albaniaMapper.SelectOutGlass2(1); |
| | | System.out.println("glassmate:"+glassmate); |
| | | // // 获取直通模式最后一块 |
| | | // glassend = albaniaMapper.SelectOutGlassend(1); |
| | | glassmate = albaniaMapper.SelectOutGlass2(); |
| | | |
| | | } |
| | | System.err.println("出片:" + glassmate); |
| | | if (glassmate == null && i > 1) { |
| | | // 本次配片完成发送启动命令 |
| | |
| | | if (glassmate == null) { |
| | | // 未领取任务 |
| | | System.out.println("未领取任务:" + i); |
| | | glassmate = albaniaMapper.SelectOutGlass2(1); |
| | | if(glassmate==null){ |
| | | System.out.println("glassmate空"); |
| | | return (400); |
| | | } |
| | | |
| | | } else { |
| | | glass = albaniaMapper.SelectCageGlass(glassmate.getGlasstype()); |
| | | System.out.println("glassmate:" + glassmate + "glass:" + glass); |
| | | System.out.println("出片glass:" + glass); |
| | | if (glass != null) { |
| | | // 发送任务之前判断车上的剩余宽度是否大于此玻璃 |
| | | width = width + glassmate.getWidth() + 300; |
| | |
| | | } |
| | | // 发送配片数据 |
| | | Mestast(glass.getGlassId(), glass.getId(), 2001, 0, "MESID" + i, i); |
| | | albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), glassmate.getTier()); |
| | | albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), |
| | | glassmate.getTier()); |
| | | storageCageService.UpdateStroageCageByCell(glass.getId(), -1);// 玻璃数量-1 |
| | | albaniaMapper.Inserttask(1, 0, glass.getId(), 2001, glassmate.getGlassid(), |
| | | glassmate.getGlasstype(), glass.getFlowcard(), glassmate.getMateid(), glassmate.getTier()); |
| | | // if (glassmate.getTier() == glassmate.getId() || glassmate.getTier() == |
| | | // glassend|| method.getMethod() == 1) {// 当配片数量等于成品小片总片数时 |
| | | // // 本次配片完成发送启动命令 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), |
| | | // (short) 1);// 出片任务启动 |
| | | // System.out.println("任务类型:1,任务状态:0,起始:" + glass.getId() + ",目标" + "2001"); |
| | | // return (200);// 结束 |
| | | // } |
| | | |
| | | glassmate.getGlasstype(), glass.getFlowcard(), glassmate.getMateid(), |
| | | glassmate.getTier()); |
| | | } else { |
| | | return (400);// 结束 |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | return (200);// 结束 |
| | |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget" + i).getAddress(), |
| | | (short) MESToPLCTarget1);// 目标位置 |
| | | if (MESToPLC != 0) { |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) MESToPLC);// mes理片任务类型 |
| | | // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), |
| | | // (short) MESToPLC);// mes理片任务类型 |
| | | MestoPlc(); |
| | | } |
| | | } |
| | |
| | | // 增加/减少理片笼玻璃数 |
| | | public Result UpdateStroageCageByCell(Integer cell, Integer num) { |
| | | if (num == 0) { |
| | | int sumcell=albaniaMapper.SelectOutTasksum(cell); |
| | | if(sumcell==0){ |
| | | homeMapper.DeleteStroageCageByCell(cell); |
| | | } |
| | | }else if(num==-1){ |
| | | homeMapper.updateStroageCageByCell(cell, num); |
| | | } else { |
| | | homeMapper.updateStroageCageByCell(cell, num); |
| | | homeMapper.UpdateStroageCageWidthByCell(cell);// 修改笼子宽度 |
| | |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | | } |
| | | // 界面增加/减少理片笼玻璃数 |
| | | public Result UpdateStroageCageByCells(Integer cell, Integer num) { |
| | | if (num == 0) { |
| | | int sumcell=albaniaMapper.SelectOutTasksum(cell); |
| | | if(sumcell==0){ |
| | | homeMapper.DeleteStroageCageByCell(cell); |
| | | } |
| | | } else { |
| | | homeMapper.updateStroageCageByCell(cell, num); |
| | | homeMapper.UpdateStroageCageWidthByCell(cell);// 修改笼子宽度 |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | |
| | | // 指定格子出片 |
| | | public Result AddOutGlass(Integer cell, Integer glasstype) { |
| | |
| | | |
| | | // 手动结束任务 |
| | | public Result TerminateTask(int id) { |
| | | PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; |
| | | // 清除任务地址 |
| | | for (int i = 1; i < 7; i++) { |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart" + i).getAddress(), (short) 0);// 清除任务地址 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget" + i).getAddress(), (short) 0);// 清除任务地址 |
| | | } |
| | | System.out.println("结束任务地址"); |
| | | for (int i = 1; i < 7; i++) { |
| | | int taskcont = albaniaMapper.SelectTaskcount(); // 正在进行的任务数量 |
| | | System.out.println("任务数量:" + taskcont); |
| | |
| | | |
| | | // 手动完成任务 |
| | | public Result FinishTask() { |
| | | PlcParameterObject plcmes = PLCAutoMes.PlcMesObject; |
| | | // 清除任务地址 |
| | | for (int i = 1; i < 7; i++) { |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart" + i).getAddress(), (short) 0);// 清除任务地址 |
| | | S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget" + i).getAddress(), (short) 0);// 清除任务地址 |
| | | } |
| | | System.out.println("结束任务地址"); |
| | | for (int i = 1; i < 7; i++) { |
| | | int taskcont = albaniaMapper.SelectTaskcount(); // 正在进行的任务数量 |
| | | System.out.println("任务数量:" + taskcont); |
| | |
| | | // storageTask.geTier());// 添加出片完成数量 |
| | | |
| | | } |
| | | |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | |
| | | // 添加玻璃到格子内 |
| | | public Result StorageCageAddGlass(String cell, GlassInfo glassInfo) { |
| | | homeMapper.StorageCageAddGlass(cell, glassInfo); |
| | | UpdateStroageCageByCell(Integer.parseInt(cell), 1); |
| | | UpdateStroageCageByCells(Integer.parseInt(cell), 1); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", "200"); |
| | | return Result.success(map); |
| | |
| | | String A02Mes = plcmes.getPlcParameter("MESToGaStatus").getValue(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | // 移除 |
| | | if ("1".equals(A02Plc)||"2".equals(A02Plc)|"1".equals(A02Mes)) { |
| | | if ("1".equals(A02Plc)||"2".equals(A02Plc)||"1".equals(A02Mes)) { |
| | | Queue queue = QueueMapper.selectLastQueue3(); |
| | | if (queue != null) { |
| | | // 减少匹配次数 |
| | |
| | | |
| | | // 删除出片队列 |
| | | public Result DeleteOutTask(Integer id) { |
| | | |
| | | int cell = homeMapper.SelectOutTaskId(id); |
| | | UpdateStroageCageByCell(cell, 1);// 玻璃数量+1 |
| | | homeMapper.DeleteOutTask(id); |
| | |
| | | |
| | | // 删除工程 |
| | | public Result deleteTasks(Map num) { |
| | | String flowcard = (String) num.get("num"); |
| | | int aa = homeMapper.deleteFlowcard(flowcard.trim()); |
| | | homeMapper.deleteGlassinfo(flowcard.trim()); |
| | | System.out.println(flowcard); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("message", flowcard.trim()); |
| | | String flowcard = (String) num.get("num"); |
| | | int cagenum=homeMapper.selectflowcardCage(flowcard); |
| | | if(cagenum==0){ |
| | | int aa = homeMapper.deleteFlowcard(flowcard.trim()); |
| | | map.put("message","200"); |
| | | homeMapper.deleteGlassinfo(flowcard.trim()); |
| | | }else{ |
| | | map.put("message", "300"); |
| | | } |
| | | System.out.println("删除工程"+flowcard); |
| | | return Result.success(map); |
| | | } |
| | | |
| | |
| | | PlcInteractionState.MEStaskinformation2=DB106.52,DB106.58,DB103.128-141,DB103.142-155,DB103.156-169,DB103.184-197,DB103.212-225 |
| | | |
| | | #IO状态 |
| | | PlcIO.State=DB12.2.0,DB12.2.1,DB12.2.2,DB12.4.2,DB12.4.3,DB12.4.4,DB12.4.5,DB12.4.6,DB12.4.7,DB12.5.0,DB12.5.1,DB12.5.2,DB12.5.3,DB12.5.4,DB12.5.5,DB12.8.2,DB12.8.3,DB12.8.4,DB12.8.5,DB12.8.6,DB12.8.7,DB12.9.0,DB12.9.1,DB12.9.2,DB12.9.3,DB12.9.4,DB12.9.7,DB12.10.6,DB12.10.7,DB12.11.0,DB12.12.0,DB12.12.1,DB12.12.2,DB12.12.3,DB12.12.4,DB12.12.5,DB12.14.0,DB12.14.1,DB12.14.2,DB12.14.3,DB12.14.4,DB12.14.5,DB12.14.6,DB12.14.7,DB12.15.0,DB12.15.1,DB12.16.0,DB12.16.1,DB12.16.2,DB12.18.6,DB12.18.7,DB12.19.0,DB12.20.0,DB12.20.1,DB12.20.2,DB12.20.3,DB12.20.4,DB12.20.5,DB12.22.0,DB12.22.1,DB12.22.2,DB12.22.3,DB12.22.4,DB12.22.5,DB12.22.6,DB12.22.7,DB12.23.0,DB12.23.1,DB12.24.0,DB12.24.1,DB12.24.2 |
| | | PlcIO.State=DB12.2.0,DB12.2.1,DB12.2.2,DB12.4.2,DB12.4.3,DB12.4.4,DB12.4.5,DB12.4.6,DB12.4.7,DB12.5.0,DB12.5.1,DB12.5.2,DB12.5.3,DB12.5.4,DB12.5.5,DB12.8.0,DB12.8.2,DB12.8.3,DB12.8.4,DB12.8.5,DB12.8.6,DB12.8.7,DB12.9.0,DB12.9.1,DB12.9.2,DB12.9.3,DB12.9.4,DB12.9.7,DB12.10.6,DB12.10.7,DB12.11,DB12.12,DB12.12.1,DB12.12.2,DB12.12.3,DB12.12.4,DB12.12.5,DB12.14,DB12.14.1,DB12.14.2,DB12.14.3,DB12.14.4,DB12.14.5,DB12.14.6,DB12.14.7,DB12.15,DB12.15.1,DB12.16,DB12.16.1,DB12.16.2,DB12.18.6,DB12.18.7,DB12.19,DB12.20,DB12.20.1,DB12.20.2,DB12.20.3,DB12.20.4,DB12.20.5,DB12.22,DB12.22.1,DB12.22.2,DB12.22.3,DB12.22.4,DB12.22.5,DB12.22.6,DB12.22.7,DB12.23,DB12.23.1,DB12.24,DB12.24.1,DB12.24.2 |
| | | #PlcIO.Name=Sr.Dec,Sr.LowE,Sr.OutPos,Sr.InToX,Sr.GaToXIn,Sr.DecToXOut,Sr.GaToY1,Sr.GaToY2,Sr.GaToY3,Sr.GaToY4,Sr.DecToY,Sr.GaToY,Sr.HomeToY,SQ.LimitSwitchTop,SQ.LimitSwitchBottom,Sr.Travellimitleft,Sr.PosToLeft,Sr.DecToLeft,Sr.DecToRight,Sr.PosToRight,Sr.TravellimitRight,SQ.LimitSwitch+,SQ.LimitSwitch-,Sr.HomeToTurn,SQ.LimitSwitchToTurnTop,SQ.LimitSwitchToTurnBottom,oilPump,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Red,Yellow,Green,FootSwitch |
| | | PlcIO.Name=Sr.Low, Sr.OutDec, Sr.OutPos, Sr.XCheck, Sr.XDec, Sr.XPos, Sr.H1, Sr.H2, Sr.H3, Sr.H4, Sr.YChecK, Sr.YDec, Sr.travellimitTop, Sr.travellimitBottom, Sr.YZero, Sr.Travellimitleft, Sr.PosToLeft, Sr.DecToLeft, Sr.DecToRight, Sr.PosToRight, Sr.TravellimitRight, SQ.LimitSwitch+, SQ.LimitSwitch-, Sr.HomeToTurn, SQ.LimitSwitchToTurnTop, SQ.LimitSwitchToTurnBottom, oilPump, Sr.InOrigin, SQ.LimitSwitch+, SQ.LimitSwitch-, biBasPosBlowUp1, biBasPosBlowUp2, biBasPosBlowUp3, biBasPosBlowUp4, biBasPosGlassUp1, biBasPosGlassUp2, biWorkBlowSr1, biWorkBlowSr2, biWorkBlowSr3, biWorkBlowSr4, biWorkPosBlowUp1, biWorkPosBlowUp2, biWorkPosBlowUp3, biWorkPosBlowUp4, biWorkPosGlassUp1, biWorkPosGlassUp2, boWorkPosBlow, boWorkPosBlowUp, boWorkPosGlassUp |
| | | PlcIo.Name1=LOW-E检测光电, 出口减速光电, 出口到位光电, X轴寻边, X轴出口减速, X轴出口到位, Y轴高度感应1, Y轴高度感应2, Y轴高度感应3, Y轴高度感应4, Y轴寻边, Y轴高度减速, 上极限, 下极限, Y轴原点, 左极限, 左到位, 左减速, 右减速, 右到位, 右极限, 大车正极限, 大车负极限, 翻转原点, 翻转上极限, 翻转下极限, 油泵输出, 小车原点, 小车正极限, 小车负极限, 吹气抬起气缸原点1, 吹气抬起气缸原点2, 吹气抬起气缸原点3, 吹气抬起气缸原点4, 玻璃抬起气缸原点1, 玻璃抬起气缸原点2, 吹气感应1, 吹气感应2, 吹气感应3, 吹气感应4, 吹气抬起气缸动点1, 吹气抬起气缸动点2, 吹气抬起气缸动点3, 吹气抬起气缸动点4, 玻璃抬起气缸动点1, 玻璃抬起气缸动点2, 吹气输出, 吹气抬起输出, 玻璃抬起输出 |