umi
This commit is contained in:
parent
7144799b29
commit
64eb0c10ba
@ -89,8 +89,8 @@ func addRelays(modelStorage *tstorages.ModelStorage) {
|
|||||||
modelStorage.AddModel(tmodel.NewRelayModel("sw1-sjzdj9-j2-dbj", umi.JPXC_1000))
|
modelStorage.AddModel(tmodel.NewRelayModel("sw1-sjzdj9-j2-dbj", umi.JPXC_1000))
|
||||||
modelStorage.AddModel(tmodel.NewRelayModel("sw1-sjzdj9-j2-fbj", umi.JPXC_1000))
|
modelStorage.AddModel(tmodel.NewRelayModel("sw1-sjzdj9-j2-fbj", umi.JPXC_1000))
|
||||||
}
|
}
|
||||||
func findRelayModel(modelStorage *tstorages.ModelStorage, id string) umi.IRelayModel {
|
func findRelayModel(modelStorage *tstorages.ModelStorage, id string) umi.IDeviceModel {
|
||||||
return modelStorage.FindModelById(id).(umi.IRelayModel)
|
return modelStorage.FindModelById(id)
|
||||||
}
|
}
|
||||||
func addSwitchs(modelStorage *tstorages.ModelStorage) {
|
func addSwitchs(modelStorage *tstorages.ModelStorage) {
|
||||||
sw1 := tmodel.NewSwitchModel("sw1")
|
sw1 := tmodel.NewSwitchModel("sw1")
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
package tmodel
|
|
||||||
|
|
||||||
import (
|
|
||||||
"joylink.club/rtsssimulation/umi"
|
|
||||||
)
|
|
||||||
|
|
||||||
// 长轨道,道岔端点间的轨道
|
|
||||||
type LinkModel struct {
|
|
||||||
DeviceModel
|
|
||||||
//轨道A端口连接的道岔
|
|
||||||
PortA umi.ISwitchRef
|
|
||||||
//轨道B端口连接的道岔
|
|
||||||
PortB umi.ISwitchRef
|
|
||||||
//长度,单位mm
|
|
||||||
Length int64
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLinkModel(id string) *LinkModel {
|
|
||||||
return &LinkModel{DeviceModel: DeviceModel{Id: id, Type: umi.Link}}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取轨道长度,单位mm
|
|
||||||
func (me *LinkModel) Len() int64 {
|
|
||||||
return me.Length
|
|
||||||
}
|
|
||||||
|
|
||||||
// 轨道A端连接的道岔
|
|
||||||
func (me *LinkModel) PortASwitch() umi.ISwitchRef {
|
|
||||||
return me.PortA
|
|
||||||
}
|
|
||||||
|
|
||||||
// 轨道B端连接的道岔
|
|
||||||
func (me *LinkModel) PortBSwitch() umi.ISwitchRef {
|
|
||||||
return me.PortB
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// 轨道端口引用
|
|
||||||
type LinkRef struct {
|
|
||||||
Link umi.ILinkModel
|
|
||||||
//引用轨道的端口
|
|
||||||
Port umi.PortEnum
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLinkRef(link *LinkModel, port umi.PortEnum) *LinkRef {
|
|
||||||
return &LinkRef{Link: link, Port: port}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 被引用的轨道模型
|
|
||||||
func (me *LinkRef) LinkModel() umi.ILinkModel {
|
|
||||||
return me.Link
|
|
||||||
}
|
|
||||||
|
|
||||||
// 被引用的轨道的端口
|
|
||||||
func (me *LinkRef) LinkPort() umi.PortEnum {
|
|
||||||
return me.Port
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// 轨道偏移位置引用,轨道A端为偏移起始位置
|
|
||||||
type LinkOffsetRef struct {
|
|
||||||
Link umi.ILinkModel
|
|
||||||
//偏移位置,单位mm
|
|
||||||
Offset int64
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLinkOffsetRef(link *LinkModel, offset int64) *LinkOffsetRef {
|
|
||||||
return &LinkOffsetRef{Link: link, Offset: offset}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 被引用的轨道模型
|
|
||||||
func (me *LinkOffsetRef) LinkModel() umi.ILinkModel {
|
|
||||||
return me.Link
|
|
||||||
}
|
|
||||||
|
|
||||||
// 偏移量,单位mm
|
|
||||||
func (me *LinkOffsetRef) GetOffset() int64 {
|
|
||||||
return me.Offset
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
package tmodel
|
|
||||||
|
|
||||||
import (
|
|
||||||
"joylink.club/rtsssimulation/umi"
|
|
||||||
)
|
|
||||||
|
|
||||||
// 信号机
|
|
||||||
type SignalModel struct {
|
|
||||||
DeviceModel
|
|
||||||
//信号机所在轨道
|
|
||||||
LinkOffset *LinkOffsetRef
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSignalModel(id string) *SignalModel {
|
|
||||||
return &SignalModel{DeviceModel: DeviceModel{Id: id, Type: umi.Signal}}
|
|
||||||
}
|
|
@ -7,7 +7,7 @@ import (
|
|||||||
// 道岔电路系统中的继电器
|
// 道岔电路系统中的继电器
|
||||||
type SwitchRelay struct {
|
type SwitchRelay struct {
|
||||||
//继电器模型
|
//继电器模型
|
||||||
Relay umi.IRelayModel
|
Relay umi.IDeviceModel
|
||||||
//该继电器在该道岔电路系统中的组合类型
|
//该继电器在该道岔电路系统中的组合类型
|
||||||
RelayGroup string
|
RelayGroup string
|
||||||
//该继电器在该道岔电路系统中的功能名称
|
//该继电器在该道岔电路系统中的功能名称
|
||||||
@ -17,12 +17,6 @@ type SwitchRelay struct {
|
|||||||
// 道岔
|
// 道岔
|
||||||
type SwitchModel struct {
|
type SwitchModel struct {
|
||||||
DeviceModel
|
DeviceModel
|
||||||
//道岔A端口连接的轨道
|
|
||||||
PortA umi.ILinkRef
|
|
||||||
//道岔B端口连接的轨道
|
|
||||||
PortB umi.ILinkRef
|
|
||||||
//道岔C端口连接的轨道
|
|
||||||
PortC umi.ILinkRef
|
|
||||||
//道岔电路系统中的继电器
|
//道岔电路系统中的继电器
|
||||||
Relays []SwitchRelay
|
Relays []SwitchRelay
|
||||||
}
|
}
|
||||||
@ -34,29 +28,14 @@ func (me *SwitchModel) AddRelay(relay *SwitchRelay) {
|
|||||||
me.Relays = append(me.Relays, *relay)
|
me.Relays = append(me.Relays, *relay)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 道岔A端口连接的轨道
|
// FindCircuitRoleById 根据继电器id获取在具体电路中的电路角色
|
||||||
func (me *SwitchModel) PortALink() umi.ILinkRef {
|
|
||||||
return me.PortA
|
|
||||||
}
|
|
||||||
|
|
||||||
// 道岔B端口连接的轨道
|
|
||||||
func (me *SwitchModel) PortBLink() umi.ILinkRef {
|
|
||||||
return me.PortB
|
|
||||||
}
|
|
||||||
|
|
||||||
// 道岔C端口连接的轨道
|
|
||||||
func (me *SwitchModel) PortCLink() umi.ILinkRef {
|
|
||||||
return me.PortC
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据继电器id获取在具体电路中的电路角色
|
|
||||||
// relayId-继电器id
|
// relayId-继电器id
|
||||||
// relayGroup-继电器组合类型
|
// relayGroup-继电器组合类型
|
||||||
// relayName-继电器在电路中的名称
|
// relayName-继电器在电路中的名称
|
||||||
// find-true找到,false未找到
|
// find-true找到,false未找到
|
||||||
func (me *SwitchModel) FindCircuitRoleById(relayId string) (relayGroup string, relayName string, find bool) {
|
func (me *SwitchModel) FindCircuitRoleById(relayId string) (relayGroup string, relayName string, find bool) {
|
||||||
for _, sr := range me.Relays {
|
for _, sr := range me.Relays {
|
||||||
id := sr.Relay.(umi.IDeviceModel).GetId()
|
id := sr.Relay.GetId()
|
||||||
if id == relayId {
|
if id == relayId {
|
||||||
return sr.RelayGroup, sr.RelayName, true
|
return sr.RelayGroup, sr.RelayName, true
|
||||||
}
|
}
|
||||||
@ -64,10 +43,10 @@ func (me *SwitchModel) FindCircuitRoleById(relayId string) (relayGroup string, r
|
|||||||
return "", "", false
|
return "", "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据继电器具体电路角色来获取继电器设备模型
|
// FindRelayModelByCRole 根据继电器具体电路角色来获取继电器设备模型
|
||||||
// relayGroup-继电器组合类型
|
// relayGroup-继电器组合类型
|
||||||
// relayName-继电器在电路中的名称
|
// relayName-继电器在电路中的名称
|
||||||
func (me *SwitchModel) FindRelayModelByCRole(relayGroup string, relayName string) umi.IRelayModel {
|
func (me *SwitchModel) FindRelayModelByCRole(relayGroup string, relayName string) umi.IDeviceModel {
|
||||||
for _, sr := range me.Relays {
|
for _, sr := range me.Relays {
|
||||||
if sr.RelayGroup == relayGroup && sr.RelayName == relayName {
|
if sr.RelayGroup == relayGroup && sr.RelayName == relayName {
|
||||||
return sr.Relay
|
return sr.Relay
|
||||||
@ -75,26 +54,3 @@ func (me *SwitchModel) FindRelayModelByCRole(relayGroup string, relayName string
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// 道岔端口引用
|
|
||||||
type SwitchRef struct {
|
|
||||||
Switch umi.ISwitchModel
|
|
||||||
//引用道岔的端口
|
|
||||||
Port umi.PortEnum
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSwitchRef(switchModel *SwitchModel, port umi.PortEnum) *SwitchRef {
|
|
||||||
return &SwitchRef{Switch: switchModel, Port: port}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 被引用的道岔模型
|
|
||||||
func (me *SwitchRef) SwitchModel() umi.ISwitchModel {
|
|
||||||
return me.Switch
|
|
||||||
}
|
|
||||||
|
|
||||||
// 被引用的道岔的端口
|
|
||||||
func (me *SwitchRef) SwitchPort() umi.PortEnum {
|
|
||||||
return me.Port
|
|
||||||
}
|
|
||||||
|
@ -44,52 +44,6 @@ type IDeviceModel interface {
|
|||||||
GetType() DeviceType
|
GetType() DeviceType
|
||||||
}
|
}
|
||||||
|
|
||||||
// ILinkModel 仿真底层道岔模型
|
|
||||||
// 用户所有轨道模型定义须实现该接口
|
|
||||||
type ILinkModel interface {
|
|
||||||
//Len 获取轨道长度,单位mm
|
|
||||||
Len() int64
|
|
||||||
//PortASwitch 轨道A端连接的道岔
|
|
||||||
PortASwitch() ISwitchRef
|
|
||||||
//PortBSwitch 轨道B端连接的道岔
|
|
||||||
PortBSwitch() ISwitchRef
|
|
||||||
}
|
|
||||||
|
|
||||||
// ILinkRef 轨道引用
|
|
||||||
type ILinkRef interface {
|
|
||||||
//LinkModel 被引用的轨道模型
|
|
||||||
LinkModel() ILinkModel
|
|
||||||
//LinkPort 被引用的轨道的端口
|
|
||||||
LinkPort() PortEnum
|
|
||||||
}
|
|
||||||
|
|
||||||
// ILinkOffsetRef 轨道偏移引用
|
|
||||||
type ILinkOffsetRef interface {
|
|
||||||
//LinkModel 被引用的轨道模型
|
|
||||||
LinkModel() ILinkModel
|
|
||||||
//GetOffset 偏移量,单位mm
|
|
||||||
GetOffset() int64
|
|
||||||
}
|
|
||||||
|
|
||||||
// ISwitchModel 仿真底层道岔模型
|
|
||||||
// 用户所有道岔模型定义须实现该接口
|
|
||||||
type ISwitchModel interface {
|
|
||||||
//PortALink 道岔A端口连接的轨道
|
|
||||||
PortALink() ILinkRef
|
|
||||||
//PortBLink 道岔B端口连接的轨道
|
|
||||||
PortBLink() ILinkRef
|
|
||||||
//PortCLink 道岔C端口连接的轨道
|
|
||||||
PortCLink() ILinkRef
|
|
||||||
}
|
|
||||||
|
|
||||||
// ISwitchRef 道岔引用
|
|
||||||
type ISwitchRef interface {
|
|
||||||
//SwitchModel 被引用的道岔模型
|
|
||||||
SwitchModel() ISwitchModel
|
|
||||||
//SwitchPort 被引用的道岔的端口
|
|
||||||
SwitchPort() PortEnum
|
|
||||||
}
|
|
||||||
|
|
||||||
// IPsdModel 仿真底层屏蔽门模型
|
// IPsdModel 仿真底层屏蔽门模型
|
||||||
// 用户所有屏蔽门模型定义须实现该接口
|
// 用户所有屏蔽门模型定义须实现该接口
|
||||||
type IPsdModel interface {
|
type IPsdModel interface {
|
||||||
@ -136,12 +90,6 @@ const (
|
|||||||
JZXC_H18
|
JZXC_H18
|
||||||
)
|
)
|
||||||
|
|
||||||
// IRelayModel 继电器模型
|
|
||||||
type IRelayModel interface {
|
|
||||||
//JType 该继电器类型
|
|
||||||
JType() RelayType
|
|
||||||
}
|
|
||||||
|
|
||||||
// IRelayCRole 获取继电器在具体电路中的角色(组合类型、功能名称)
|
// IRelayCRole 获取继电器在具体电路中的角色(组合类型、功能名称)
|
||||||
// 如信号机3XH-1电路中点灯继电器:组合类型-"3XH-1" 功能名称-"DDJ"
|
// 如信号机3XH-1电路中点灯继电器:组合类型-"3XH-1" 功能名称-"DDJ"
|
||||||
// 对应设备电路中有继电器的设备模型须实现该接口
|
// 对应设备电路中有继电器的设备模型须实现该接口
|
||||||
@ -155,5 +103,5 @@ type IRelayCRole interface {
|
|||||||
//FindRelayModelByCRole 根据继电器具体电路角色来获取继电器设备模型
|
//FindRelayModelByCRole 根据继电器具体电路角色来获取继电器设备模型
|
||||||
//relayGroup-继电器组合类型
|
//relayGroup-继电器组合类型
|
||||||
//relayName-继电器在电路中的名称
|
//relayName-继电器在电路中的名称
|
||||||
FindRelayModelByCRole(relayGroup string, relayName string) IRelayModel
|
FindRelayModelByCRole(relayGroup string, relayName string) IDeviceModel
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user