3.3.4 实时仿真计算机认知实验

3.3.4 实时仿真计算机认知实验

1.实验目的

(1)了解iHawk实时仿真机SimWB仿真环境的基本操作流程。

(2)学习MATLAB/Simulink建模方法和C语言建模方法。

(3)理解数字量与字符串变量的转换过程,掌握串口映射方法,实现串口通信。

2.实验内容

(1)建立典型能源系统半实物仿真架构,并操作完整半实物仿真流程。

(2)建立正弦变化的输出功率模型,用于生成电子负载功率加载指令。

(3)建立串口通信映射接口,实现iHawk仿真机对电子负载的功率控制。

3.实验设备及软件

本实验所需的设备主要包括实时仿真计算机、电子负载、光伏阵列模拟器(本实验用作可编程直流电源)、客户端、仿真环境及仿真建模软件等,如表3-8所示。

表3-8 本实验所选用设备及软件

4.实验过程

1)设备连接

如图3-31所示,在未上电状态下,将光伏阵列模拟器与电子负载相连,通过专用的TTL-RS232串口线,将电子负载远程控制器接口与实时仿真机MOXA串口的1通道相连,采用一根网线将客户端与iHawk实时仿真机相连。

图3-31  实时仿真计算机实验设备连接

2)建立电子负载控制指令模型

打开MALTAB/Simulink软件,如图3-32所示。建立周期为50 s,在[20 W,100 W]区间的正弦函数:

图3-32 建立功率指令模型并设置固定步长

(a)仿真模型及运行结果;(b)设置求解器

设置仿真机时间为50 s,采用固定步长为0.1 s,选择ode3求解器,运行仿真结果如图3-32(a)所示。

3)编译下载仿真模型,构建RTDB变量

(1)登录实时仿真机,如图3-33所示。在Simulink模型界面,由SimWB无缝集成接口打开MATLAB套件工具界面(ML Toolkit GUI)。输入iHawk实时仿真机网络地址(92.168.31.100)、用户名称(如ZXH)、登录密码,然后单击“Connect”按钮连接到iHawk实时仿真机(又称服务器)。

(2)建立实时数据库(real time data base,RTDB)。选择“RTDB Creator”选项卡,进入RTDB变量提取界面,选择前缀为“SW”的标志提取RTDB变量。注意:须将Simulink模型中需要纳入实时数据库中的模块名称加前缀“SW”,本示例中将输出引脚模块名称定义为“SWPOut”(图3-33),并定义RTDB名称为“EleLoad_PowCtrl”,如图3-34(a)所示。

图3-33 SimWB无缝集成接口

图3-34 建立RTDB并生成可执行代码

(a)建立RTDB;(b)生成代码

(3)编译Simulink模型。单击“Code Generator”选项卡,进入代码生成导出并编译界面,如图3-34(b)所示,保持默认值,单击“Generate,Export,and Make”按钮,编译模型。观察MATLAB命令行窗口,可看到生成和编译过程,并可看到编译成功的提示信息。

4)建立通信映射和仿真测试

启动SimWB软件。在客户端启动SIMulation Workbench Control Center,可见SimWB控制中心软件界面,如图3-35所示。然后,依次从第1步设置到第8步。

图3-35 SimWB控制中心软件界面

第1步,加载所建立的RTDB。单击“New/Select RTDB”,进入实时数据库选择界面,如图3-36所示。按照标记序号,先选中所建立的“EleLoad_PowCtrl”库,再单击“加载”图标按钮。

图3-36 选择所建立的RTDB

第2步,确认模型输出变量提取成功。单击“Analog Points”,进入浮点型变量定义界面,展开变量树,可以观察到所建立的变量SWPOut已被成功提取,且识别为double型输出变量,名称为“ele_load_pow.SWPOut”,已自动包含了Simulink模型文件的名称,如图3-37所示。

图3-37 Simulink模型输出功率变量提取成功

第3步,定义字符串变量。单击“String Points”,进入字符串变量定义界面,如图3-38所示。按照标记顺序操作,建立字符串变量EleLoad_PowCmd,并将其定义为输出类型。

图3-38 建立字符串输出变量

第4步,I/O变量映射。单击“I/O Mappings”,进入通信接口设置选项卡,如图3-39所示,按图中标识的1~6编号执行操作。光标定位在00号通道(Channel)输出(Output)位置处,右端字符串变量列表中,勾选EleLoad_PowCmd变量。然后,设置RS232通信协议,发送数据字节长度为20,发送周期为50 ms,波特率为115 200,无校验,字节长度为8位,1位停止位。

图3-39  串口变量映射

第5步,自定义C语言串口输出驱动。单击“User Programs”进入C模型编程界面,如图3-40所示,按图中所示的1~7编号执行操作。首先,选择所建模型所属的实时数据库RTDB为EleLoad_PowCtrl。然后,定义所建立的子项目名称,本示例为“EleLoad_PowOut”,单击“新建”图标按钮,即可生成对应项目文件夹和C语言程序模板文件,即“EleLoad_PowOut.c”。双击该文件,可以看到程序框架已经给出;在此基础上进行编程后,再编译生成可执行文件即可。

图3-40  自定义串口输出驱动

电子负载上电并初始化完成后,即可接收指令控制。出于安全考虑,建议在仿真机调试过程中不给电子负载上电。功率控制通常需要顺序执行三条指令——切换到恒功率模式(C W)、启动负载(ON)、更新功率(PW),其格式和定义如图3-41所示。其中,功率值是以4字节的十六进制数发送的,因此,需要将浮点型功率数值先转换为4位十六进制数,再填充到PW指令“功率值”处。然后,计算得到校验码后,才能获得某个功率下的完整指令。关于指令的定义详细介绍参见《ZY87系列可编程直流电子负载用户使用手册》。

图3-41  电子负载控制指令

第6步,建立仿真测试数据流。单击“Tests”,进入测试数据流设置界面,如图3-42所示,按照图中的1~5编号执行操作。新建测试并命名(本示例为EleLoad_PowC trl),并选择所属RTDB。然后,右键添加所建立模型的可执行文件,包括所建立的Simulink模型编译的可执行文件和C模型编译的可执行文件,左键拖动连接各部分的数据流向。

图3-42 仿真测试数据流

注意:在这一部分,如果单击右键后在列表中找不到模块4或5的可执行文件,则检查文件路径,比如在图3-42中的Project Folder是否正确选择了路径,正常需要Simulink和C语言生成的可行执行文件都在一个路径下,本示例中都需要在shelhuei的文件路径下。

第7步,建立测试启动窗口。单击“Test Sessions”,进入测试阶段启动界面,如图3-43所示,按图中的1~3编号执行操作,即可启动测试,观察右上角,若正常计数则说明启动成功。

图3-43 新建测试阶段

第8步,仿真过程实时图表显示设置。返回主界面,单击“RT Viewer”,进入显示设置界面,如图3-44所示,按照图中编号执行操作。首先,选中需要实时显示的变量,如“SWPOut”和“EleLoad_PowCmd”;然后,单击“Add to Table”按钮,即可在右端列表中显示变量的实时变化过程,如图3-44(a)所示。对于浮点型变量,单击选中变量后,单击“Add to Charts”按钮,即可通过曲线图实时显示变量的动态变化,如图3-44(b)所示。

图3-44 仿真过程实时显示

(a)添加到列表,观察数据值变化

图3-44 仿真过程实时显示(续)

(b)添加到曲线图,直观显示

5)实时仿真测试

(1)电力系统准备。在确认实时仿真机的测试处于停止运行状态后,分别给光伏阵列模拟器和电子负载上电。其中,光伏阵列模拟器采用恒压源模式,设定电压为25 V,设定电流为5 A。在确认电子负载处于“Off”状态且空载后,在光伏阵列模拟器按【开/关】键,开始供电,并从电子负载显示面板上观察输入电压是否正常。

(2)启动半实物仿真测试。在SimWB的“Test Sessions”界面中启动仿真,仿真运行正常后,观察电子负载的实际执行情况,判断其与仿真机提供的功率指令是否一致。

5.讨论与思考

(1)功率模型已经在Simulink环境中建立,为何还需要建立C语言模型?

(2)半实物仿真测试过程是在客户端上运行,还是在服务器上运行?

(3)如果仿真过程电子负载没有正常运行,如何判断电子负载接收到的指令是否正确?

(4)如果网络通信物理连接正常,供电也正常,客户端和服务器独立均工作正常,但已注册的用户通过客户端未能登录服务器,该从哪些方面进行检查修复?

(5)参考《ZY87系列可编程直流电子负载用户使用手册》中的电压和电流读取指令,增加实时仿真机对电子负载的电流和电压状态读取功能。