这些指令的执行与状态位无关

已锁定

JHZK

  • 帖子

    358
  • 精华

    1
  • 被关注

    23

论坛等级:侠士

注册时间:2010-02-10

普通 普通 如何晋级?

这些指令的执行与状态位无关

1281

9

2017-12-22 03:22:19

STEP 7在使用STL指令编程时,状态位的状态极其重要,有些指令的执行与状态位有关,比如“位逻辑指令A”,而大部分指令的执行却与状态位无关,比如“装载指令L”。对于刚刚接触STEP 7的朋友们来说很难理解。


指令的执行与状态位有关的指令有如下:

位逻辑指令、定时器指令、计数器指令;


这些指令在执行前,状态位的相关位的状态会影响到执行结果,比如如下程序:

      A     M      0.0

      CU    C      0 //M0.0有上升沿时,计数器C0就加1

      A     M      0.1

      L     C#5

      S     C      0

      A     M      0.2

      R     C      0

      A     C      0

      =     M      0.7


如果将以上程序改为如下程序,则结果完全不同:

      A     M      0.0

      CLR   

      CU    C      0 //M0.0有上升沿时,因为有了CLR指令将状态位RLO位置0,所以计数器C0不在计数

      A     M      0.1

      L     C#5

      S     C      0

      A     M      0.2

      R     C      0

      A     C      0

      =     M      0.7


指令的执行与状态位有关的指令有如下:

转换指令、数据块指令、逻辑控制指令、整数运算指令、浮点型数学运算指令、转载与传送指令、程序控制指令、移位和循环指令、字逻辑指令、累加器指令。、


无论状态位是什么状态,这些指令在每个扫描周期都会被执行,因此,在指令前加位逻辑限制条件没有用。比如:L指令,无论L指令执行之前是什么位逻辑指令,在每个扫描周期L指令都会被执行,只有在L指令前加跳转指令,才会不被执行。比如如下指令:

L MW0  //装载MW0的数据到ACCU1-L中,每个扫描中期都会执行

T MW10  //将ACCU-L中的数据输出到MW10,每个扫描中期都会执行


如果将以上程序改为如下:

A M100.0

CLR

L MW0  //装载MW0的数据到ACCU1-L中,无论M100.0状态如何,均会执行

T MW10  //将ACCU-L中的数据输出到MW10,无论M100.0状态如何,均会执行

因此,无论M100.0状态如何,L MW0和T MW10始终都会执行。


如果不想让L MW0和T MW10指令执行,则应该改为如下:

A M100.0  //

JC _001  //当M100.0为1时,程序跳转到_001处;如果M100.0为0时,往下执行

L MW0  //装载MW0的数据到ACCU1-L中,当M100.0为1时不执行

T MW10  //将ACCU-L中的数据输出到MW10,当M100.0为1时不执行

_001: BLD 0  //程序跳转到此处继续执行


以上是我对指令执行时状态位相关的理解。请高手们指教。

这些指令的执行与状态位无关 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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