道岔位置组件添加定表、反表字段和更新逻辑

修改道岔电路1DQJ励磁逻辑
This commit is contained in:
walker 2023-10-07 10:56:56 +08:00
parent 97eacebceb
commit 0744081d90
5 changed files with 28 additions and 7 deletions

View File

@ -9,8 +9,11 @@ var TurnoutTag = ecs.NewTag()
// 道岔的实际位置
type TurnoutPosition struct {
Dw bool // 是否定位
Fw bool // 是否反位
Dw bool // 是否定位(实际位置)
Fw bool // 是否反位(实际位置)
Db bool // 定位表示(表示位置)
Fb bool // 反位表示(表示位置)
}
// 实际道岔的实际位置组件类型

View File

@ -30,7 +30,7 @@ func GetWorldData(w ecs.World) *component.WorldData {
if ok {
return component.WorldDataType.Get(entry)
}
panic("世界数据不存在")
panic("不存在世界数据")
}
// 根据uid获取对象实体

View File

@ -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
}

View File

@ -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
}
}

View File

@ -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
}
})
}