【调整按钮,spk系统,emp系统】

This commit is contained in:
weizhihong 2023-10-10 16:15:56 +08:00
parent cc578a30bb
commit 27a07ade5a
9 changed files with 260 additions and 163 deletions

View File

@ -19,40 +19,10 @@ var (
// 按钮的实际转台 // 按钮的实际转台
type ButtonState struct { type ButtonState struct {
Tq bool // 是否抬起(位置信息) Tq bool // 是否抬起(位置信息)
Jt bool // 是否接通(状态信息)
Jt bool // 是否接通(状态信息) Remain int // 接通保持时间
} }
// 实际按钮的实际位置组件类型 // 实际按钮的实际位置组件类型
var ButtonStateType = ecs.NewComponentType[ButtonState]() var ButtonStateType = ecs.NewComponentType[ButtonState]()
// 按钮关联继电器
type ButtonRelay struct {
Relays []*ecs.Entry
}
var ButtonRelayType = ecs.NewComponentType[ButtonRelay]()
// SPK元器件组件
type SpksElectronic struct {
SPKSX1J *ecs.Entry
SPKSX3J *ecs.Entry
SPKSS2J *ecs.Entry
SPKSS4J *ecs.Entry
SPKSXPLAJ *ecs.Entry
SPKSSPLAJ *ecs.Entry
SPKSX1D bool
SPKSX3D bool
SPKSS2D bool
SPKSS4D bool
SPKSXPLAD bool
SPKSSPLAD bool
SDA *ecs.Entry
}
// SPK继电器元器件组件
var SpksElectronicType = ecs.NewComponentType[SpksElectronic]()

79
component/ibp.go Normal file
View File

@ -0,0 +1,79 @@
package component
import "joylink.club/ecs"
// SPK继电器控制电路
type SpkControlElectronic struct {
SPKSXPLA_BTN *ecs.Entry
SPKSX1J_BTN *ecs.Entry
SPKSX3J_BTN *ecs.Entry
SPKSX1J *ecs.Entry
SPKSX3J *ecs.Entry
SPKSSPLA_BTN *ecs.Entry
SPKSS2J_BTN *ecs.Entry
SPKSS4J_BTN *ecs.Entry
SPKSS2J *ecs.Entry
SPKSS4J *ecs.Entry
}
// SPK继电器元器件组件
var SpkControlElectronicType = ecs.NewComponentType[SpkControlElectronic]()
// SPK标识电路
type SpksStateElectronic struct {
SPKSX1J *ecs.Entry
SPKSX3J *ecs.Entry
SPKSS2J *ecs.Entry
SPKSS4J *ecs.Entry
SPKSXPLAJ *ecs.Entry
SPKSSPLAJ *ecs.Entry
SPKSX1D bool
SPKSX3D bool
SPKSS2D bool
SPKSS4D bool
SPKSXPLAD bool
SPKSSPLAD bool
SDA *ecs.Entry
}
// SPK继电器元器件组件
var SpksStateElectronicType = ecs.NewComponentType[SpksStateElectronic]()
// EMP 控制电路
type EmpControlElectronic struct {
EMP1_BTN *ecs.Entry
EMP3_BTN *ecs.Entry
EMP5_BTN *ecs.Entry
EMPX_BTN *ecs.Entry
XEMPFA_BTN *ecs.Entry
XEMPJ *ecs.Entry // 继电器
EMP2_BTN *ecs.Entry
EMP4_BTN *ecs.Entry
EMP6_BTN *ecs.Entry
EMPS_BTN *ecs.Entry
SEMPFA_BTN *ecs.Entry
SEMPJ *ecs.Entry // 继电器
}
var EmpControlElectronicType = ecs.NewComponentType[EmpControlElectronic]()
// EMP 标识状态电路
type EmpStateElectronic struct {
XEMPJ *ecs.Entry // 继电器
XEMPD bool
XEMPD_SDA *ecs.Entry // 按钮
SEMPJ *ecs.Entry // 继电器
SEMPD bool
SEMPD_SDA *ecs.Entry // 按钮
QBA *ecs.Entry // 非自复位按钮
FMQ bool // 蜂鸣器
}
var EmpStateElectronicType = ecs.NewComponentType[EmpStateElectronic]()

View File

@ -181,5 +181,4 @@ message Button {
} }
string id = 1; string id = 1;
ButtonType buttonType = 2; ButtonType buttonType = 2;
repeated ElectronicComponentGroup electronicComponentGroups = 3; //
} }

View File

@ -6,8 +6,6 @@ type Button struct {
Identity Identity
buttonType proto.Button_ButtonType buttonType proto.Button_ButtonType
componentGroups []*ElectronicComponentGroup
} }
func NewButton(id string, buttonType proto.Button_ButtonType) *Button { func NewButton(id string, buttonType proto.Button_ButtonType) *Button {

View File

@ -1456,9 +1456,8 @@ type Button struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
ButtonType Button_ButtonType `protobuf:"varint,2,opt,name=buttonType,proto3,enum=model.Button_ButtonType" json:"buttonType,omitempty"` ButtonType Button_ButtonType `protobuf:"varint,2,opt,name=buttonType,proto3,enum=model.Button_ButtonType" json:"buttonType,omitempty"`
ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,3,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合
} }
func (x *Button) Reset() { func (x *Button) Reset() {
@ -1507,13 +1506,6 @@ func (x *Button) GetButtonType() Button_ButtonType {
return Button_Unknown return Button_Unknown
} }
func (x *Button) GetElectronicComponentGroups() []*ElectronicComponentGroup {
if x != nil {
return x.ElectronicComponentGroups
}
return nil
}
var File_model_proto protoreflect.FileDescriptor var File_model_proto protoreflect.FileDescriptor
var file_model_proto_rawDesc = []byte{ var file_model_proto_rawDesc = []byte{
@ -1693,57 +1685,51 @@ var file_model_proto_rawDesc = []byte{
0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x22,
0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02,
0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49,
0x64, 0x73, 0x22, 0x90, 0x02, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x64, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a,
0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x74,
0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5d, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f,
0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50,
0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x65, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74,
0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x5d, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x04, 0x2a, 0xe4, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63,
0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54,
0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50, 0x72, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x1e, 0x0a,
0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x79, 0x73,
0x74, 0x5f, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x19, 0x0a,
0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x68, 0x65, 0x63,
0x5f, 0x55, 0x70, 0x10, 0x04, 0x2a, 0xe4, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69,
0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x10, 0x03,
0x70, 0x65, 0x5f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63,
0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x72, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x65, 0x76,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x10, 0x03, 0x12, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61,
0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f,
0x67, 0x6e, 0x61, 0x6c, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x10,
0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f,
0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65,
0x5f, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x0a,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50,
0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x10, 0x08, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x10, 0x0c, 0x2a, 0x25, 0x0a,
0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12,
0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x0a, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x02, 0x12, 0x05, 0x0a,
0x24, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x01, 0x43, 0x10, 0x03, 0x2a, 0x20, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52,
0x74, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x2a, 0x43, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50,
0x79, 0x70, 0x65, 0x5f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x10, 0x0c, 0x2a, 0x25, 0x0a, 0x04, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e,
0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x05, 0x64, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f,
0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x02, 0x12, 0x05, 0x0a, 0x01, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x75, 0x6c,
0x43, 0x10, 0x03, 0x2a, 0x20, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x42, 0x1a, 0x5a, 0x18, 0x2e,
0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6d, 0x6f, 0x64, 0x65,
0x47, 0x48, 0x54, 0x10, 0x01, 0x2a, 0x43, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x64,
0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x75, 0x6c, 0x61,
0x74, 0x65, 0x64, 0x4a, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x42, 0x1a, 0x5a, 0x18, 0x2e, 0x2f,
0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1821,12 +1807,11 @@ var file_model_proto_depIdxs = []int32{
16, // 33: model.KilometerConvert.kmB:type_name -> model.Kilometer 16, // 33: model.KilometerConvert.kmB:type_name -> model.Kilometer
5, // 34: model.Relay.model:type_name -> model.Relay.Model 5, // 34: model.Relay.model:type_name -> model.Relay.Model
6, // 35: model.Button.buttonType:type_name -> model.Button.ButtonType 6, // 35: model.Button.buttonType:type_name -> model.Button.ButtonType
20, // 36: model.Button.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 36, // [36:36] is the sub-list for method output_type
37, // [37:37] is the sub-list for method output_type 36, // [36:36] is the sub-list for method input_type
37, // [37:37] is the sub-list for method input_type 36, // [36:36] is the sub-list for extension type_name
37, // [37:37] is the sub-list for extension type_name 36, // [36:36] is the sub-list for extension extendee
37, // [37:37] is the sub-list for extension extendee 0, // [0:36] is the sub-list for field type_name
0, // [0:37] is the sub-list for field type_name
} }
func init() { file_model_proto_init() } func init() { file_model_proto_init() }

View File

@ -118,10 +118,6 @@ func buildModelRelationship(source *proto.Repository, repository *Repository) er
if err != nil { if err != nil {
return err return err
} }
err = buildButtonRelationShip(source, repository)
if err != nil {
return err
}
return err return err
} }
@ -374,29 +370,6 @@ func buildDevicePort(device Identity, port proto.Port) (DevicePort, error) {
return dp, nil return dp, nil
} }
func buildButtonRelationShip(source *proto.Repository, repository *Repository) error {
for _, protoData := range source.Buttons {
button := repository.buttonMap[protoData.Id]
//关联继电器组
for _, group := range protoData.ElectronicComponentGroups {
var components []IGroupedElectronicComponent
for _, id := range group.GetComponentIds() {
if relay := repository.relayMap[id]; relay != nil {
components = append(components, relay)
} else if pfp := repository.phaseFailureProtectorMap[id]; pfp != nil {
components = append(components, pfp)
}
}
button.componentGroups = append(button.componentGroups, &ElectronicComponentGroup{
code: group.Code,
components: components,
})
}
}
return nil
}
// 相互关联道岔和检测点 // 相互关联道岔和检测点
func interrelateTurnoutAndCheckPoints(turnout *Turnout, point *CheckPoint, port proto.Port) { func interrelateTurnoutAndCheckPoints(turnout *Turnout, point *CheckPoint, port proto.Port) {
turnout.bindDevice(point, port) turnout.bindDevice(point, port)

80
sys/circuit_sys/emp.go Normal file
View File

@ -0,0 +1,80 @@
package circuit_sys
import (
"joylink.club/ecs"
"joylink.club/ecs/filter"
"joylink.club/rtsssimulation/component"
)
// emp 继电器控制电路
type EmpControlSys struct {
query *ecs.Query
}
func NewEmpControl() *EmpControlSys {
return &EmpControlSys{
query: ecs.NewQuery(filter.Contains(component.EmpControlElectronicType)),
}
}
// 控制电路更新
func (emp *EmpControlSys) Update(w ecs.World) {
emp.query.Each(w, func(entry *ecs.Entry) {
s := component.EmpControlElectronicType.Get(entry)
xempfab := component.ButtonStateType.Get(s.XEMPFA_BTN)
xempj := component.RelayDriveType.Get(s.XEMPJ)
if xempfab.Jt {
xempj.Td = true
} else {
emp1 := component.ButtonStateType.Get(s.EMP1_BTN)
emp3 := component.ButtonStateType.Get(s.EMP3_BTN)
emp5 := component.ButtonStateType.Get(s.EMP5_BTN)
empx := component.ButtonStateType.Get(s.EMPX_BTN)
xempj.Td = emp1.Jt && emp3.Jt && emp5.Jt && empx.Jt
}
sempfab := component.ButtonStateType.Get(s.SEMPFA_BTN)
sempj := component.RelayDriveType.Get(s.SEMPJ)
if sempfab.Jt {
sempj.Td = true
} else {
emp2 := component.ButtonStateType.Get(s.EMP2_BTN)
emp4 := component.ButtonStateType.Get(s.EMP4_BTN)
emp6 := component.ButtonStateType.Get(s.EMP6_BTN)
emps := component.ButtonStateType.Get(s.EMPS_BTN)
sempj.Td = emp2.Jt && emp4.Jt && emp6.Jt && emps.Jt
}
})
}
// emp 继电器状态电路
type EmpStateSys struct {
query *ecs.Query
}
func NewEmpState() *EmpStateSys {
return &EmpStateSys{
query: ecs.NewQuery(filter.Contains(component.EmpStateElectronicType)),
}
}
// 控制电路更新
func (emp *EmpStateSys) Update(w ecs.World) {
emp.query.Each(w, func(entry *ecs.Entry) {
s := component.EmpStateElectronicType.Get(entry)
xempSda := component.ButtonStateType.Get(s.XEMPD_SDA)
xempj := component.RelayDriveType.Get(s.XEMPJ)
s.XEMPD = xempSda.Jt || !xempj.Xq
sempSda := component.ButtonStateType.Get(s.SEMPD_SDA)
sempj := component.RelayDriveType.Get(s.SEMPJ)
s.SEMPD = sempSda.Jt || !sempj.Xq
qba := component.ButtonStateType.Get(s.QBA)
if qba.Jt {
s.FMQ = xempj.Xq && sempj.Xq
} else {
s.FMQ = (!xempj.Xq) || (!sempj.Xq)
}
})
}

View File

@ -6,20 +6,63 @@ import (
"joylink.club/rtsssimulation/component" "joylink.club/rtsssimulation/component"
) )
type SPKSys struct { type SpkControlSys struct {
query *ecs.Query query *ecs.Query
} }
func NewSPKSys() *SPKSys { func NewSpkControl() *SpkControlSys {
return &SPKSys{ return &SpkControlSys{
query: ecs.NewQuery(filter.Contains(component.SpksElectronicType)), query: ecs.NewQuery(filter.Contains(component.SpkControlElectronicType)),
} }
} }
// 电路更新 // 控制电路更新
func (spk *SPKSys) Update(w ecs.World) { func (spk *SpkControlSys) Update(w ecs.World) {
spk.query.Each(w, func(entry *ecs.Entry) { spk.query.Each(w, func(entry *ecs.Entry) {
spkState := component.SpksElectronicType.Get(entry) spkState := component.SpkControlElectronicType.Get(entry)
spksxplaBtn := component.ButtonStateType.Get(spkState.SPKSXPLA_BTN)
spksx1j := component.RelayDriveType.Get(spkState.SPKSX1J)
spksx3j := component.RelayDriveType.Get(spkState.SPKSX3J)
if spksxplaBtn.Jt {
spksx1j.Td = true
spksx3j.Td = true
} else {
spksx1jBtn := component.ButtonStateType.Get(spkState.SPKSX1J_BTN)
spksx3jBtn := component.ButtonStateType.Get(spkState.SPKSX3J_BTN)
spksx1j.Td = spksx1jBtn.Jt
spksx3j.Td = spksx3jBtn.Jt
}
spkssplaBtn := component.ButtonStateType.Get(spkState.SPKSSPLA_BTN)
spkss2j := component.RelayDriveType.Get(spkState.SPKSS2J)
spkss4j := component.RelayDriveType.Get(spkState.SPKSS4J)
if spkssplaBtn.Jt {
spkss2j.Td = true
spkss4j.Td = true
} else {
spkss2jBtn := component.ButtonStateType.Get(spkState.SPKSS2J_BTN)
spkss4jBtn := component.ButtonStateType.Get(spkState.SPKSS4J_BTN)
spkss2j.Td = spkss2jBtn.Jt
spkss4j.Td = spkss4jBtn.Jt
}
})
}
// 人员防护状态系统
type SpksStateSys struct {
query *ecs.Query
}
func NewSpksStateSys() *SpksStateSys {
return &SpksStateSys{
query: ecs.NewQuery(filter.Contains(component.SpksStateElectronicType)),
}
}
// 状态电路更新
func (spk *SpksStateSys) Update(w ecs.World) {
spk.query.Each(w, func(entry *ecs.Entry) {
spkState := component.SpksStateElectronicType.Get(entry)
sda := component.ButtonStateType.Get(spkState.SDA) sda := component.ButtonStateType.Get(spkState.SDA)
// SPKSXPLAJ // SPKSXPLAJ
@ -51,6 +94,5 @@ func (spk *SPKSys) Update(w ecs.World) {
spkss4j := component.RelayDriveType.Get(spkState.SPKSS4J) spkss4j := component.RelayDriveType.Get(spkState.SPKSS4J)
spkss4j.Xq = spkss4j.Td || spkssplaj.Xq spkss4j.Xq = spkss4j.Td || spkssplaj.Xq
spkState.SPKSS4D = sda.Jt || !spkss4j.Xq spkState.SPKSS4D = sda.Jt || !spkss4j.Xq
}) })
} }

View File

@ -1,29 +0,0 @@
package device_sys
import (
"joylink.club/ecs"
"joylink.club/ecs/filter"
"joylink.club/rtsssimulation/component"
)
// 按钮更新系统
type ButtonSys struct {
query *ecs.Query
}
func NewButtonSys() *ButtonSys {
return &ButtonSys{
query: ecs.NewQuery(filter.Contains(component.ButtonStateType, component.ButtonRelayType)),
}
}
func (s *ButtonSys) Update(w ecs.World) {
s.query.Each(w, func(entry *ecs.Entry) {
btnState := component.ButtonStateType.Get(entry)
btnRelays := component.ButtonRelayType.Get(entry)
for _, relay := range btnRelays.Relays {
state := component.RelayDriveType.Get(relay)
state.Td = btnState.Jt
}
})
}