modbus读取本地设备数据增加告警逻辑
This commit is contained in:
@ -96,6 +96,10 @@ public class RedisKeyConstants
|
||||
public static final String TOPIC_FAILED_ALRAM_RECORD = "topic_failed_";
|
||||
/** topic 内没有数据设备维度告警 */
|
||||
public static final String TOPIC_EMPTY_ALARM_RECORD = "topic_empty_";
|
||||
/** modbus读取 没有数据设备维度告警 */
|
||||
public static final String MODBUS_EMPTY_ALARM_RECORD = "modbus_empty_";
|
||||
/** modbus读取 设备离线告警 */
|
||||
public static final String MODBUS_OFFLINE_ALARM_RECORD = "modbus_offline_";
|
||||
|
||||
/** 设备信息初始化 */
|
||||
public static final String INIT_DEVICE_INFO = "init_device_info";
|
||||
|
||||
@ -170,14 +170,20 @@ public class ModbusProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
public ModbusMaster borrowMaster(DeviceConfig config) throws Exception {
|
||||
ModbusMaster master = connectionManager.borrowMaster(config);
|
||||
// 设置了Modbus通信的超时时间为3000毫秒(3秒)。当主设备与从设备通信时,若在3秒内未收到响应,则认为通信超时并抛出异常。这有助于避免长时间等待无响应的设备。
|
||||
master.setTimeout(5000);
|
||||
return master;
|
||||
}
|
||||
|
||||
public Map<String, Object> readDataFromDevice(DeviceConfig config, ModbusMaster master) {
|
||||
Map<String, Object> deviceData = new HashMap<>();
|
||||
// ModbusMaster master = null; // 将master的声明提前
|
||||
try {
|
||||
master = connectionManager.borrowMaster(config);
|
||||
// master = connectionManager.borrowMaster(config);
|
||||
// 设置了Modbus通信的超时时间为3000毫秒(3秒)。当主设备与从设备通信时,若在3秒内未收到响应,则认为通信超时并抛出异常。这有助于避免长时间等待无响应的设备。
|
||||
master.setTimeout(5000);
|
||||
// master.setTimeout(5000);
|
||||
BatchResults<String> results = readTagValues(master, config.getSlaveId(), config.getTags());
|
||||
for (TagConfig tag : config.getTags()) {
|
||||
if (Objects.equals(tag.getDataType(), "FOUR_BYTE_FLOAT_DBCA")){
|
||||
@ -199,7 +205,7 @@ public class ModbusProcessor {
|
||||
// }
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("Failed to borrow connection or read from devices '{}'", config.getDeviceName(), e);
|
||||
logger.error("Failed read from devices '{}'", config.getDeviceName(), e);
|
||||
}
|
||||
finally {
|
||||
// 关键:无论成功与否,都必须将连接归还到池中
|
||||
@ -207,8 +213,8 @@ public class ModbusProcessor {
|
||||
connectionManager.returnMaster(config, master);
|
||||
}
|
||||
}
|
||||
String deviceNumber = config.getDeviceNumber();
|
||||
redisCache.setCacheObject(deviceNumber, deviceData);
|
||||
// String deviceNumber = config.getDeviceNumber();
|
||||
// redisCache.setCacheObject(deviceNumber, deviceData);
|
||||
return deviceData;
|
||||
}
|
||||
|
||||
@ -341,7 +347,7 @@ public class ModbusProcessor {
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}catch (Exception e){
|
||||
} catch (Exception e){
|
||||
logger.error("Failed to read master '{}'", slaveId, e);
|
||||
throw new Exception(e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user