在处理器在环(PIL)仿真中,控制算法在目标硬件中执行,而工厂模型运行在主机上。工厂模型模拟控制器的输入和输出信号,并使用串行通信接口与控制器进行通信。此功能允许您使用PIL模拟来确定目标硬件上的执行时间,然后您可以将其与主机上模拟模型的执行时间进行比较。
执行时间,或者从PIL模拟中获得的算法的性能指标,可以帮助您检测目标硬件上的算法溢出。PIL分析报告显示了算法在目标硬件上的平均和最大执行时间。这个例子解释了德州仪器™LAUNCHXL-F28379D硬件板上的PIL profiling。
本示例使用mcb_pmsm_foc_sim.slx
模型在PIL仿真中显示代码验证。这个例子显示了模型中当前控制子系统的PIL分析。这个子系统包括场定向控制(FOC)、电流缩放(单位转换)、速度测量和转子位置缩放(从编码器位置计数计算角度)算法。PIL分析报告显示了控制算法在目标硬件中的平均和最大执行时间。
这个例子包括以下任务:
通过在仿真和目标硬件运行模式下比较算法,使用PIL测试验证代码的执行。
通过测量算法在目标硬件上的执行时间来进行PIL profiling,并生成PIL profiling报告。
嵌入式编码器®
德州仪器C2000™处理器的嵌金宝app入式编码器支持包
LAUNCHXL-F28379D控制器硬件板
打开mcb_pmsm_foc_sim.slx
模型。
open_system(“mcb_pmsm_foc_sim.slx”);
该模型仿真了永磁同步电动机和闭环速度控制的FOC算法。
在硬件选项卡,单击金宝app硬件设置.
在配置参数对话框,在硬件实现,设置硬件板字段TI Delfino F28379D发射台
.
在“配置参数”对话框中,选择下面的配置设置硬件实现>硬件板设置>目标硬件资源>公益诉讼:
通信接口——选择串行
.
SCI模块——选择SCI_A
.
串口在MATLAB偏好—设备会自动检测硬件所连接的通信端口。该参数在当前活动的MATLAB的其余部分保持不变®会话。单击刷新按钮,重新检测通信端口。
打开mcb_PIL_config_TI.m
脚本文件,用于设置配置参数。
编辑(“mcb_PIL_config_TI.m”);
更新脚本中的模型名称和停止时间。
运行脚本更新仿真模型的配置参数和PIL参数。
控件中右键单击Current Control子系统mcb_pmsm_foc_sim.slx
模型的例子。下C / c++代码菜单中,选择将这个子系统部署到硬件.
系统显示子系统的构建代码对话框。将存储类设置为内联
对所有参数。
点击构建要创建一个名为untitiled
其中包括一个名为“当前控制”的PIL子系统。
将当前控制子系统重命名为当前控制(PIL)。
复制当前控制(PIL)子系统,并替换当前控制子系统mcb_pmsm_foc_sim.slx
模型的例子。
在PIL模式下,系统将当前控制子系统部署到目标上,并在目标硬件上执行该子系统。
为了比较在主机模拟和在PIL模拟中的算法执行情况,将当前控制子系统与当前控制(PIL)子系统并行连接。此外,在子系统输出中启用信号记录功能。
在Simuli金宝appnk工具条上,选择银/公益诉讼经理应用程序从应用程序选项卡。
在银/公益诉讼将来发布,选择银/公益诉讼Sim卡
.
选择SIL/PIL模式的模型块
在被测系统字段。
点击运行银/公益诉讼在银/公益诉讼工具条来构建当前控制(PIL)子系统并将其部署到目标。
在系统部署子系统之后,当前控制(PIL)子系统在目标硬件处理器上执行,而工厂模型在主机上运行。
当PIL模拟结束时,系统生成一个分析报告。
请注意
PIL仿真比基于主机的仿真花费更多的时间。这是因为在目标硬件上运行的主机和子系统之间存在串行通信(与电流控制(PIL)子系统的输入和输出相关)。
这个分析报告是针对定点数据类型的,它显示了当前控制(PIL)子系统在目标硬件上运行的最大和平均执行时间。
你可以使用数据检查按钮模拟选项卡比较基于主机的模拟和PIL模拟(在目标上执行)期间记录的信号。这有助于验证基于主机的模拟和PIL模拟的准确性。
这张图比较了来自电流控制(PIL)和电流控制子系统的速度反馈信号。
如果执行时间超过预算时间的60%,您可以使用以下技术之一优化算法:
执行从RAM。
将一些功能卸载到CLA或其他cpu。
扩展算法以在每个交替周期运行。
将较不重要的功能,如速度计算,移动到较慢的速度。
有关SIL/PIL代码验证的详细信息,请参见: