技术论坛

 回复:OB1临时变量 #OB1_PREV_CYCLE的含义?

返回主题列表
作者 主题
匪夷所思
奇侠

经验值:5252
发帖数:1259
精华帖:1
楼主    2011-05-31 13:14:59
主题:OB1临时变量 #OB1_PREV_CYCLE的含义?
OB1临时变量 #OB1_PREV_CYCLE的含义?
三人行必有我师,虚心学习,取得更高的进步! QQ:55679380
姑苏城外
侠圣

经验值:3598
发帖数:1466
精华帖:19
4楼    2011-05-31 19:56:46
精华帖  主题:回复:OB1临时变量 #OB1_PREV_CYCLE的含义?
上一个OB1执行的时间,作为FC80等功能计时可以使用.
与人规矩,不与人巧!
万泉河
至圣

经验值:29190
发帖数:10900
精华帖:131
12楼    2011-06-01 11:11:37
精华帖  主题:回复:OB1临时变量 #OB1_PREV_CYCLE的含义?
OB35主要用在需要每次调用间隔相等的情况下,比如PID
流量累积,显然不如使用#OB1_PREV_CYCLE方便了,其实就是dv.dt的积分,没有要求dt一定相等。
如果你用OB35,程序会比较分散,因为你不可以给中断程序太多的计算工作量。
但用这个#OB1_PREV_CYCLE,相关工艺程序就可以聚在一起了,程序的可读性好一点。
唯一的缺点是FC里面没有,你需要在OB1中读出来,然后传进FC里面。
相比之下,S7-200里面的SMW22更好用。

微信公众号:PLC标准化编程,ZHO6371995
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
13楼    2011-06-01 11:35:10
精华帖  主题:回复:OB1临时变量 #OB1_PREV_CYCLE的含义?
quote:以下是引用n次看你的背影在2011-06-01 10:16:30的发言:
我个人认为(仅供参考):
2、(“#OB1_PREV_CYCLE”)OB1上一个程序周期执行的时间不包含各种中断执行的时间。
3、当然,在每一次OB1执行前、执行后,PLC的操作系统还需要化时间来做一些其它工作,这个时间消耗无法得知!也许是纳秒级的,也许可以或略,也许是个迷了!呵呵!


n次看你的背影老弟:根据扫描时间的定义,我认为#OB1_PREV_CYCLE应该包含各种中断执行的时间,和操作系统完成的其他所有工作的时间。
为了验证这一结论,我用我编的PID实验程序来作了一个小实验。该程序的主体部分在OB35中,OB1原来只有很简单的几条指令。
我在OB100中增加了几条指令:
L L#0
T MD 100 //累加和单元清零
L LD 16
T MD 104 //保存调用OB100时的分、秒、毫秒值和星期代码
在OB1中增加了几条指令:
L #OB1_PREV_CYCLE
L MD 100
+D
T MD 100 //累加前一次的扫描时间
L LD 16
T MD 108 //保存调用OB1时的分、秒、毫秒值和星期代码
下图是实验结果,MD100是进入和离开RUN模式的扫描时间的累加值(ms)。


MD104和MD108分别是调用OB100时和进入STOP模式时的实时时间的分、秒、毫秒值和星期代码(BCD码),毫秒占3位,最后一位是星期代码。MD108中的时间值减去MD104中的时间值,得2min37s119ms=157119ms。由此验证了这种累计方法的精度是能到ms级的。此外验证了#OB1_PREV_CYCLE包含各种中断执行的时间,和操作系统完成的其他所有工作的时间。因为OB35的执行时间远大于OB1的执行时间。
其实我们有时要得出正确的答案花不了多少时间。
真正需要花极大的时间和精力才能得到的是医学上的结论,但是现在中国漫天飞舞的养生秘诀基本上都是毫无实验依据的胡说八道,和骗您钱财的弥天大谎。善良的人们,不要轻信啊!
追求完美
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。