提升机代码 和 四向车

This commit is contained in:
liuhanqing
2025-11-18 09:29:02 +08:00
parent cb2c0c032d
commit ea2bd7c6ec
3 changed files with 299 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
package com.ruoyi.device.srgv.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 输送机对象 device_ssj
*
* @author ruoyi
* @date 2025-07-04
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceSrgv extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 设备唯一编码 */
@Excel(name = "设备唯一编码")
private String deviceCode ;
/** 设备名称 */
@Excel(name = "设备名称")
private String name ;
/** 类型 */
@Excel(name = "类型")
private String type;
/** 设备IP */
@Excel(name = "设备IP")
private String ipAddress;
/** PLC读取地址 */
@Excel(name = "PLC读取地址")
private String plcDbReadAddress;
/** 0-F 1-T */
@Excel(name = "0-F 1-T")
private String isActive;
/** PLC写入地址 */
@Excel(name = "PLC写入地址")
private String plcDbWriteAddress;
/** 入库请求 */
@Excel(name = "入库请求")
private int rkqq;
/** 空闲 */
@Excel(name = "空闲")
private int kx;
/** 到位 */
@Excel(name = "到位")
private int dw;
/** 条码 */
@Excel(name = "条码")
private String trayCode;
/** 任务号 */
@Excel(name = "任务号")
private int taskNo;
@Excel(name = "异常")
private int exception;
@Excel(name = "托盘尺寸")
private int traySize;
@Excel(name="允许放货")
private int allowPut;
@Excel(name="输送线模式 1-入库 2-出库")
private int model;
}

View File

@@ -0,0 +1,87 @@
package com.ruoyi.device.tsj.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 输送机对象 device_ssj
*
* @author ruoyi
* @date 2025-07-04
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceTsj extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 设备唯一编码 */
@Excel(name = "设备唯一编码")
private String deviceCode ;
/** 设备名称 */
@Excel(name = "设备名称")
private String name ;
/** 类型 */
@Excel(name = "类型")
private String type;
/** 设备IP */
@Excel(name = "设备IP")
private String ipAddress;
/** PLC读取地址 */
@Excel(name = "PLC读取地址")
private String plcDbReadAddress;
/** 0-F 1-T */
@Excel(name = "0-F 1-T")
private String isActive;
/** PLC写入地址 */
@Excel(name = "PLC写入地址")
private String plcDbWriteAddress;
/** 入库请求 */
@Excel(name = "入库请求")
private int rkqq;
/** 空闲 */
@Excel(name = "空闲")
private int kx;
/** 到位 */
@Excel(name = "到位")
private int dw;
/** 条码 */
@Excel(name = "条码")
private String trayCode;
/** 任务号 */
@Excel(name = "任务号")
private int taskNo;
@Excel(name = "异常")
private int exception;
@Excel(name = "托盘尺寸")
private int traySize;
@Excel(name="允许放货")
private int allowPut;
@Excel(name="输送线模式 1-入库 2-出库")
private int model;
}

View File

@@ -0,0 +1,125 @@
package com.ruoyi.schedule.plcRead.tsj;
import HslCommunication.Core.Net.IReadWriteNet;
import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.ruoyi.common.domain.HslRead;
import com.ruoyi.common.domain.PlcConnectInfo;
import com.ruoyi.common.domain.SendData;
import com.ruoyi.device.tsj.domain.DeviceTsj;
import com.ruoyi.schedule.plcRead.util.Tools;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
public class PlcTsjRead implements Runnable {
public static ConcurrentHashMap<String, DeviceTsj> deviceTsjMap;
public volatile boolean isRun = true;
public SiemensS7Net siemensS7Net = null;
public static IReadWriteNet readWriteNet = null;
private final String ip;
private final int port;
private boolean success = false;
public PlcTsjRead(ConcurrentHashMap<String, DeviceTsj> deviceTsjMap, PlcConnectInfo plcConnectInfo) {
PlcTsjRead.deviceTsjMap = deviceTsjMap;
this.ip = plcConnectInfo.getIp();
this.port = plcConnectInfo.getPort();
}
public static int WriteToSSJ(String address, byte[] data) {
int a = 0;
if (readWriteNet != null) {
a = HslRead.WriteResultRender(readWriteNet.Write(address, data), address);
}
return a;
}
@Override
public void run() {
while (isRun) {
try {
if (IsConnect()) {
int step = 20;
int baseOffset = 0;
for (String tsjCode : deviceTsjMap.keySet()) {
DeviceTsj tsjDevice = deviceTsjMap.get(tsjCode);
}
Thread.sleep(1000);
} else {
reConnect();
}
} catch (InterruptedException e) {
// 捕获中断异常,退出循环
Thread.currentThread().interrupt(); // 重新设置中断标志
return;
} catch (Exception e) {
log.info("********IP:" + this.ip + " port:" + this.port + "读取数据异常 " + e.getMessage());
}
}
}
void ConnectServer() {
siemensS7Net = new SiemensS7Net(SiemensPLCS.S1500);
try {
siemensS7Net.setIpAddress(this.ip);
siemensS7Net.setPort(this.port);
siemensS7Net.setRack((byte) 0);
siemensS7Net.setSlot((byte) 1);
OperateResult connect = siemensS7Net.ConnectServer();
if (connect.IsSuccess) {
setIsConnect(true);
readWriteNet = siemensS7Net;
}
} catch (Exception ex) {
log.info("********IP:" + this.ip + " port:" + this.port + "连接失败 " + ex.getMessage());
}
}
public void setIsConnect(boolean bflag) {
if (!success) {
success = bflag;
}
}
public boolean IsConnect() {
if (success) {
return success;
}
return false;
}
void reConnect() {
closeServer();
ConnectServer();
log.info("重新连接 SSJ-PLC");
}
void closeServer() {
if (readWriteNet != null) {
readWriteNet.ConnectClose();
}
setIsConnect(false);
}
public static int writeToSsj(String address, String taskNo, int qx, int completed) {
int jym = Tools.getJYM(Integer.parseInt(taskNo), qx, completed);
SendData taskNoSendData = new SendData(Tools.INT, taskNo);
SendData qxSendData = new SendData(Tools.INT, qx);
SendData completedSendData = new SendData(Tools.INT, completed);
SendData jymSendData = new SendData(Tools.INT, jym);
byte[] bytes = Tools.sendData(taskNoSendData, qxSendData, completedSendData, jymSendData);
return PlcTsjRead.WriteToSSJ(address, bytes);
}
}