恭喜,你发布的帖子
发布于 2022-05-31 21:13:35
14楼
好家伙。你真的传了awl。好样的。这个做法是比较通用的,门槛比较低。
一不小心连200CN的都可以拿来用。
SUBROUTINE_BLOCK Ramp:SBR0
TITLE=子程序注释
VAR_INPUT
禁用斜坡函数:BOOL; // 0为启用斜坡,1为禁用
END_VAR
VAR_IN_OUT
设定值:REAL;
每秒变化值:REAL;
输出值:REAL;
END_VAR
BEGIN
Network 1
// 关闭斜坡函数发生器
LD L0.0
MOVR LD1, LD9
MOVR LD9, AC3
Network 2
// 启用斜坡函数,基于每秒变化量和上个周期的扫描时间计算 本扫描周期的变化量
LDN L0.0
LPS
MOVW SMW22, AC0
AENO
ITD AC0, AC0
AENO
DTR AC0, AC0
LPP
*R LD5, AC0
AENO
/R 1000.0, AC0
Network 3
// 启用斜坡函数后,输出值大于设定值,则当前值-每扫描周期变化量
LDN L0.0
AR< LD1, LD9
-R AC0, LD9
AENO
MOVR LD9, AC1
AENO
-R LD1, AC1
AENO
AR< AC1, 0.1
MOVR LD1, LD9
AENO
CRET
Network 4
// 启用斜坡函数后,输出值小于设定值,则当前值-每扫描周期变化量
LDN L0.0
AR> LD1, LD9
+R AC0, LD9
AENO
MOVR LD1, AC1
AENO
-R LD9, AC1
AENO
AR< AC1, 0.1
MOVR LD1, LD9
AENO
CRET
END_SUBROUTINE_BLOCK
请填写推广理由:
分享
只看
楼主