152 lines
4.6 KiB
Go
152 lines
4.6 KiB
Go
package umi
|
||
|
||
// 用户设备模型与仿真底层设备交互定义
|
||
|
||
// IModelManager 模型管理接口
|
||
type IModelManager interface {
|
||
//FindById 根据模型的复合id获取模型数据
|
||
FindById(id string) IDeviceModel
|
||
//FindByType 获取某类型设备的所有模型数据
|
||
FindByType(deviceType DeviceType) []IDeviceModel
|
||
}
|
||
|
||
/////////////////////////////////////////////////////////
|
||
|
||
// PortEnum 端口定义,如轨道、区段、道岔的端口
|
||
type PortEnum = int8
|
||
|
||
// 具体端口枚举
|
||
const (
|
||
A PortEnum = iota
|
||
B
|
||
C
|
||
)
|
||
|
||
////////////////////////////////////////////////////////////
|
||
|
||
// DeviceType 设备类型枚举
|
||
type DeviceType = int16
|
||
|
||
const (
|
||
Any DeviceType = iota
|
||
Link
|
||
Switch
|
||
Signal
|
||
Relay //继电器设备
|
||
)
|
||
|
||
///////////////////////////////////////////////////////////
|
||
|
||
// IDeviceModel 仿真底层设备模型定义
|
||
// 用户所有设备模型定义须实现该接口
|
||
type IDeviceModel interface {
|
||
GetId() string
|
||
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 仿真底层屏蔽门模型
|
||
// 用户所有屏蔽门模型定义须实现该接口
|
||
type IPsdModel interface {
|
||
//MovingTime 屏蔽门移动从0-100耗时,单位ms
|
||
MovingTime() int64
|
||
//AllDeviceCells 屏蔽门的所有单元门
|
||
AllDeviceCells() []IDeviceModel
|
||
}
|
||
|
||
// //////////////////////////////////////////////////////////
|
||
|
||
// RelayType 继电器类型定义
|
||
type RelayType = int8
|
||
|
||
// 继电器型号枚举
|
||
const (
|
||
//无极缓放继电器
|
||
JWXC_1700 RelayType = iota + 1
|
||
//
|
||
JWXC_H340
|
||
//偏极继电器是为了鉴别信号电路中的电流极性而设计
|
||
//继电器在磁路中增加一个偏极磁钢,使衔铁受永磁力的作用而偏于落下位置。衔铁的吸起与线圈中的电流的极性有关,
|
||
//通过线圈的电流为规定的方向时,衔铁才吸起,而电流的方向相反时,衔铁保持不动。
|
||
//它只具有一种稳定状态,即衔铁靠电磁力吸起后,断电即落下,始终偏向落下的定位状态
|
||
JPXC_1000
|
||
//无极加强缓放继电器
|
||
JWJXC_H125_80
|
||
//有极加强继电器
|
||
//根据线圈中电流极性不同具有 定位和反位 两种稳定状态,这两种稳定状态当线圈中电流消失时仍能继续保持;
|
||
//在线圈中通以规定极性的电流时,继电器吸起,断电后仍保持在吸起位置;通以反方向电流时,继电器打落,断电后保持在打落位置;
|
||
//断电保持由磁路系统中的一块长条形永久磁铁取代了大部分轭铁来实现即断电保持当前状态
|
||
JYJXC_160_260
|
||
//无极继电器
|
||
JWJXC_480
|
||
//整流式缓放继电器
|
||
JZXC_H18
|
||
)
|
||
|
||
// IRelayModel 继电器模型
|
||
type IRelayModel interface {
|
||
//JType 该继电器类型
|
||
JType() RelayType
|
||
}
|
||
|
||
// IRelayCRole 获取继电器在具体电路中的角色(组合类型、功能名称)
|
||
// 如信号机3XH-1电路中点灯继电器:组合类型-"3XH-1" 功能名称-"DDJ"
|
||
// 对应设备电路中有继电器的设备模型须实现该接口
|
||
type IRelayCRole interface {
|
||
//FindCircuitRoleById 根据继电器id获取在具体电路中的电路角色
|
||
//relayId-继电器id
|
||
//relayGroup-继电器组合类型
|
||
//relayName-继电器在电路中的名称
|
||
//find-true找到,false未找到
|
||
FindCircuitRoleById(relayId string) (relayGroup string, relayName string, find bool)
|
||
//FindRelayModelByCRole 根据继电器具体电路角色来获取继电器设备模型
|
||
//relayGroup-继电器组合类型
|
||
//relayName-继电器在电路中的名称
|
||
FindRelayModelByCRole(relayGroup string, relayName string) IRelayModel
|
||
}
|