修改站台轨限速判定;人工车处理站台跳停;联锁数据生成时给计轴区段偏移量赋值

This commit is contained in:
joylink_zhangsai 2021-08-24 14:06:29 +08:00
parent 27e2f456fc
commit 6c3ac11caa
4 changed files with 11 additions and 3 deletions

View File

@ -172,6 +172,8 @@ public class MapDeviceBuilder {
Map<String, MapSectionNewVO> sectionVOMap = sectionList.stream() Map<String, MapSectionNewVO> sectionVOMap = sectionList.stream()
.collect(Collectors.toMap(MapSectionNewVO::getCode, Function.identity())); .collect(Collectors.toMap(MapSectionNewVO::getCode, Function.identity()));
physicalSectionList.forEach(section -> { physicalSectionList.forEach(section -> {
section.setMinOffset(0);
section.setMaxOffset(section.getLen());
List<Section> logicList = section.getLogicList(); List<Section> logicList = section.getLogicList();
if (!CollectionUtils.isEmpty(logicList)) { if (!CollectionUtils.isEmpty(logicList)) {
boolean offsetExist = true; boolean offsetExist = true;

View File

@ -976,7 +976,7 @@ public class Section extends MayOutOfOrderDevice {
return this.getSpeedUpLimit() / 3.6f; return this.getSpeedUpLimit() / 3.6f;
} else if (this.isSwitchTrack() && this.getRelSwitch().isReversePosition()) { } else if (this.isSwitchTrack() && this.getRelSwitch().isReversePosition()) {
return 30 / 3.6f; return 30 / 3.6f;
} else if (isLogicStandTrack()) { //站台逻辑区段默认限速 } else if (this.isStandTrack() || isLogicStandTrack()) { //站台逻辑区段默认限速
return 45 / 3.6f; return 45 / 3.6f;
} }
return null; return null;

View File

@ -298,14 +298,14 @@ public class SpeedCurve {
} }
Section base = tailPosition.getSection(); Section base = tailPosition.getSection();
Float tailLimitSpeed = tailPosition.getLogicSection().getNeedLimitSpeed(); Float tailLimitSpeed = tailPosition.getLogicSection().getNeedLimitSpeed();
float limitSpeed = tailLimitSpeed == null ? recommendedSpeedMax : Math.min(tailLimitSpeed, recommendedSpeedMax); float limitSpeed = tailLimitSpeed == null ? recommendedSpeedMax : Math.min(tailLimitSpeed * 0.9f, recommendedSpeedMax);
SectionPosition endPosition; SectionPosition endPosition;
SpeedCurve speedCurve = buildTargetSpeedCurve(totalLen, v0, 0, limitSpeed); SpeedCurve speedCurve = buildTargetSpeedCurve(totalLen, v0, 0, limitSpeed);
for (int i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
if (base == null) if (base == null)
break; break;
List<Section> logicSections = base.getLogicList(); List<Section> logicSections = base.getLogicList();
if (logicSections == null) { if (CollectionUtils.isEmpty(logicSections)) {
logicSections = Collections.singletonList(base); logicSections = Collections.singletonList(base);
} }
int index = right ? 0 : logicSections.size() - 1; int index = right ? 0 : logicSections.size() - 1;

View File

@ -58,6 +58,12 @@ public class TrainTargetUpdateService {
break; break;
} }
if (temp.isNormalStandTrack() || temp.isTransferTrack()) { if (temp.isNormalStandTrack() || temp.isTransferTrack()) {
if (temp.isNormalStandTrack()) {
if (temp.getStandList().stream().anyMatch(stand -> stand.isJumpStop(train.getGroupNumber()))) { //该列车应在站台跳停
temp = temp.getNextRunningSectionBaseRealSwitch(right);
continue;
}
}
if (!temp.equals(headPosition.getSection())) { //列车还未到达该区段 if (!temp.equals(headPosition.getSection())) { //列车还未到达该区段
newTarget = temp; newTarget = temp;
break; break;