parent
dce0f88ec4
commit
eddd0171b7
@ -178,13 +178,11 @@ public class AtpSectionService {
|
||||
* @param sectionList
|
||||
*/
|
||||
public void sectionARBCheck(Simulation simulation, Section section, List<Section> sectionList) {
|
||||
if (!simulation.getRepository().getConfig().isNoARB()) {
|
||||
if (!section.isInvalid() && section.isNctOccupied()) {
|
||||
if (!sectionList.contains(section)) {
|
||||
log.debug(String.format("区段[%s(%s)]检测为ARB故障",
|
||||
section.getName(), section.getCode()));
|
||||
section.judgeAsInvalid();
|
||||
}
|
||||
if (!section.isInvalid() && section.isNctOccupied()) {
|
||||
if (!sectionList.contains(section)) {
|
||||
log.debug(String.format("区段[%s(%s)]检测为ARB故障",
|
||||
section.getName(), section.getCode()));
|
||||
section.judgeAsInvalid();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -126,20 +126,15 @@ public class ZCLogicLoop {
|
||||
endList.add(end1);
|
||||
return endList;
|
||||
}
|
||||
// // 检查车头区段是否故障
|
||||
// if (headPosition.getSection().isFault()) {
|
||||
// endList.add(new MovementAuthority.End(headPosition.getSection(), MovementAuthority.EndType.FAULT_SECTION));
|
||||
// }
|
||||
// //非通信车占用区段
|
||||
// if (section.isNonCbtcOccupy()) {
|
||||
// endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION));
|
||||
// return endList;
|
||||
// }
|
||||
// 检查车头区段是否故障
|
||||
if (headPosition.getSection().isFault()) {
|
||||
endList.add(new MovementAuthority.End(headPosition.getSection(), MovementAuthority.EndType.FAULT_SECTION));
|
||||
}
|
||||
//非通信车占用区段
|
||||
MovementAuthority.End nctOccupied = checkNctOccupied(train, section);
|
||||
if (nctOccupied != null)
|
||||
endList.add(nctOccupied);
|
||||
|
||||
if (section.isNonCbtcOccupy()) {
|
||||
endList.add(new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION));
|
||||
return endList;
|
||||
}
|
||||
int count = 0;
|
||||
while (count < 50) {
|
||||
++count;
|
||||
@ -184,16 +179,12 @@ public class ZCLogicLoop {
|
||||
break;
|
||||
}
|
||||
//非通信车占用区段
|
||||
MovementAuthority.End end = checkNctOccupied(train, temp);
|
||||
if (end != null)
|
||||
endList.add(end);
|
||||
// //非通信车占用区段
|
||||
// if (temp.isNonCbtcOccupy()) {
|
||||
// SectionPosition headPosition1 = train.getHeadPosition();
|
||||
// if (!temp.isSamePhysical(headPosition1.getSection().getCode())) {
|
||||
// endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_SECTION));
|
||||
// }
|
||||
// }
|
||||
if (temp.isNonCbtcOccupy()) {
|
||||
SectionPosition headPosition1 = train.getHeadPosition();
|
||||
if (!temp.isSamePhysical(headPosition1.getSection().getCode())) {
|
||||
endList.add(new MovementAuthority.End(temp, MovementAuthority.EndType.NCT_OCCUPIED_IN_FRONT_OF_SECTION));
|
||||
}
|
||||
}
|
||||
//检查关闭的区段
|
||||
MovementAuthority.End cs = checkClosedSection(section);
|
||||
if (cs != null)
|
||||
@ -221,20 +212,6 @@ public class ZCLogicLoop {
|
||||
return endList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查非通信车占用的区段
|
||||
*/
|
||||
private MovementAuthority.End checkNctOccupied(VirtualRealityTrain train, Section section) {
|
||||
if (train.isCBTC()) { //通信车
|
||||
if (section.isNonCbtcOccupy() && !section.isInvalid())
|
||||
return new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION);
|
||||
} else { //非通信车
|
||||
if (section.isNonCbtcOccupy())
|
||||
return new MovementAuthority.End(section, MovementAuthority.EndType.NCT_OCCUPIED_SECTION);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private MovementAuthority.End checkClosedSection(Section section) {
|
||||
if (section.isClosed()) {
|
||||
return new MovementAuthority.End(section, MovementAuthority.EndType.CLOSED_SECTION);
|
||||
|
@ -204,9 +204,6 @@ public class MapConfig {
|
||||
/** 服务号的位数 */
|
||||
private int figuresOfServiceNumber;
|
||||
|
||||
/** 没有ARB判定 */
|
||||
private boolean noARB;
|
||||
|
||||
private Set<SimulationMember.Type> needConfirmConnectMembers =
|
||||
Stream.of(DISPATCHER, STATION_SUPERVISOR, MAINTAINER, ELECTRIC_DISPATCHER).collect(Collectors.toSet());
|
||||
|
||||
@ -254,7 +251,6 @@ public class MapConfig {
|
||||
setDelayWhenCancelRouteWithAbnormalInterlock(configVO.isDelayWhenCancelRouteWithAbnormalInterlock());
|
||||
setFiguresOfTripNumber(configVO.getFiguresOfTripNumber());
|
||||
setFiguresOfServiceNumber(configVO.getFiguresOfServiceNumber());
|
||||
setNoARB(noARB);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -727,20 +727,20 @@ public class Section extends MayOutOfOrderDevice {
|
||||
if (!this.isAxleCounter()) {
|
||||
return;
|
||||
}
|
||||
this.setInvalid(true);
|
||||
this.setNctOccupied(true);
|
||||
if (this.isSwitchAxleCounterSection()) { // 道岔计轴区段
|
||||
List<Switch> relSwitchList = this.getRelSwitchList();
|
||||
for (Switch aSwitch : relSwitchList) {
|
||||
aSwitch.getA().setInvalid(true);
|
||||
aSwitch.getA().setNctOccupied(true);
|
||||
if (aSwitch.isNormalPosition()) {
|
||||
aSwitch.getB().setInvalid(true);
|
||||
aSwitch.getC().setInvalid(false);
|
||||
aSwitch.getB().setNctOccupied(true);
|
||||
aSwitch.getC().setNctOccupied(false);
|
||||
} else if (aSwitch.isReversePosition()) {
|
||||
aSwitch.getC().setInvalid(true);
|
||||
aSwitch.getB().setInvalid(false);
|
||||
aSwitch.getC().setNctOccupied(true);
|
||||
aSwitch.getB().setNctOccupied(false);
|
||||
} else {
|
||||
aSwitch.getB().setInvalid(true);
|
||||
aSwitch.getC().setInvalid(true);
|
||||
aSwitch.getB().setNctOccupied(true);
|
||||
aSwitch.getC().setNctOccupied(true);
|
||||
}
|
||||
}
|
||||
Section cross = queryCross();
|
||||
@ -749,7 +749,7 @@ public class Section extends MayOutOfOrderDevice {
|
||||
}
|
||||
} else if (!CollectionUtils.isEmpty(this.logicList)) {
|
||||
for (Section logic : this.logicList) {
|
||||
logic.setInvalid(true);
|
||||
logic.setNctOccupied(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -796,7 +796,7 @@ public class Section extends MayOutOfOrderDevice {
|
||||
boolean leftSectionNctOccupied = leftSection.isNctOccupied() && leftSection.getParent().equals(this.parent);
|
||||
Section rightSection = logic.getRightSection();
|
||||
boolean rightSectionNctOccupied = rightSection.isNctOccupied() && rightSection.getParent().equals(this.parent);
|
||||
logic.setInvalid(leftSectionNctOccupied || rightSectionNctOccupied);
|
||||
logic.setNctOccupied(leftSectionNctOccupied || rightSectionNctOccupied);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import club.joylink.rtss.simulation.cbtc.data.CalculateService;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.MapNamedElement;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.Signal;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.Stand;
|
||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
@ -152,7 +153,7 @@ public class MovementAuthority {
|
||||
// float offset = right ? 0 : baseSection.getLen();
|
||||
// return new SectionPosition(baseSection, offset);
|
||||
// }
|
||||
case NCT_OCCUPIED_SECTION:{
|
||||
case NCT_OCCUPIED_IN_FRONT_OF_SECTION:{
|
||||
Section section = (Section) this.device;
|
||||
Section previous = section.getNextRunningSectionOf(!right);
|
||||
float offset = right ? 0 : previous.getLen();
|
||||
@ -212,9 +213,9 @@ public class MovementAuthority {
|
||||
UNLOCKED_OVERLAP,
|
||||
UNLOCK_SECTION,
|
||||
/**
|
||||
* 非通信车占用区段
|
||||
* 区段前方有非通信车占用
|
||||
*/
|
||||
NCT_OCCUPIED_SECTION,
|
||||
NCT_OCCUPIED_IN_FRONT_OF_SECTION,
|
||||
/**
|
||||
* 故障区段
|
||||
*/
|
||||
|
@ -159,9 +159,6 @@ public class RealLineConfigVO {
|
||||
/** 服务号的位数 */
|
||||
private int figuresOfServiceNumber = 3;
|
||||
|
||||
/** 没有ARB判定 */
|
||||
private boolean noARB;
|
||||
|
||||
public static RealLineConfigVO parseJsonStr(String configData) {
|
||||
if (StringUtils.hasText(configData)) {
|
||||
return JsonUtils.read(configData, RealLineConfigVO.class);
|
||||
|
Loading…
Reference in New Issue
Block a user