From 8a6de531c8f4523da55110994de6385e999911ea Mon Sep 17 00:00:00 2001 From: thesai <1021828630@qq.com> Date: Mon, 8 Jul 2024 16:14:26 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=E5=8C=97=E4=BA=AC12?= =?UTF-8?q?=E5=8F=B7=E7=BA=BF=E8=AE=A1=E8=BD=B4=E9=80=9A=E4=BF=A1=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 5 ++- third_party/axle_device/beijing12/service.go | 44 +++++++++---------- .../wayside/memory/wayside_memory_map_init.go | 20 ++++----- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/config/config.go b/config/config.go index 2aec061..f3f87c7 100644 --- a/config/config.go +++ b/config/config.go @@ -178,9 +178,10 @@ type RsspAxleConfig struct { type RsspNetConfig struct { RemoteIp string `json:"remoteIp" description:"远端IP"` RemotePort int `json:"remotePort" description:"远端端口"` + LocalIp string `json:"localIp" description:"本地IP"` LocalPort int `json:"localPort" description:"本地端口"` - SourceAddr string `json:"sourceAddr" description:"源地址(16进制,2字节)"` - TargetAddr string `json:"targetAddr" description:"目的地址(16进制,2字节)"` + RemoteAddr string `json:"sourceAddr" description:"联锁地址(16进制,2字节)"` + LocalAddr string `json:"targetAddr" description:"计轴地址(16进制,2字节)"` Sid1 string `json:"sid1" description:"联锁SID_1(16进制,4字节)"` Sid2 string `json:"sid2" description:"联锁SID_2(16进制,4字节)"` LocalSid1 string `json:"remoteSid" description:"计轴SID_1(16进制,4字节)"` diff --git a/third_party/axle_device/beijing12/service.go b/third_party/axle_device/beijing12/service.go index 89c9b41..de8a976 100644 --- a/third_party/axle_device/beijing12/service.go +++ b/third_party/axle_device/beijing12/service.go @@ -38,8 +38,8 @@ type serviceContext struct { cancelFunc context.CancelFunc ciSectionIndexConfigs []*proto.CiSectionCodePoint - sourceAddr uint16 //源地址 从配置中的16进制字符串转来的 - targetAddr uint16 //目的地址 从配置中的16进制字符串转来的 + remoteAddr uint16 //联锁地址 从配置中的16进制字符串转来的 + localAddr uint16 //计轴地址 从配置中的16进制字符串转来的 sid1 uint32 //联锁SID1 从配置中的16进制字符串转来的 sid2 uint32 //联锁SID2 从配置中的16进制字符串转来的 localSid1 uint32 //计轴SID1 从配置中的16进制字符串转来的 @@ -78,13 +78,13 @@ func Start(simulation *memory.VerifySimulation) { logger().Warn(fmt.Sprintf("集中站[%s]无区段编码数据,服务不启动", rsspConfig.StationCode)) return } - sourceAddr, err := strconv.ParseUint(rsspConfig.NetAConfig.SourceAddr, 16, 16) + sourceAddr, err := strconv.ParseUint(rsspConfig.NetAConfig.RemoteAddr, 16, 16) if err != nil { - panic(sys_error.New(fmt.Sprintf("%s集中站[%s]解析源地址[%s]出错", logTag, rsspConfig.StationCode, rsspConfig.NetAConfig.SourceAddr))) + panic(sys_error.New(fmt.Sprintf("%s集中站[%s]解析源地址[%s]出错", logTag, rsspConfig.StationCode, rsspConfig.NetAConfig.RemoteAddr))) } - targetAddr, err := strconv.ParseUint(rsspConfig.NetAConfig.TargetAddr, 16, 16) + targetAddr, err := strconv.ParseUint(rsspConfig.NetAConfig.LocalAddr, 16, 16) if err != nil { - panic(sys_error.New(fmt.Sprintf("%s集中站[%s]解析目的地址[%s]出错", logTag, rsspConfig.StationCode, rsspConfig.NetAConfig.TargetAddr))) + panic(sys_error.New(fmt.Sprintf("%s集中站[%s]解析目的地址[%s]出错", logTag, rsspConfig.StationCode, rsspConfig.NetAConfig.LocalAddr))) } sid1, err := strconv.ParseUint(rsspConfig.NetAConfig.Sid1, 16, 32) if err != nil { @@ -116,8 +116,8 @@ func Start(simulation *memory.VerifySimulation) { sim: simulation, config: rsspConfig, ciSectionIndexConfigs: ref.SectionCodePoints, - sourceAddr: uint16(sourceAddr), - targetAddr: uint16(targetAddr), + remoteAddr: uint16(sourceAddr), + localAddr: uint16(targetAddr), sid1: uint32(sid1), sid2: uint32(sid2), localSid1: uint32(localSid1), @@ -130,7 +130,7 @@ func Start(simulation *memory.VerifySimulation) { lfsr2: lfsr{value: uint32(localSid2)}, } netAConfig := rsspConfig.NetAConfig - server := udp.NewServer(fmt.Sprintf(":%d", netAConfig.LocalPort), func(b []byte) { + server := udp.NewServer(fmt.Sprintf("%s:%d", netAConfig.LocalIp, netAConfig.LocalPort), func(b []byte) { msgChan <- b }) client := udp.NewClient(fmt.Sprintf("%s:%d", netAConfig.RemoteIp, netAConfig.RemotePort)) @@ -179,7 +179,7 @@ func (s *serviceContext) runCollectTask(ctx context.Context) { s.runCollectTask(ctx) } }() - for range time.Tick(time.Millisecond * time.Duration(s.config.NetAConfig.Period)) { + for range time.Tick(time.Millisecond * time.Duration(s.config.NetAConfig.Period) * time.Millisecond) { select { case <-ctx.Done(): return @@ -250,8 +250,8 @@ func (s *serviceContext) collect() *msg.RsdMsgBuilder { MsgHeader: msg.MsgHeader{ ProtocolType: msg.ProtocolType_Sync, MessageType: msg.MessageType_A, - SourceAddr: s.sourceAddr, - TargetAddr: s.targetAddr, + SourceAddr: s.localAddr, + TargetAddr: s.remoteAddr, }, SeqNum: s.seqNum, Svc1: s.calculateSvc1(userData), @@ -292,6 +292,8 @@ func (s *serviceContext) handleRsdMsg(data []byte) { return } else if validateResult == 2 { //开启时序校正流程 + logger().Error("时序校验失败,开始时序校正") + return } //流程处理 cmdInfos := msg.CmdInfos{} @@ -331,8 +333,8 @@ func (s *serviceContext) handleSseMsg(data []byte) { MsgHeader: msg.MsgHeader{ ProtocolType: msg.ProtocolType_Sync, MessageType: msg.MessageType_SSR, - SourceAddr: s.sourceAddr, - TargetAddr: s.targetAddr, + SourceAddr: s.remoteAddr, + TargetAddr: s.localAddr, }, SeqNumSsr: s.seqNum, SeqNumSse: sseMsg.SeqNum, @@ -371,8 +373,8 @@ func (s *serviceContext) startSeeProgress() { MsgHeader: msg.MsgHeader{ ProtocolType: msg.ProtocolType_Sync, MessageType: msg.MessageType_SSE, - SourceAddr: s.sourceAddr, - TargetAddr: s.targetAddr, + SourceAddr: s.remoteAddr, + TargetAddr: s.localAddr, }, SeqNum: s.seqNum, SeqEnq1: s.calculateSeqEnq1(), @@ -390,14 +392,12 @@ func (s *serviceContext) startSeeProgress() { // 校验RSD消息 // return 0-时序校验之外的失败 1-成功 2-时序异常 func (s *serviceContext) validateRsdMsg(rsdMsg *msg.RsdMsg) int { - sourceAddr, _ := strconv.ParseUint(s.config.NetAConfig.SourceAddr, 16, 16) - if rsdMsg.SourceAddr != uint16(sourceAddr) { - logger().Error(fmt.Sprintf("源地址[%x]不正确[%s]", rsdMsg.SourceAddr, s.config.NetAConfig.SourceAddr)) + if rsdMsg.SourceAddr != s.remoteAddr { + logger().Error(fmt.Sprintf("源地址[%x]不正确[%s]", rsdMsg.SourceAddr, s.config.NetAConfig.RemoteAddr)) return 0 } - targetAddr, _ := strconv.ParseUint(s.config.NetAConfig.TargetAddr, 16, 16) - if rsdMsg.TargetAddr != uint16(targetAddr) { - logger().Error(fmt.Sprintf("目的地址[%x]不正确[%s]", rsdMsg.TargetAddr, s.config.NetAConfig.TargetAddr)) + if rsdMsg.TargetAddr != s.localAddr { + logger().Error(fmt.Sprintf("目的地址[%x]不正确[%s]", rsdMsg.TargetAddr, s.config.NetAConfig.LocalAddr)) return 0 } if len(rsdMsg.UserData) != len(s.ciSectionIndexConfigs) { diff --git a/ts/simulation/wayside/memory/wayside_memory_map_init.go b/ts/simulation/wayside/memory/wayside_memory_map_init.go index ab7efa6..e069168 100644 --- a/ts/simulation/wayside/memory/wayside_memory_map_init.go +++ b/ts/simulation/wayside/memory/wayside_memory_map_init.go @@ -146,16 +146,16 @@ func filterOtherLineDevice(data *data_proto.RtssGraphicStorage) { for _, d := range data.Section { did := GetMapElementId(d.Common) if otherDeviceIdMap[did] { - slog.Warn("区段[id:%v][code:%s]设备是其他线路设备已过滤", did, d.Code) + slog.Warn(fmt.Sprintf("区段[id:%v][code:%s]设备是其他线路设备已过滤", did, d.Code)) continue } if d.PaRef != nil && otherDeviceIdMap[d.PaRef.Id] { d.PaRef = nil - slog.Warn("区段[id:%v][code:%s]设备A端是其他线路设备已置空", did, d.Code) + slog.Warn(fmt.Sprintf("区段[id:%v][code:%s]设备A端是其他线路设备已置空", did, d.Code)) } if d.PbRef != nil && otherDeviceIdMap[d.PbRef.Id] { d.PbRef = nil - slog.Warn("区段[id:%v][code:%s]设备B端是其他线路设备已置空", did, d.Code) + slog.Warn(fmt.Sprintf("区段[id:%v][code:%s]设备B端是其他线路设备已置空", did, d.Code)) } var acs []uint32 for _, id := range d.AxleCountings { @@ -176,7 +176,7 @@ func filterOtherLineDevice(data *data_proto.RtssGraphicStorage) { for _, d := range data.AxleCountings { did := GetMapElementId(d.Common) if otherDeviceIdMap[did] { - slog.Warn("计轴[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code) + slog.Warn(fmt.Sprintf("计轴[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code)) continue } var refs []*data_proto.RelatedRef @@ -195,20 +195,20 @@ func filterOtherLineDevice(data *data_proto.RtssGraphicStorage) { for _, d := range data.Turnouts { did := GetMapElementId(d.Common) if otherDeviceIdMap[did] { - slog.Warn("道岔[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code) + slog.Warn(fmt.Sprintf("道岔[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code)) continue } if d.PaRef != nil && otherDeviceIdMap[d.PaRef.Id] { d.PaRef = nil - slog.Warn("道岔[id:%v][code:%s]设备A端是其他线路设备已置空", did, d.Code) + slog.Warn(fmt.Sprintf("道岔[id:%v][code:%s]设备A端是其他线路设备已置空", did, d.Code)) } if d.PbRef != nil && otherDeviceIdMap[d.PbRef.Id] { d.PbRef = nil - slog.Warn("道岔[id:%v][code:%s]设备B端是其他线路设备已置空", did, d.Code) + slog.Warn(fmt.Sprintf("道岔[id:%v][code:%s]设备B端是其他线路设备已置空", did, d.Code)) } if d.PcRef != nil && otherDeviceIdMap[d.PcRef.Id] { d.PcRef = nil - slog.Warn("道岔[id:%v][code:%s]设备C端是其他线路设备已置空", did, d.Code) + slog.Warn(fmt.Sprintf("道岔[id:%v][code:%s]设备C端是其他线路设备已置空", did, d.Code)) } if d.PaTrackSectionId != 0 && otherDeviceIdMap[d.PaTrackSectionId] { d.PaTrackSectionId = 0 @@ -227,7 +227,7 @@ func filterOtherLineDevice(data *data_proto.RtssGraphicStorage) { for _, d := range data.Signals { did := GetMapElementId(d.Common) if otherDeviceIdMap[did] { - slog.Warn("信号机[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code) + slog.Warn(fmt.Sprintf("信号机[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code)) continue } signals = append(signals, d) @@ -238,7 +238,7 @@ func filterOtherLineDevice(data *data_proto.RtssGraphicStorage) { for _, d := range data.Transponders { did := GetMapElementId(d.Common) if otherDeviceIdMap[did] { - slog.Warn("应答器[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code) + slog.Warn(fmt.Sprintf("应答器[id:%v][code:%s]设备其他线路设备已过滤", did, d.Code)) continue } transponders = append(transponders, d)