概述
PIL模块是PSIM软件的附加选件。 它提供了处理器在环(PIL)仿真功能,其中系统的功率部分在计算机上的PSIM中进行了仿真,而系统的其余部分则在运行在DSP硬件板上的C代码中实现。 借助PIL模块,您可以轻松测试和验证控制代码,无论是由PSIM手写还是自动生成,都可以在实际的DSP硬件上通过PSIM中模拟的电源电路进行验证。
PSIM提供了两种PIL模块:通用的PIL模型PIL Block和专用的PIL模型PIL Block (InstaSPIN)。通用的PIL模型可以用于一般的PIL仿真,而专用的PIL模型PIL Block (InstaSPIN)既可以用于PIL仿真,也可以用于专门针对于TI InstaSPIN电机控制算法的代码生成。
PIL模块:供PIL仿真的接口模块。
PIL模块(InstaSPIN):供PIL仿真的接口模块,用于德州仪器公司的 InstaSPIN 电机控制算法。
应用实例
该教程详细介绍了如何采用通用的PIL模型一步步建立和执行PIL仿真的过程,主要步骤包括:
准备PIL仿真的代码
PSIM设置
硬件设置
以下以一个buck变换器的例子说明该过程,该例子位于PSIM安装目录下的“examples\PIL\Buck Converter (F28335)”。
2.1. 准备PIL仿真的代码
buck变换器的电路原理图如下:
图 176、BUCK变换器的电路原理图
buck变换器采用平均电流模式控制,开关频率20 kHz,单位延时模块U1代表数字控制固有的一个周期延时。
PIL仿真的第一步是生成代码,既可以手工写代码,也可以用PSIM的SimCoder功能自动生成代码,本教程采用PSIM自动生成代码。
生成代码
首先对电路进行修改,在电流传感器后增加一个A/D转换器,用PWM发生器替代载波和比较器,并且定义硬件目标板。关于如何使用SimCoder,可详细参考教程“Tutorial - Auto Code Generation for F2833x Target.pdf”。
A/D转换器和PWM发生器都是PSIM’s F2833x Target库中的模型,仿真模拟了F28335 DSP硬件中的A/D转换器和PWM发生器的功能。修改后的电路如下图所示,黄色高亮显示的是A/D转换器和PWM发生器。
图 177、用于代码生成的buck变换器的电路原理图
注意A/D转换器有一个内置的输入限制,如果A/D转换器的输入模式设置为DC,则输入限制范围为0~+3V;如果输入模式设置为AC,限制范围为-1.5V~+1.5V。当输入超出限制范围,将会强制限定为边界值。例如,输入模式设置为DC,输入iL将被限制到0~+3V。
PSIM可以对该电路进行仿真,并可自动生成能运行在DSP硬件上的代码。点击菜单栏Simulate >> Generate Code,将会生成一个名称为“buck converter (simcoder) (C code)”的子文件夹,内含C代码和其他CCS必须的文件。拷贝一个该子文件夹的副本,命名为“buck converter (PIL) (C code)”,用于PIL仿真的代码修改。
修改PIL仿真的代码
产生代码后(手写或PSIM生成),第二步是确定与PSIM之间的接口变量。采用PIL模型作为接口,接口变量包括来自PSIM的信号(测量的电压或电流等)和发送给PSIM的信号(PWM调制信号等),下面是一些典型的接口变量:
来自于PSIM:A/D转换器的输出变量;
发送给PSIM:PWM发生器的输入,和任何其他用于显示/调试的内部变量。
例如,本例中来自PSIM的变量是A/D转换器的输出,发送给PSIM的变量是PWM发生器输入端的调制信号Vm,如果想监控内部信号Verr,可以将Verr作为额外的接口变量。
需要注意PWM发生器的输出不能作为接口变量,PWM发生器的输出是硬件输出引脚上的真实的PWM门级信号,不能直接发送给PSIM,PWM门级信号需要通过PSIM中的电路产生。
只需要修改两处代码:
所有的接口变量都必须定义为全局变量,接口变量初始化为0;
给ADC输出赋值的代码语句需要注释掉,这是因为硬件中实际的ADC引脚上没有输入,接口变量的值必须来自PSIM。
下面是“buck_converter__simcoder_.c” 文件中(位于子文件夹“buck converter (simcoder) (C code)”内)修改之前的原始的中断服务子程序代码:
从代码中可以确定接口变量:ADC输出fTI_ADC1和PWM发生器的输入fSUMP1,黄色高亮显示的fSUM1即为误差信号Verr。
采用文本编辑器打开子文件夹“buck converter (simcoder) (C code)”中的文件“buck_converter__simcoder_.c”,依据前面的说明进行修改,注意接口变量需要初始化为0。下面是修改后的代码。
黄色高亮显示的代码行是修改的部分,这些是:
变量fTI_ADC1、fSUM1和fSUMP1被定义为全局变量,同时在中断函数内部的定义都去掉了;
ADC的变量fTI_ADC1被注释掉。
然后编译修改后的代码。在CCS中,依次点击Project >> Import Legacy CCS v3.3 Project,选择文件夹“buck converter (PIL) (C code)”中的“buck_converter__simcoder_.pjt”。注意导入之前的CCS v3.3工程只能进行一次,一旦转换成CCS v6.1或更高的版本之后,即使是代码经过了修改,工程文件也可以直接打开。
在CCS环境下,依次点击Project >> Build All建立工程,在文件夹“buck converter (PIL) (C code)/RamDebug”中生成硬件可执行代码“buck_converter__simcoder_.out”,注意可执行代码也可以在RAM和Flash中进行编译。
2.2. 设置PSIM
要使原理图可以进行PIL仿真,需要保证支持CCS文件夹路径。如果CCS v5安装在“c:\TI\ccsv5”路径下或CCS v6安装在“c:\TI\ccsv6”路径下,不需要任何操作,因为PSIM已经包含了以上两个文件夹路径。如果CCS不是安装在上述两个文件夹路径下,需要通过Options >> Set Path将CCS的安装文件夹路径添加到PSIM的搜索路径中。
对之前的电路进行修改,除了PWM发生器和单位延时模块U1,移除控制电路,用PIL模型替代(PIL模型位于模型库中Elements>> Control >> PIL Module下)。保留单位延时模块的原因是PIL模型不包括任何延时。同时PIL的输入需要限制在0~3V范围内,这是为了模拟内置的A/D转换器的限幅特性,防止输入超出限定范围。
修改后的电路如下图所示。
图 178、用于PIL仿真的修改后的电路原理图
本例中,PIL模块的定义如下。
图 179、PIL模块的定义
当选项Run Code Composer Studio in simulation勾选上后,开始运行前需要等待CCS启动。同样,PIL仿真时不要退出CCS。如果需要在CCS中调试代码,在PSIM中点击Simulate >> Pause Simulation,将PIL仿真暂停保持,然后在CCS中进行单步调试。注意暂停时,PSIM传递给DSP的值保持不变,如要重新恢复仿真,在PSIM中点击Simulate >> Restart Simulation。
选择Run Code Composer Studio in simulation后,如果CCS未启动,而是出现了Eclipse平台资源窗口,如下图所示,需要找到Window >> Open Perspective,选择CCS Debug,将会打开CCS窗口。
图 180、CCS启动界面
需要注意,目前具有多重采样频率的PIL仿真还未经过验证,建议如果遇到多重采样频率的情况,采用最高采样频率对所有输入变量进行采样,然后经ADC之后降低所选变量的采样频率。例如,有两个输入,一个是10kHz,另一个是1kHz,对两个信号都采用10kHz进行采样,然后通过1-kHz的零阶保持器将第二个信号的采样频率降低为1kHz。
2.3. 设置硬件
PIL仿真唯一需要的硬件设置就是将控制器硬件连接至电脑,该例子中,通过USB连接线将TI的实验套件和电脑连接,如下图所示。
图 181、PIL的硬件配置图
控制器硬件连接上以后,在PSIM中点击菜单栏Simulate >> Run Simulation运行仿真,PSIM将会与控制器硬件建立连接,连接正确建立后,将会建立下面的对话框:
图 182、PIL运行信息窗口
仿真运行时,不要关闭该对话框。如同普通的PSIM仿真方法类似,既可以在仿真运行过程中,也可以在仿真结束后显示波形。
2.4. 在TI CCS中进行PIL仿真调试
执行PIL仿真时,可以在CCS中调试代码。如果要调试代码,需要勾选“Run Code Composer Studio in simulation”复选框,如下图所示。
图 183、勾选CCS中调试代码
点击Run PSIM simulation启动仿真,弹出下面的对话框:
图 184、仿真启动提示
CCS将会启动,启动后点击OK关闭弹出窗口,开始PIL仿真。仿真运行过程中,在PSIM中点击Pause Simulation图标暂停仿真,该图标位于工具栏SIMVIEW图标左侧,如下图所示。
图 185、PSIM中仿真运行图
然后返回到CCS中,如果看到下面的信息:
点击Locate File…按钮,找到相应文件夹中的.c文件,加载.c文件后,CCS窗口显示如下:
图 186、CCS显示窗口信息
可以设置断点单步运行,也可以用前面的方法对代码进行调试,检测变量和寄存器的值。
在CCS中完成调试后,返回PSIM界面,点击Restart Simulation恢复运行PIL仿真。
PSIM的PIL仿真使用和设置都很方便,在缺少功率部分的情况下,它提供了一种验证控制器代码的有效方法,同时也可以执行在实物硬件上难以开展的各种测试,例如故障分析,并且大大地提高开发进程。

