我想做一个子程序,里面计时0.3或0.6秒等, 如果直接用定时器,子程序被多次同时调用时肯定是不行的(行吗?如果行请实例),我想用累加法与0.1秒脉冲累计时间,但S7 200 中没有0.1s脉冲(这点西门子很不方便,一定要写中断,不如三菱,欧姆龙,建议西门子改进),我对中断不熟悉,不知道如果用中断方式做一个0.1s脉冲,然后累加计时行不行,请各位做过类似程序的提供一个好的方法。 谢谢。
最佳答案
搜一下200版区,有一个T32中断的例子。
简单的做法是在T32=100ms的中断子程序中,给一个位(例如M0.1)置1,在主程序的最后一个网络里复位。这就得到一个0.1s,只接通一个扫描周期的脉冲,这个脉冲你想在哪里用都可以。
提问者对于答案的评价:
试试。
用中断10 (即定时中断0)来做效果怎么样?
我现在写了一个100ms定时中断程序
LD SM0.1
ENI
MOVB 50, SMB34
ATCH INTPause0_1, 10
INTPause0_1
LDN 脉冲0_1s
= 脉冲0_1s
然后在好多地方用计数方法用 脉冲0_1s 这个触点来计时,如下:
LD #bFaMenOut
A 脉冲0_1s
EU
+I +1, #wOpenOnSJ
发现有时时间就是不准 ,不知道是程序出问题,还是这个定时中断方法有问题。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc296031.html