rts-sim-module/umi/model_umi.go
2023-09-15 13:48:48 +08:00

152 lines
4.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}