import time from core.link_manager import LinkManager from utils.logger import logger #from global_vars import * # def check_battery_safe_mode(): # """ # 整星电池电压监测 + 安全模式切换 # 每收到一帧遥测 调用一次 # """ # global g_vbat_check_cnt, g_vbat_fail_flag # global g_M050YS055, g_M050YS056, g_M050YS057, g_M050YG073 # # ====================== 1. 计算三路电池电压 ====================== # Vbat1 = g_M002YV020 # 整组电池1 # Vbat2 = g_M010YV012 # 整组电池2 # Vbat3 = (g_M004YV002 + g_M004YV004 + # g_M004YV006 + g_M004YV008 + # g_M004YV010 + g_M004YV012 + # g_M004YV014 + g_M004YV016 + g_M004YV018) # 单体总和 # Vth1 = g_M050YV001 # Vth2 = g_M050YV002 # Vth3 = g_M050YV003 # # ====================== 2. 单次判断:是否低于阈值 ====================== # fail1 = 1 if (Vbat1 < Vth1) else 0 # fail2 = 1 if (Vbat2 < Vth2) else 0 # fail3 = 1 if (Vbat3 < Vth3) else 0 # # ====================== 3. 连续3次判断 ====================== # total_fail = fail1 + fail2 + fail3 # if total_fail >= 2: # g_vbat_check_cnt += 1 # g_vbat_fail_flag = [fail1, fail2, fail3] # else: # g_vbat_check_cnt = 0 # g_vbat_fail_flag = [0, 0, 0] # # 超限3次锁定报警 # if g_vbat_check_cnt >= 3: # g_M050YS055 = g_vbat_fail_flag[0] # g_M050YS056 = g_vbat_fail_flag[1] # g_M050YS057 = g_vbat_fail_flag[2] # else: # g_M050YS055 = 0 # g_M050YS056 = 0 # g_M050YS057 = 0 # # ====================== 4. 整星安全模式触发条件 ====================== # if g_M002YV020 < g_M050YV002: # 小于阈值2(默认29V) # g_M050YS056 = 1 # g_M050YG073 = 1 # 进入安全模式 # else: # g_M050YG073 = 0 # 退出安全模式 if __name__ == "__main__": lm = LinkManager() lm.register_all() lm.start() logger.info("M16卫星协议转发软件") logger.info("copyright 2026 中国科学院微小卫星创新研究院软件评测中心 All rights reserved.") logger.info("协议转发服务启动完成") while True: time.sleep(1) # 执行安全模式判断 # check_battery_safe_mode()