Commit c4267139 authored by wanghao's avatar wanghao

1 modbus4j 工具类调整

parent 79410fee
......@@ -119,7 +119,7 @@ public class ModbusResultHandler implements Consumer<DeviceStatusReaderDto> {
ModbusMaster master = null;
try {
// 获取ModbusMaster
master = Modbus4jUtils.getMaster(ip, port);
master = Modbus4jUtils.createModbusMaster(ip, port);
log.info(">>> 回调处理[{}]: 接收到数据:deviceId={}, data={}",
Thread.currentThread().getName(), deviceId, Arrays.toString(data));
......
......@@ -28,7 +28,7 @@ public class ModbusTcpTask implements Callable<Map<Integer, Object>> {
public Map<Integer, Object> call(){
ModbusMaster master = null;
try {
master = Modbus4jUtils.getMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
master = Modbus4jUtils.createModbusMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
return Modbus4jUtils.batchReadAgingCabinetStatus(master,registerOffsets);
} catch (ModbusInitException e) {
Map<Integer, Object> errorMap = new HashMap<>();
......
......@@ -205,7 +205,7 @@ public class RobotArmCommandServiceImpl implements IRobotArmCommandService
int registerOffsetInt = layer - 1;
try {
ModbusMaster master = Modbus4jUtils.getMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
ModbusMaster master = Modbus4jUtils.createModbusMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
Modbus4jUtils.writeCoil(master, 1, registerOffsetInt, false);
log.info("已发送断电指令 - 设备:{} 层:{}", tEquipmentInfo.getfEquipmentCode(), layer);
master.destroy();
......
......@@ -159,7 +159,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
ModbusMaster master = null;
List<Integer> registerOffsets = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
try {
master = Modbus4jUtils.getMaster(equipmentInfo.getfPowerOutageIp(), equipmentInfo.getfPowerOutagePort());
master = Modbus4jUtils.createModbusMaster(equipmentInfo.getfPowerOutageIp(), equipmentInfo.getfPowerOutagePort());
for (Integer registerOffset : registerOffsets) {
Boolean aBoolean = Modbus4jUtils.readCoilStatus(master, 1, registerOffset);
......@@ -209,7 +209,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
ModbusMaster master = null;
List<Integer> registerOffsets = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
try {
master = Modbus4jUtils.getMaster(equipmentInfo.getfPowerOutageIp(), equipmentInfo.getfPowerOutagePort());
master = Modbus4jUtils.createModbusMaster(equipmentInfo.getfPowerOutageIp(), equipmentInfo.getfPowerOutagePort());
for (Integer registerOffset : registerOffsets) {
Boolean aBoolean = Modbus4jUtils.readCoilStatus(master, 1, registerOffset);
......@@ -410,7 +410,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
// 10 层
List<Integer> registerOffsets = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
try {
master = Modbus4jUtils.getMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
master = Modbus4jUtils.createModbusMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
Map<Integer, Object> integerObjectMap = Modbus4jUtils.batchReadAgingCabinetStatus(master, registerOffsets);
equipmentInfo.setRegisterValues(integerObjectMap);
......@@ -644,7 +644,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
String registerOffset = tStoreyInfo.getfStoreyCode().split("-")[1];
try {
ModbusMaster master = Modbus4jUtils.getMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
ModbusMaster master = Modbus4jUtils.createModbusMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
int i = Integer.parseInt(registerOffset);
int registerOffsetInt = i - 1;
......@@ -710,7 +710,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
List<Integer> integers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
try {
ModbusMaster master = Modbus4jUtils.getMaster(tEquipmentInfo.getfIp(), tEquipmentInfo.getfPort());
ModbusMaster master = Modbus4jUtils.createModbusMaster(tEquipmentInfo.getfIp(), tEquipmentInfo.getfPort());
Map<Integer, Object> integerObjectMap = Modbus4jUtils.batchReadAgingCabinetStatus(master, integers);
......@@ -736,7 +736,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
String registerOffset = tStoreyInfo.getfStoreyCode().split("-")[1];
try {
ModbusMaster master = Modbus4jUtils.getMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
ModbusMaster master = Modbus4jUtils.createModbusMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
int i = Integer.parseInt(registerOffset);
int registerOffsetInt = i - 1;
......@@ -772,7 +772,7 @@ public class TStoreyInfoServiceImpl implements ITStoreyInfoService
String registerOffset = tStoreyInfo.getfStoreyCode().split("-")[1];
try {
ModbusMaster master = Modbus4jUtils.getMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
ModbusMaster master = Modbus4jUtils.createModbusMaster(tEquipmentInfo.getfPowerOutageIp(), tEquipmentInfo.getfPowerOutagePort());
int i = Integer.parseInt(registerOffset);
int registerOffsetInt = i - 1;
......
......@@ -84,7 +84,7 @@ public class AgingCabinetInspectionAndPowerCheckTask {
// 10 层
List<Integer> registerOffsets = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
try {
master = Modbus4jUtils.getMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
master = Modbus4jUtils.createModbusMaster(equipmentInfo.getfIp(), equipmentInfo.getfPort());
Map<Integer, Object> integerObjectMap = Modbus4jUtils.batchReadAgingCabinetStatus(master, registerOffsets);
equipmentInfo.setRegisterValues(integerObjectMap);
......
......@@ -65,7 +65,7 @@ public class AllCommandHandler {
log.info("需要发送上电指令 - 设备:{} 层:{} ip:{} 端口号:{}", event.getDeviceCode(), layer, fip, fport);
ModbusMaster master;
try {
master = Modbus4jUtils.getMaster(fip, fport);
master = Modbus4jUtils.createModbusMaster(fip, fport);
Boolean aBoolean = Modbus4jUtils.readCoilStatus(master, 1, registerOffset);
log.info("当前 - 设备:{} 层:{} -的 状态是:{}", event.getDeviceCode(), event.getLayer(), aBoolean);
......@@ -115,7 +115,7 @@ public class AllCommandHandler {
alarmDataService.insertTEquipmentAlarmData(alarmData);
} else {
// 下料后断电
ModbusMaster master = Modbus4jUtils.getMaster(ip, port);
ModbusMaster master = Modbus4jUtils.createModbusMaster(ip, port);
Modbus4jUtils.writeCoil(master, 1, event.getLayer(), false);
log.info("已发送断电指令 - 设备:{} 层:{}", event.getDeviceCode(), event.getLayer());
master.destroy();
......
......@@ -246,7 +246,7 @@ public abstract class BaseDeviceCommJob implements Job {
*/
private int[] readModbusWithRetry(String ip, int port, int deviceId) throws Exception {
// 1. 从连接池借连接(超时3秒
ModbusMaster master = Modbus4jUtils.getMaster(ip, port);
ModbusMaster master = Modbus4jUtils.createModbusMaster(ip, port);
for (int retry = 0; retry <= CUSTOM_RETRY_TIMES; retry++) {
try {
// 2. 读取寄存器
......
......@@ -38,7 +38,6 @@ public class DeviceCommunicationJob implements Job {
// 超时控制:必须小于Cron周期(假设Cron为5分钟,这里留1分钟缓冲)
private static final int TOTAL_TASK_TIMEOUT_SEC = 240; // 任务总超时:4分钟
private static final int SINGLE_DEVICE_TIMEOUT_SEC = 10; // 单个设备超时:10秒
private static final int CUSTOM_RETRY_TIMES = 2; // 自定义重试次数:1次
// 全局线程池 - 避免重复创建
private static final ExecutorService GLOBAL_DEVICE_EXECUTOR = new ThreadPoolExecutor(
......
......@@ -66,8 +66,6 @@ public class FinalExecutionJob implements Job {
r -> new Thread(r, "final-global-modbus-device"),
new ThreadPoolExecutor.CallerRunsPolicy()
);
// 工厂(单例)
private static final ModbusFactory modbusFactory = new ModbusFactory();
@Override
public void execute(JobExecutionContext context) {
// 1. 初始化变量,避免空指针
......
......@@ -43,7 +43,6 @@ public class PrepareFinalExecutionJob implements Job {
// 超时控制:必须小于Cron周期(假设Cron为5分钟,这里留1分钟缓冲)
private static final int TOTAL_TASK_TIMEOUT_SEC = 240; // 任务总超时:4分钟
private static final int SINGLE_DEVICE_TIMEOUT_SEC = 10; // 单个设备超时:10秒
private static final int CUSTOM_RETRY_TIMES = 2; // 自定义重试次数:1次
// 全局线程池 - 避免重复创建
private static final ExecutorService GLOBAL_DEVICE_EXECUTOR = new ThreadPoolExecutor(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment