关于实时仿真系列文章

进行半实物仿真其实是一件不太轻松的事情。尽管是直接将 MATLAB 中的模型稍作修改后导入,但这个 “稍作修改” 在某些时候很可能会相当棘手。导致这一现象出现的原因有: 在建模时使用了连续求解器,而 RT-LAB 仅支持离散求解器 原始模型封装时使用了大量的变量 杂乱的使用 from 和 goto(甚至多层包裹),但 RT-LAB 中的标签无法跨越子系统调用 模型中包含代数环,RT-LAB 不支持代数环的求解 Windows 的用户名为中文,而 RT-LAB 使用的 Python 2 不支持中文,导致后续步骤报错 其他各种不好的建模习惯(如信号线乱穿) RT-LAB 软件的各种 bug,可能前一天晚上还好好的,睡一觉起来就不行了(这不是开玩笑) 要使半实物仿真的过程变得轻松愉悦,最好避开上面所有列出的坑,从建模一开始就进行针对性的改造。最重要的是拥有一颗百折不挠、敢于折腾、善于查找问题的心。如果懂一点 C/C++ 或 Python 就再好不过了。 本系列仅仅将在进行半实物仿真实验过程中遇到的问题和解决经验进行记录,不是 RT-LAB 的软件说明书,也不是仿真器的硬件手册,如果需要详细的说明请去 OPAL-RT 官网 查看。本系列仍在更新中,欢迎提出建议。

January 20, 2024

RT-LAB 简介

RT-LAB 是一款实时仿真应用软件,由加拿大 OPAL-RT 公司开发,一般与该 公司研发的实时计算机配合使用。RT-LAB 需要同时安装在上位机和下位机上。 其主要特点包括: 与 Matlab/Simulink 仿真平台充分集成,只要会使用 Simulink 就能对 RT-LAB 迅速上手,使用户能移植原有软件使用的经验; 特殊的软件模块用来实现分布式计算的内部通信和 I/O 数据传输; RT-LAB 提供了一种均衡负荷的机制,用户只要做部分设置,就能将模型划分为多个模块,送入多个核中并行计算; 与第三方建模环境和用户代码库充分集成。RT-LAB 支持 StateFlow, StateMate,CarSimRT,GT-PowerRT,AMESim,Dymola,合法的 C,C++, FORTRAN 代码; 拥有完整的 API,支持用户开发自己的应用, 运用 LABVIEW,C, C++,Visual Basic,TestStand,Python 和 3D 虚拟现实工具,能够生成自定义功能和自动测试接口; RT-LAB 提供了内部处理器之间数据的无缝传输,使用 UDP/IP 和内存共享技术,实现目标处理器通信的超短延时; XHP 模式能提高电力系统仿真效率。 模型分割是整个并行仿真系统的核心思想。如果仿真模型较为复杂,无法在单个处理器上实时运行,通过 RT-LAB 提供的工具能够方便地把仿真模型分割成几个规模较小的子模型,然后在多个处理器上并行处理这些子模型。在一个计算步长内,计算机系统不但要解算仿真模型,还要管理任务,如读写 I/O、 刷新系统时钟、处理通讯,这就限制了用于解算仿真模型的系统资源,从而限制了单处理器上计算模型的大小。RT-LAB 通过优化资源配置,降低了管理任务占用的系统资源,提高了计算复杂模型的能力。

February 1, 2024

实时仿真简介

实时仿真中的时间概念 仿真模型是在另一个时空中存在的关于实际系统的虚拟映射模型。在真实电力系统中一秒钟所历经的各种动态过程,反映在仿真模型中则历经这些动态过程的时间会相应地延长或者缩短。而且这种时间延长或者缩短的比例并不是固定不变的。实时仿真的众多应用都是建立在实时特性的基础之上的。为了明确实时仿真的内涵和外延,首先需要讨论一下实时仿真中的两个时空和三种时间概念。 所谓的两个时空,是指自然时空和仿真时空。前者指我们存在的时空,后者指仿真模型运行时所处的时空。自然时空的时间轴没有起点,没有终点,时间均匀向前推动。仿真时空的起始、终止时间可以人为设定,如果采用定步长算法,则时间均匀向前推动;如果采用变步长算法,则时间非均匀向前推动。 下面引入实时仿真中的三种时间概念,它们分别是自然时间、机器时间和仿真时间。 自然时间(Real time),指自然时空客观存在的时间 机器时间(Machine Time),指仿真计算机的脉冲时钟累计的时间 仿真时间(Simulation Time),指仿真模型运行时仿真时空中的时间 在这三种时间中,只有自然时间是唯一的。不管你在世界上哪一个地方, 采用哪一台仿真计算机,自然时间都一样。对于机器时间的概念,我们可以借助石英手表来理解。石英手表以石英振荡器作为时间基准, 频率一般为 32768Hz。石英振荡器脉冲信号的计数可以折算成表盘上的时间。机器时间是对自然时间的近似,存在一定的误差。石英手表的工作误差一般小于 0.5s 每日,采用不同精度的石英手表,会有不同的机器时间。但当计时设备精度足够高时,我们可以认为机器时间等同于自然时间。 在全数字仿真中,仿真模型由程序语言和解算算法构成,它在仿真时空中运行,与自然时空没有信息交互。但在实时仿真中,系统的一部分以仿真模型的形式运行在仿真计算机上,其余部分以实际物理设备的形态存在于自然时空中。这样一来,仿真时空就要与自然时空关联起来。而机器时间就是自然时空与仿真时空进行时间统一的中介。仿真时间以机器时间作为基准,当机器时间精度足够高时,可以认为仿真时间也与自然时间保持一致,这样的仿真即为实时仿真。 什么是实时仿真器 实时仿真计算机是指具有实时计算能力,配置 A/D、D/A、D/D 等多种输入 输出接口,且能够满足硬件在回路仿真需求的计算机。与普通承担离线仿真任务的计算机相比,实时仿真计算机具有如下特点: 一、强大的计算能力。我们建立的仿真模型一般属于复杂的连续动力系统,需要计算大量的加权求和、加权求积分、特殊函数以及非线性环节。虽然采用大步长算法、快速算法,能够改善计算速度,提高系统解算能力。但是,决定仿真计算机运算能力最为根本的,还是在于运算单元的硬件配置。如果运算单元 CPU 的主频高,缓存空间大,总线速率高,那么仿真计算机的运算能力就强。为了解决大规模系统解算问题,实时仿真计算机生产商采用的解决方案是配置多个并行计算的 CPU 单元,采用并行计算的仿真架构,通过对模型进行分块分解,将计算任务均匀分配到多个 CPU 中去。各个 CPU 运算单元之间数据交互的方式可以是共享存储空间,也可以采用超高速数据传输总线。目前,FPGA 运算单元虽然也在实时仿真机中大量使用,但仅限于对输入输出信号进行采样调理的功能,为基于串行计算的 CPU 运算单元做辅助。由于 FPGA 技术日新月异,实时仿真计算机生产商也在关注另一种架构,即采用 FPGA 作为基本运算单元,在 FPGA 芯片内部就实现了并行计算处理。 二、强大的 I/O 能力和专用接口设备。实时仿真的一个重要应用场合就是硬件在环仿真,需要接入实际的物理设备,现在还有一个应用趋势,就是接入功率放大器。为了满足这一要求,实时仿真计算机需要配置功能强大的 A/D,D/A,D/D 模块和专用接口设备。这些设备能以极高的采样频率采集外部输入信号,并将其转换成数字量,通过高速数据总线传输到 CPU 单元参与运算;还要能够将 CPU 运算产生的输出量稳定可靠地输出到接口,送给外部设备。为了满足大型实时仿真的需要,需要配置几十路甚至上百路 A/D,D/A,D/D 信号。实时仿真计算机生产商目前的解决方案是,采用 FPGA 板卡对输入输出信号进行调理,以扩展槽的方式根据用户需求灵活配置输入输出接口。I/O 设备的处理能力不但要快、准、稳,还要能与 CPU 高速通信,这就要求实时仿真计算机配置与高速 I/O 相匹配的高速 I/O 数据传输总线。 三、精确的可编程实时时钟。为了能够让仿真时空中运行的仿真模型与自然时空中的物理设备无缝对接,需要有精确可靠的实时时钟作为时间中介。由于现在的仿真计算机计算步长可以设置到 us 级别,这就要求实时时钟与自然时间的误差应该在 ns 级别。精确可靠的实时时钟是控制仿真模型计算步长和计算时间,确保仿真模型和外接实物实时同步控制的有力手段。

January 21, 2024