基于PSCAD接口C语言的MMC暂态仿真方法
技术领域
本发明涉及一种基于PSCAD接口C语言的MMC暂态仿真方法,具体涉及一种基于PSCAD/EMTDC接口C语言实现MMC电磁暂态仿真方法,属于电力***自动化领域。
背景技术
随着高压大功率全控型电力电子器件(IGBT)的发展,柔***流和柔性直流输电技术被广泛应用于输配电领域,它是智能电网领域最具代表性的技术,在国内外的工程应用越来越多。与常规直流输电技术相比,柔性直流输电技术具有良好的控制性能,是最新一代的直流输电技术。柔***流输电技术(FlexibleACTransmissionSystem,FACTs)应用电力电子技术实现对输电网的快速控制,提高电网输送能力和安全稳定水平、增强电网运行灵活性,其中统一潮流控制器(UnifiedPowerFlowController,UPFC)代表了目前FACTs技术的最高水平,通过将换流器控制实现线路有功和无功功率的准确调节,提高输送能力及阻尼***振荡。
随着技术发展,换流器技术从两电平、三电平技术发展到模块化多电平换流器技术(ModularMultilevelConverter,MMC)。MMC拓扑的提出促进了柔性直流输电技术的发展,其使用模块级联来实现高电压,MMC结构如图1所示。相比于传统2电平、3电平的结构,MMC的模块化结构使其可扩展性强、输出电平数高,克服了传统电压源换流器存在开关频率高、输出电压谐波大、电压等级低、动态均压困难等缺点。然而MMC的半导体器件数量较多,且每个子模块SM需要单独控制。MMC拓扑中直流侧没有专门的电容,而是将电容分配到各个子模块中,直流电压由处于导通状态子模块的电容共同承担,为了保证MMC能够正常运行子模块电容电压平衡控制至关重要。目前,MMC换流阀控制通常采用最近电平逼近调制NLM技术,其能有效降低器件开关频率低、输电电压电流谐波含量低等优点,有助于柔性输电技术向高电压大功率输电领域的应用推广。MMC换流器的控制采用分层原则实现,如图2所示,一般由***层、换流器层及阀控层实现。换流器层控制主要是根据功率/电压指令,通过功率外环和电流内环的解耦控制产生换流器输出交流电压侧参考值作为调制波,阀层控根据该电压调制波采用最近电平逼近调制策略产生各桥臂投入子模块的数量,进而子模块电容平衡控制确定投入的子模块,并基于此产生触发信号控制子模块的投入和退出。以上这些技术特点,给基于MMC的柔***直流输电电磁暂态仿真带来了很大挑战。
电磁暂态仿真软件PSCAD/EMTDC(PowerSystemsComputerAidedDesign/ElectromagneticTransientsincludingDC)是使用最广泛的电磁暂态仿真工具之一,能实现电力电子器件微秒级工作状态的离线仿真,利用其元件库中元件模型能够开展换流阀及相关一次***的建模,并能实现一般控制逻辑的搭建。为了提高MMC及其控制功能完成、灵活仿真,以及兼顾仿真建模简单易用性,利用PSCAD/EMTDC提供用户自定义模型及接口功能,开展MMC及其控制逻辑建模具有重要意义。
PSCAD/EMTDC的用户自定义元件提供了与用户子程序的接口,可以弥补PSCAD中自带的模型元件相对单一的不足。目前,PSCAD/EMTDC可与Fortran、C和Matlab三种语言编写的程序代码进行接口,通过建立用户自定义元件实现其与外部程序接口的载体。用户自定义代码加入EMTDC中有两种方法:1)直接在用户自定义元件中编写Fortran代码实现元件功能,即把用户代码直接作为子程序直接嵌入到EMTDC主程序中;2)通过在自定义元件中添加对外部子程序(Fortran、C或Matlab)的调用声明,间接调用外部子程序,元件的核心功能由外部子程序实现。
采用Fortran编写源代码的自定义元件一般采用直接嵌入的方式,由于PSCAD/EMTDC是在Fortran语言上实现的,无需对外部子程序进行编译及频繁的调用,因而其内嵌性能好,运行效率高。基于C语言和Matlab构建的自定义元件同属间接调用的范畴,但两者又有所区别。前者是PSCAD/EMTDC与C程序设计语言的接口,外部的集成开发环境(如MicrosoftvisualC++等)在运行中仅充当编译的角色,不参与具体运算,由PSCAD/EMTDC直接调用经编译后的C语言代码进行运算;后者是PSCAD/EMTDC与Matlab软件的接口,由PSCAD/EMTDC直接调用MATLAB进行运算,除了两者本身所固有的运算速度上的差异以外,两者间的通信也很大程度上影响了整个仿真的效率,因而其运行效率要较前者低。
PSCAD软件自带的控制逻辑相关元件模型种类和功能有限,不足以实现基于MMC技术的柔***直流输电***及其控制功能的完整仿真,难于真实而准确的反应MMC的运行及故障暂态特性,因此本发明采用PSCAD/EMTDC提供用户自定义模型及接口功能,开展MMC及其控制逻辑建模。在实际应用中,Matlab使用方便,编程简单,但与PSCAD/EMTDC接口代码执行效率低,运算速度慢;C语言编程功能丰富、使用较广泛、表达能力强,目标程序效率高、可移植性好,专业技术人员基本掌握其编程技巧;Fortran语言数值计算效率高,但编程复杂,格式限制较多,一般工程技术人员较少使用。
发明内容
为了解决上述技术问题,本发明提供了基于PSCAD/EMTDC接口的MMC暂态仿真方法。
为了达到上述目的,本发明所采用的技术方案是:
基于PSCAD接口C语言的MMC暂态仿真方法,包括以下步骤,
步骤一,利用PSCAD/EMTDC进行MMC相关一次***建模,进行MMC换流器控制逻辑建模,并设置电压电流测量点;
步骤二,利用PSCAD/EMTDC自带的模型元件,根据最近电平逼近调制原理,由基于dq解耦的内环电流控制器产生电压调制信号Vref,确定MMC各相单元中上下桥臂触发投入的子模块数量;
步骤三,利用C语言构建子模块电容电压平衡控制函数;
所述电容电压平衡控制函数实现MMC一个相单元中一个桥臂子模块电容电压平衡控制;
所述电容电压平衡控制函数的输入参数包括:
MMC一个相单元中一个桥臂子模块总数;
MMC一个相单元中一个桥臂电流;
MMC一个相单元中一个桥臂子模块的电容电压;
MMC一个相单元中一个桥臂触发投入的子模块数量;
步骤四,利用Fortran语言编写PSCAD/EMTDC接口程序,接口程序输入参数,调用电容电压平衡控制函数,实现MMC暂态仿真;
所述接口程序的输入参数与子模块电容电压平衡控制函数的输入参数一致。
确定MMC各相单元中上下桥臂触发投入的子模块数量计算公式为,
其中,np表示MMC一个相单元中上桥臂触发子模块数量,nL表示MMC一个相单元中下桥臂触发子模块数量,表示MMC一个相单元一个桥臂子模块的数量,[]表示取四舍五入。
电容电压平衡控制函数实现MMC一个相单元中一个桥臂子模块电容电压平衡控制的过程如下,
A1)对该桥臂的所有子模块进行编号,初始化各子模块触发信号数组元素为0;
A2)采用冒泡排序法对,对子模块的电容电压按从高到低进行排序,同时按子模块电容电压从低到高的顺序存储对应的子模块编号;
A3)根据该桥臂电流的方向判断子模块触发导通后电容的充放电状态;
当桥臂电流流入子模块时,子模块触发后为电容充电,子模块触发信号数组元素变为1,按子模块电容电压从低到高的顺序选择n个子模块;
当桥臂电流流出子模块时(即桥臂电流小于零),子模块触发后为电容放电,子模块触发信号数组元素变为1,按子模块电容电压从高到低的顺序选择n个子模块;
n为该桥臂触发投入的子模块数量。
在调用电容电压平衡控制函数之前需要进行以下设置,
在PSCAD/EMTDC添加两个FileReference元件,实现电容电压平衡控制函数的C语言文件和接口程序的Fortran文件关联。
本发明所达到的有益效果:本发明能实现MMC及其控制功能的仿真,可方便的用于构建柔性直流输电仿真***,并结合实际工程建立了基于MMC拓扑的UPFC接入***的电磁暂态仿真***,可用于开展MMC换流器及柔***直流控制保护***运行特性及故障暂态特性仿真分析和相关研究。
附图说明
图1为MMC结构。
图2为MMC控制***功能及结构。
图3为本发明的流程图。
图4为电容电压平衡控制算法流程。
图5为基于本发明的MMC建模整体结构。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图3所示,基于PSCAD接口C语言的MMC暂态仿真方法,包括以下步骤:
步骤一,利用PSCAD/EMTDC进行MMC相关一次***建模,进行MMC换流器控制逻辑(包括外环功率控制,内环电流控制等)建模,并设置电压电流测量点。
步骤二,利用PSCAD/EMTDC自带的模型元件,根据最近电平逼近调制原理,由基于dq解耦的内环电流控制器产生电压调制信号Vrfe,确定MMC各相单元中上下桥臂触发投入的子模块数量。
计算公式为,
其中,np表示MMC一个相单元中上桥臂触发子模块数量,nL表示MMC一个相单元中下桥臂触发子模块数量,表示MMC一个相单元一个桥臂子模块的数量,[]表示取四舍五入。
步骤三,利用C语言构建子模块电容电压平衡控制函数。
这里可采用C语言编程软件(如MicrosoftVisualC++)构建电容电压平衡控制函数(即电容电压平衡控制程序),该电容电压平衡控制函数实现MMC一个相单元中一个桥臂子模块SM电容电压平衡控制。
电容电压平衡控制函数的输入参数包括:
MMC一个相单元中一个桥臂子模块总数;
MMC一个相单元中一个桥臂电流;
MMC一个相单元中一个桥臂子模块的电容电压;
MMC一个相单元中一个桥臂触发投入的子模块数量。
具体过程如图4所示:
A1)对该桥臂的所有子模块进行编号,初始化各子模块触发信号数组元素为0;
触发信号数组元素包括0和1,其中0表示子模块没有被触发,1表示子模块被触发;
A2)采用冒泡排序法对,对子模块的电容电压按从高到低进行排序,同时按子模块电容电压从低到高的顺序存储对应的子模块编号;
A3)根据该桥臂电流的方向判断子模块触发导通后电容的充放电状态;
当桥臂电流流入子模块时,子模块触发后为电容充电,子模块触发信号数组元素变为1,按子模块电容电压从低到高的顺序选择n个子模块;
当桥臂电流流出子模块时,子模块触发后为电容放电,子模块触发信号数组元素变为1,按子模块电容电压从高到低的顺序选择n个子模块;
n为该桥臂触发投入的子模块数量。
电容电压平衡控制函数的输入参数为触发投入的子模块编号,上述电容电压平衡控制函数用于实现仿真中对子模块电容电压的平衡控制和子模块触发信号的产生;对于三相MMC,三个相单元共六个桥臂,每个桥臂均可采用上述算法实现。
步骤四,利用Fortran语言编写PSCAD/EMTDC接口程序,结合接口程序输入参数,调用电容电压平衡控制函数,实现MMC暂态仿真。
上述接口程序的输入参数与电容电压平衡控制函数的输入参数一致。
在调用电容电压平衡控制函数之前需要进行以下设置:在PSCAD/EMTDC添加两个FileReference元件,实现电容电压平衡控制函数的C语言文件和接口程序的Fortran文件关联。
在上述仿真方法的基础上,可构建了基于PSCAD/EMTDC接口C语言的MMC暂态仿真***,建模结构如图5所示。
上述仿真方法实现了基于PSCAD/EMTDC接口C语言的MMC暂态仿真,能完成基于MMC的柔***直流输电***的电磁暂态特性分析及相关控制保护***逻辑的仿真验证。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。