回复:问个可能造成冲突的问题

Laohuai

  • 帖子

    6044
  • 精华

    18
  • 被关注

    71

论坛等级:至圣

注册时间:2004-10-11

普通 普通 如何晋级?

发布于 2011-11-21 20:56:46

4楼

楼主的疑问是有道理的,有时候确实会导致数据出现问题。

1 比如:主程序里执行vw0/vw2=vw4,中断里要根据VW4值的不同而执行不同的程序,PLC执行vw0/vw2=vw4的过程是这样的:
MOVW VW0, VW4
/I VW2, VW4
如果执行完第一句就执行了中断,那么就会导致问题的发生。

2 《200手册》和《西门子 S7-200 · LOGO! · SITOP 参考》对这个问题都有描述,描述如下:
问:中断服务程序有关的计算任务,为何会偶尔得出不正确的结果?
答:出现这种现象的原因多是在主(子)程序和中断程序之间传递数据的机制不当。

中断程序可能在任何时刻执行,如果此时主程序(或子程序)正在对中断程序使用的数据进行操作,其中间结果可能带入中断程 序,造成计算结果的变化;同样地,在中断程序中产生数据也对主(子)程序中的计算有类似影响。

解决办法是保证可能产生中间结果的数据不直接参与计算:

使用STL指令计算单个中断程序使用的数据
在梯形图(LAD)编程时,用MOV(传送)指令准备最后的数据(单个数据)
准备成批的数据时,先禁止中断,完成后再允许中断
简单的数据准备或者结果计算可直接放在中断程序中进行
详情请看《S7-200系统手册》的中断指令相关章节。

3 下载中心里曾经有个关于这方面的例子,但找不到了。

4 网友“醉书生”也发过类似的帖子,你自己找吧。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。