PCS关机先向设备发送给定功率值再发送关机指令

This commit is contained in:
zq
2026-01-15 17:49:03 +08:00
parent 0076872134
commit fb64be5a5a
2 changed files with 32 additions and 13 deletions

View File

@ -99,7 +99,10 @@ public class StrategyPoller {
logger.error("运行策略{}轮询异常", strategyVo.getId(), e); logger.error("运行策略{}轮询异常", strategyVo.getId(), e);
return null; return null;
}) })
.thenRun(() -> strategyLocks.remove(strategyId)); .thenRun(() -> {
logger.info("运行策略{}轮询任务执行完成,释放锁", strategyVo.getId());
strategyLocks.remove(strategyId);
});
} catch (Exception e) { } catch (Exception e) {
logger.error("运行策略{}任务失败", strategyVo.getId(), e); logger.error("运行策略{}任务失败", strategyVo.getId(), e);
strategyLocks.remove(strategyId); strategyLocks.remove(strategyId);
@ -306,30 +309,39 @@ public class StrategyPoller {
public List<WriteTagConfig> getSwitchDeviceWriteTags(EmsPcsSetting pcsSetting, String workStatus) { public List<WriteTagConfig> getSwitchDeviceWriteTags(EmsPcsSetting pcsSetting, String workStatus) {
List<WriteTagConfig> writeTags = new ArrayList<>(); List<WriteTagConfig> writeTags = new ArrayList<>();
BigDecimal power; BigDecimal power;
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
if (WorkStatus.NORMAL.getCode().equals(workStatus)) { if (WorkStatus.NORMAL.getCode().equals(workStatus)) {
// 开机 // 开机先发送开机指令再发送有功功率给定值
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
writeTag.setValue(pcsSetting.getStartCommand()); writeTag.setValue(pcsSetting.getStartCommand());
writeTags.add(writeTag);
power = pcsSetting.getStartPower(); power = pcsSetting.getStartPower();
} else { } else {
// 关机 // 关机
writeTag.setValue(pcsSetting.getStopCommand());
power = pcsSetting.getStopPower(); power = pcsSetting.getStopPower();
} }
writeTags.add(writeTag);
JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress()); JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress());
for (int i = 0; i < pcsSetting.getClusterNum(); i++) { for (int i = 0; i < pcsSetting.getClusterNum(); i++) {
Object clusterPointAddress = array.get(i); Object clusterPointAddress = array.get(i);
WriteTagConfig clusterWriteTag = new WriteTagConfig(); WriteTagConfig clusterWriteTag = new WriteTagConfig();
clusterWriteTag.setAddress(String.valueOf(clusterPointAddress)); clusterWriteTag.setAddress(String.valueOf(clusterPointAddress));
// 电池簇PCS有功功率给定置0 // 电池簇PCS有功功率给定默认置0
if (power == null) { if (power == null) {
power = BigDecimal.ZERO; power = BigDecimal.ZERO;
} }
clusterWriteTag.setValue(power); clusterWriteTag.setValue(power);
writeTags.add(clusterWriteTag); writeTags.add(clusterWriteTag);
} }
if (WorkStatus.STOP.getCode().equals(workStatus)) {
// 关机先发送有功功率给定值再发送关机指令
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
writeTag.setValue(pcsSetting.getStopCommand());
writeTags.add(writeTag);
}
return writeTags; return writeTags;
} }

View File

@ -564,32 +564,39 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
public List<WriteTagConfig> getWriteTags(String workStatus, EmsPcsSetting pcsSetting) { public List<WriteTagConfig> getWriteTags(String workStatus, EmsPcsSetting pcsSetting) {
List<WriteTagConfig> writeTags = new ArrayList<>(); List<WriteTagConfig> writeTags = new ArrayList<>();
BigDecimal power; BigDecimal power;
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
if (WorkStatus.NORMAL.getCode().equals(workStatus)) { if (WorkStatus.NORMAL.getCode().equals(workStatus)) {
// 开机 // 开机先发送开机指令再发送有功功率给定值
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
writeTag.setValue(pcsSetting.getStartCommand()); writeTag.setValue(pcsSetting.getStartCommand());
writeTags.add(writeTag);
power = pcsSetting.getStartPower(); power = pcsSetting.getStartPower();
} else if (WorkStatus.STOP.getCode().equals(workStatus)) { } else if (WorkStatus.STOP.getCode().equals(workStatus)) {
// 关机 // 关机
writeTag.setValue(pcsSetting.getStopCommand());
power = pcsSetting.getStopPower(); power = pcsSetting.getStopPower();
} else { } else {
throw new ServiceException("工作状态不合法"); throw new ServiceException("工作状态不合法");
} }
writeTags.add(writeTag);
JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress()); JSONArray array = JSON.parseArray(pcsSetting.getClusterPointAddress());
for (int i = 0; i < pcsSetting.getClusterNum(); i++) { for (int i = 0; i < pcsSetting.getClusterNum(); i++) {
Object clusterPointAddress = array.get(i); Object clusterPointAddress = array.get(i);
WriteTagConfig clusterWriteTag = new WriteTagConfig(); WriteTagConfig clusterWriteTag = new WriteTagConfig();
clusterWriteTag.setAddress(String.valueOf(clusterPointAddress)); clusterWriteTag.setAddress(String.valueOf(clusterPointAddress));
// 电池簇PCS有功功率给定置0 // 电池簇PCS有功功率给定默认置0
if (power == null) { if (power == null) {
power = BigDecimal.ZERO; power = BigDecimal.ZERO;
} }
clusterWriteTag.setValue(power); clusterWriteTag.setValue(power);
writeTags.add(clusterWriteTag); writeTags.add(clusterWriteTag);
} }
if (WorkStatus.STOP.getCode().equals(workStatus)) {
// 关机先发送有功功率给定值再发送关机指令
WriteTagConfig writeTag = new WriteTagConfig();
writeTag.setAddress(pcsSetting.getPointAddress());
writeTag.setValue(pcsSetting.getStopCommand());
writeTags.add(writeTag);
}
return writeTags; return writeTags;
} }
} }