|
@@ -1,6 +1,7 @@
|
|
package svc
|
|
package svc
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "cicv-data-closedloop/common/config/c_log"
|
|
commonConfig "cicv-data-closedloop/kinglong/common/cfg"
|
|
commonConfig "cicv-data-closedloop/kinglong/common/cfg"
|
|
"cicv-data-closedloop/kinglong/common/ent"
|
|
"cicv-data-closedloop/kinglong/common/ent"
|
|
"cicv-data-closedloop/kinglong/common/global"
|
|
"cicv-data-closedloop/kinglong/common/global"
|
|
@@ -89,11 +90,9 @@ func PrepareTimeWindowProducerQueue() {
|
|
lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
// 更新共享变量
|
|
// 更新共享变量
|
|
m.RLock()
|
|
m.RLock()
|
|
- {
|
|
|
|
- velocityX = data.VelocityX
|
|
|
|
- velocityY = data.VelocityY
|
|
|
|
- yaw = data.Yaw
|
|
|
|
- }
|
|
|
|
|
|
+ velocityX = data.VelocityX
|
|
|
|
+ velocityY = data.VelocityY
|
|
|
|
+ yaw = data.Yaw
|
|
m.RUnlock()
|
|
m.RUnlock()
|
|
var faultLabel string
|
|
var faultLabel string
|
|
for _, f := range masterConfig.RuleOfCicvLocation {
|
|
for _, f := range masterConfig.RuleOfCicvLocation {
|
|
@@ -124,32 +123,27 @@ func PrepareTimeWindowProducerQueue() {
|
|
global.Subscriber2TimeMutex.Lock()
|
|
global.Subscriber2TimeMutex.Lock()
|
|
// 判断是否是连续故障码
|
|
// 判断是否是连续故障码
|
|
gap := time.Since(global.Subscriber2Time).Seconds()
|
|
gap := time.Since(global.Subscriber2Time).Seconds()
|
|
- if gap < 10 {
|
|
|
|
- global.Subscriber2TimeMutex.Unlock()
|
|
|
|
- return
|
|
|
|
- } else {
|
|
|
|
|
|
+ if gap > 1 {
|
|
// 2 不是连续故障码
|
|
// 2 不是连续故障码
|
|
- global.Subscriber2Time = time.Now()
|
|
|
|
- global.Subscriber2TimeMutex.Unlock()
|
|
|
|
subscriber2Mutex.Lock()
|
|
subscriber2Mutex.Lock()
|
|
- {
|
|
|
|
- faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
- lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
- var faultLabel string
|
|
|
|
- for _, f := range masterConfig.RuleOfTpperception {
|
|
|
|
- faultLabel = f(data, velocityX, velocityY, yaw)
|
|
|
|
- if faultLabel != "" {
|
|
|
|
- saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
- break
|
|
|
|
- }
|
|
|
|
|
|
+ faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
+ lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
+ var faultLabel string
|
|
|
|
+ //log.GlobalLogger.Infof("TTC数据为:【velocityX】=%v,【velocityY】=%v", velocityX, velocityY)
|
|
|
|
+ for _, f := range masterConfig.RuleOfTpperception {
|
|
|
|
+ faultLabel = f(data, velocityX, velocityY, yaw)
|
|
|
|
+ if faultLabel != "" {
|
|
|
|
+ saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
+ global.Subscriber2Time = time.Now()
|
|
|
|
+ break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
subscriber2Mutex.Unlock()
|
|
subscriber2Mutex.Unlock()
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ global.Subscriber2TimeMutex.Unlock()
|
|
}})
|
|
}})
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.GlobalLogger.Info("创建订阅者2发生故障:", err)
|
|
|
|
|
|
+ c_log.GlobalLogger.Info("创建订阅者2发生故障:", err)
|
|
os.Exit(-1)
|
|
os.Exit(-1)
|
|
}
|
|
}
|
|
// 创建订阅者3订阅主题 fault_info
|
|
// 创建订阅者3订阅主题 fault_info
|
|
@@ -165,30 +159,24 @@ func PrepareTimeWindowProducerQueue() {
|
|
global.Subscriber3TimeMutex.Lock()
|
|
global.Subscriber3TimeMutex.Lock()
|
|
// 判断是否是连续故障码
|
|
// 判断是否是连续故障码
|
|
gap := time.Since(global.Subscriber3Time).Seconds()
|
|
gap := time.Since(global.Subscriber3Time).Seconds()
|
|
- if gap < 2 {
|
|
|
|
- global.Subscriber3Time = time.Now()
|
|
|
|
- global.Subscriber3TimeMutex.Unlock()
|
|
|
|
- return
|
|
|
|
- } else {
|
|
|
|
|
|
+ if gap > 2 {
|
|
// 2 不是连续故障码
|
|
// 2 不是连续故障码
|
|
global.Subscriber3Time = time.Now()
|
|
global.Subscriber3Time = time.Now()
|
|
global.Subscriber3TimeMutex.Unlock()
|
|
global.Subscriber3TimeMutex.Unlock()
|
|
subscriber3Mutex.Lock()
|
|
subscriber3Mutex.Lock()
|
|
- {
|
|
|
|
- faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
- lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
- var faultLabel string
|
|
|
|
- for _, f := range masterConfig.RuleOfFaultInfo {
|
|
|
|
- faultLabel = f(data)
|
|
|
|
- if faultLabel != "" {
|
|
|
|
- saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
- break
|
|
|
|
- }
|
|
|
|
|
|
+ faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
+ lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
+ var faultLabel string
|
|
|
|
+ for _, f := range masterConfig.RuleOfFaultInfo {
|
|
|
|
+ faultLabel = f(data)
|
|
|
|
+ if faultLabel != "" {
|
|
|
|
+ saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
+ break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
subscriber3Mutex.Unlock()
|
|
subscriber3Mutex.Unlock()
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ global.Subscriber3TimeMutex.Unlock()
|
|
}})
|
|
}})
|
|
if err != nil {
|
|
if err != nil {
|
|
log.GlobalLogger.Info("创建订阅者3发生故障:", err)
|
|
log.GlobalLogger.Info("创建订阅者3发生故障:", err)
|
|
@@ -206,16 +194,14 @@ func PrepareTimeWindowProducerQueue() {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
subscriber4Mutex.Lock()
|
|
subscriber4Mutex.Lock()
|
|
- {
|
|
|
|
- faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
- lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
- var faultLabel string
|
|
|
|
- for _, f := range masterConfig.RuleOfDataRead {
|
|
|
|
- faultLabel = f(data)
|
|
|
|
- if faultLabel != "" {
|
|
|
|
- saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
- break
|
|
|
|
- }
|
|
|
|
|
|
+ faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
+ lastTimeWindow := util.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
+ var faultLabel string
|
|
|
|
+ for _, f := range masterConfig.RuleOfDataRead {
|
|
|
|
+ faultLabel = f(data)
|
|
|
|
+ if faultLabel != "" {
|
|
|
|
+ saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
+ break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
subscriber4Mutex.Unlock()
|
|
subscriber4Mutex.Unlock()
|
|
@@ -254,7 +240,6 @@ func saveTimeWindow(faultLabel string, faultHappenTime string, lastTimeWindow *e
|
|
SlaveTopics: slaveTopics,
|
|
SlaveTopics: slaveTopics,
|
|
}
|
|
}
|
|
log.GlobalLogger.Infof("不在旧故障窗口内,向生产者队列添加一个新窗口,【Lable】=%v,【FaultTime】=%v,【Length】=%v", newTimeWindow.Labels, newTimeWindow.FaultTime, newTimeWindow.Length)
|
|
log.GlobalLogger.Infof("不在旧故障窗口内,向生产者队列添加一个新窗口,【Lable】=%v,【FaultTime】=%v,【Length】=%v", newTimeWindow.Labels, newTimeWindow.FaultTime, newTimeWindow.Length)
|
|
-
|
|
|
|
util.AddTimeWindowToTimeWindowProducerQueue(newTimeWindow)
|
|
util.AddTimeWindowToTimeWindowProducerQueue(newTimeWindow)
|
|
} else {
|
|
} else {
|
|
// 2-2 如果在旧故障窗口内
|
|
// 2-2 如果在旧故障窗口内
|