首页 上一页 1 2 下一页 尾页

请教CJ指令的使用 点击:5846 | 回复:25



后台运行

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 10:03:00
楼主
  我在PLC上编了几步的CJ的程序,发现P2的条件不通时依然执行地址P2的内容,如下

我将P1和P2的地址反过来,当P1条件成立时,P2是不执行了,但是当P2条件成立时依然执行P1地址的内容,P1和P2条件成立分别如下面两幅图


我在P1的后面加了跳转到END的P3才满足要求,如下

请问PLC的扫描是不是扫描了一个跳转后继续往下扫描而不管其他跳转条件有没有成立,就是说一个程序如果执行自动部分和手动部分都要在每个部分后面写上跳到END的语句



lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-12-08 10:16:00
1楼
第一副图中,M100=On,程序跳转到指针1处,Y0=ON,执行完此步骤后继续向下执行,所以Y1=On.

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 10:23:00
2楼
   但是第一幅图第二行中M102跳转条件不成立,他也执行了P2地址的程序,CJ指令是只管条件成立就跳转而不管跳转后后面的PN地址对应的跳转指令有没有成立都执行吗

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-12-08 10:33:00
3楼
第一副图中,程序的第四行前面有指针P2,但是如果调用该指针的条件不成立,那么此行程序就如同主程序的一部分普通程序一样。

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-12-08 10:49:00
4楼

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2006-12-08 10:50:00
5楼
第1个图:第二行没有执行;
第2个图:第二行、第三行没有执行;
第3个图:全部执行;
第1个图:第二行、第五行没有执行;

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2006-12-08 10:53:00
6楼
你没明白CJ的概念:
    顾名思义,跳转就是当跳转指令被运行时,就直接跳转到指定的指针地址,而不执行跳转指令和该指针之间的程序段。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2006-12-08 10:54:00
7楼
1个程序只需要1个END即可,要那么多END指令干什么?

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2006-12-08 10:56:00
8楼
“第一幅图第二行中M102跳转条件不成立,他也执行了P2地址的程序”:
实际上根本就没有执行第3行指令,他执行P2地址的程序是因为P2排在P1后面的呀,如果排在前面,P2就被“过滤”掉了呀!

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 11:04:00
9楼
那么一个分自动和手动部分的程序用CJ指令而不用CALL指令时,如果不在两个指针最后都写上跳转到END的语句,那总有一种情况是既执行自动指令有执行手动指令了,

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 11:08:00
10楼
我看别人的程序他并没有用到跳转到END的语句

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 11:18:00
11楼
还有CALL指令,是不是也象步进指令一样,条件成立后执行子程序,条件不成立了,但是输出依然成立

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 13:12:00
12楼
上面的说错了,是SET指令,不是步进指令

teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2006-12-08 14:33:00
13楼
CALL指令和SET指令一样,条件不成立时,程序不会被执行,但输出状态会保持为上一次条件成立时的输出状态.

teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2006-12-08 14:36:00
14楼
TO 后台运行: 老兄,下面的程序应该不会有即执行自动部分又执行手动部分的情况

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-08 15:02:00
15楼
TO: teamo.wan
这样是没有两样执行的情况出现,可是如果程序很长的话总不能在每条指令上都串上手动自动条件吧,还是得加跳转到END的指令才能实现功能

teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2006-12-11 08:39:00
16楼
TO 后台运行:
如果你用CJ指令而又不加"X0\X1"的话,是无法避免两个部分都会执行的情况的.
CJ指令的功能就是用来跳转的.象你说的这种情况用CALL指令最合适了,为什么不用呢?

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-11 10:09:00
17楼
TO: teamo.wan
CALL指令是保持型,跳出来后还有输出,不过考虑跳出加非停电保持区域清除指令应该可以的吧,谢谢!

teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2006-12-11 13:46:00
18楼
TO 后台运行:
可以的,
CALL指令不被执行时,不会自动复位子程序中的状态.可以用RST指令来实现复位.

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-12 09:17:00
19楼
TO: teamo.wan   
请问怎么对整个子程序进行复位,用什么指令?

后台运行

  • 精华:0帖
  • 求助:0帖
  • 帖子:19帖 | 213回
  • 年度积分:0
  • 历史总积分:299
  • 注册:2006年10月25日
发表于:2006-12-12 09:33:00
20楼
  要分手动自动能不能用MC/MCR指令来实现?这样好象会自动复位

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页