模块
模块如图所示,添加步骤:基本指令,原有,LEAD_LAG超前和滞后算法。也可以直接搜索。
主要设置参数,除模块中所示四个参数外,超前和之后时间需要通过模块静态变量设置。如下图所示。
LD_TIME
为超前时间,LG_TIME
为延时时间。
测试
参数采样频率10ms,分别延时100ms和10ms。
仿真测试结果:
LG_TIME=100ms
LG_TIME=10ms
注意:
LEAD_LAG算法中超前、滞后时间与采样时间单位相同,当采样时间为ms,超前和滞后时间同样为ms。
参考学习视频
帮助文档
仅当在固定的程序周期中运行指令“提前和滞后算法”时,才生成正确的结果。参数 LD_TIME、LG_TIME 和 SAMPLE_T 中必须指定相同的运算单元。计算 LG_TIME > 4 + SAMPLE_T 时,该指令与以下函数类似:
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
当参数 GAIN 的值小于或等于零时,将不进行计算,并在参数 ERR_CODE 中输出错误信息。
“提前和滞后算法”指令可与回路一起用作动态前馈控制中的补偿器。该指令由两项操作组成。“提前”操作将输出 OUT 的相位进行移位,使得输出提前于输入。相反,“滞后”操作对输出进行移位,使得输出滞后于输入。由于“滞后”操作相当于积分,因此可用作噪声抑制器或低通滤波器。“提前”操作相当于微分,因此可用作高通滤波器。同时使用两种操作(“提前”和“滞后”),将导致在较低频率时输出的相位滞后于输入,而在较高频率时输出的相位提前于输入。这意味着“提前和滞后算法”指令可用作带通滤波器。
参数
下表列出了“提前和滞后算法”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 |
---|---|---|---|---|
EN | Input | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | I、Q、M、D、L | 使能输出 |
IN | Input | REAL | I、Q、M、D、L、P 或常量 | 待处理的当前采样时间(周期)输入值。 参数 IN 中也可指定常数。 |
SAMPLE_T | Input | INT | I、Q、M、D、L、P 或常量 | 采样时间 参数 SAMPLE_T 中也可指定常数。 |
OUT | Output | REAL | I、Q、M、D、L | 指令的结果 |
ERR_CODE | Output | WORD | I、Q、M、D、L | 错误信息 |
LD_TIME | Static | REAL | I、Q、M、D、L、P 或常量 | 提前时间的单位与采样时间的相同。 |
LG_TIME | Static | REAL | I、Q、M、D、L、P 或常量 | 滞后时间的单位与采样时间的相同。 |
GAIN | Static | REAL | I、Q、M、D、L、P 或常量 | %/% 的增益(稳态下输出变化与输入变化的比率)。 |
PREV_IN | Static | REAL | I、Q、M、D、L、P 或常量 | 上一次输入 |
PREV_OUT | Static | REAL | I、Q、M、D、L、P 或常量 | 上一次输出 |
ERR_CODE 参数
下表列出了 ERR_CODE 参数值的含义:
错误代码* | 说明 |
---|---|
0000 | 无错误 |
0009 | 参数 GAIN 的值小于或等于 0。 |
* 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显式格式的更多信息,请参见“另请参见”。 |
示例
以下示例说明了该指令的工作原理:
说明 可以初始化数据块中的静态参数。 |
下表通过具体的值对该指令的工作原理进行了说明。
执行前
在本例中,输入参数使用以下值:
参数 | 操作数 | 值 |
---|---|---|
IN | Tag_Input | 2.0 |
SAMPLE_T | Tag_InputSampleTime | 10 |
以下各值保存在该指令的背景数据块“LEAD_LAG_DB”中:
参数 | 地址 | 值 |
---|---|---|
LD_TIME | DBD12 | 2.0 |
LG_TIME | DBD16 | 2.0 |
GAIN | DBD20 | 1.0 |
PREV_IN | DBD24 | 6.0 |
PREV_OUT | DBD28 | 6.0 |
执行后
执行该指令之后,将以下各值写入输出参数:
参数 | 操作数 | 值 |
---|---|---|
OUT | Tag_Output_Result | 2.0 |
以下各值保存在该指令的背景数据块“LEAD_LAD_DB”中:
参数 | 操作数 | 值 |
---|---|---|
PREV_IN | DBD24 | 2.0 |
PREV_OUT | DBD28 | 2.0 |
有关以上示例中编程代码的更多信息,请参见“Sample Library for Instructions”。