恭喜,你发布的帖子
发布于 2018-09-26 13:04:32
28楼
再次验证在调用各中断子程序中的立即输入与常用输入的区别
前一段时间看到“找答案”栏目中的一个提问,问题大意是如何捕捉plc的输入并加以记录输入状态。我当时考虑到的一种情况是根据plc的扫描机制,当输入信号到达时,刚刚过了plc的扫描采集时间,那样可能会丢失一次输入状态的记录(丢失的可能性是这个信号仅仅是有效一个周期)。上面的程序段就是基于此可能做的验证。其中,有一位热心的网友“shine”在回复中提及到输入刷新问题,也是基于可能的信号丢失考虑的。
今天,下午又看到好多热心网友的回复。因为我没有把之前的“前因后果”重新描述一番,给大家看问题带来了一些困惑,在此表示抱歉了。
今天,还是想再做一个验证,主要验证在调用2个中断条件满足时,常用输入和立即输入是否均能够有效捕捉到,如果能够捕捉到,那么,在中断程序中常用的输入是带立即输入的功能的可能“变为现实”。
2种验证程序思路:
1)外部输入I0.0上升沿中断:
1) 定义一个外部输入I0.0上升沿中断、并调用;
2) 将外部一个按钮分别连接到I0.0和I0.1的输入中(并联方式),以此来验证2者是否存在有输入的差异;
程序:
1) 定义外部输入I0.0上升沿中断,并调用。
2) 在所连接的中断中,分别编辑2个不同指令下的输入状态并记录到存储器中,在外部输入I0.0上升沿中断中编辑I0.0和10.1的输入状态记录。
在外部输入10.0上升沿中断有效时,看2个输入的记录是有区别的。如果I0.0与立即输入I0.1在中断中同时有效触发,那么,VB0 = VB1,但验证的结果是非常清楚了,验证结果在中断程序中立即输入与常用的输入是有区别的。
把外部输入I0.0上升沿改为1mS 的定时中断结果又会如何?
2)定时中断(定时时间1mS):
在定时1mS中断验证中,不同的输入“且”能够同时有效了。虽然从中断的结构中可以看到定时中断时间如果大于plc的扫描周期时间仍然会有丢失信号状态的可能,但是,在外部中断中出现的输入状态,在与定时中断比较中又是另一个结果(不考虑因中断周期丢失输入信号)。它们之间的区别还是在于定时中断能够“捕捉”到的输入信息,与plc的周期(输入刷新周期)还是分不开的,而外部输入中断完全不取决于plc的扫描周期影响。
我开始验证程序时没有考虑到定时中断的常用输入仍然一直在没有中断条件调用条件下,刷新的始终在继续的,且定时中断又定义在刷新周期的附近,很容易造成错觉,仅以此篇短文给尚没有理解刷新周期及立即输入概念的网友们。
下面这个图例是我理解到的意思。
主程序子程序都包含在红色区域。都是程序过程。白色区域是自检啊通讯处理啊输入输出处理等等的非程序过程。中断由于可以出现在任何地方,所以哪里都是中断。
然而,就只有end结尾的时候输入信号进行映像区刷新。常规触点就只有这个时候开始生效,而立即触点就随时生效。
程序里面用到的全部触点都按照这样的先后次序进行更新。包括常规触点和立即触点。就看程序运行到什么位置,就看中断在哪里产生,那么此时此刻是否刷新了,就看图吧。
看看我有没有理解错。
请填写推广理由:
分享
只看
楼主