胡雨龙,杜路路,纪 攀,何迎飞
(1.中国南方电网有限责任公司超高压输电公司,广州 510620;2.特变电工新疆新能源股份有限公司,西安 710075)
柔性直流输电具有输送容量大、损耗小、送电距离远等优点,是实现中国能源优化的有效途径。阀控系统是联系上层控制保护系统与底层子模块的中间枢纽,其可靠性对柔性直流输电稳定运行有重要意义[1-2]。基于传统手写代码的开发流程一方面对开发人员代码编制能力要求较高,另一方面由于人为因素而造成产品的可靠性低,调试周期长,开发成本高且不利于后续产品维护。基于模型的可视化软件代码生成方法,因易仿真验证、高可靠性等优点,近年来广泛应用在汽车、军工、轨道交通等行业的控制系统[3-5]。在电力领域已有学者在可视化编程直流控制保护方面进行了研究[6-7],但可视化编程在柔性直流输电阀控装置中尚无应用。文献[9]和文献[10]在MATLAB/Simulink 自动代码生成环境下,采用图形化编程的方式分别实现汽车电控单元和电机控制器设计,但仅探讨了代码自动生成的单个细节,未涉及整体控制策略和实际产品应用。
本文以柔性直流输电阀控装置为研究对象,首先研究基于模型设计的软件开发流程及代码生成原理,详细阐述顺控模型及环流抑制模型的设计过程,对所搭建模型进行离线仿真调试验证,并将调试成功的模型一键生成代码移植至阀控控制器。最后,通过工程现场试验测试换流阀充电解锁启动运行的工况,验证基于模型设计的阀控软件开发方法的可行性。
基于模型设计的开发以模型为中心,模型构建过程即为设计过程,设计过程中可以随时进行仿真以检查设计合理性。设计和验证过程中,通过自动代码生成可以将设计的算法模型自动转换成C,C++,HDL 和PLC 代码,不需要手工编写算法代码,节省时间,减少错误,生成的代码可针对芯片进行优化,直接布置到硬件设备中。
MATLAB 中Simulink Coder 将模型生成代码过程分为模型解析、代码生成两部分。
1)模型解析。
Simulink Coder 首先对搭建的控制软件模型进行编译,生成.rtw 格式的模型描述文件,文件描述了所有模块、输入、输出、参数、状态等模型的全部配置和属性信息。
2)代码生成。
TLC(目标语言编译器)读取.rtw 格式文件,并依据目标文件.tlc 格式文件生成C 代码。其原理如图1 所示。
图1 代码生成原理
完整的软件工程包括应用层代码和底层驱动代码。一般模型生成代码的部分为应用层代码,底层驱动部分若用Simulink 搭建,既需要熟悉MCU(微控制单位)的内部架构,又需要掌握TLC代码和目标文件语法[10],开发时间成本高,因此本阀控装置软件开发底层驱动部分仍采用手写代码方式。
将底层硬件驱动程序和自生成应用层程序代码整合,经过代码编译器生成硬件支持的.out 格式可执行文件,并将其下载至控制器中。
柔性直流输电单端系统如图2 所示。阀控系统实现的主要功能有:接收CCP(换流器控制保护设备)传送的命令,控制系统处于停机态、充电态、待解锁态或运行态;抑制桥臂电流二倍频环流功能;故障保护功能。
图2 柔性直流输电单端系统
依据阀控装置的功能需求,使用Simulink 工具箱和Stateflow 工具箱搭建设备的控制软件模型,包括顺序控制、环流抑制、模块比对、故障保护、子模块冗余控制、系统冗余切换等。
为实现阀控装置的顺序控制功能,设计顺序控制逻辑流程如图3 所示。正常运行模式下顺序控制主要有上电初始化、停机态、充电态、待解锁态、运行态和故障态。
图3 顺序控制逻辑
利用Stateflow 搭建顺序控制可视化模型如图4 所示。
图4 顺序控制模型
停机态:若该状态下检测到跳闸类故障Fw不为0,则转为故障态;若未检测到跳闸类故障Fw,且CCP 下发的命令EnergizeMode(运行/停运状态)由无效(0x5555)变为有效(0xAAAA),则阀控系统进入充电态。
充电态:充电状态下若接收到CCP 下发的停运命令(EnergizeMode=0x5555),进入停机态;充电状态下若检测到故障Fw 不为0,则转为故障态;正常充电状态下根据CCP 下发充电模式命令字,执行不同的不控充电、可控充电逻辑;充电完成判断充电电压满足解锁要求后,进入待解锁态。
进入待解锁态充电电压的满足条件如图5 所示:全桥子模块平均电压与半桥模块平均电压差小于设定值;全局子模块平均电压大于模块电压给定值。
图5 进入待解锁态充电电压满足条件
待解锁态:待解锁状态下,检测到跳闸类故障Fw 不为0,阀控系统进入故障态;若接收到CCP下发的停运命令(EnergizeMode=0x5555),进入停机态;若此待解锁态是由充电态转入待解锁态,则接收到CCP 的解锁命令(DEBLOCK=0xAAAA),进入运行态。
运行态:运行态下检测到跳闸类故障Fw 不为0,阀控系统进入故障态;若接收到CCP 下发的停运命令(EnergizeMode=0x5555),进入停机态;运行状态下若接收到CCP 下发闭锁命令(DEBLOCK=0x5555),则进入待解锁态;正常运行状态下,CCP 下发解锁命令(DEBLOCK=0xAAAA),阀控系统向模块下发解锁命令(PWM_ON)。
MMC(模块化多电平换流器)处于四象限运行时,桥臂电流含直流分量、工频交流分量以及二倍频环流分量。其中,二倍频环流分量为谐波扰动,在一定程度上增加了功率模块的运行损耗。采用如图6 所示的dq 轴电流解耦矢量控制方案进行环流抑制,通过abc/dq 坐标变换模块(Tabc/dq)得到桥臂电流二倍频分量,通过PI(比例-积分)控制及dq 轴解耦控制产生环流抑制分量,叠加至CCP 下发的调制波中,最终实现环流抑制。图6 中,ipj,inj(j=a,b,c)为三相桥臂电流;idiiffj为MMC 三相内部电流;i2fd,i2fq分别为内部环流 的d 轴、q轴分量,i2fd_ref,i2fq_ref分别为环流d轴、q 轴分量的参考值;Mdiffd_ref,Mdiffq_ref分别为环流抑制参考电压d 轴、q 轴分量;Mdiffj_ref(j=a,b,c)为三相环流抑制参考电压;ω 为基波角频率;L为连接电感;θcir为交流电压二倍频相位角。
图6 环流抑制控制框图
与环流抑制控制框图相对应的,环流抑制可视化模型主要由Tabc/dq(坐标变换)模块、PI 控制模块、Tdq/abc(坐标反变换)模块三部分组成,如图7 所示。
图7 环流抑制总体模型
1)Tabc/dq 模块如图8 所示。该模块主要功能为通过abc/dq 坐标变换获取桥臂电流二倍频分量。
图8 Tabc/dq 模块模型
2)PI 控制模块如图9 所示。该模块根据系统实际情况计算环流抑制或环流注入给定值,给定值以斜坡方式输入PI 控制器,经计算得到dq 坐标系下环流抑制分量。
图9 PI 控制模块模型
3)Tdq/abc 模块如图10 所示。该模块主要功能为通过dq/abc 坐标变换得到三相的环流抑制分量。
图10 Tdq/abc 模块模型
将以上搭建的阀控软件模型与CCP 模型、MMC 模型结合,对软件功能进行离线仿真,以验证顺序控制、环流抑制等功能是否与设计需求一致。
系统充电及解锁仿真试验波形如图11 所示。
图11 交流充电及解锁仿真试验波形
1)交流断路器分闸时,换流阀处于停机状态(seqState=1)。
2)1 s 时交流断路器合闸后,CCP 下发运行命令,EnergizeMode 由0x5555 变为0xAAAA,换流阀进入充电状态(seqState=3),模块开始充电。
3)经不控充电和可控充电后,模块电压不断上升,当模块电压满足解锁条件(DetlaFlag&VolOkFlag=1),换流阀充电完成进入待解锁态(seqState=4)。
4)13.5 s 时CCP 下发解锁命令,换流阀进入运行态(seqState=5),运行时子模块电容电压被稳定控制在2 100 V 左右。
启动过程各个阶段状态与设计的系统顺控逻辑一致,符合预期。
环流抑制仿真试验波形如图12 所示。环流抑制投入过程中,桥臂环流得到很好抑制,基本为0,环流抑制退出后,系统有较大的桥臂环流。仿真结果验证了顺序控制模型逻辑和环流抑制模型搭建的正确性,与设计需求一致。
图12 环流抑制仿真试验波形
基于模型开发的调试及优化过程如图13 所示。运用基于模型的软件设计方法,可以在软件仿真测试环节对各功能块逻辑进行调试,将软件调试提前至仿真阶段,修正大部分软件问题。另外,模型化设计方法可清晰展示阀控系统逻辑关系、算法结构和中间变量,提高软件的可读性和可控性,减少功能设计漏洞,有益于快速分析定位出软件设计中存在的问题。经过对模型逻辑进行多轮修正及验证,一键生成代码的功能基本与实际需求一致,大大缩短了开发周期与试验平台调试周期。
图13 基于模型开发的调试及优化过程
主控板DSP(数字信号处理器)代码生成及移植如图14 所示。经仿真验证的模型自动生成应用层代码后与主控板DSP 底层驱动代码结合,通过CCS(代码调试器)编译器编译生成可执行文件下载至阀控主控板DSP 中。底层驱动代码主要包括GPIO(通用输入/输出口)配置、SRIO(串行高速总线)配置、中断配置、与主控板FPGA(现场可编程门阵列)之间PCIE(高速串行计算机扩展总线)通信、E2ROM(带电可擦可编程只读存储器)读写操作等。应用层程序通过底层PCIE 通信程序读取主控板FPGA 发送的命令和数据,经过逻辑处理后通过PCIE 通信发送反馈的命令和数据至主控板FPGA。主控板FPGA 完成与CCP、桥臂控制板等之间通信。主控板FPGA 及阀控其他所有控制板FPGA 代码均仍采用手写代码方式。
图14 主控板DSP 代码生成及移植
分别测试阀控在整个启动过程中自生成代码与手写代码的程序最大执行时间,DSP 中断周期为50 μs,测试结果见表1。
表1 自生成代码与手写代码执行效率对比
自生成代码的最大程序执行时间为17.23 μs,手写代码最大执行时间为16.95 μs,DSP 负载率相差0.57%,测试结果表明自生成代码可以保证较高的执行效率。
对乌东德电站送电广东广西特高压多端直流示范工程柳北换流站极1 低端换流阀现场进行单端解锁运行及环流抑制投退,试验波形如图15、图16 所示。
图15 交流充电及解锁试验波形
图16 环流抑制投退试验波形
基于模型设计开发的阀控系统在接受CCP下发的不同指令后,正确完成顺序控制逻辑,分别使换流阀进入停机、不控充电、可控充电、待解锁、运行等阶段,模块电压不断上升,逐渐稳定在2 100 V。整个启动过程具有良好的动态及稳定性能,验证了顺序控制模型及自生成代码的有效性。
环流抑制现场波形与仿真结果一致。环流抑制投入时,桥臂电流相对平衡,桥臂环流谐波量基本为0;环流抑制退出后,桥臂之间有很大的二倍频环流,桥臂电流有较大的谐波扰动,增加了功率模块的运行损耗。现场数据验证了阀控环流抑制整体控制策略模型及自生成代码的有效性。
本文阐述了以模型开发为核心的可视化编程开发流程,以柔性直流输电阀控装置为研究对象,设计顺控模型及环流抑制控制策略模型,现场测试结果表明运用自生成代码方法实现的功能与仿真结果相同,验证了基于模型设计的软件开发方法的正确性和有效性。本文研究成果如下:
1)软件设计过程可视化,可调用MATLAB算法库,简化了开发过程,可操作性强。
2)模型搭建过程中可随时对设计逻辑进行调试验证,经过对模型逻辑进行多轮修正及验证,一键生成代码的功能基本与实际需求一致,大大减少在硬件试验平台中的调试时间,提高了开发效率。
3)通过维护MATLAB 模型即可实现应用层代码的维护,提高了软件的可维护性,节省了人力物力。
4)本文仅针对阀控DSP 软件的模型设计进行研究及应用,后续可扩展至FPGA 软件模型设计研究,使阀控系统全面实现可视化软件设计。