Commit c4267139 authored by wanghao's avatar wanghao

1 modbus4j 工具类调整

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