rssp axle test
This commit is contained in:
parent
1cbdf59876
commit
84ce75a3d2
@ -14,10 +14,17 @@ import (
|
||||
func AxleSectionDrstDrive(w ecs.World, sectionId string, set bool) error {
|
||||
r := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
||||
wd := entity.GetWorldData(w)
|
||||
//
|
||||
sectionModel := wd.Repo.FindPhysicalSection(sectionId)
|
||||
if sectionModel == nil {
|
||||
return ecs.NewErrResult(fmt.Errorf("区段模型[%s]不存实体", sectionId))
|
||||
}
|
||||
if set {
|
||||
axleSectionEntry := wd.EntityMap[sectionId]
|
||||
if !axleSectionEntry.HasComponent(component.AxleSectionFaultTag) {
|
||||
return ecs.NewErrResult(fmt.Errorf("区段[%s]非故障占用,无法进行复位操作", sectionId))
|
||||
}
|
||||
}
|
||||
//
|
||||
faDcAxleDeviceEntry := entity.FindAxleManageDevice(wd, sectionModel.CentralizedStation())
|
||||
|
||||
@ -46,6 +53,12 @@ func AxleSectionPdrstDrive(w ecs.World, sectionId string, set bool) error {
|
||||
if sectionModel == nil {
|
||||
return ecs.NewErrResult(fmt.Errorf("区段模型[%s]不存实体", sectionId))
|
||||
}
|
||||
if set {
|
||||
axleSectionEntry := wd.EntityMap[sectionId]
|
||||
if !axleSectionEntry.HasComponent(component.AxleSectionFaultTag) {
|
||||
return ecs.NewErrResult(fmt.Errorf("区段[%s]非故障占用,无法进行复位操作", sectionId))
|
||||
}
|
||||
}
|
||||
//
|
||||
faDcAxleDeviceEntry := entity.FindAxleManageDevice(wd, sectionModel.CentralizedStation())
|
||||
|
||||
@ -79,17 +92,14 @@ func AxleSectionFaultOccDrive(w ecs.World, sectionId string, set bool) error {
|
||||
if sectionEntry == nil {
|
||||
return ecs.NewErrResult(fmt.Errorf("区段[%s]实体不存在", sectionId))
|
||||
}
|
||||
axleDevice := component.AxlePhysicalSectionType.Get(sectionEntry)
|
||||
if set { //计轴故障设置
|
||||
if !sectionEntry.HasComponent(component.AxleSectionFaultTag) {
|
||||
sectionEntry.AddComponent(component.AxleSectionFaultTag)
|
||||
}
|
||||
axleDevice.UpdateCount(1)
|
||||
} else { //计轴故障取消
|
||||
if sectionEntry.HasComponent(component.AxleSectionFaultTag) {
|
||||
sectionEntry.RemoveComponent(component.AxleSectionFaultTag)
|
||||
}
|
||||
axleDevice.UpdateCount(0)
|
||||
}
|
||||
//
|
||||
return ecs.NewOkEmptyResult()
|
||||
|
@ -28,12 +28,13 @@ func (s *FaDcAxleDeviceSystem) Update(w ecs.World) {
|
||||
sectionState := component.PhysicalSectionStateType.Get(axleSectionEntry)
|
||||
axleDevice := component.AxlePhysicalSectionType.Get(axleSectionEntry)
|
||||
//
|
||||
s.calculateHf(axleSectionEntry, sectionState, axleDevice, axleRuntime)
|
||||
s.calculateDrst(sectionState, axleDevice, axleRuntime)
|
||||
s.calculatePdrst(sectionState, axleDevice, axleRuntime)
|
||||
s.calculateSectionState(sectionState, axleDevice, axleRuntime)
|
||||
sectionFault := axleSectionEntry.HasComponent(component.AxleSectionFaultTag)
|
||||
s.calculateHf(sectionFault, axleSectionEntry, sectionState, axleDevice, axleRuntime)
|
||||
s.calculateDrst(axleSectionEntry, sectionState, axleDevice, axleRuntime)
|
||||
s.calculatePdrst(axleSectionEntry, sectionState, axleDevice, axleRuntime)
|
||||
s.calculateSectionState(sectionFault, sectionState, axleDevice, axleRuntime)
|
||||
|
||||
if "北京_12_酒仙桥_12G" == axleSectionId && false {
|
||||
if "北京_12_酒仙桥_15G" == axleSectionId && false {
|
||||
sectionFault := axleSectionEntry.HasComponent(component.AxleSectionFaultTag)
|
||||
slog.Info(axleSectionId,
|
||||
"Drst", axleRuntime.Drst,
|
||||
@ -52,39 +53,43 @@ func (s *FaDcAxleDeviceSystem) Update(w ecs.World) {
|
||||
}
|
||||
|
||||
// 计算计轴区段状态
|
||||
func (s *FaDcAxleDeviceSystem) calculateSectionState(sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
isIdle := axleDevice.Count <= 0 && !axleRuntime.DoingPdrst //区段空闲:区段内车轴数为零且没有预复位
|
||||
sectionState.Occ = !isIdle
|
||||
func (s *FaDcAxleDeviceSystem) calculateSectionState(sectionFault bool, sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
sectionState.Occ = axleDevice.Count > 0 || sectionFault
|
||||
}
|
||||
|
||||
// 计轴直接复位
|
||||
func (s *FaDcAxleDeviceSystem) calculateDrst(sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
|
||||
if axleRuntime.Drst && !axleRuntime.Rjo && !axleRuntime.Rjt { //直接复位且没有拒绝原因
|
||||
func (s *FaDcAxleDeviceSystem) calculateDrst(axleSectionEntry *ecs.Entry, sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
isFault := axleSectionEntry.HasComponent(component.AxleSectionFaultTag)
|
||||
if axleRuntime.Drst && !axleRuntime.Rjo && !axleRuntime.Rjt && isFault { //直接复位且没有拒绝原因
|
||||
axleDevice.UpdateCount(0)
|
||||
axleDevice.ResetCountPulse()
|
||||
axleRuntime.DoingPdrst = false
|
||||
//清除故障
|
||||
if axleSectionEntry.HasComponent(component.AxleSectionFaultTag) {
|
||||
axleSectionEntry.RemoveComponent(component.AxleSectionFaultTag)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 计轴预复位
|
||||
func (s *FaDcAxleDeviceSystem) calculatePdrst(sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
|
||||
if axleRuntime.Pdrst && !axleRuntime.Rjo && !axleRuntime.Rjt && !axleRuntime.DoingPdrst { //预复位且没有拒绝原因
|
||||
func (s *FaDcAxleDeviceSystem) calculatePdrst(axleSectionEntry *ecs.Entry, sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
isFault := axleSectionEntry.HasComponent(component.AxleSectionFaultTag)
|
||||
if axleRuntime.Pdrst && !axleRuntime.Rjo && !axleRuntime.Rjt && !axleRuntime.DoingPdrst && isFault { //预复位且没有拒绝原因
|
||||
axleDevice.UpdateCount(0)
|
||||
axleDevice.ResetCountPulse()
|
||||
axleRuntime.DoingPdrst = true
|
||||
}
|
||||
//压道车通过该计轴区段,完成计轴预复位
|
||||
if axleDevice.IsCount010Pulse() {
|
||||
if axleRuntime.DoingPdrst && isFault && axleDevice.IsCount010Pulse() {
|
||||
axleRuntime.DoingPdrst = false
|
||||
//清除故障
|
||||
axleSectionEntry.RemoveComponent(component.AxleSectionFaultTag)
|
||||
}
|
||||
}
|
||||
|
||||
// 复位回复运算
|
||||
func (s *FaDcAxleDeviceSystem) calculateHf(axleSectionEntry *ecs.Entry, sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
sectionFault := axleSectionEntry.HasComponent(component.AxleSectionFaultTag)
|
||||
func (s *FaDcAxleDeviceSystem) calculateHf(sectionFault bool, axleSectionEntry *ecs.Entry, sectionState *component.PhysicalSectionState, axleDevice *component.AxlePhysicalSection, axleRuntime *component.AxleDeviceRuntime) {
|
||||
axleRuntime.Rac = axleRuntime.Drst || axleRuntime.Pdrst
|
||||
axleRuntime.Rjo = axleRuntime.Rac && !sectionState.Occ && !axleRuntime.DoingPdrst //空闲拒绝复位(排除预复位过程中)
|
||||
axleRuntime.Rjt = axleRuntime.Rac && sectionFault // 技术原因拒绝复位
|
||||
axleRuntime.Rjt = false // 技术原因拒绝复位
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user