分享一个有用的库,可多次调用,并内含边缘指令的制作原理和计时原理。这两个重点都是很多人问过的。
收藏起来,日后就不用问了。
程序很少,6个网络。
下面一行开始为程序开始。
SUBROUTINE_BLOCK 点消抖:SBR1
TITLE=子程序注释
VAR_INPUT
入点:BOOL;
门限ms:DWORD;
END_VAR
VAR_IN_OUT
记忆D:DWORD;
记忆B:BYTE;
END_VAR
VAR_OUTPUT
出点:BOOL;
END_VAR
VAR
位_上次:BOOL;
持续时:DWORD;
END_VAR
BEGIN
Network 1 // 本程序当输入点状态稳定达到门限毫秒时间后输出才跟着输入点发生变化。作者:芳季。
Network 2 // 上升缘和下降缘读取一次时钟。
// 网络注释
LD L0.0
AN L9.0
LDN L0.0
A L9.0
OLD
BITIM LD5
Network 3 // 制作边缘
LD L0.0
= L9.0
Network 4
LD L9.7
= L10.0
Network 5 // 输入和输出一致,结束子程序。就不需要做什么了。 不一致表示正在等待变换。不结束程序,计算时间。
LD L0.0
A L9.7
LDN L0.0
AN L9.7
OLD
CRET
Network 6 // 不一致,会运行到这里。 检查时间,未达到门限时间,不需要做什么。
LD SM0.0
CITIM LD5, LD11
AD< LD11, LD1
CRET
Network 7 // 达到了门限,变换输出。
LD L0.0
= L9.7
END_SUBROUTINE_BLOCK
上面一行是程序最后一行。
把以上程序复制粘贴到记事本,保存为*.awl文件。用导入功能,导入awl到新的程序里可以生成一个完整功能的子程序。你可以自行制作成库。
在主程序或其他子程序做无条件调用,便可实现需要的功能。有条件调用请自行分析现象。
如果本程序对你有用,你可以再次分享,但请你分享时不要删除注释中那两个字。