技术论坛

 回复:S7-200的高速计数是否不稳定?总是不定期的出现错误。

返回主题列表
作者 主题
雷电
游民

经验值:118
发帖数:59
精华帖:0
楼主    2003-10-22 17:15:34
主题:S7-200的高速计数是否不稳定?总是不定期的出现错误。
我用CPU S7-224的HSC0和HSC4两路高速计数,两个光栅尺输入脉冲信号给HSC0
和HSC4,光栅尺为25线,根据工艺需要我在TP170A上为HSC0设定7个长度值,每到达一个设定的长度值时触发一个不同的动作,现在出现一个不定期的故障现象,即运行几次循环以后,可能是几次也可能是几百次,HSC0的预制值就被改写成我在TP170A上的设置值,而不是我在程序中把其乘以25线以后赋给SMD42的值,同时也不再调用中断,但是还能计数。请问各位高手这是为什么?
雷电
shine
至圣

经验值:19820
发帖数:8803
精华帖:39
    2003-10-22 22:36:12
精华帖  主题:回复:S7-200的高速计数是否不稳定?总是不定期的出现错误。
是你程序的问题。
中断程序可能在一个扫描周期的任意时间执行,如果计算预制值的时候被中断,最后结果就可能出错。
ORGANIZATION_BLOCK MAIN:OB1
TITLE=PROGRAM COMMENTS
BEGIN
Network 1
LD SM0.1
MOVB 100, SMB34
ATCH INT_0, 10
ENI
Network 2
LD SM0.0
MOVW +5, MW0
MOVW +10, MW2
Network 3
LD SM0.0
MOVW MW0, MW4
//如果中断程序在这被触发,则MW6就是5而不是50了。
*I MW2, MW4
END_ORGANIZATION_BLOCK

INTERRUPT_BLOCK INT_0:INT0
TITLE=INTERRUPT ROUTINE COMMENTS
BEGIN
Network 1
LD SM0.0
MOVW MW4, MW6


END_INTERRUPT_BLOCK
解决办法1:
将Network 3做如下修改
Network 3
LD SM0.0
MOVW MW0, MW8
*I MW2, MW8
movw mw8 mw4
解决办法2:
将Network 3做如下修改
Network 3
LD SM0.0
disi //禁止中断,保证在ENI指令之前的程序不会被中断打断
MOVW MW0, MW4
*I MW2, MW4
eni
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。