package com.mes.downstorage.service;
|
|
import com.mes.common.PLCAutoMes;
|
import com.mes.common.S7control;
|
import com.mes.device.PlcParameterObject;
|
import com.mes.downstorage.entity.DownStorageCageDetails;
|
import com.mes.downstorage.mapper.SelectInfo;
|
import com.mes.uppattenusage.entity.GlassInfo;
|
import lombok.Data;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
@Data
|
@Service
|
public class DownGlassCacheLogic {
|
@Autowired
|
private SelectInfo selectInfo;
|
|
/**
|
* @param Number
|
* //识别逻辑 不交互
|
*/
|
|
public void identify(String Number){
|
//查询任务
|
PlcParameterObject plcmes= PLCAutoMes.PlcMesObject;
|
S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
|
String s=S7control.getinstance().ReadWord("DB14.26", 1).get(0)+"";
|
boolean isexist=isExist(Number);
|
if (isexist) {
|
//存在逻辑 1.添加信息 2.回复PLC存在
|
//S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
|
}else {
|
//不存在逻辑 1.回复PLC不存在
|
//S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
|
}
|
}
|
//下片前理片
|
public static final String RESULT_IN = "1";
|
public static final String RESULT_OUT = "2";
|
public static final String RESULT_IN_OUT = "3";
|
|
public void process() {
|
String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
|
String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
|
|
// 进片请求
|
if (RESULT_IN.equals(result)) {
|
processInto(number);
|
}
|
// 出片请求
|
else if (RESULT_OUT.equals(result)) {
|
processOut();
|
}
|
// 进出片请求
|
else if (RESULT_IN_OUT.equals(result)) {
|
// 先出后进
|
if (!processOut()) {
|
processInto(number);
|
}
|
}
|
}
|
|
|
/**
|
* @param Number
|
* @return
|
* //下片前理片 进
|
*/
|
|
public boolean processInto(String Number){
|
//按id查询玻璃信息表里的玻璃
|
GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
|
PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
|
//存在此玻璃编号
|
if(GlassInfo!=null){
|
//同钢化版图内的栅格号
|
List<DownStorageCageDetails> list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(),GlassInfo.getTemperingFeedSequence(),GlassInfo.getWidth());
|
//空栅格号
|
if (list.size()==0) {
|
list=selectInfo.SelectCacheLeisure();
|
}
|
//小于此玻璃钢化版图序号的栅格号
|
if(list.size()==0){
|
list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(),GlassInfo.getWidth());
|
}
|
if(list.size()>0){
|
//存在空格
|
//1.生成任务: 起始位置0 结束位置this.slot 任务类型 1 (进片任务)
|
//2.回复 1进片
|
DownStorageCageDetails item=list.get(0);
|
selectInfo.insertCacheTask(GlassInfo.getId()+"","0",item.getSlot()+"","1",GlassInfo.getWidth(),GlassInfo.getHeight(),GlassInfo.getFilmsid(),GlassInfo.getThickness(),GlassInfo.getFlowcardId());
|
S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
|
return true;
|
}
|
|
}else{
|
// ID编号不存在 不处理/回复PLC 进行报警提示
|
}
|
//返回结果
|
return false;
|
}
|
//理片 出
|
public boolean processOut(){
|
//查询任务
|
String G06=S7control.getinstance().ReadWord("DB14.56", 1).get(0)+"";
|
String G11=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
|
String G13=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
|
PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
|
List<DownStorageCageDetails> list=selectInfo.SelectCacheOut();
|
//其他情况条件 如:后续设备故障禁止理片出片 等
|
boolean isOut=true;
|
if (list.size()>0&&isOut) {
|
DownStorageCageDetails item=list.get(0);
|
//
|
if(G06=="0"&&G11=="1"){
|
//出到 G06
|
|
selectInfo.insertCacheTask(item.getGlassId()+"","0","06","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}else if(G06=="1"&&G11=="0"){
|
//出到 G11
|
|
selectInfo.insertCacheTask(item.getGlassId()+"","0","11","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}else if(G06=="0"&&G11=="0"){
|
//都允许 G04/G05 上一片是否和此片玻璃尺寸尺寸相同
|
String endcell="06";
|
String SendEndcell="1";
|
boolean If_=false;
|
GlassInfo glassInfo06= selectInfo.SelectLastOutCacheInfo("06");
|
GlassInfo glassInfo11= selectInfo.SelectLastOutCacheInfo("11");
|
GlassInfo glassInfo13= selectInfo.SelectLastOutCacheInfo("13");
|
if(glassInfo06!=null&&glassInfo11.getWidth()==item.getWidth()&&glassInfo06.getHeight()==item.getHeight()){
|
endcell="11";
|
SendEndcell="2";
|
}else if(item.getHeight()>=3440&&item.getWidth()>=1440){
|
//其他条件人工处理
|
|
}
|
|
selectInfo.insertCacheTask(item.getGlassId()+"","0",endcell,"2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}
|
}
|
//返回结果
|
return false;
|
}
|
|
/**
|
* @param Number
|
* //磨边 不交互 理片和磨边机自己交互
|
*/
|
|
public void processMb(String Number){
|
//按id查询玻璃信息表里的玻璃
|
GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
|
PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
|
if(GlassInfo!=null){
|
//发送任务 ID 长 宽 厚 倒角 工艺功能等
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.22").getAddress(),"N10000");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.24").getAddress(), "1000");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.26").getAddress(),"800");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(),"60");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.30").getAddress(), "2");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
}
|
//返回结果
|
}
|
|
|
/**
|
* @param Number
|
* @return
|
* 查询消息队列里此玻璃ID的数据
|
*/
|
public boolean selectMessageId(String Number){
|
//查询是否存在
|
|
GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
|
if(GlassInfo==null){
|
//返回 不存在
|
return false;
|
|
}
|
//返回 存在
|
return true;
|
}
|
|
/**
|
* @param Number
|
* @return
|
* 删除消息队列里此玻璃ID的数据
|
*/
|
|
public boolean deleteMessageId(String Number){
|
//查询是否存在
|
GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
|
if(GlassInfo==null){
|
//返回 不存在
|
return false;
|
}
|
//返回 存在
|
return true;
|
}
|
|
|
|
/**
|
* @param Number
|
* @return
|
* //是否存在此编号玻璃
|
*/
|
public boolean isExist(String Number){
|
//查询是否存在
|
GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
|
if(GlassInfo==null){
|
//返回 不存在
|
return false;
|
}
|
//返回 存在
|
return true;
|
}
|
|
}
|