您现在所在的是:

西门子SIEMENS

回帖:2916个,阅读:515591 [上一页] [1] ... [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] ... [292] [下一页]
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2015/4/7 12:45:46
#2030楼
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?
[此贴子已经被作者于2015/4/7 22:27:23编辑过]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/4/8 17:40:19
#2031楼
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?
[此贴子已经被作者于2015/4/7 22:27:23编辑过]

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2015/4/8 23:57:04
#2032楼
以下是引用liaosun2015/4/8 17:40:19的发言:
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。

当CRETI指令上面的指令LDB=的条件满足,两个校验码相等,假设将CRETI指令删掉,NOT指令后面的指令不执行,然后INT程序自动添加RETI指令,也会返回OB1。也就是说,我把CRETI指令删掉,当校验正确,不会执行NOT指令,然后自动返回到主程序OB1,怎么会乱套了?
[此贴子已经被作者于2015/4/9 0:06:50编辑过]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/4/9 8:54:30
#2033楼
以下是引用xsinter2015/4/8 23:57:04的发言:
以下是引用liaosun2015/4/8 17:40:19的发言:
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。

当CRETI指令上面的指令LDB=的条件满足,两个校验码相等,假设将CRETI指令删掉,NOT指令后面的指令不执行,然后INT程序自动添加RETI指令,也会返回OB1。也就是说,我把CRETI指令删掉,当校验正确,不会执行NOT指令,然后自动返回到主程序OB1,怎么会乱套了?
[此贴子已经被作者于2015/4/9 0:06:50编辑过]
把CRETI指令删掉,当校验正确,也会执行NOT指令。
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2015/4/9 21:12:19
#2034楼
以下是引用liaosun2015/4/9 8:54:30的发言:
以下是引用xsinter2015/4/8 23:57:04的发言:
以下是引用liaosun2015/4/8 17:40:19的发言:
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。

当CRETI指令上面的指令LDB=的条件满足,两个校验码相等,假设将CRETI指令删掉,NOT指令后面的指令不执行,然后INT程序自动添加RETI指令,也会返回OB1。也就是说,我把CRETI指令删掉,当校验正确,不会执行NOT指令,然后自动返回到主程序OB1,怎么会乱套了?
[此贴子已经被作者于2015/4/9 0:06:50编辑过]
把CRETI指令删掉,当校验正确,也会执行NOT指令。
重复使用PLC 输出线圈,会有这个情况。但这个例子用的是置位,以及使能端。当校验正确,执行NOT指令之后,RLO变为0,为啥还执行置位指令和接收指令?
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/4/10 16:05:30
#2035楼
以下是引用xsinter2015/4/9 21:12:19的发言:
以下是引用liaosun2015/4/9 8:54:30的发言:
以下是引用xsinter2015/4/8 23:57:04的发言:
以下是引用liaosun2015/4/8 17:40:19的发言:
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。

当CRETI指令上面的指令LDB=的条件满足,两个校验码相等,假设将CRETI指令删掉,NOT指令后面的指令不执行,然后INT程序自动添加RETI指令,也会返回OB1。也就是说,我把CRETI指令删掉,当校验正确,不会执行NOT指令,然后自动返回到主程序OB1,怎么会乱套了?
[此贴子已经被作者于2015/4/9 0:06:50编辑过]
把CRETI指令删掉,当校验正确,也会执行NOT指令。
重复使用PLC 输出线圈,会有这个情况。但这个例子用的是置位,以及使能端。当校验正确,执行NOT指令之后,RLO变为0,为啥还执行置位指令和接收指令?
书中程序在校验正确时,就不会执行NOT指令了。
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2015/4/10 22:01:05
#2036楼
以下是引用liaosun2015/4/10 16:05:30的发言:
以下是引用xsinter2015/4/9 21:12:19的发言:
以下是引用liaosun2015/4/9 8:54:30的发言:
以下是引用xsinter2015/4/8 23:57:04的发言:
以下是引用liaosun2015/4/8 17:40:19的发言:
以下是引用xsinter2015/4/7 12:45:46的发言:
谢谢廖老师!
 《PLC编程及应用》P176,如果将“接收完成中断程序INT_0”中的第14行中的“CRETI”指令去掉,可以吗?有什么影响?是不是就是为了减掉“CRETI”指令的下面三行指令的扫描时间?
  如果执行了CRETI指令后,返回到哪里?主程序是SM0.1,只能返回到中断事件对应的中断程序上?

CRETI指令上面的LD=指令的条件满足时,两个校验码相等,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1。
如果LD=指令的条件不满足,RLO为0,不执行下面的4条指令。执行NOT指令之后,RLO变为1,执行下面的两条指令。执行完后返回OB1。
如果删除CRETI指令,将会执行它下面的两条指令,那就乱套了。

当CRETI指令上面的指令LDB=的条件满足,两个校验码相等,假设将CRETI指令删掉,NOT指令后面的指令不执行,然后INT程序自动添加RETI指令,也会返回OB1。也就是说,我把CRETI指令删掉,当校验正确,不会执行NOT指令,然后自动返回到主程序OB1,怎么会乱套了?
把CRETI指令删掉,当校验正确,也会执行NOT指令。
重复使用PLC 输出线圈,会有这个情况。但这个例子用的是置位,以及使能端。当校验正确,执行NOT指令之后,RLO变为0,为啥还执行置位指令和接收指令?
书中程序在校验正确时,就不会执行NOT指令了。
那怎么会乱套呢?如果校验正确,RLO为1,将执行下面的4条指令,执行到CRETI指令返回到OB1,如果没有CRETI指令,不会执行NOT指令,扫描到INT_0最后一行也会返回OB1。
还有扫描时间跟定时中断时间有冲突吗?会不会出现还没扫描完成,中断定时器时间到了,还是会等INT_0执行完,等SMB时间到了再执行定时时间中断程序INT_1?
[此贴子已经被作者于2015/4/11 14:37:33编辑过]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/4/11 18:45:58
#2037楼
我们讨论好几天,别的网友很可能不知道我们说的是什么。
这是《PLC编程及应用》第4版P176的接收完成中断程序的后半部分:

CALL   异或运算, &VB102, LB7, #SUM2 //计算校验码,结果送SUM2
LDB=   #SUM1, #SUM2 //如果校验正确
R       Q1.0, 1         //复位校验错误指示位
MOVB   5, SMB34     //设置PPI电缆的接收/发送切换时间为5ms
ATCH   INT_1, 10   //起动定时中断0
CRETI                 //中断返回
NOT                   //如果有校验错误
S Q1.0, 1              //将校验错误指示位置1
RCV     VB100, 0     //起动新的接收

如果校验正确,因为RLO为ON,将会执行LDB=下面的指令,执行到CRETI指令,返回主程序。
如果校验出错,因为RLO为OFF,不会执行LDB=下面的4条指令,NOT指令将RLO变为ON,将会执行NOT下面的两条指令,执行完后返回主程序。
两种情况分别完成了该做的事就返回了,没有多余的动作。
如果删除CRETI指令,校验正确时执行了LDB=下面3条指令后,再执行NOT指令就是多余的动作了。
我认为编程的关键是思路清晰、合理、易读。程序能运行仅仅是最低要求。思路不清晰的程序过一段时间可能自己都读不懂了。
扫描周期长短与中断无关。出现中断事件就会停止正常的程序扫描,立即执行中断程序。
[此贴子已经被作者于2015/4/11 18:58:51编辑过]
649
1019202156
文章数:4
年度积分:50
历史总积分:649
注册时间:2015/4/12
发站内信
发表于:2015/4/12 17:14:56
#2038楼
没有一点基础,看廖老师的文章自己学习的PLC,感谢廖老师
558
dff0501公馆
文章数:38
年度积分:50
历史总积分:558
注册时间:2015/4/13
发站内信
发表于:2015/4/13 21:41:30
#2039楼
学习了!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

124.8008