FRDM-MCXN947 上的 ML 无传感器异常检测
本用户指南提供有关如何在 FRDM-MCXN947 开发板上设置和使用无传感器异常检测演示的信息。本自述文件将指导用户完成基本的硬件和软件设置,以及使用 FreeMASTER 收集数据并使用 Time Series Studio 工具定义自定义模型的中间步骤。
此演示旨在展示如何将众多恩智浦工具集成到单一解决方案中。此演示利用 MCUXpresso SDK 开发基础驱动程序,LVGL 支持 GUI 和 PMSM 电机控制算法。使用 GUI Guider 开发了一个现代化且易于导航的用户界面。接下来,此演示结合 FreeMASTER 实时调试工具,使用机器学习通用数据记录器项目收集数据集,该项目也可作为独立项目在应用程序代码中心 (Application Code Hub) 上使用。此数据集可用于使用 eIQ? 工具包中的 Time Series Studio 工具开发自定义异常检测模型。
该应用使用电机控制算法来驱动带有风扇叶片的电机。此无传感器设置可作为使用机器学习算法进行无传感器异常检测的基准。
机器学习异常检测 (AD) 是一项仅已知系统正常运行状态的任务。AD 模型的目标是学习这些正常运行状态,任何不代表相同系统状态的异常都应归类为异常。在本应用中,异常检测无需任何额外的传感器,因此是一种经济高效的解决方案。异常检测使用速度值(计算值)和 Iq 电流值(用于驱动电机的测量值)。
以下是演示视频概述
主板:FRDM-MCXN947
类别:HMI、AI/ML、电机控制、异常检测、图形、用户界面
外设:显示器、DMA、PWM、定时器、UART
工具链:MCUXpresso IDE
目录
1.软件
2.硬件
- FRDM-MCXN947 开发板
- LCD-PAR-S035 3.5英寸480x320 IPS TFT液晶模块
- FRDM-MC-LVPMSM Freedom 开发平台,适用于低压三相 PMSM 电机控制
- 适用于 FRDM-MC-LVPMSM 的 24V 3.75Amps 电源
- Teknic M-2311P-xx-xxD 电机(或不同,但这需要手动参数设置 - 参见步骤 4.3)
- USB-C 线缆
3.硬件设置
- 在连接所有硬件之前,请先拆除 SJ10 上的连接。如下图所示,此连接不应连接到任何一侧。否则,FRDM-MC-LVPSM 板会干扰显示。
- 修改电路板后,按照下图所示连接所有屏蔽,然后继续连接电源和 USB-C 电缆。
- 可选择将您选择的风扇叶片安装到电机上(请小心,将带有叶片的电机放入外壳中以防止受伤)。
4.软件设置
4.1 下载并安装所需软件
- 下载并安装 MCUXpresso IDE 11.9.0 或更高版本
- 下载并安装适用于 FRDM-MCXN947 的 MCUXpresso SDK v2.16.0
- 可选地用于数据收集和模型开发:
- 下载并安装 eIQ Toolkit v1.13.1 或更高版本
- 下载并安装 FreeMASTER v3.2.4.3 或更高版本
4.2 从应用程序代码中心导入演示
- 启动 MCUXpresso IDE 并切换到任意工作区
- 单击从应用程序代码中心导入(如下图所示)
- 在 FRDM-MCXN947 上搜索 ML 无传感器异常检测
- 选择此演示并点击窗口顶部的“GitHub 链接”
- 继续“下一步”,确保在最后一页选择了项目,然后单击“完成”
4.3 可选:设置电机参数
- 如果您使用的是其他类型的电机,请编辑 /source/m1pmsmappconfig.h 文件,并使用您电机的参数进行更新。请注意,我们推荐使用 Teknic M-2311P-xx-xxD 电机。
4.4 运行演示
- 单击“Build”来构建项目。
- 构建成功完成后,单击“调试”将项目刷入开发板。
- 当到达代码入口点时,单击继续运行演示。
- 如果您已正确完成所有操作,您应该会在显示屏上看到 GUI(如下图所示)。
4.5 训练模型
- 如果您尚未进入“火车”选项卡,请使用底部导航栏切换到该选项卡
- 使用滑块设置用于训练的速度(最小值:0 RPM,最大值:3400 RPM)
- 点击“Train”开始训练过程
- 等待训练完成
- 在训练期间设置系统周围的速度和条件(例如风扇叶片前面的障碍物)将定义学习到的正常状态,这些条件之外的任何事物都应被视为不同程度的异常。
- 为了优化检测精度,您可以修改每个通道的采样数量(定义 MLSAMPLESPERCHANNEL)以及采样间隔时间(定义 MLSAMPLE_STEP)。这两个定义都位于 main.c 中。
- 注意:您可能需要收集新数据(参见步骤 4.9)并定义新模型(参见步骤 4.10),以使模型具有与新设置兼容的输入
4.6 增量训练
- 模型训练完成后,您可以再次点击“训练”按钮,将其重新训练到不同的正常状态。如果您只想用新的正常状态(例如不同的速度,这些速度都应视为正常状态)更新当前模型,只需将“增量学习”切换为“开启”状态,如下图所示。
- 如果您现在单击“训练”按钮,模型将继续使用其他正常状态更新模型
4.7 异常检测
- 使用底部导航栏切换到“检测”选项卡
- 使用滑块设置电机速度,并使用运行电机开关打开电机
- 将 Run ML 切换到 ON 状态将运行异常检测
- 显示屏右侧的滑块和标签显示当前预测结果。滑块填充得越多,当前状态就越接近正常状态。随着异常分数的增加,风扇的健康状况会逐渐下降,直至低于 TSSRECOMMENDEDTHRESHOLD,此时滑块将变为红色,状态将变为“异常”。所有超出训练值的情况都应视为异常,您可能需要调整阈值以获得最佳结果。此外,本文包含的模型仅供展示,为了获得更好的结果,您需要根据具体设置自行收集数据,并使用我们的 Time Series Studio 工具开发一个全新的、更优化的模型。
4.8 控制选项卡
- 从此选项卡控制电机与在检测选项卡(步骤 4.7 )中控制电机相同,但增加了驱动电机的物理量列表。
4.9 数据收集
- 为了收集数据,该演示使用了应用程序代码中心提供的另一个工具。该工具是“FreeMASTER ML 通用数据记录器”,更多信息请访问此链接。
- 通过修改main.c中的MLSAMPLESPERCHANNEL和MLSAMPLE_STEP来设置通道长度和采样频率
- 本演示实现了一个简单的数据记录器。要收集数据,请在 main.c 文件中将 ENABLE_MLUD 设置为 1,启用 MLUD 功能,并将代码重新写入开发板。
- 启动 FreeMASTER 并打开位于 MLUD_FreeMASTER 文件夹中的项目
- 转到 Project->Options->MAP Files,并确保默认符号文件指向 DEMODIR/Debug/FANAnomaly.axf
- 确保应用程序正在主板上运行
- 点击屏幕顶部工具栏中的“GO!”,将 FreeMASTER 连接到开发板
- 使用同一工具栏中的重新加载按钮重新加载数据记录器页面
- 设置目标文件夹。这是 FreeMASTER 项目目录的相对路径。注意:开始测量之前,请确保目标文件夹存在(更多信息请参阅此链接中的 ML Universal Datalogger README 文件)。
- 设置名称和请求的测量次数。
- 使用电路板显示屏上的任意控制选项卡启动电机
- 单击 FreeMASTER 窗口中的“开始测量”即可开始收集过程。
- 等待收集完成
4.10 模型开发
- 启动 eIQ Portal(这是 eIQ Toolkit 安装的一部分)
- 从 eIQ 门户启动时间序列工具。
- 从左侧菜单中选择异常检测
- 点击“创建新项目”,填写名称,从目标中选择 MCXN947,通道数设置为 2(在此演示中使用 I_q 电流和速度,但您可以修改代码以使用不同的变量或每个变量使用更多样本以获得更好的结果)
- 点击“确认并创建”
- 单击“加载正常数据”并导航到您在步骤 4.9中收集的数据。
- 选择任意数量的代表正常运行的文件
- 将分隔符设置为 Tab 并加载文件
- 对异常数据也采取同样的措施
- 切换到“训练”选项卡(屏幕顶部),然后单击“开始新训练”
- 将“设备上学习”切换为开启,您可以保持训练/验证比率不变。
- 点击“开始”,等待训练自动找到适合你的模型
- 切换到“仿真”选项卡并选择具有合适精度和合理 RAM 和 Flash 要求的模型
- 转到“部署”选项卡,从下拉菜单中选择您在上一步中选择的模型
- 确保在“生成”按钮下选择了“库”,并选择 MCUXpresso 作为 IDE
- 单击“生成”并将模型保存到您的电脑
- 将生成的 zip 中的所有文件复制到 MCUXpresso 项目文件夹 DEMODIR/source/tssmodel
- 使用新模型重新构建并运行演示。注意??:如果没有许可证,您只能运行模型推理 1000 次,之后需要重启系统。为了避免用尽所有 1000 次推理,请在 main.c 中为 GUIPREDICTFREQ 设置更大的值(但可能会遗漏一些异常),或者注册一个无限的 Time Series Studio 许可证。
- 有关时间序列工作室工作流程和功能的更多信息,请参阅工具菜单选项卡中提供的文档
5. 支持
如果您需要帮助,请在此存储库中创建问题或向NXP 社区创建票证。
项目元数据
来源:恩智浦appcodehub