输入_输出区域的滤波程序
在特殊应用场景中,对每一个输入和输出I/O区域均需要进行滤波调整,而这里的滤波调整实际上就是给这些输入和输出添加一些定时器,如果每一个输入或输出都写一段程序,虽然没有难度,但是总会感觉程序太繁琐了点。
我在2年多前,在给一条流水线做项目时,因为对每一个输入(对射光电)和输出(接触器)均需要根据实际流水线线段的长度,定义一些定时器数据,或接通延时,或断开延时的延时程序,用SCL语言,调用FOR循环语句,能够很方便的写这些功能,实用性好适合推广。
程序:
1) 创建FB1,并定义接口变量,图示1:

2) 根据输入、输出需要的延时思路,编辑接通延时和断开延时SCL程序,图示2:

程序非常简单,按输入、输出的字节数需要定义一个循环,此处按一个字节为基本单位的每一个位循环,当FB1运行循环开始,输入管脚的#索引0(对应一个输入位变量)判断是否为1,如果为1,则启动接通延时定时器,并将接通延时定时器的Q值传输给Q变量地址的对应位。断开延时与接通延时原理是同样的,不再复述。
3) 将FB1编译保存后,由OB1程序中调用,图示3:

因为使用了输入、输出映射,管脚由DB数据块赋值实参。
4) 在FB1对应的背景数据块中直接赋值具体每一个定时器的参数,图示4:

集中赋值调试,需要调整的时间数据相对集中在一起,容易调试保存。
该SCL编程方法,适用于需要批量对输入、输出域进行延时处理场所的应用。