864 lines
37 KiB
Python
864 lines
37 KiB
Python
|
|
# # 数据代号定义
|
|||
|
|
# DATA_ID_ENERGY = 0x00110000
|
|||
|
|
# DATA_ID_SADA = 0x00440000
|
|||
|
|
# DATA_ID_TTC = 0x00330000
|
|||
|
|
# DATA_ID_INTERSAT = 0x00550000
|
|||
|
|
|
|||
|
|
# # 每个数据代号对应的遥测量数量
|
|||
|
|
# TELEM_COUNT = {
|
|||
|
|
# DATA_ID_ENERGY: 54,
|
|||
|
|
# DATA_ID_SADA: 17,
|
|||
|
|
# DATA_ID_TTC: 49,
|
|||
|
|
# DATA_ID_INTERSAT: 3,
|
|||
|
|
# }
|
|||
|
|
|
|||
|
|
# # 能源 54项
|
|||
|
|
# ENERGY_TABLE = [
|
|||
|
|
# ("M002YI002", "数值拟合", "0.012676885,0.005308819"),
|
|||
|
|
# ("M002YI004", "数值拟合", "0.02545648,-0.039275645"),
|
|||
|
|
# ("M002YI006", "数值拟合", "0.007486385,0.018835631"),
|
|||
|
|
# ("M002YI008", "数值拟合", "0.018036219,-0.029769313"),
|
|||
|
|
# ("M002YI010", "数值拟合", "0.005004802,-2.17662752"),
|
|||
|
|
# ("M002YI012", "数值拟合", "0.004907629,-2.036893601"),
|
|||
|
|
# ("M002YI014", "数值拟合", "0.004989693,-2.140794708"),
|
|||
|
|
# ("M002YI016", "数值拟合", "0.007120869,-6.19416166"),
|
|||
|
|
# ("M002YV018", "数值拟合", "0.02499736,-0.09134717"),
|
|||
|
|
# ("M002YV020", "数值拟合", "0.01837765,-0.00943934"),
|
|||
|
|
# ("M002YV022", "数值拟合", "0.007807,0"),
|
|||
|
|
# ("M002YI040", "数值拟合", "0.012667543,0.027994915"),
|
|||
|
|
# ("M002YI042", "数值拟合", "0.00739087,-0.025728713"),
|
|||
|
|
# ("M002YI044", "数值拟合", "0.017748254,-0.031591554"),
|
|||
|
|
# ("M002YI046", "数值拟合", "0.004947258,-2.130449308"),
|
|||
|
|
# ("M002YI048", "数值拟合", "0.004851602,-1.983224429"),
|
|||
|
|
# ("M002YI050", "数值拟合", "0.004961177,-2.028220055"),
|
|||
|
|
# ("M002YI052", "数值拟合", "0.007101109,-6.287326986"),
|
|||
|
|
# ("M002YV054", "数值拟合", "0.01856155,-0.01615284"),
|
|||
|
|
# ("M002YV056", "数值拟合", "0.007807,0"),
|
|||
|
|
# ("M003YI002", "数值拟合", "0.007015417,-6.172192788"),
|
|||
|
|
# ("M003YI004", "数值拟合", "0.007135218,-6.260644413"),
|
|||
|
|
# ("M003YI016", "", ""),
|
|||
|
|
# ("M003YI018", "", ""),
|
|||
|
|
# ("M003YI020", "", ""),
|
|||
|
|
# ("M003YG027", "状态量", "0=0档,..."),
|
|||
|
|
# ("M003YG028", "状态量", ""),
|
|||
|
|
# ("M003YG029", "状态量", ""),
|
|||
|
|
# ("M003YG030", "状态量", ""),
|
|||
|
|
# ("M003YI032", "", ""),
|
|||
|
|
# ("M003YI034", "数值拟合", "0.007295516,-6.588082011"),
|
|||
|
|
# ("M003YI036", "数值拟合", "0.007280949,-6.426333966"),
|
|||
|
|
# ("M003YV038", "", ""),
|
|||
|
|
# ("M003YI050", "", ""),
|
|||
|
|
# ("M003YI052", "", ""),
|
|||
|
|
# ("M003YI054", "", ""),
|
|||
|
|
# ("M004YV002", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV004", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV006", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV008", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV010", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV012", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV014", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV016", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV018", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV022", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV024", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV026", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV028", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV030", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV032", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV034", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV036", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV038", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # SADA 17项
|
|||
|
|
# SADA_TABLE = [
|
|||
|
|
# ("M057JS005", "状态量", "0=正向,1=反向"),
|
|||
|
|
# ("M057JS006", "状态量", "0=正向,1=反向"),
|
|||
|
|
# ("M057JS007", "状态量", "0=零位正常,1=零位异常"),
|
|||
|
|
# ("M057JS008", "状态量", "0=零位正常,1=零位异常"),
|
|||
|
|
# ("M057JS009", "状态量", "0=正常,1=异常"),
|
|||
|
|
# ("M057JS010", "状态量", "0=正常,1=异常"),
|
|||
|
|
# ("M057JS012", "状态量", "0=空闲,1=运行"),
|
|||
|
|
# ("M057JS013", "状态量", "0=空闲,1=运行"),
|
|||
|
|
# ("M057JS014", "状态量", ""),
|
|||
|
|
# ("M057JS015", "状态量", ""),
|
|||
|
|
# ("M057JS017", "状态量", ""),
|
|||
|
|
# ("M057JS018", "状态量", ""),
|
|||
|
|
# ("M057JG023", "10进制", ""),
|
|||
|
|
# ("M057JG024", "10进制", ""),
|
|||
|
|
# ("M057JI037", "", ""),
|
|||
|
|
# ("M057JG039", "特殊公式8", ""),
|
|||
|
|
# ("M057JG040", "特殊公式8", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # 测控 49项
|
|||
|
|
# TTC_TABLE = [
|
|||
|
|
# ("M001CT001", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CV002", "电压1", ""),
|
|||
|
|
# ("M001CV003", "电压1", ""),
|
|||
|
|
# ("M001CV004", "电压1", ""),
|
|||
|
|
# ("M001CS005", "状态量", ""),
|
|||
|
|
# ("M001CS006", "状态量", ""),
|
|||
|
|
# ("M001CS007", "状态量", ""),
|
|||
|
|
# ("M001CS008", "状态量", ""),
|
|||
|
|
# ("M001CS009", "状态量", ""),
|
|||
|
|
# ("M001CS010", "状态量", ""),
|
|||
|
|
# ("M001CS011", "状态量", ""),
|
|||
|
|
# ("M001CT012", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CV013", "电压1", ""),
|
|||
|
|
# ("M001CV014", "电压1", ""),
|
|||
|
|
# ("M001CV015", "电压1", ""),
|
|||
|
|
# ("M001CS016", "状态量", ""),
|
|||
|
|
# ("M001CS017", "状态量", ""),
|
|||
|
|
# ("M001CS018", "状态量", ""),
|
|||
|
|
# ("M001CS019", "状态量", ""),
|
|||
|
|
# ("M001CS020", "状态量", ""),
|
|||
|
|
# ("M001CS021", "状态量", ""),
|
|||
|
|
# ("M001CS022", "状态量", ""),
|
|||
|
|
# ("M001CV023", "电压1", ""),
|
|||
|
|
# ("M001CV024", "电压1", ""),
|
|||
|
|
# ("M001CT025", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS026", "状态量", ""),
|
|||
|
|
# ("M001CI027", "电压1", ""),
|
|||
|
|
# ("M001CV028", "电压1", ""),
|
|||
|
|
# ("M001CV029", "电压1", ""),
|
|||
|
|
# ("M001CT030", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS031", "状态量", ""),
|
|||
|
|
# ("M001CI032", "电压1", ""),
|
|||
|
|
# ("M001CT033", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS034", "状态量", ""),
|
|||
|
|
# ("M001CS035", "状态量", ""),
|
|||
|
|
# ("M079CG032", "状态量", ""),
|
|||
|
|
# ("M079CS033", "状态量", ""),
|
|||
|
|
# ("M079CS034", "状态量", ""),
|
|||
|
|
# ("M085TV003", "电压6", ""),
|
|||
|
|
# ("M085CV004", "电压6", ""),
|
|||
|
|
# ("M087CS063", "状态量", ""),
|
|||
|
|
# ("M087CS064", "状态量", ""),
|
|||
|
|
# ("M087CS065", "状态量", ""),
|
|||
|
|
# ("M087CS066", "状态量", ""),
|
|||
|
|
# ("M087CS067", "状态量", ""),
|
|||
|
|
# ("M087CS068", "状态量", ""),
|
|||
|
|
# ("M087CS069", "状态量", ""),
|
|||
|
|
# ("M087CS078", "状态量", ""),
|
|||
|
|
# ("M087CS079", "状态量", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # 星间链路 3项
|
|||
|
|
# INTERSAT_TABLE = [
|
|||
|
|
# ("M019XV005", "电压3", ""),
|
|||
|
|
# ("M018XV019", "电压3", ""),
|
|||
|
|
# ("M018XV017", "电压3", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # 总表映射
|
|||
|
|
# TABLE_MAP = {
|
|||
|
|
# DATA_ID_ENERGY: ENERGY_TABLE,
|
|||
|
|
# DATA_ID_SADA: SADA_TABLE,
|
|||
|
|
# DATA_ID_TTC: TTC_TABLE,
|
|||
|
|
# DATA_ID_INTERSAT: INTERSAT_TABLE,
|
|||
|
|
# }
|
|||
|
|
|
|||
|
|
## 2026/4/5停用
|
|||
|
|
# # 数据代号定义
|
|||
|
|
# DATA_ID_ENERGY = 0x00110000
|
|||
|
|
# DATA_ID_SADA = 0x00440000
|
|||
|
|
# DATA_ID_TTC = 0x00330000
|
|||
|
|
# DATA_ID_INTERSAT = 0x00550000
|
|||
|
|
|
|||
|
|
# # 每个数据代号对应的遥测量数量
|
|||
|
|
# TELEM_COUNT = {
|
|||
|
|
# DATA_ID_ENERGY: 46, # 已改为 46
|
|||
|
|
# DATA_ID_SADA: 17,
|
|||
|
|
# DATA_ID_TTC: 49,
|
|||
|
|
# DATA_ID_INTERSAT: 3,
|
|||
|
|
# }
|
|||
|
|
|
|||
|
|
# # ===================== 能源 46 项 =====================
|
|||
|
|
# ENERGY_TABLE = [
|
|||
|
|
# ("M002YI002", "数值拟合", "0.012676885,0.005308819"),
|
|||
|
|
# ("M002YI004", "数值拟合", "0.02545648,-0.039275645"),
|
|||
|
|
# ("M002YI006", "数值拟合", "0.007486385,0.018835631"),
|
|||
|
|
# ("M002YI008", "数值拟合", "0.018036219,-0.029769313"),
|
|||
|
|
# ("M002YI010", "数值拟合", "0.005004802,-2.17662752"),
|
|||
|
|
# ("M002YI012", "数值拟合", "0.004907629,-2.036893601"),
|
|||
|
|
# ("M002YI014", "数值拟合", "0.004989693,-2.140794708"),
|
|||
|
|
# ("M002YI016", "数值拟合", "0.007120869,-6.19416166"),
|
|||
|
|
# ("M002YV018", "数值拟合", "0.02499736,-0.09134717"),
|
|||
|
|
# ("M002YV020", "数值拟合", "0.01837765,-0.00943934"),
|
|||
|
|
# ("M002YV022", "数值拟合", "0.007807,0"),
|
|||
|
|
# ("M002YI040", "数值拟合", "0.012667543,0.027994915"),
|
|||
|
|
# ("M002YI042", "数值拟合", "0.00739087,-0.025728713"),
|
|||
|
|
# ("M002YI044", "数值拟合", "0.017748254,-0.031591554"),
|
|||
|
|
# ("M002YI046", "数值拟合", "0.004947258,-2.130449308"),
|
|||
|
|
# ("M002YI048", "数值拟合", "0.004851602,-1.983224429"),
|
|||
|
|
# ("M002YI050", "数值拟合", "0.004961177,-2.028220055"),
|
|||
|
|
# ("M002YI052", "数值拟合", "0.007101109,-6.287326986"),
|
|||
|
|
# ("M002YV054", "数值拟合", "0.01856155,-0.01615284"),
|
|||
|
|
# ("M002YV056", "数值拟合", "0.007807,0"),
|
|||
|
|
# ("M003YI002", "数值拟合", "0.007015417,-6.172192788"),
|
|||
|
|
# ("M003YI004", "数值拟合", "0.007135218,-6.260644413"),
|
|||
|
|
# ("M003YI016", "", ""),
|
|||
|
|
# ("M003YI018", "", ""),
|
|||
|
|
# ("M003YI020", "", ""),
|
|||
|
|
# ("M003YG027", "状态量", "0=0档,1=1档,2=2档,3=3档,4=4档,5=5档,6=6档,7=7档,8=8档,9=9档,0xA=10档,0xB=11档,0xC=12档,0xD=13档,0xE=14档,0xF=15档"),
|
|||
|
|
# ("M003YG028", "状态量", "0=0档,1=1档,2=2档,3=3档,4=4档,5=5档,6=6档,7=7档,8=8档,9=9档,0xA=10档,0xB=11档,0xC=12档,0xD=13档,0xE=14档,0xF=15档"),
|
|||
|
|
# ("M003YG029", "状态量", "0=0档,1=1档,2=2档,3=3档,4=4档,5=5档,6=6档,7=7档,8=8档,9=9档,0xA=10档,0xB=11档,0xC=12档,0xD=13档,0xE=14档,0xF=15档"),
|
|||
|
|
# ("M003YG030", "状态量", "0=0档,1=1档,2=2档,3=3档,4=4档,5=5档,6=6档,7=7档,8=8档,9=9档,0xA=10档,0xB=11档,0xC=12档,0xD=13档,0xE=14档,0xF=15档"),
|
|||
|
|
# ("M003YI032", "", ""),
|
|||
|
|
# ("M003YI034", "数值拟合", "0.007295516,-6.588082011"),
|
|||
|
|
# ("M003YI036", "数值拟合", "0.007280949,-6.426333966"),
|
|||
|
|
# ("M003YV038", "", ""),
|
|||
|
|
# ("M003YI050", "", ""),
|
|||
|
|
# ("M003YI052", "", ""),
|
|||
|
|
# ("M003YI054", "", ""),
|
|||
|
|
# ("M004YV002", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV004", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV006", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV008", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV010", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV012", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV014", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV016", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV018", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ("M004YV022", "数值拟合", "0.00244140625,0"),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # ===================== SADA 17 项 =====================
|
|||
|
|
# SADA_TABLE = [
|
|||
|
|
# ("M057JS005", "状态量", "0=正向,1=反向"),
|
|||
|
|
# ("M057JS006", "状态量", "0=正向,1=反向"),
|
|||
|
|
# ("M057JS007", "状态量", "0=零位正常,1=零位异常"),
|
|||
|
|
# ("M057JS008", "状态量", "0=零位正常,1=零位异常"),
|
|||
|
|
# ("M057JS009", "状态量", "0=电位计转角值正常,1=电位计转角异常"),
|
|||
|
|
# ("M057JS010", "状态量", "0=电位计转角值正常,1=电位计转角异常"),
|
|||
|
|
# ("M057JS012", "状态量", "0=电机处于空闲状态,1=电机处于运行状态"),
|
|||
|
|
# ("M057JS013", "状态量", "0=电机处于空闲状态,1=电机处于运行状态"),
|
|||
|
|
# ("M057JS014", "状态量", "0=停转/保持,1=巡航1,2=巡航2,3=快速捕获,4=应急归零,5=零位标定"),
|
|||
|
|
# ("M057JS015", "状态量", "0=停转/保持,1=巡航1,2=巡航2,3=快速捕获,4=应急归零,5=零位标定"),
|
|||
|
|
# ("M057JS017", "状态量", "0=SADM_A不处于零位,1=SADM_A处于零位"),
|
|||
|
|
# ("M057JS018", "状态量", "0=SADM_B不处于零位,1=SADM-B处于零位"),
|
|||
|
|
# ("M057JG023", "10进制", ""),
|
|||
|
|
# ("M057JG024", "10进制", ""),
|
|||
|
|
# ("M057JI037", "数值拟合", "3.0E-4,-37.0E-3"),
|
|||
|
|
# ("M057JG039", "特殊公式8", ""),
|
|||
|
|
# ("M057JG040", "特殊公式8", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # ===================== 测控 49 项 =====================
|
|||
|
|
# TTC_TABLE = [
|
|||
|
|
# ("M001CT001", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CV002", "电压1", ""),
|
|||
|
|
# ("M001CV003", "电压1", ""),
|
|||
|
|
# ("M001CV004", "电压1", ""),
|
|||
|
|
# ("M001CS005", "状态量", ""),
|
|||
|
|
# ("M001CS006", "状态量", ""),
|
|||
|
|
# ("M001CS007", "状态量", ""),
|
|||
|
|
# ("M001CS008", "状态量", ""),
|
|||
|
|
# ("M001CS009", "状态量", ""),
|
|||
|
|
# ("M001CS010", "状态量", ""),
|
|||
|
|
# ("M001CS011", "状态量", ""),
|
|||
|
|
# ("M001CT012", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CV013", "电压1", ""),
|
|||
|
|
# ("M001CV014", "电压1", ""),
|
|||
|
|
# ("M001CV015", "电压1", ""),
|
|||
|
|
# ("M001CS016", "状态量", ""),
|
|||
|
|
# ("M001CS017", "状态量", ""),
|
|||
|
|
# ("M001CS018", "状态量", ""),
|
|||
|
|
# ("M001CS019", "状态量", ""),
|
|||
|
|
# ("M001CS020", "状态量", ""),
|
|||
|
|
# ("M001CS021", "状态量", ""),
|
|||
|
|
# ("M001CS022", "状态量", ""),
|
|||
|
|
# ("M001CV023", "电压1", ""),
|
|||
|
|
# ("M001CV024", "电压1", ""),
|
|||
|
|
# ("M001CT025", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS026", "状态量", ""),
|
|||
|
|
# ("M001CI027", "电压1", ""),
|
|||
|
|
# ("M001CV028", "电压1", ""),
|
|||
|
|
# ("M001CV029", "电压1", ""),
|
|||
|
|
# ("M001CT030", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS031", "状态量", ""),
|
|||
|
|
# ("M001CI032", "电压1", ""),
|
|||
|
|
# ("M001CT033", "电阻拟合1", "M001CV038"),
|
|||
|
|
# ("M001CS034", "状态量", ""),
|
|||
|
|
# ("M001CS035", "状态量", ""),
|
|||
|
|
# ("M079CG032", "状态量", ""),
|
|||
|
|
# ("M079CS033", "状态量", ""),
|
|||
|
|
# ("M079CS034", "状态量", ""),
|
|||
|
|
# ("M085TV003", "电压6", ""),
|
|||
|
|
# ("M085CV004", "电压6", ""),
|
|||
|
|
# ("M087CS063", "状态量", ""),
|
|||
|
|
# ("M087CS064", "状态量", ""),
|
|||
|
|
# ("M087CS065", "状态量", ""),
|
|||
|
|
# ("M087CS066", "状态量", ""),
|
|||
|
|
# ("M087CS067", "状态量", ""),
|
|||
|
|
# ("M087CS068", "状态量", ""),
|
|||
|
|
# ("M087CS069", "状态量", ""),
|
|||
|
|
# ("M087CS078", "状态量", ""),
|
|||
|
|
# ("M087CS079", "状态量", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # ===================== 星间链路 3 项 =====================
|
|||
|
|
# INTERSAT_TABLE = [
|
|||
|
|
# ("M019XV005", "电压3", ""),
|
|||
|
|
# ("M018XV019", "电压3", ""),
|
|||
|
|
# ("M018XV017", "电压3", ""),
|
|||
|
|
# ]
|
|||
|
|
|
|||
|
|
# # 总表映射
|
|||
|
|
# TABLE_MAP = {
|
|||
|
|
# DATA_ID_ENERGY: ENERGY_TABLE,
|
|||
|
|
# DATA_ID_SADA: SADA_TABLE,
|
|||
|
|
# DATA_ID_TTC: TTC_TABLE,
|
|||
|
|
# DATA_ID_INTERSAT: INTERSAT_TABLE,
|
|||
|
|
# }
|
|||
|
|
|
|||
|
|
"""
|
|||
|
|
2026/4/5
|
|||
|
|
TMY
|
|||
|
|
"""
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
import math
|
|||
|
|
|
|||
|
|
from utils import logger
|
|||
|
|
def poly4_calc(D):
|
|||
|
|
"""正向 4 次多项式计算 y"""
|
|||
|
|
y = (-49.736 * (D ** 4)
|
|||
|
|
+ 383.38 * (D ** 3)
|
|||
|
|
- 1068.5 * (D ** 2)
|
|||
|
|
+ 1309.9 * D
|
|||
|
|
- 684.71)
|
|||
|
|
return y
|
|||
|
|
|
|||
|
|
|
|||
|
|
def inverse_poly4_fit(y):
|
|||
|
|
"""
|
|||
|
|
逆运算:已知 y → 求 D
|
|||
|
|
适用于:y ∈ [-112, 42]
|
|||
|
|
"""
|
|||
|
|
if not (-112 <= y <= 42):
|
|||
|
|
return 0.0 # 超范围保护
|
|||
|
|
|
|||
|
|
# 二分法区间(根据你的遥测范围实测得出)
|
|||
|
|
left = 1.5
|
|||
|
|
right = 4.5
|
|||
|
|
eps = 1e-5
|
|||
|
|
for _ in range(50):
|
|||
|
|
mid = (left + right) / 2
|
|||
|
|
current_y = poly4_calc(mid)
|
|||
|
|
if current_y < y:
|
|||
|
|
left = mid
|
|||
|
|
else:
|
|||
|
|
right = mid
|
|||
|
|
|
|||
|
|
return (left + right) / 2
|
|||
|
|
|
|||
|
|
# 固定系数
|
|||
|
|
Rr = 10000.0
|
|||
|
|
A = -6.01188
|
|||
|
|
B = 4622.53337
|
|||
|
|
C = -86421.72414
|
|||
|
|
|
|||
|
|
# 1. 定义查找表
|
|||
|
|
M001CT025_LOOKUP = {#电阻拟合+B4
|
|||
|
|
27: 119.83471,
|
|||
|
|
27.5:118.5919984,
|
|||
|
|
28: 117.3540572,
|
|||
|
|
28.5:116.1211001,
|
|||
|
|
29: 114.8933358,
|
|||
|
|
29.5:113.6709678,
|
|||
|
|
30: 112.4541945,
|
|||
|
|
30.5:111.2432089,
|
|||
|
|
31: 110.0381985,
|
|||
|
|
31.5:108.8393454,
|
|||
|
|
32: 107.6468265,
|
|||
|
|
32.5:106.4608129,
|
|||
|
|
33: 105.2814702,
|
|||
|
|
33.5:104.1089584,
|
|||
|
|
34: 102.943432,
|
|||
|
|
34.5:101.7850398,
|
|||
|
|
35: 100.6339251,
|
|||
|
|
|
|||
|
|
# 你可以继续加任意多组
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
def find_closest_x(y_input, lookup_table):
|
|||
|
|
"""
|
|||
|
|
查找表通用函数:输入 y,返回最接近的 x
|
|||
|
|
:param y_input: 输入的 y 值(M001CT025 物理值)
|
|||
|
|
:param lookup_table: 查找表,格式:字典 {y: x}
|
|||
|
|
:return: 最接近的 y 对应的 x
|
|||
|
|
"""
|
|||
|
|
# 找到查找表中 与输入y 最接近的键
|
|||
|
|
closest_y = min(lookup_table.keys(), key=lambda y: abs(y - y_input))
|
|||
|
|
|
|||
|
|
# 返回对应的 x
|
|||
|
|
return lookup_table[closest_y]
|
|||
|
|
|
|||
|
|
def calc_t_from_V(V):
|
|||
|
|
"""正向:V → t(内部用)"""
|
|||
|
|
if V >= 5.0:
|
|||
|
|
V = 4.9999
|
|||
|
|
if V <= 0:
|
|||
|
|
V = 0.0001
|
|||
|
|
|
|||
|
|
R = V * Rr / (5.0 - V)
|
|||
|
|
lnR = math.log(R)
|
|||
|
|
sqrt_val = math.sqrt(B**2 - 4 * C * (A - lnR))
|
|||
|
|
t = 2 * C / (sqrt_val - B) - 273.15
|
|||
|
|
return t
|
|||
|
|
|
|||
|
|
def calc_V_from_t(t_target):
|
|||
|
|
"""
|
|||
|
|
逆运算:已知温度 t → 求遥测电压 V
|
|||
|
|
:param t_target: 目标温度 ℃
|
|||
|
|
:return: V (V),精度 0.0001
|
|||
|
|
"""
|
|||
|
|
# 电压范围 0 ~ 5V
|
|||
|
|
left = 0.0001
|
|||
|
|
right = 4.9999
|
|||
|
|
eps = 1e-5
|
|||
|
|
|
|||
|
|
# 二分法迭代 50 次足够精确
|
|||
|
|
for _ in range(50):
|
|||
|
|
mid = (left + right) / 2
|
|||
|
|
t_mid = calc_t_from_V(mid)
|
|||
|
|
|
|||
|
|
if t_mid < t_target:
|
|||
|
|
left = mid
|
|||
|
|
else:
|
|||
|
|
right = mid
|
|||
|
|
|
|||
|
|
return (left + right) / 2
|
|||
|
|
|
|||
|
|
def calc_V_from_t_new(t):
|
|||
|
|
#R = math.exp(A-(B**2 - B - 4 * C ** 2/(273.15+t)**2)/4/C)
|
|||
|
|
R = math.exp(A+(B*4*C/(273.15+t)+4*C**2/(273.15+t)**2)/4/C)
|
|||
|
|
return R
|
|||
|
|
|
|||
|
|
def inverse_quadratic_fit(y, coeffs, y_min, y_max):
|
|||
|
|
"""
|
|||
|
|
通用二次多项式逆运算(3个拟合参数)
|
|||
|
|
公式:y = a2*D² + a1*D + a0
|
|||
|
|
已知 y → 求 D(只返回合法正根)
|
|||
|
|
|
|||
|
|
参数:
|
|||
|
|
y: 目标物理值
|
|||
|
|
coeffs: 拟合系数 [a2, a1, a0]
|
|||
|
|
y_min: y 有效最小值
|
|||
|
|
y_max: y 有效最大值
|
|||
|
|
返回:
|
|||
|
|
D: 原始码值
|
|||
|
|
"""
|
|||
|
|
# 1. 边界限幅
|
|||
|
|
y_clamped = max(y_min, min(y, y_max))
|
|||
|
|
|
|||
|
|
# 2. 取出系数
|
|||
|
|
a2, a1, a0 = coeffs
|
|||
|
|
|
|||
|
|
# 3. 构建一元二次方程标准形式:A*D² + B*D + C = 0
|
|||
|
|
A = a2
|
|||
|
|
B = a1
|
|||
|
|
C = a0 - y_clamped
|
|||
|
|
|
|||
|
|
# 4. 求判别式
|
|||
|
|
delta = B ** 2 - 4 * A * C
|
|||
|
|
if delta < 0:
|
|||
|
|
delta = 0 # 防止无实根
|
|||
|
|
|
|||
|
|
# 5. 求正根(遥测D一定为正)
|
|||
|
|
D = (-B + (delta ** 0.5)) / (2 * A)
|
|||
|
|
|
|||
|
|
# 6. 保证 D 不为负
|
|||
|
|
return max(D, 0.0)
|
|||
|
|
|
|||
|
|
def forward_calc(x, item):
|
|||
|
|
method = item['method']
|
|||
|
|
param = item.get('param')
|
|||
|
|
bits = item['bits']
|
|||
|
|
max_val = (1 << bits) - 1 if bits > 0 else 0xFFFFFFFF
|
|||
|
|
try:
|
|||
|
|
# 1. 无处理方法 → 直接取整
|
|||
|
|
if method is None or method.strip() == '':
|
|||
|
|
d = round(y)
|
|||
|
|
|
|||
|
|
# 2. 数值拟合 Y = a*D + b → D=(Y-b)/a
|
|||
|
|
elif method == '数值拟合':
|
|||
|
|
a, b = param
|
|||
|
|
d = a * x + b
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ======================== 修复核心 ========================
|
|||
|
|
# 1. 先取绝对值(消除负数)
|
|||
|
|
d = abs(d)
|
|||
|
|
|
|||
|
|
# 2. 无符号位宽截断
|
|||
|
|
d = d & max_val
|
|||
|
|
return d
|
|||
|
|
|
|||
|
|
except:
|
|||
|
|
return 0
|
|||
|
|
def reverse_calc(y, item):
|
|||
|
|
method = item['method']
|
|||
|
|
param = item.get('param')
|
|||
|
|
bits = item['bits']
|
|||
|
|
max_val = (1 << bits) - 1 if bits > 0 else 0xFFFFFFFF
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# 1. 无处理方法 → 直接取整
|
|||
|
|
if method is None or method.strip() == '':
|
|||
|
|
d = round(y)
|
|||
|
|
|
|||
|
|
# 2. 数值拟合 Y = a*D + b → D=(Y-b)/a
|
|||
|
|
elif method == '数值拟合':
|
|||
|
|
a, b = param
|
|||
|
|
d = round((y - b) / a)
|
|||
|
|
|
|||
|
|
# 3. 特殊公式8
|
|||
|
|
elif method == '特殊公式8':
|
|||
|
|
combined = round(y / 0.00205479)
|
|||
|
|
low16 = combined & 0xFFFF
|
|||
|
|
high4 = (combined >> 16) & 0xF
|
|||
|
|
#d = (high4 << 16) | low16
|
|||
|
|
d = (low16 << 16) | (high4 << 0) #2026/5/7
|
|||
|
|
#logger.info(f"特殊公式8反推:y={y} low16={hex(low16)},high4 = {hex(high4)}, d={hex(d)}")
|
|||
|
|
|
|||
|
|
# 4. 状态量 → 不处理
|
|||
|
|
elif method == '状态量':
|
|||
|
|
d = round(y)
|
|||
|
|
|
|||
|
|
# 5. 电阻拟合1
|
|||
|
|
elif method == '电阻拟合1':
|
|||
|
|
R = y
|
|||
|
|
V = R * 5.0 / (R + 10000.0)
|
|||
|
|
d = round(V * 255.0 / 5.1)
|
|||
|
|
|
|||
|
|
# 6. 电压1
|
|||
|
|
elif method == '电压1':
|
|||
|
|
d = round(y * 255.0 / 5.1)
|
|||
|
|
|
|||
|
|
# 7. 电压6(有符号)
|
|||
|
|
elif method == '电压6':
|
|||
|
|
d = round(y * 65535.0 / 20.0)
|
|||
|
|
|
|||
|
|
# 8. 电压3(有符号)
|
|||
|
|
elif method == '电压3':
|
|||
|
|
d = round(y / 0.000305185)
|
|||
|
|
|
|||
|
|
# 9. 10进制
|
|||
|
|
elif method == '10进制':
|
|||
|
|
d = round(y)
|
|||
|
|
|
|||
|
|
# ===================== 电阻拟合1 → 逆运算 =====================
|
|||
|
|
# 公式:
|
|||
|
|
# V = D/255*5.1
|
|||
|
|
# R = V*10000/(5.0 - V)
|
|||
|
|
# 逆推 D
|
|||
|
|
#2026/3/30手算验证公式是正确的
|
|||
|
|
elif method == "电阻拟合1":
|
|||
|
|
R = y
|
|||
|
|
Vref = 5.0
|
|||
|
|
Rr = 10000.0
|
|||
|
|
|
|||
|
|
# 逆推 V
|
|||
|
|
if R <= 0.0:
|
|||
|
|
V = 0.0
|
|||
|
|
else:
|
|||
|
|
V = (R * Vref) / (R + Rr)
|
|||
|
|
|
|||
|
|
# 逆推 D
|
|||
|
|
D = V * 255.0 / 5.1
|
|||
|
|
return int(round(D))
|
|||
|
|
|
|||
|
|
# ===================== 特殊公式8(逆运算) =====================
|
|||
|
|
# 正向:combined = (high4 <<16) | low16 result = combined * 0.00205479
|
|||
|
|
# 逆向:combined = y / 0.00205479
|
|||
|
|
# high4 = (combined >> 16) & 0xF
|
|||
|
|
# low16 = combined & 0xFFFF
|
|||
|
|
# raw = (high4 << 28) | low16
|
|||
|
|
|
|||
|
|
# elif method == "特殊公式8":
|
|||
|
|
# combined = int(round(y / 0.00205479))
|
|||
|
|
# low16 = combined & 0xFFFF
|
|||
|
|
# high4 = (combined >> 16) & 0x0F
|
|||
|
|
# raw = (high4 << 28) | low16
|
|||
|
|
# return raw
|
|||
|
|
|
|||
|
|
# ===================== 状态量 / 10进制:直接返回 =====================
|
|||
|
|
elif method in ["状态量", "10进制"]:
|
|||
|
|
return int(y)
|
|||
|
|
|
|||
|
|
elif method == "特殊公式11-1":
|
|||
|
|
"""
|
|||
|
|
M057JG023 / M057JG024 专用逆运算
|
|||
|
|
输入:物理值 y
|
|||
|
|
输出:原始值 m(用于组帧)
|
|||
|
|
"""
|
|||
|
|
# if y < (0.0973 * 1840 + 180): # 区间1:y < 359.032
|
|||
|
|
# m = (y - 180) / 0.0973
|
|||
|
|
# elif y > (0.0974 * 1840 - 179.46): # 区间2:y > -0.444
|
|||
|
|
# m = (y + 179.46) / 0.0974
|
|||
|
|
# else: # m=1840
|
|||
|
|
# m = 1840.0
|
|||
|
|
|
|||
|
|
#2026/5/7修正公式
|
|||
|
|
if y < (180): # 区间1:
|
|||
|
|
m = (y + 179.46) / 0.0974
|
|||
|
|
elif y > (180): # 区间2:
|
|||
|
|
m = (y - 180) / 0.0973
|
|||
|
|
else: # m=1840
|
|||
|
|
m = 0.0
|
|||
|
|
# 组帧需要整数,返回四舍五入
|
|||
|
|
#logger.info(f"特殊公式11-1反推:y={y} d={ float(round(m))}")
|
|||
|
|
|
|||
|
|
return int(round(m))
|
|||
|
|
elif method == "电压2,数值拟合":
|
|||
|
|
"""
|
|||
|
|
逆运算,先反解数值拟合,再反推电压2
|
|||
|
|
"""
|
|||
|
|
#a, b = map(float, param.split(','))
|
|||
|
|
a,b = param # # 直接解包元组
|
|||
|
|
x = (y - b) / a
|
|||
|
|
D = (x + 5) * 409.6## 电压2
|
|||
|
|
return int(round(D)) # 有符号整型
|
|||
|
|
|
|||
|
|
elif method == "电压1,数值拟合":
|
|||
|
|
"""
|
|||
|
|
逆运算,先反解数值拟合,再反推电压2
|
|||
|
|
"""
|
|||
|
|
#a, b = map(float, param.split(','))
|
|||
|
|
a,b = param # # 直接解包元组
|
|||
|
|
x = (y - b) / a
|
|||
|
|
D = x * 255.0 / 5.1## 电压1
|
|||
|
|
return int(round(D)) # 有符号整型
|
|||
|
|
|
|||
|
|
elif method == "电压1,数值拟合5":
|
|||
|
|
"""
|
|||
|
|
逆运算,先反解数值拟合(5次方程),再反推电压2
|
|||
|
|
"""
|
|||
|
|
x = inverse_poly4_fit(y) ##2分法求解5次方程
|
|||
|
|
|
|||
|
|
D = x * 255.0 / 5.1## 电压1
|
|||
|
|
return int(round(D)) # 有符号整型
|
|||
|
|
|
|||
|
|
elif method == "电阻拟合1,MF501(电阻)":
|
|||
|
|
#x = calc_V_from_t(y) #2分法,先不用
|
|||
|
|
x = calc_V_from_t_new(y)#公式法
|
|||
|
|
|
|||
|
|
R = x
|
|||
|
|
Vref = 5.0 #5->4.75
|
|||
|
|
Rr = 10000.0
|
|||
|
|
|
|||
|
|
# 逆推 V
|
|||
|
|
if R <= 0.0:
|
|||
|
|
V = 0.0
|
|||
|
|
else:
|
|||
|
|
V = (R * Vref) / (R + Rr)
|
|||
|
|
|
|||
|
|
# 逆推 D
|
|||
|
|
D = V * 255.0 / 5.1
|
|||
|
|
return int(round(D))
|
|||
|
|
elif method == "电压1,数值拟合3":
|
|||
|
|
# a, b,c,y_min,y_max = map(float, param_str.split(','))
|
|||
|
|
a,b,c,y_min,y_max= param # # 直接解包元组
|
|||
|
|
coeffs = [a,b,c]
|
|||
|
|
x= inverse_quadratic_fit(y, coeffs, y_min, y_max)
|
|||
|
|
D = x * 50
|
|||
|
|
return int(round(D))# 有符号整型
|
|||
|
|
|
|||
|
|
elif method == "电压6,数值拟合":
|
|||
|
|
"""
|
|||
|
|
逆运算,先反解数值拟合,再反推电压2
|
|||
|
|
"""
|
|||
|
|
#a, b = map(float, param_str.split(','))
|
|||
|
|
a,b = param # # 直接解包元组
|
|||
|
|
x = (y - b) / a
|
|||
|
|
D = x * 65535.0 / 20.0 #电压6
|
|||
|
|
return int(round(D)) # 有符号整型
|
|||
|
|
|
|||
|
|
elif method == "电阻拟合1,B4(电阻)":
|
|||
|
|
x = find_closest_x(y, M001CT025_LOOKUP)#使用查找表
|
|||
|
|
|
|||
|
|
# R = x
|
|||
|
|
# Vref = 5.0
|
|||
|
|
# Rr = 10000.0
|
|||
|
|
|
|||
|
|
# # 逆推 V
|
|||
|
|
# if R <= 0.0:
|
|||
|
|
# V = 0.0
|
|||
|
|
# else:
|
|||
|
|
# V = (R * Vref) / (R + Rr)
|
|||
|
|
|
|||
|
|
# # 逆推 D
|
|||
|
|
# D = V * 255.0 / 5.1
|
|||
|
|
D = x #查找表直接串联了公式1,2,能直接从y得到D
|
|||
|
|
return int(round(D))
|
|||
|
|
else:
|
|||
|
|
d = round(y)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ======================== 修复核心 ========================
|
|||
|
|
# 1. 先取绝对值(消除负数)
|
|||
|
|
#d = abs(d)#2026/5/7删除
|
|||
|
|
|
|||
|
|
# 2. 无符号位宽截断
|
|||
|
|
d = d & max_val
|
|||
|
|
return d
|
|||
|
|
|
|||
|
|
except:
|
|||
|
|
return 0
|
|||
|
|
FORWARD_CALC = forward_calc
|
|||
|
|
REVERSE_CALC = reverse_calc
|
|||
|
|
|
|||
|
|
"""能源46项"""
|
|||
|
|
ENERGY_LAYOUT = {
|
|||
|
|
'length': 65,
|
|||
|
|
'items': [
|
|||
|
|
{"byte":0, "bit":0, "bits":12, "method":"数值拟合", "param":(0.012676885,0.005308819),'param_num':'M002YI002'},
|
|||
|
|
{"byte":1, "bit":4, "bits":12, "method":"数值拟合", "param":(0.02545648,-0.039275645),'param_num':'M002YI004'},
|
|||
|
|
{"byte":3, "bit":0, "bits":12, "method":"数值拟合", "param":(0.007486385,0.018835631),'param_num':'M002YI006'},
|
|||
|
|
{"byte":4, "bit":4, "bits":12, "method":"数值拟合", "param":(0.018036219,-0.029769313),'param_num':'M002YI008'},
|
|||
|
|
{"byte":6, "bit":0, "bits":12, "method":"数值拟合", "param":(0.005004802,-2.17662752),'param_num':'M002YI010'},
|
|||
|
|
{"byte":7, "bit":4, "bits":12, "method":"数值拟合", "param":(0.004907629,-2.036893601),'param_num':'M002YI012'},
|
|||
|
|
{"byte":9, "bit":0, "bits":12, "method":"数值拟合", "param":(0.004989693,-2.140794708),'param_num':'M002YI014'},
|
|||
|
|
{"byte":10,"bit":4, "bits":12, "method":"数值拟合", "param":(0.007120869,-6.19416166),'param_num':'M002YI016'},
|
|||
|
|
{"byte":12,"bit":0, "bits":12, "method":"数值拟合", "param":(0.02499736,-0.09134717),'param_num':'M002YV018'},
|
|||
|
|
{"byte":13,"bit":4, "bits":12, "method":"数值拟合", "param":(0.01837765,-0.00943934),'param_num':'M002YV020'},
|
|||
|
|
{"byte":15,"bit":0, "bits":12, "method":"数值拟合", "param":(0.007807,0),'param_num':'M002YV022'},
|
|||
|
|
{"byte":16,"bit":4, "bits":12, "method":"数值拟合", "param":(0.012667543,0.027994915),'param_num':'M002YI040'},
|
|||
|
|
{"byte":18,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00739087,-0.025728713),'param_num':'M002YI042'},
|
|||
|
|
{"byte":19,"bit":4, "bits":12, "method":"数值拟合", "param":(0.017748254,-0.031591554),'param_num':'M002YI044'},
|
|||
|
|
{"byte":21,"bit":0, "bits":12, "method":"数值拟合", "param":(0.004947258,-2.130449308),'param_num':'M002YI046'},
|
|||
|
|
{"byte":22,"bit":4, "bits":12, "method":"数值拟合", "param":(0.004851602,-1.983224429),'param_num':'M002YI048'},
|
|||
|
|
{"byte":24,"bit":0, "bits":12, "method":"数值拟合", "param":(0.004961177,-2.028220055),'param_num':'M002YI050'},
|
|||
|
|
{"byte":25,"bit":4, "bits":12, "method":"数值拟合", "param":(0.007101109,-6.287326986),'param_num':'M002YI052'},
|
|||
|
|
{"byte":27,"bit":0, "bits":12, "method":"数值拟合", "param":(0.01856155,-0.01615284),'param_num':'M002YV054'},
|
|||
|
|
{"byte":28,"bit":4, "bits":12, "method":"数值拟合", "param":(0.007807,0),'param_num':'M002YV056'},
|
|||
|
|
{"byte":30,"bit":0, "bits":12, "method":"数值拟合", "param":(0.007015417,-6.172192788),'param_num':'M003YI002'},
|
|||
|
|
{"byte":31,"bit":4, "bits":12, "method":"数值拟合", "param":(0.007135218,-6.260644413),'param_num':'M003YI004'},
|
|||
|
|
{"byte":33,"bit":0, "bits":4, "method":"状态量", "param":None,'param_num':'M003YG027'},
|
|||
|
|
{"byte":33,"bit":4, "bits":4, "method":"状态量", "param":None,'param_num':'M003YG028'},
|
|||
|
|
{"byte":34,"bit":0, "bits":4, "method":"状态量", "param":None,'param_num':'M003YG029'},
|
|||
|
|
{"byte":34,"bit":4, "bits":4, "method":"状态量", "param":None,'param_num':'M003YG030'},
|
|||
|
|
{"byte":35,"bit":0, "bits":12, "method":"数值拟合", "param":(0.007295516,-6.588082011),'param_num':'M003YI034'},
|
|||
|
|
{"byte":36,"bit":4, "bits":12, "method":"数值拟合", "param":(0.007280949,-6.426333966),'param_num':'M003YI036'},
|
|||
|
|
{"byte":38,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV002'},
|
|||
|
|
{"byte":39,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV004'},
|
|||
|
|
{"byte":41,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV006'},
|
|||
|
|
{"byte":42,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV008'},
|
|||
|
|
{"byte":44,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV010'},
|
|||
|
|
{"byte":45,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV012'},
|
|||
|
|
{"byte":47,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV014'},
|
|||
|
|
{"byte":48,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV016'},
|
|||
|
|
{"byte":50,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV018'},
|
|||
|
|
{"byte":51,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV022'},
|
|||
|
|
{"byte":53,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV024'},
|
|||
|
|
{"byte":54,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV026'},
|
|||
|
|
{"byte":56,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV028'},
|
|||
|
|
{"byte":57,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV030'},
|
|||
|
|
{"byte":59,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV032'},
|
|||
|
|
{"byte":60,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV034'},
|
|||
|
|
{"byte":62,"bit":0, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV036'},
|
|||
|
|
{"byte":63,"bit":4, "bits":12, "method":"数值拟合", "param":(0.00244140625,0),'param_num':'M004YV038'},
|
|||
|
|
##2026/4/20新增4个遥测量
|
|||
|
|
{"byte":65,"bit":0, "bits":12, "method":"电压2,数值拟合", "param":(16.48788,-0.01808),'param_num':'M010YV012'},
|
|||
|
|
{"byte":66,"bit":4, "bits":12, "method":"电压2,数值拟合", "param":(16.473805,-0.009011),'param_num':'M010YV014'},
|
|||
|
|
{"byte":68,"bit":0, "bits":12, "method":"电压2,数值拟合", "param":(11.32755,0.010142),'param_num':'M010YV006'},
|
|||
|
|
{"byte":69,"bit":4, "bits":12, "method":"数值拟合", "param":(0.025144973,-0.009176576),'param_num':'M004YV038'},
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
"""SADA 16B"""
|
|||
|
|
SADA_LAYOUT = {
|
|||
|
|
'length': 16,
|
|||
|
|
'items': [
|
|||
|
|
{"byte":0,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M057JS005'},
|
|||
|
|
{"byte":0,"bit":1,"bits":1,"method":"状态量","param":None,'param_num':'M057JS006'},
|
|||
|
|
{"byte":0,"bit":2,"bits":1,"method":"状态量","param":None,'param_num':'M057JS007'},
|
|||
|
|
{"byte":0,"bit":3,"bits":1,"method":"状态量","param":None,'param_num':'M057JS008'},
|
|||
|
|
{"byte":0,"bit":4,"bits":1,"method":"状态量","param":None,'param_num':'M057JS009'},
|
|||
|
|
{"byte":0,"bit":5,"bits":1,"method":"状态量","param":None,'param_num':'M057JS010'},
|
|||
|
|
{"byte":0,"bit":6,"bits":1,"method":"状态量","param":None,'param_num':'M057JS012'},
|
|||
|
|
{"byte":0,"bit":7,"bits":1,"method":"状态量","param":None,'param_num':'M057JS013'},
|
|||
|
|
{"byte":1,"bit":0,"bits":3,"method":"状态量","param":None,'param_num':'M057JS014'},
|
|||
|
|
{"byte":1,"bit":3,"bits":3,"method":"状态量","param":None,'param_num':'M057JS015'},
|
|||
|
|
{"byte":1,"bit":6,"bits":1,"method":"状态量","param":None,'param_num':'M057JS017'},
|
|||
|
|
{"byte":1,"bit":7,"bits":1,"method":"状态量","param":None,'param_num':'M057JS018'},
|
|||
|
|
{"byte":2,"bit":0,"bits":16,"method":"特殊公式11-1","param":None,'param_num':'M057JG023'},
|
|||
|
|
{"byte":4,"bit":0,"bits":16,"method":"特殊公式11-1","param":None,'param_num':'M057JG024'},
|
|||
|
|
{"byte":6,"bit":0,"bits":16,"method":"数值拟合","param":(0.0003, -0.037),'param_num':''},#暂无
|
|||
|
|
{"byte":8,"bit":0,"bits":32,"method":"特殊公式8","param":None,'param_num':'M057JG039'},
|
|||
|
|
{"byte":12,"bit":0,"bits":32,"method":"特殊公式8","param":None,'param_num':'M057JG040'},
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
##测控
|
|||
|
|
TT_LAYOUT = {
|
|||
|
|
'length': 42,#2026/4/7 修改为42
|
|||
|
|
'items': [
|
|||
|
|
{"byte":0,"bit":0,"bits":8,"method":"电阻拟合1,MF501(电阻)","param":None,'param_num':'M001CT001'},
|
|||
|
|
{"byte":1,"bit":0,"bits":8,"method":"电压1,数值拟合","param":(1.282,0),'param_num':'M001CV002'},
|
|||
|
|
{"byte":2,"bit":0,"bits":8,"method":"电压1,数值拟合","param":(3.030,0),'param_num':'M001CV003'},
|
|||
|
|
{"byte":3,"bit":0,"bits":8,"method":"电压1,数值拟合5","param":(-49.736,383.38,-1068.5,1309.9,-684.71),'param_num':'M001CV004'},
|
|||
|
|
{"byte":4,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS005'},
|
|||
|
|
{"byte":5,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS006'},
|
|||
|
|
{"byte":6,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS007'},
|
|||
|
|
{"byte":7,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS008'},
|
|||
|
|
{"byte":8,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS009'},
|
|||
|
|
{"byte":9,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS010'},
|
|||
|
|
{"byte":10,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS011'},
|
|||
|
|
{"byte":11,"bit":0,"bits":8,"method":"电阻拟合1,MF501(电阻)","param":None,'param_num':'M001CT012'},
|
|||
|
|
{"byte":12,"bit":0,"bits":8,"method":"电压1,数值拟合","param":(1.2136,0),'param_num':'M001CV013'},
|
|||
|
|
{"byte":13,"bit":0,"bits":8,"method":"电压1,数值拟合","param":(2.871,0),'param_num':'M001CV014'},
|
|||
|
|
{"byte":14,"bit":0,"bits":8,"method":"电压1,数值拟合5","param":(-54.122,417.42,-1166.5,1434.6,-743.93),'param_num':'M001CV015'},
|
|||
|
|
{"byte":15,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS016'},
|
|||
|
|
{"byte":16,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS017'},
|
|||
|
|
{"byte":17,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS018'},
|
|||
|
|
{"byte":18,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS019'},
|
|||
|
|
{"byte":19,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS020'},
|
|||
|
|
{"byte":20,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS021'},
|
|||
|
|
{"byte":21,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS022'},
|
|||
|
|
{"byte":22,"bit":0,"bits":8,"method":"电压1","param":None,'param_num':'M001CV023'},
|
|||
|
|
{"byte":23,"bit":0,"bits":8,"method":"电压1,数值拟合3","param":(0.4116,0.931,0,0,12),'param_num':'M001CV024'},
|
|||
|
|
{"byte":24,"bit":0,"bits":8,"method":"电阻拟合1,B4(电阻)","param":(-0.112,4.8447,-85.505,489.01),'param_num':'M001CT025'},
|
|||
|
|
{"byte":25,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS026'},
|
|||
|
|
{"byte":26,"bit":0,"bits":8,"method":"电压1,数值拟合3","param":(-0.0045,0.9061,0,0,1),'param_num':'M001CI027'},
|
|||
|
|
{"byte":27,"bit":0,"bits":8,"method":"电压1","param":None,'param_num':'M001CV028'},
|
|||
|
|
{"byte":28,"bit":0,"bits":8,"method":"电压1,数值拟合3","param":(0.3723,0.9585,0,0,12),'param_num':'M001CV029'},
|
|||
|
|
{"byte":29,"bit":0,"bits":8,"method":"电阻拟合1,MF501(电阻)","param":None,'param_num':'M001CT030'},
|
|||
|
|
{"byte":30,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS031'},
|
|||
|
|
{"byte":31,"bit":0,"bits":8,"method":"电压1,数值拟合3","param":(0.0099,0.8116,0,0,1),'param_num':'M001CI032'},
|
|||
|
|
{"byte":32,"bit":0,"bits":8,"method":"电阻拟合1,MF501(电阻)","param":None,'param_num':'M001CT033'},
|
|||
|
|
{"byte":33,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS034'},
|
|||
|
|
{"byte":34,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M001CS035'},
|
|||
|
|
{"byte":35,"bit":0,"bits":2,"method":"状态量","param":None,'param_num':'M079CG032'},
|
|||
|
|
{"byte":35,"bit":2,"bits":1,"method":"状态量","param":None,'param_num':'M079CS033'},
|
|||
|
|
{"byte":35,"bit":3,"bits":1,"method":"状态量","param":None,'param_num':'M079CS034'},
|
|||
|
|
{"byte":36,"bit":0,"bits":16,"method":"电压6","param":None,'param_num':'M085TV003'},
|
|||
|
|
{"byte":38,"bit":0,"bits":16,"method":"电压6,数值拟合","param":(1.73,0),'param_num':'M085CV004'},
|
|||
|
|
{"byte":40,"bit":3,"bits":1,"method":"状态量","param":None,'param_num':'M087CS063'},
|
|||
|
|
{"byte":40,"bit":4,"bits":1,"method":"状态量","param":None,'param_num':'M087CS064'},
|
|||
|
|
{"byte":40,"bit":5,"bits":1,"method":"状态量","param":None,'param_num':'M087CS065'},
|
|||
|
|
{"byte":40,"bit":6,"bits":1,"method":"状态量","param":None,'param_num':'M087CS066'},
|
|||
|
|
{"byte":40,"bit":7,"bits":1,"method":"状态量","param":None,'param_num':'M087CS067'},
|
|||
|
|
{"byte":41,"bit":0,"bits":1,"method":"状态量","param":None,'param_num':'M087CS068'},
|
|||
|
|
{"byte":41,"bit":1,"bits":1,"method":"状态量","param":None,'param_num':'M087CS069'},
|
|||
|
|
{"byte":41,"bit":2,"bits":1,"method":"状态量","param":None,'param_num':'M087CS078'},
|
|||
|
|
{"byte":41,"bit":3,"bits":1,"method":"状态量","param":None,'param_num':'M087CS079'},
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#星间链路
|
|||
|
|
INTER_SAT_LAYOUT = {
|
|||
|
|
'length': 6,
|
|||
|
|
'items': [
|
|||
|
|
{"byte":0,"bit":0,"bits":16,"method":"电压3","param":None,'param_num':'M019XV005'},
|
|||
|
|
{"byte":2,"bit":0,"bits":16,"method":"电压3","param":None,'param_num':'M018XV017'},
|
|||
|
|
{"byte":4,"bit":0,"bits":16,"method":"电压3","param":None,'param_num':'M018XV019'},
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
#总映射
|
|||
|
|
TELEM_LAYOUT = {
|
|||
|
|
0x00110000: ENERGY_LAYOUT,
|
|||
|
|
0x00330000: TT_LAYOUT,
|
|||
|
|
0x00440000: SADA_LAYOUT,
|
|||
|
|
0x00550000: INTER_SAT_LAYOUT,
|
|||
|
|
}
|