PLC增加调度

master
erzhongxmu 2022-11-24 22:13:05 +08:00
parent c8c3f53ba5
commit 54720c6251
3 changed files with 505 additions and 481 deletions

View File

@ -310,12 +310,12 @@ public class MdBinController extends BaseController {
String endcom = req.getParameter("endcom");
if ("diaodu".equals(type)) {//调度需要方式指令
// 异步发送指令
if(StringUtil.isEmpty(binFrom)){
if (StringUtil.isEmpty(binFrom)) {
j.setMsg("开始储位为空");
j.setSuccess(false);
return j;
}
if(StringUtil.isEmpty(binTo)){
if (StringUtil.isEmpty(binTo)) {
j.setMsg("结束储位为空");
j.setSuccess(false);
return j;
@ -324,7 +324,8 @@ public class MdBinController extends BaseController {
executor.execute(new Runnable() {
@Override
public void run() {
runagv(binFrom, binTo,startcom,midcom,endcom);
runagv(binFrom, binTo, startcom, midcom, endcom, type);
}
});
} catch (Exception e) {
@ -406,38 +407,37 @@ public class MdBinController extends BaseController {
return j;
}
public void runagv(String binfrom, String binto, String startcom, String midcom, String endcom) {
public void runagv(String binfrom, String binto, String startcom, String midcom, String endcom, String type) {
if ("diaodu".equals(type)) {
List<MdBinEntity> mdblistfrom = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binfrom);
List<MdBinEntity> mdblistto = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binto);
MdBinEntity mdBinEntityfrom = mdblistfrom.get(0);
MdBinEntity mdBinEntityto = mdblistto.get(0);
String x0 = mdBinEntityfrom.getXnode();
String x1 = mdBinEntityto.getXnode();
int xStep = Integer.parseInt(x1) - Integer.parseInt(x0) ;
int xStep = Integer.parseInt(x1) - Integer.parseInt(x0);
String y0 = mdBinEntityfrom.getYnode();
String y1 = mdBinEntityto.getYnode();
int yStep = Integer.parseInt(y1) - Integer.parseInt(y0) ;
int yStep = Integer.parseInt(y1) - Integer.parseInt(y0);
String xstepNum = "1";
String ystepNum = "1";
String hxstepNum = "1";
xstepNum = Integer.toString(xStep);
ystepNum = Integer.toString(yStep);
if(!"no".equals(startcom)&&StringUtil.isNotEmpty(startcom)){
if (!"no".equals(startcom) && StringUtil.isNotEmpty(startcom)) {
hxstepNum = "1";
System.out.println("startcom,startcom:"+startcom);
wmsPlcController.run("",startcom,hxstepNum);
System.out.println("startcom,startcom:" + startcom);
wmsPlcController.run("", startcom, hxstepNum);
}
if(y0.equals("01")){
System.out.println("1,runx:"+xstepNum);
wmsPlcController.run("","runx",xstepNum);
}else{
System.out.println("2,runy:"+ystepNum);
if (y0.equals("01")) {
System.out.println("1,runx:" + xstepNum);
wmsPlcController.run("", "runx", xstepNum);
} else {
System.out.println("2,runy:" + ystepNum);
wmsPlcController.run("","runy",ystepNum);
wmsPlcController.run("", "runy", ystepNum);
}
@ -447,24 +447,28 @@ public class MdBinController extends BaseController {
//
// wmsPlcController.run("","change",hxstepNum);
// }
if(!"no".equals(midcom)&&StringUtil.isNotEmpty(midcom)){
if (!"no".equals(midcom) && StringUtil.isNotEmpty(midcom)) {
hxstepNum = "1";
System.out.println("midcom,midcom:"+midcom);
wmsPlcController.run("",midcom,hxstepNum);
System.out.println("midcom,midcom:" + midcom);
wmsPlcController.run("", midcom, hxstepNum);
}
if(y0.equals("01")){
System.out.println("4,runy:"+ystepNum);
wmsPlcController.run("","runy",ystepNum);
}else{
System.out.println("5,runx:"+xstepNum);
if (y0.equals("01")) {
System.out.println("4,runy:" + ystepNum);
wmsPlcController.run("", "runy", ystepNum);
} else {
System.out.println("5,runx:" + xstepNum);
wmsPlcController.run("","runx",xstepNum);
wmsPlcController.run("", "runx", xstepNum);
}
if(!"no".equals(endcom)&&StringUtil.isNotEmpty(endcom)){
if (!"no".equals(endcom) && StringUtil.isNotEmpty(endcom)) {
hxstepNum = "1";
System.out.println("endcom,endcom:"+endcom);
wmsPlcController.run("",endcom,hxstepNum);
System.out.println("endcom,endcom:" + endcom);
wmsPlcController.run("", endcom, hxstepNum);
}
} else {
wmsPlcController.runu();
}
}

View File

@ -1,9 +1,11 @@
package com.zzjee.plc.controller;
import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.zzjee.plc.entity.WmsPlcEntity;
import com.zzjee.plc.service.WmsPlcServiceI;
import java.util.ArrayList;
import java.util.List;
import java.text.SimpleDateFormat;
@ -35,6 +37,7 @@ import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.core.util.MyBeanUtils;
import java.io.OutputStream;
import org.jeecgframework.core.util.BrowserUtils;
import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
@ -45,12 +48,16 @@ import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.vo.TemplateExcelConstants;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jeecgframework.core.util.ResourceUtil;
import java.io.IOException;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.Map;
import java.util.HashMap;
import org.jeecgframework.core.util.ExceptionUtil;
import org.springframework.http.ResponseEntity;
@ -64,20 +71,21 @@ import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.jeecgframework.core.beanvalidator.BeanValidators;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import java.net.URI;
import org.springframework.http.MediaType;
import org.springframework.web.util.UriComponentsBuilder;
/**
* @author onlineGenerator
* @version V1.0
* @Title: Controller
* @Description: PLC
* @author onlineGenerator
* @date 2022-09-12 18:33:25
* @version V1.0
*
*/
@Controller
@RequestMapping("/wmsPlcController")
@ -95,7 +103,6 @@ public class WmsPlcController extends BaseController {
private Validator validator;
/**
* PLC
*
@ -115,13 +122,13 @@ public class WmsPlcController extends BaseController {
*/
@RequestMapping(params = "datagrid")
public void datagrid(WmsPlcEntity wmsPlc,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
public void datagrid(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap());
try{
try {
//自定义追加查询条件
}catch (Exception e) {
} catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
@ -141,10 +148,10 @@ public class WmsPlcController extends BaseController {
AjaxJson j = new AjaxJson();
wmsPlc = systemService.getEntity(WmsPlcEntity.class, wmsPlc.getId());
message = "PLC指令删除成功";
try{
try {
wmsPlcService.delete(wmsPlc);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}catch(Exception e){
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令删除失败";
throw new BusinessException(e.getMessage());
@ -160,15 +167,15 @@ public class WmsPlcController extends BaseController {
*/
@RequestMapping(params = "dotoup")
@ResponseBody
public AjaxJson dotoup(String ids,HttpServletRequest request){
public AjaxJson dotoup(String ids, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "PLC指令执行成功";
try{
for(String id:ids.split(",")){
run(id,"","");
try {
for (String id : ids.split(",")) {
run(id, "", "");
}
}catch(Exception e){
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令执行失败";
throw new BusinessException(e.getMessage());
@ -176,45 +183,59 @@ public class WmsPlcController extends BaseController {
j.setMsg(message);
return j;
}
public void runu() {
WmsPlcEntity wmsPlc = null;
String hql = "";
List<WmsPlcEntity> wmsPlcEntityList = new ArrayList<WmsPlcEntity>();
hql = "from WmsPlcEntity t where t.comNo = ? ";
wmsPlcEntityList = systemService.findHql(hql, "runu");
if (!CollectionUtils.isEmpty(wmsPlcEntityList)) {
wmsPlc = wmsPlcEntityList.get(0);
}
String[] coms = wmsPlc.getComCons().split(";");
for (String com : coms) {
String comid[] = com.split(",");
String comno = comid[0];
String comstep = comid[1];
run("", comno, comstep);
}
public void run(String id,String comNo,String stepNum){
System.out.println("id:"+id+";comNo:"+comNo+";stepNum:"+stepNum);
if(stepNum.equals("0")){
}
public void run(String id, String comNo, String stepNum) {
System.out.println("id:" + id + ";comNo:" + comNo + ";stepNum:" + stepNum);
if (stepNum.equals("0")) {
return;
}
WmsPlcEntity wmsPlc = null ;
if(StringUtil.isNotEmpty(id)){
wmsPlc = systemService.getEntity(WmsPlcEntity.class,id);
WmsPlcEntity wmsPlc = null;
if (StringUtil.isNotEmpty(id)) {
wmsPlc = systemService.getEntity(WmsPlcEntity.class, id);
}
if(StringUtil.isNotEmpty(comNo)){
if (StringUtil.isNotEmpty(comNo)) {
String hql = "";
List<WmsPlcEntity> wmsPlcEntityList = new ArrayList<WmsPlcEntity>();
hql = "from WmsPlcEntity t where t.comNo = ? ";
wmsPlcEntityList = systemService.findHql(hql,comNo);
if(!CollectionUtils.isEmpty(wmsPlcEntityList)){
wmsPlcEntityList = systemService.findHql(hql, comNo);
if (!CollectionUtils.isEmpty(wmsPlcEntityList)) {
wmsPlc = wmsPlcEntityList.get(0);
}
}
if(wmsPlc != null){
if (wmsPlc != null) {
long start = System.currentTimeMillis();
SiemensPLCS siemensPLCS = SiemensPLCS.S200Smart;
SiemensS7Net siemensS7Net = null;
siemensS7Net = new SiemensS7Net(siemensPLCS);
siemensS7Net.setIpAddress(wmsPlc.getPlcIp());
siemensS7Net.setPort(Integer.parseInt(wmsPlc.getPlcPort()) );
siemensS7Net.setPort(Integer.parseInt(wmsPlc.getPlcPort()));
OperateResult connect = siemensS7Net.ConnectServer();
if(connect.IsSuccess){
if (connect.IsSuccess) {
System.out.println("connect success");
}else{
} else {
System.out.println("connect error");
try{
try {
siemensS7Net.ConnectClose();
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
}
@ -222,72 +243,68 @@ public class WmsPlcController extends BaseController {
String query01 = wmsPlc.getQuery01();
String query02 = wmsPlc.getQuery02();
Float stepNumrun = Float.valueOf("1");
if(StringUtil.isNotEmpty(stepNum)){
stepNumrun =Float.parseFloat(stepNum);
}else{
stepNumrun =Float.parseFloat(wmsPlc.getSetpNum());
if (StringUtil.isNotEmpty(stepNum)) {
stepNumrun = Float.parseFloat(stepNum);
} else {
stepNumrun = Float.parseFloat(wmsPlc.getSetpNum());
}
Float stepTime = Float.parseFloat(wmsPlc.getSetpTime());
comCons = StringUtils.replace(comCons,"{query01}",query01);
comCons = StringUtils.replace(comCons,"{query02}",query02);
comCons = StringUtils.replace(comCons, "{query01}", query01);
comCons = StringUtils.replace(comCons, "{query02}", query02);
String[] coms = comCons.split(";");
for (String com : coms) {
System.out.println("指令:"+com);
System.out.println("指令:" + com);
try {
Thread.sleep(500);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
String[] split = com.split(",");
String defaultAddress = split[1];
if(split[0].equals("boolean")){
if(split[2].equals("false")){
siemensS7Net.Write(defaultAddress,false);
}else{
siemensS7Net.Write(defaultAddress,true);
if (split[0].equals("boolean")) {
if (split[2].equals("false")) {
siemensS7Net.Write(defaultAddress, false);
} else {
siemensS7Net.Write(defaultAddress, true);
}
}
else if(split[0].equals("float")){
} else if (split[0].equals("float")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat"+Math.abs(runfloat));
siemensS7Net.Write(defaultAddress,Math.abs(runfloat));
}
else if(split[0].equals("-float")){
System.out.println("runfloat" + Math.abs(runfloat));
siemensS7Net.Write(defaultAddress, Math.abs(runfloat));
} else if (split[0].equals("-float")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat"+runfloat);
siemensS7Net.Write(defaultAddress,runfloat);
}
else if(split[0].equals("int")){
System.out.println("runfloat" + runfloat);
siemensS7Net.Write(defaultAddress, runfloat);
} else if (split[0].equals("int")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
Float abs = Math.abs(runfloat);
int runint = abs.intValue();
System.out.println("runint"+runint);
siemensS7Net.Write(defaultAddress,runint);
}
else if(split[0].equals("-int")){
System.out.println("runint" + runint);
siemensS7Net.Write(defaultAddress, runint);
} else if (split[0].equals("-int")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
int runint = runfloat.intValue();
System.out.println("runint"+runint);
siemensS7Net.Write(defaultAddress,runint);
System.out.println("runint" + runint);
siemensS7Net.Write(defaultAddress, runint);
}
}
//执行完指令等待时间
try{
Float sleeptime = Math.abs(stepNumrun * stepTime) ;
try {
Float sleeptime = Math.abs(stepNumrun * stepTime);
Thread.sleep(sleeptime.longValue());
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
long times = end - start;
org.jeecgframework.core.util.LogUtil.info(wmsPlc.getComRemark()+"总耗时" + times + "毫秒"+comCons);
org.jeecgframework.core.util.LogUtil.info(wmsPlc.getComRemark() + "总耗时" + times + "毫秒" + comCons);
}
}
/**
* PLC
*
@ -295,19 +312,19 @@ public class WmsPlcController extends BaseController {
*/
@RequestMapping(params = "doBatchDel")
@ResponseBody
public AjaxJson doBatchDel(String ids,HttpServletRequest request){
public AjaxJson doBatchDel(String ids, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "PLC指令删除成功";
try{
for(String id:ids.split(",")){
try {
for (String id : ids.split(",")) {
WmsPlcEntity wmsPlc = systemService.getEntity(WmsPlcEntity.class,
id
);
wmsPlcService.delete(wmsPlc);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}
}catch(Exception e){
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令删除失败";
throw new BusinessException(e.getMessage());
@ -328,10 +345,10 @@ public class WmsPlcController extends BaseController {
String message = null;
AjaxJson j = new AjaxJson();
message = "PLC指令添加成功";
try{
try {
wmsPlcService.save(wmsPlc);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}catch(Exception e){
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令添加失败";
throw new BusinessException(e.getMessage());
@ -379,6 +396,7 @@ public class WmsPlcController extends BaseController {
}
return new ModelAndView("com/zzjee/plc/wmsPlc-add");
}
/**
* PLC
*
@ -400,7 +418,7 @@ public class WmsPlcController extends BaseController {
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","wmsPlcController");
req.setAttribute("controller_name", "wmsPlcController");
return new ModelAndView("common/upload/pub_excel_upload");
}
@ -411,18 +429,19 @@ public class WmsPlcController extends BaseController {
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(WmsPlcEntity wmsPlc,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
public String exportXls(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response
, DataGrid dataGrid, ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap());
List<WmsPlcEntity> wmsPlcs = this.wmsPlcService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"PLC指令");
modelMap.put(NormalExcelConstants.CLASS,WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("PLC指令列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
List<WmsPlcEntity> wmsPlcs = this.wmsPlcService.getListByCriteriaQuery(cq, false);
modelMap.put(NormalExcelConstants.FILE_NAME, "PLC指令");
modelMap.put(NormalExcelConstants.CLASS, WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("PLC指令列表", "导出人:" + ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,wmsPlcs);
modelMap.put(NormalExcelConstants.DATA_LIST, wmsPlcs);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
@ -430,13 +449,13 @@ public class WmsPlcController extends BaseController {
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(WmsPlcEntity wmsPlc,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"PLC指令");
modelMap.put(NormalExcelConstants.CLASS,WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("PLC指令列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
public String exportXlsByT(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response
, DataGrid dataGrid, ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME, "PLC指令");
modelMap.put(NormalExcelConstants.CLASS, WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("PLC指令列表", "导出人:" + ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
modelMap.put(NormalExcelConstants.DATA_LIST, new ArrayList());
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
@ -455,7 +474,7 @@ public class WmsPlcController extends BaseController {
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<WmsPlcEntity> listWmsPlcEntitys = ExcelImportUtil.importExcel(file.getInputStream(),WmsPlcEntity.class,params);
List<WmsPlcEntity> listWmsPlcEntitys = ExcelImportUtil.importExcel(file.getInputStream(), WmsPlcEntity.class, params);
for (WmsPlcEntity wmsPlc : listWmsPlcEntitys) {
wmsPlcService.save(wmsPlc);
}
@ -463,7 +482,7 @@ public class WmsPlcController extends BaseController {
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
} finally {
try {
file.getInputStream().close();
} catch (IOException e) {
@ -477,7 +496,7 @@ public class WmsPlcController extends BaseController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public List<WmsPlcEntity> list() {
List<WmsPlcEntity> listWmsPlcs=wmsPlcService.getList(WmsPlcEntity.class);
List<WmsPlcEntity> listWmsPlcs = wmsPlcService.getList(WmsPlcEntity.class);
return listWmsPlcs;
}
@ -501,7 +520,7 @@ public class WmsPlcController extends BaseController {
}
//保存
try{
try {
wmsPlcService.save(wmsPlc);
} catch (Exception e) {
e.printStackTrace();
@ -525,7 +544,7 @@ public class WmsPlcController extends BaseController {
}
//保存
try{
try {
wmsPlcService.saveOrUpdate(wmsPlc);
} catch (Exception e) {
e.printStackTrace();

View File

@ -54,6 +54,7 @@
<%-- <span style="vertical-align:middle;display:-moz-inline-box;display:inline-block;width: 90px;text-align:right;">--%>
<button onclick="chaxun('zhengxiang')">加载储位</button> </span>
<button onclick="chaxun('diaodu')">调度</button> </span>
<button onclick="chaxun('diaoduu')">U型调度</button> </span>
</div>