在使用电磁暂态仿真软件 PSCAD 进行电力系统建模时,尽管软件内置了大量标准化电气元件和控制模块,但面对新型电力电子器件、自定义控制算法或特殊计算逻辑时,工程师常常需要创建自定义模块(User-defined Components)来满足更高的建模灵活性与计算需求。那么,PSCAD软件如何添加自定义模块?又如何定义模块接口,使其能够与其他模型模块高效交互?本文将从基础结构、实现路径到接口设置,系统讲解如何在 PSCAD 中构建功能完善、接口清晰、可复用的自定义模块。
一、PSCAD软件如何添加自定义模块
在 PSCAD 中,自定义模块是一种封装逻辑与图形界面的“黑盒组件”,通常包含图形层(可视化界面)、代码层(FORTRAN 编写的数学模型),以及参数配置层。通过这些层级的配合,用户可以构建具有自主控制逻辑、算法运行和信号交互能力的功能单元。
1. 打开或创建主工程
启动 PSCAD 软件,打开已有项目或新建一个 .pscx 工程文件;
保持结构清晰,建议为用户模块创建专属页面(如“CustomLib”)。
2. 插入空模块并命名
在项目树上,右键点击“Modules”,选择“Add New Module”;
为模块命名(如MyInverter、PI_Controller等),并双击打开;
进入模块内部,进入图形编辑模式,可布置输入、输出端口、参数控件等元素。
3. 添加输入输出端口
在左侧工具栏中,选择 "Port" 图标;
拖动到画布上放置端口,设置名称和方向(Input/Output);
注意合理命名,避免后续混淆(如 Vin、Iout、Enable 等);
输入端可用于接收模拟信号,输出端用于输出仿真结果。
4. 添加控制组件与表达逻辑
在模块内部放置 Math、Logic、Gain、Integrator、If-Else、Switch 等控制逻辑组件;
根据目标功能(如PI控制器、PWM发生器、过零检测器等)进行逻辑搭建;
所有控制图块均与外部 FORTRAN 代码可交互。
5. 编写/嵌入 Fortran 代码逻辑
如果逻辑复杂,也可以点击“Script”区域,打开代码编辑器;
在 Initial(初始化)、Branch(运行)、Final(收尾)等代码段中插入 Fortran 程序;
通过 VARIABLE、INPUT、OUTPUT 指令与图形层接口联动;
编译前需确保语法无误,所有变量声明完整,接口定义统一。
6. 保存模块并添加到主工程
回到主工程,在工作画布中点击“Modules”分类,找到刚创建的模块;
拖动到主电路图中,如同标准元件一样使用;
与系统中的信号、母线、电流源连接,组成完整仿真流程。

二、PSCAD如何定义模块接口
一个良好的模块接口,能够让自定义模块具备更强的移植性、复用性和扩展性。在 PSCAD 中,模块接口设计包含图形端口、参数输入、输出变量、FORTRAN函数定义、状态变量管理等几个层面。
1. 图形化端口定义
每个端口都对应一个信号输入或输出;
可设置端口类型:Control Signal(控制信号)、Electrical Connector(电流/电压连接)、Logical Connector(逻辑信号);
PSCAD 允许将端口编组,如Bus Group、Three Phase Connector以提升模块可读性;
命名规范建议采用前缀+类型(如 Vin_RMS、I_out、flag_ctrl 等)。
2. 参数定义(Parameter Interface)
在模块属性中点击“Parameters”标签;
添加参数名称、默认值、单位、可选范围;
用户在主电路中调用模块时可手动输入参数值;
也支持参数化控制(与外部变量或脚本联动);
示例:

3. FORTRAN接口代码设计
模块内所有变量、输入、输出、状态量均需在代码中清晰声明:

说明:
INPUT、OUTPUT 表示与图形端口绑定;
所有变量必须提前在 VARIABLE 中声明;
若存在积分、记忆等状态行为,应声明 STATE 类型变量,并用 SAV 存储。
4. 状态变量与多步计算管理
使用 STATE 定义有历史记忆的变量(如积分、滤波器);
利用 TSTEP(当前时间步长)进行基于时间的动态计算;
模拟离散系统或控制器时,需用 IF (T.GT.Tlast) 控制触发条件。
5. 模块嵌套与组件复用
自定义模块可以再次嵌套其他模块,形成层级结构;
将常用组件(如三相PWM、限幅器、电压源)统一封装为模块库,提升开发效率;
可导出为 .pslx 模块库文件供他人导入。

三、自定义模块的工程应用与最佳实践
掌握了自定义模块开发与接口设置之后,用户就可以在实际工程中发挥更大的建模能力。以下是几个典型应用与经验建议:
1. 创建新型电力电子模型
建立一个“多模式双向DC-DC变换器”模块;
输入:电压、电流、控制信号;
内部封装电感电流采样、开关逻辑、PWM控制器;
输出:控制信号反馈、电流变化波形;
可复用于储能系统、微网变换器等场景。
2. 自定义继电保护逻辑
构建基于时间-过电流保护的模块;
通过判断电流是否超过门限值 + 延时时长;
输出Trip信号控制断路器动作;
可扩展为距离保护、差动保护等复杂方案。
3. 嵌入外部DLL函数
若计算逻辑较复杂,可在模块中调用外部 .dll 动态库;
使用 CALL FUNCTION_NAME() 接口在 Fortran 中调用;
DLL函数可由 MATLAB/Python/C++ 编译生成;
实现外部模型嵌入(如机器学习控制器、MPPT算法等)。
4. 模块接口命名与文档规范化
所有模块命名需反映功能,如 PI_Controller、PLL_Module;
参数文档需提供默认值、物理意义、调参建议;
接口注释完整,便于团队协作与后期维护。

总结
PSCAD软件如何添加自定义模块 PSCAD如何定义模块接口,不仅是构建个性化仿真组件的必要手段,更是将理论算法、控制逻辑转化为仿真验证的重要桥梁。通过图形化建模与 Fortran 代码逻辑结合,用户可以在 PSCAD 中快速构建模块化、参数化、可重用的建模体系,实现从电力电子变换器、继电保护器、系统控制器到算法接口的全覆盖建模。科学定义模块接口、合理组织参数结构、封装通用功能组件,将极大提升工程效率与模型可扩展性,为实现电网数字孪生与智能仿真提供坚实的底层能力。