回复:大家帮我看下,我的JL语句为什么不能实现?

Issac

  • 帖子

    39
  • 精华

    0
  • 被关注

    3

论坛等级:游民

注册时间:2005-02-05

普通 普通 如何晋级?

发布于 2009-11-19 20:27:11

10楼

你是不是想问=语句与S语句在你错误的程序好象功能一样了?
首先,你要有个概念,所有的PLC都是顺序扫描的,程序是一条一条执行的。无论你用STL语言还是LAD语言都一样。
一般的=语句表达的是实时的RLO状态,即它前面条件的实时状态。但这是表面现象。举个例子:
A M1.0
JC L001
A M1.1
= M2.0
L001: NOP 0
1)当M1.0为“0”时,跳转不执行,程序直接向下运行执行代码——
A M1.1
= M2.0
此时M2.0与M1.1同状态
2)当M1.0为“1”时,跳转执行,程序跳过代码,直接执行最后的NOP语句
你是不是认为此时M2.0应该为“0”了,这是错误的。M2.0的状态与M1.0跳向“1”前的M1.1状态一致。
3)如下例子,假设M1.0为“1”
第1次循环扫描
语句1 M2.0为“0”
…… M2.0为“0”
语句n M2.0为“0”
A M1.0 M2.0为“1”
= M2.0 M2.0为“1”
语句n+1 M2.0为“1”
…… M2.0为“1”
语句n+n M2.0为“1”
第2次循环扫描
语句1 M2.0为“1”
…… M2.0为“1”
语句n M2.0为“1”
A M1.0 M2.0为“1”
= M2.0 M2.0为“1”
语句n+1 M2.0为“1”
…… M2.0为“1”
语句n+n M2.0为“1”
第3次循环扫描 假设此时M1.0变为“0”
语句1 M2.0为“1”
…… M2.0为“1”
语句n M2.0为“1”
A M1.0 M2.0为“1”
= M2.0 M2.0为“0”
语句n+1 M2.0为“0”
…… M2.0为“0”
语句n+n M2.0为“0”
以上例子说明,只有在执行=指令时M2.0的状态才有可能发生变化,其它时刻是保持不变的。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54761条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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