道岔位置组件添加定表、反表字段和更新逻辑
修改道岔电路1DQJ励磁逻辑
This commit is contained in:
parent
97eacebceb
commit
0744081d90
@ -9,8 +9,11 @@ var TurnoutTag = ecs.NewTag()
|
||||
|
||||
// 道岔的实际位置
|
||||
type TurnoutPosition struct {
|
||||
Dw bool // 是否定位
|
||||
Fw bool // 是否反位
|
||||
Dw bool // 是否定位(实际位置)
|
||||
Fw bool // 是否反位(实际位置)
|
||||
|
||||
Db bool // 定位表示(表示位置)
|
||||
Fb bool // 反位表示(表示位置)
|
||||
}
|
||||
|
||||
// 实际道岔的实际位置组件类型
|
||||
|
@ -30,7 +30,7 @@ func GetWorldData(w ecs.World) *component.WorldData {
|
||||
if ok {
|
||||
return component.WorldDataType.Get(entry)
|
||||
}
|
||||
panic("世界数据不存在")
|
||||
panic("不存在世界数据")
|
||||
}
|
||||
|
||||
// 根据uid获取对象实体
|
||||
|
@ -27,8 +27,7 @@ func LoadTurnouts(w ecs.World) error {
|
||||
panic(fmt.Sprintf("id=%s的道岔没有转辙机型号数据", turnout.Id()))
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Println("加载道岔异常:", err.Error())
|
||||
// return err
|
||||
panic(fmt.Sprintf("加载道岔异常: %s", err.Error()))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@ -136,7 +135,7 @@ func LoadTurnoutZdj9Two(w ecs.World, turnout *repository.Turnout, entry *ecs.Ent
|
||||
entry.AddComponent(component.Zdj9TwoElectronicType, unsafe.Pointer(zdj9TwoElectronic))
|
||||
}
|
||||
} else if size > 0 && size < 3 {
|
||||
fmt.Println("id=", turnout.Id(), "的道岔是ZDJ9双机牵引,但继电器组合类型少于3个(应为TDC、TDFJ1、TDFJ2三个组合)")
|
||||
return fmt.Errorf("id=[%s]的道岔是ZDJ9双机牵引,但继电器组合类型少于3个(应为TDC、TDFJ1、TDFJ2三个组合)", turnout.Id())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -303,6 +303,7 @@ func (zdj9 *ZDJ9TwoDragSys) exciteM1_TDFJ_1DQJ(elec *component.Zdj9TwoElectronic
|
||||
ycj := component.BitStateType.Get(elec.TDC_YCJ)
|
||||
dcj := component.BitStateType.Get(elec.TDC_DCJ)
|
||||
fcj := component.BitStateType.Get(elec.TDC_FCJ)
|
||||
tdfj1_2dqj := component.BitStateType.Get(elec.TDFJ1_2DQJ)
|
||||
bhj := component.BitStateType.Get(elec.TDFJ1_BHJ)
|
||||
qdj := component.BitStateType.Get(elec.TDFJ1_QDJ)
|
||||
drive := component.RelayDriveType.Get(elec.TDFJ1_1DQJ)
|
||||
@ -312,7 +313,7 @@ func (zdj9 *ZDJ9TwoDragSys) exciteM1_TDFJ_1DQJ(elec *component.Zdj9TwoElectronic
|
||||
drive.Td = false
|
||||
}
|
||||
} else { // 未通电
|
||||
if ycj.Val && (fcj.Val || dcj.Val) { // 电路导通
|
||||
if ycj.Val && ((tdfj1_2dqj.Val && fcj.Val) || (!tdfj1_2dqj.Val && dcj.Val)) { // 电路导通
|
||||
drive.Td = true
|
||||
}
|
||||
}
|
||||
|
@ -34,5 +34,23 @@ func (s *TurnoutSys) Update(w ecs.World) {
|
||||
}
|
||||
tp.Dw = dw
|
||||
tp.Fw = fw
|
||||
|
||||
// 表示
|
||||
if entry.HasComponent(component.Zdj9TwoElectronicType) {
|
||||
zdj9 := component.Zdj9TwoElectronicType.Get(entry)
|
||||
zdbj := component.BitStateType.Get(zdj9.TDC_ZDBJ)
|
||||
zfbj := component.BitStateType.Get(zdj9.TDC_ZFBJ)
|
||||
tp.Db = zdbj.Val
|
||||
tp.Fb = zfbj.Val
|
||||
} else if entry.HasComponent(component.Zdj9OneElectronicType) {
|
||||
zdj9 := component.Zdj9OneElectronicType.Get(entry)
|
||||
dbj := component.BitStateType.Get(zdj9.TDFJ_DBJ)
|
||||
fbj := component.BitStateType.Get(zdj9.TDFJ_FBJ)
|
||||
tp.Db = dbj.Val
|
||||
tp.Fb = fbj.Val
|
||||
} else {
|
||||
tp.Db = dw
|
||||
tp.Fb = fw
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user