西门子200 smart PLC几个“绝端”状态下的测试(续1)
关于输入滤波及立即输入功能的区别
前一些天,有一个网友提问说:“立即输入是否还需要根据输入滤波时间“过滤”后,才被输入刷新到输入映像区”?我看到此贴,大致思索了一下,以为挺简单的问题,仿真一下完全可以理解了的,那曾想实际验证时,问题远远没有我思考的那么简单,这个提问的链接:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1536518&b_id=64&b_sid=0&s_id=83&num=5&myreply=1#anch
立即输入方式在没有得到验证前,看过官方手册一直理解为不经过plc的输入刷新周期,而直接进入plc的输入的一种“快速输入通道”功能。而网友提出的输入滤波是plc输入捕捉到输入信号时(plc的工作机制—扫描周期),为消除输入信号的“燥声”所必要的输入有效相应时间范围的长度,即一个有效的输入必须确保在一个设置的时间范围长度以上时,输入才被认定有效。做过200smart高速计数器的同行基本理解输入滤波的设置及概念,在“系统块”属性窗口中,各输入系统默认值为6.4mS。与此另外一个概念的还有输入捕捉,这个功能就是为了捕捉输入信号过于短暂时的窄脉冲信号而设置的功能。
这次做的验证理由及思路:
1) 用一个按钮,分别连接到I0.0和I0.1输入端子;
2) 先在网络段3区域“预先”让一个I0.0输入常规的有效使能,并输出“标志位”,程序继续往下扫描;
3) 延时一段时间(目的是增加程序的扫描周期),模拟仿真于真实的应用程序;
4) 在程序起始网络段2,根据1)使能结果 + 使能立即输入位I0.1,看这时的立即输入网络段程序是否有效,如果有效,说明验证立即输入的理解正确;
5) 时间间隔指令计算这2个使能的时间差值,这个差值与调用的循环指令有关。
程序:
程序解释已经用STL编程模式描述、注释。
将程序下载,启用“状态图表”监控运行结果:
通过时间间隔指令获取2个输入的指令,时间间隔时间为约80mS,返回到PLC信息看验证程序扫描周期,图示:
上述验证时,“系统块”数字量输入I0.0“滤波”时间按默认6.4mS验证,修改为12.8mS,验证结果:
修改后的时间间隔指令运行结果基本没有变化。
小结:
1) 输入滤波含义:目的是为了克服因输入信号短暂、跳变不稳定因素带来的输入“噪音脉冲”,确保输入在稳定前提下被采集;
2) 立即输入含义:无扫描周期无关,当该位使能时,无关乎网络段位置,立即生效该位,使原本扫描过的程序段,到cpu处理采集信息后,重新“调整”输出结果。
3) 调整I0.0和I0.1的输入滤波时间值,测试结果基本一致,说明滤波与立即输入功能没有本质上的关联。
兜兜转转自昨天开始编写、验证、失望,一直没有找到合适的程序段,尝试过几个验证方法,验证结果均没有找到合适的应用。今天晚上,吃过晚饭,在一遍喝茶、一遍想这个问题时,似乎找到了一个方法,于是,赶紧编写出来,验证一遍就通过了,如有疑问欢迎讨论、交流。