跳到主要内容

简单 Python 控制元件

案例介绍

本文档通过三个典型算例,介绍在 EMTLab 平台上使用自定义 Python 控制元件的方法:

  • 案例 1: 每时步触发的简单分段函数 Python 元件。
  • 案例 2: 固定频率触发且带有全局变量的阶梯爬坡信号发生器。
  • 案例 3: 外部触发的三相瞬时功率计算元件(多维输入输出)。
注意

公网试用平台暂不支持自定义 Python 元件。

使用方法说明

  1. 触发方式 Python 元件支持以下三种触发方式:
  • 每时步触发(默认):每个仿真步都会调用 Python 脚本。
  • 固定频率触发:需新增 Trigger 参数(实数,单位 Hz),设置后仅按指定频率触发执行。
  • 外部触发:将 Trigger 参数类型设为虚拟引脚,Python 代码仅在输入信号上升沿时被触发执行。
  1. 实时性限制
    Python 元件每次调用都需解释执行,复杂逻辑或高频触发时将增加 CPU 开销,影响仿真实时性,建议尽量简化控制逻辑或适当调低触发频率。

算例介绍

本案例的 Python 控制元件为可调斜率和分段点的分段函数:输入信号小于分段点时执行第一段斜率,大于等于分段点时执行第二段斜率。

调用 Python 分段函数
调用 Python 分段函数

案例中分段函数的输入引脚连接一个时间输入元件,在其输出引脚连接一个输出通道观测输出结果。

参数

参数名键名类型 [单位]描述
斜率1k1实数第一段函数斜率
斜率2k2实数第二段函数斜率
分段点横坐标a实数分段点横坐标
分段点纵坐标b实数分段点纵坐标

引脚

引脚名键名类型维度描述
inputinput输入1 × 1输入
outputoutput输出1 × 1输出

核心代码

简单分段函数
if input < args["a"]:
output = args["k1"] * input + args["b"] - args["k1"] * args["a"]
else:
output = args["k2"] * input + args["b"] - args["k2"] * args["a"]
return[output]

算例仿真测试

仿真结果如下,可以看出分段函数曲线的拐点位于 (2, 2),两段斜率分别为 1 和 6,曲线的分段点和斜率与设置参数一致。

Python 分段函数输出结果
Python 分段函数输出结果

算例文件下载链接

案例 1 算例文件下载:model_admin_Python_Test_Case1.zip
案例 2 算例文件下载:model_admin_Python_Test_Case2.zip
案例 3 算例文件下载:model_admin_Python_Test_Case3.zip
文件密码:cloudpss123

附:修改及调试日志

  • 20250716 编写案例文档