飞机照明五轴测试系统_可落地实施方案_总集成版.docx
飞机照明系统五轴自动化测试设备 可落地实施方案 — 总集成版 基于 HP860 光强分布测试仪 + HP350L 光谱辐射计 + ZDT X42S 五轴运动平台 适配 GJB 2020A-2012 / GJB 455-1988 / GJB 1394 覆盖 37 型产品 版本:V1.0 日期:2026-07-03 目 录 一、项目概述 二、硬件系统详细设计 三、已有设备盘点与复用 四、软件系统详细设计 五、37型产品测试模板集成 六、核心用例详解 七、完整API接口手册 八、GJB标准合规实现 九、实施计划 十、验收交付物 一、项目概述 1.1 项目目标 本方案建设一套面向飞机照明系统的五轴全自动化光学测试设备,替代传统人工对位、人工读数、人工判定的测试模式,实现37种飞机内外照明产品的参数全自动测量与GJB军标合规判定。 系统以"灯具固定、探头运动"的龙门式五轴构型为核心,集成已有HP860光强测试仪、HP350L光谱辐射计、ZDT X42S闭环步进电机等成熟硬件,搭建完整的自动化测试解决方案。 1.2 已有资源盘点 1.3 需新增/外购项 1.4 执行标准 二、硬件系统详细设计 2.1 总体架构 系统采用"灯具固定、探头运动"的龙门式五轴构型,核心是充分利用已有的双轴中空旋转台(theta/phi),在其基础上增加X/Y/Z三轴直线运动单元,构成完整的五轴联动系统。 机械构型示意: +--- X轴龙门横梁(2000mm) ---+ | +----- Y轴滑台(14m) -----+ | | | +--- Z轴升降(500mm) +| | | | | +--θ旋转(360°)--+| | | | | | +--φ俯仰(180°)+|| | | | | | | 光学探头 ||| | | | | | +-------------+|| | | | | +----------------+| | | | +--------------------+| | | +------------------------+| | +----------------------------+ | | [灯具工装底座] | | +-- Y轴长导轨(14m) --+ +---------------------+ 五轴定义 2.2 ZDT X42S 闭环步进电机通信协议 基于现有成熟驱动(已在双轴旋转机构中验证),全部5台电机统一采用Modbus-RTU协议,共享一条485总线,通过唯一地址区分。 核心寄存器映射: 电机地址分配方案: 2.3 HP860 光强分布测试仪 HP860 是集光强测量与可编程电源于一体的测试仪器,为本系统的核心测量设备 + 供电设备。 通信参数: 核心命令集: 量程体系(LI光强): 光强值换算公式: LI_value = ADC_raw × Ks × RangeKs[range] × gain_factor 其中 Ks=主校准系数, RangeKs[4]=四量程独立系数, PGA补偿暗电流 2.4 HP350L 光谱辐射计 2.5 电缆走线与供电系统 [!] 关键设计约束: • θ/φ双轴使用中空旋转结构,供电/信号线从中心穿线,确保旋转不缠绕 • X/Y/Z三轴信号线/电源线采用拖链系统保护 • Y轴长距离(14m)采用扁平拖链+卷缆器方案 • 28VDC电源需满足至少300W输出(装货照明灯***-10Z/Y最大300W) • 系统供电需求:五轴电机驱动电源(24VDC) + HP860电源(220VAC) + HP350L(USB供电) + 工控机 三、已有设备盘点与复用策略 3.1 双轴中空旋转机构(已有) 已有成熟的theta/phi双轴旋转机构,核心功能: • 双轴均为0~360°全角度连续旋转(中空结构,无光路遮挡) • ZDT X42S闭环电机+Modbus-RTU,编码器实时回读真实角度 • 已完成LED灯珠二维光强-色度分布测试验证 • 支持水平轴扫描+垂直轴同步采集两种模式 复用方式:将双轴旋转机构安装在Z轴升降平台上,θ/φ轴保留原功能,加配X/Y/Z线性运动单元扩展为五轴。 3.2 HP860 软件驱动(已有) HP_GO_Test1206项目中的HP860驱动已实现全部串口通信命令,包括: • 串口初始化(9600,8,N,1) + CRC16校验 + 三重重试机制 • 电源控制(SET_IF/SET_VR/LED_ON/LED_OFF) • 光强采集(START_TEST/READ_DATA 含PGA+LI量程) • 角度扫描(START_SCAN/READ_SCAN) 复用方式:将C++驱动封装为Python模块(通过ctypes/pybind11),或直接参考协议文档重新实现Python版。 3.3 电机驱动(已有) ZDT X42S电机的Modbus-RTU驱动在双轴项目中已成熟运行,核心功能: • 485总线串联,双地址独立控制 • 绝对定位运动、回零、实时位置读取 • 编码器闭环校验(到位/丢步检测) • 堵转/超时异常保护 复用方式:扩展为5个电机实例,通过唯一地址(1~5)区分,统一管理。 3.4 软件框架复用 四、软件系统详细设计 4.1 软件架构总览 采用八层模块化架构,基于已有"光强分布_软件"框架和Python标准工程规范重新实现。 4.2 工程目录结构 aircraft_light_test/ ├── main.py # 程序全局入口(初始化UI/DB/日志) ├── ui/ # 界面层 │ ├── main_window.py # 主窗口 │ ├── device_status_ui.py # 设备状态面板 │ ├── test_control_ui.py # 手动/自动测试控制 │ ├── curve_show_ui.py # 曲线显示 │ ├── report_ui.py # 报告导出 │ └── config_ui.py # 系统配置 ├── controller/ # 业务控制层 │ ├── test_task_ctrl.py # 全自动测试调度 │ ├── axis_motion_ctrl.py # 五轴运动逻辑 │ ├── device_schedule.py # HP860/HP350L分时调度 │ └── system_ctrl.py # 自检/异常/急停 ├── device_api/ # 设备驱动层 │ ├── axis5_api.py # 五轴运动控制 │ ├── hp860_api.py # HP860通讯 │ ├── hp350l_api.py # HP350L通讯 │ └── device_connect.py # 连接/心跳/重连 ├── calculate/ # 算法层 │ ├── standard_judge.py # GJB自动判据 │ ├── data_calc.py # 光学换算 │ ├── error_calc.py # 误差/合格率 │ └── calibrate_calc.py # 校准补偿 ├── display/ # 可视化层 │ ├── gonio_curve.py # 配光极坐标曲线 │ ├── spectrum_curve.py # 光谱曲线 │ ├── chroma_curve.py # CIE色度图 │ └── data_real_show.py # 实时数据 ├── report/ # 报告层 │ ├── report_word.py # Word报告 │ ├── report_pdf.py # PDF报告 │ └── data_export.py # Excel导出 ├── data/ # 数据层 │ ├── db_sqlite.py # SQLite │ ├── template_manager.py # 产品模板管理 │ └── data_save.py # 数据存储 ├── communication/ # 通讯层 │ ├── tcp_client.py # TCP以太网 │ ├── serial_com.py # 串口+粘包 │ └── protocol_frame.py # 帧协议+CRC ├── config/ # 配置层 │ ├── settings.py # 全局参数 │ └── device_param.py # 设备量程/阈值 └── utils/ # 工具层 ├── log.py # 日志 └── exception_handle.py # 异常捕获 4.3 核心代码骨架 [main.py] 程序入口: import sys from PyQt5.QtWidgets import QApplication from ui.main_window import MainWindow from utils.log import init_log from data.db_sqlite import init_db if __name__ == "__main__": init_log() # 初始化日志系统 init_db() # 初始化数据库 app = QApplication(sys.argv) win = MainWindow() win.show() sys.exit(app.exec_()) [axis5_api.py] 五轴运动控制API: from communication.tcp_client import TcpClient from config.settings import AXIS_TCP_ADDR, AXIS_TCP_PORT class Axis5API: def __init__(self): self.tcp = TcpClient(AXIS_TCP_ADDR, AXIS_TCP_PORT) def connect(self): return self.tcp.connect() def home_all(self): return self.tcp.send_cmd("HOME,ALL") def move_abs(self, x, y, z, pitch, yaw, speed=1000): return self.tcp.send_cmd(f"MOVEABS,{x},{y},{z},{pitch},{yaw},{speed}") def stop_all(self): return self.tcp.send_cmd("STOP,ALL") def get_pos(self): return self.tcp.send_cmd("GETPOS") def close(self): self.tcp.close() [hp860_api.py] HP860通讯API(可编程电源+光强采集): from communication.serial_com import SerialCom from config.settings import HP860_COM, BAUD_115200 class HP860API: def __init__(self): self.ser = SerialCom(HP860_COM, BAUD_115200) def connect(self): return self.ser.open() def set_current(self, mA): # 设置正向电流If return self.ser.send_recv(f"SETIF,{mA}") def led_on(self): return self.ser.send_recv("LEDON") def led_off(self): return self.ser.send_recv("LEDOFF") def get_luminous(self): # 读取光强+功率 return self.ser.send_recv("GETLUM") def get_vf(self): return self.ser.send_recv("GETVF") def set_range(self, r): # 0=×1,1=×10,2=×100,3=×1000 return self.ser.send_recv(f"SETRANGE,{r}") def start_gonio_scan(self, step=1): return self.ser.send_recv(f"SCANSTART,{step}") def stop_scan(self): self.ser.send_recv("SCANSTOP") def close(self): self.ser.close() [hp350l_api.py] HP350L光谱辐射计API: from communication.serial_com import SerialCom from config.settings import HP350L_COM, BAUD_921600 class HP350LAPI: def __init__(self): self.ser = SerialCom(HP350L_COM, BAUD_921600) def connect(self): return self.ser.open() def get_basic_data(self): return self.ser.send_recv("GETBASIC") # lx,cd/m2,xy,CCT def get_nvis_data(self): return self.ser.send_recv("GETNVIS") # W/cm2-sr,NRI/NRB def get_spectrum(self): return self.ser.send_recv("GETSPEC") # 380-780nm array def get_chroma(self): return self.ser.send_recv("GETCHROMA") # uv, Ra, R1-R15 def close(self): self.ser.close() [test_task_ctrl.py] 全自动测试调度: from device_api.axis5_api import Axis5API …