列车运行级别升级需ma的atp防护速度为正;计轴故障区段不会再显示通信车占用
This commit is contained in:
parent
a345f73528
commit
8f43e51dba
@ -94,7 +94,7 @@ public class AtpSectionService {
|
|||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
axle = parent;
|
axle = parent;
|
||||||
}
|
}
|
||||||
if (axle.isAxleCounter() && !axle.isNctOccupied()) {
|
if (axle.isAxleCounter() && (!axle.isNctOccupied() || Section.AxleFault.FAULT.equals(axle.getFault()))) {
|
||||||
removes.add(atpSection);
|
removes.add(atpSection);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ATS追踪的列车信息
|
* ATS追踪的列车信息
|
||||||
@ -382,7 +381,7 @@ public class TrainInfo extends MapElement {
|
|||||||
this.communicable = train.isCommunicable();
|
this.communicable = train.isCommunicable();
|
||||||
if (headPosition.getSection().isSwitchTrack()) {
|
if (headPosition.getSection().isSwitchTrack()) {
|
||||||
this.section = headPosition.getSection().getParent().getCode();
|
this.section = headPosition.getSection().getParent().getCode();
|
||||||
} else if (this.isCommunicable()) {
|
} else if (train.isCBTC()) {
|
||||||
this.section = headPosition.getLogicSection().getCode();
|
this.section = headPosition.getLogicSection().getCode();
|
||||||
} else {
|
} else {
|
||||||
this.section = headPosition.getSection().getCode();
|
this.section = headPosition.getSection().getCode();
|
||||||
|
@ -85,13 +85,7 @@ public class ATPLogicLoop {
|
|||||||
atpService.updateRunLevel(train, RunLevel.IL, preselectionMode);
|
atpService.updateRunLevel(train, RunLevel.IL, preselectionMode);
|
||||||
atpService.triggerSignalEB(train);
|
atpService.triggerSignalEB(train);
|
||||||
} else if (!train.isCBTC() && !train.isCbtcMaMiss() && defaultRunLevel.equals(RunLevel.CBTC)) {
|
} else if (!train.isCBTC() && !train.isCbtcMaMiss() && defaultRunLevel.equals(RunLevel.CBTC)) {
|
||||||
boolean headSectionAxleFault = Section.AxleFault.FAULT
|
atpService.updateRunLevel(train, RunLevel.CBTC, preselectionMode);
|
||||||
.equals(train.getHeadPosition().getSection().getFault()); //车头区段计轴故障
|
|
||||||
boolean tailSectionAxleFault = Section.AxleFault.FAULT
|
|
||||||
.equals(train.calculateTailPosition().getSection().getFault()); //车尾区段计轴故障
|
|
||||||
if (!headSectionAxleFault && !tailSectionAxleFault) {
|
|
||||||
atpService.updateRunLevel(train, RunLevel.CBTC, preselectionMode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.onboard.ATP;
|
package club.joylink.rtss.simulation.cbtc.onboard.ATP;
|
||||||
|
|
||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.ATP.ground.MaService;
|
||||||
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
||||||
import club.joylink.rtss.simulation.cbtc.CI.device.CiStandService;
|
import club.joylink.rtss.simulation.cbtc.CI.device.CiStandService;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
@ -447,10 +448,23 @@ public class ATPService {
|
|||||||
if (!preselectionMode.isMatchTheRunLevel(runLevel)) {
|
if (!preselectionMode.isMatchTheRunLevel(runLevel)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
train.setRunLevel(runLevel);
|
|
||||||
switch (runLevel) {
|
switch (runLevel) {
|
||||||
case CBTC:
|
case CBTC:
|
||||||
case ITC:
|
case ITC:
|
||||||
|
MaService.Ma ma = train.getMa2();
|
||||||
|
if (ma == null)
|
||||||
|
return;
|
||||||
|
SpeedCurve ebTriggerCurve = ma.getEbTriggerCurve();
|
||||||
|
float ebTriggerRemain = ma.calculateDistanceOfEbTriggerEnd();
|
||||||
|
ma.setEbTriggerCurve(ebTriggerCurve);
|
||||||
|
float totalDistance = ebTriggerCurve.getTotalDistance();
|
||||||
|
if (totalDistance < ebTriggerRemain) {
|
||||||
|
ebTriggerRemain = totalDistance;
|
||||||
|
}
|
||||||
|
float atpSpeed = ebTriggerCurve.getSpeedOf(ebTriggerRemain);
|
||||||
|
if (atpSpeed <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
updateDriveMode(train, train.isAtoOn() ? DriveMode.AM : DriveMode.CM, preselectionMode);
|
updateDriveMode(train, train.isAtoOn() ? DriveMode.AM : DriveMode.CM, preselectionMode);
|
||||||
break;
|
break;
|
||||||
case IL:
|
case IL:
|
||||||
@ -459,6 +473,7 @@ public class ATPService {
|
|||||||
default:
|
default:
|
||||||
throw new IllegalStateException("Unexpected value: " + runLevel);
|
throw new IllegalStateException("Unexpected value: " + runLevel);
|
||||||
}
|
}
|
||||||
|
train.setRunLevel(runLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateDriveMode(VirtualRealityTrain train, DriveMode driveMode) {
|
private void updateDriveMode(VirtualRealityTrain train, DriveMode driveMode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user