MC,MCR指令使用上跟子程序有什么区别? 点击:4432 | 回复:12



9515136

    
  • 精华:0帖
  • 求助:40帖
  • 帖子:305帖 | 1715回
  • 年度积分:0
  • 历史总积分:6747
  • 注册:2004年9月09日
发表于:2010-02-09 14:13:54
楼主
我怎么觉得就像是子程序呢?



9515136

  • 精华:0帖
  • 求助:40帖
  • 帖子:305帖 | 1715回
  • 年度积分:0
  • 历史总积分:6747
  • 注册:2004年9月09日
发表于:2010-02-10 18:55:19
1楼
跟子程序的区别是不是主要是子程序能多次调用?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-02-10 19:17:07
2楼

本人认为:

三菱(FX)的子程序与MC,MCR指令差不多,没多大区别,因为它没有自定义变量。但西门子的子程序与三菱的不同,在子程序中,可以不直接涉及到输入、输出信号,可用一个自定义变量来代替输入、输出信号,由此可非常便利的,将经常使用的、规范的、标准的应用制作成子程序,以便在不同的程序中引用。

而三菱的要从其他程序中复制程序,由于没有自定义变量,程序被复制后,需要检查被复制的程序中,有无地址冲突现象,并将冲突的地址替换。由此可见,三菱的子程序与MC,MCR指令没多大差别。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-02-10 23:10:51
3楼

人家都说MC指令。西门子没有MC指令的。没有可比性。

MC与子程序区别很大啊。根本没有什么是相同,相通的。请举一例说明,MC;MCR和CALL;CRET一样作用的程序。

你如果说JMP与CALL;CRET有共通之处还勉强可以。但是说到……

9515136

  • 精华:0帖
  • 求助:40帖
  • 帖子:305帖 | 1715回
  • 年度积分:0
  • 历史总积分:6747
  • 注册:2004年9月09日
发表于:2010-02-12 21:28:11
4楼

MC与子程序区别很大具体在哪方面呢?把MC中的程序放到子程序中一样可以正确的执行啊,条件不满足时一样都是不执行啊,还是我在使用上存在问提?

比如A:X1 闭合执行MC指令,然后再执行一段程序,再MCR,再END;

B:X1闭合就运行子程序,结束后再END ,

效果不是一样吗,倒是我觉得MC跟子程序一样,这两个跟跳转指令才有点不一样。

三菱的子程序功能比西门子的差多了啊

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-02-13 00:17:56
5楼

LD X0

MC N0 M0

LD X1

OUT Y0

MCR N0

END

两个同时接通的时候Y0才有电。

LD X0

CALL P0

FEND

P0

LD X1

OUT Y0

CRET

END

只要X0 X1曾经同时接通过。后只要X0不再接通。Y0都有电。

两个程序你自己试试。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-02-13 00:23:39
6楼

不管什么PLC只要子程序不运行。就等同于没有了这段程序。程序里的所有状态都不再改变。MC MCR程序和IL ILC(类似)可视作全部能流为0,程序仍然要执行。

你说能相同吗?

9515136

  • 精华:0帖
  • 求助:40帖
  • 帖子:305帖 | 1715回
  • 年度积分:0
  • 历史总积分:6747
  • 注册:2004年9月09日
发表于:2010-02-13 15:35:22
7楼
谢谢楼上的,这个指令的详细用法手册上也没有说,我现在模模糊糊有点董了。IL ILC指令是什么意思?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-02-13 17:36:09
8楼
他是OMRON的。如果不用,暂时不要管。

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-02-13 17:43:31
9楼
再次看了三菱、台达说明书,确实没做详细的说明,谢谢芳季先生指点。

wenluderen

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 13回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2010-06-03 15:36:42
10楼

还不是很清楚 试一试再说吧

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-06-03 22:38:20
11楼

学过汇编的就很好理解这个问题,  其实就是  宏 和子程序的区别,  宏的每个实例是要在内存中分配地址的, 而子程序的所有实例共用1个内存地址空间;  在PLC 中有的厂家的PLC 说的子程序其实每个实例也要分配地址的,所以说不是真正意义上的子程序,只是在调用时给人感觉想子程序(例如和功能块FB一样) ,!

其实跳转指令就是子程序的概念啊!  子程序也是跳转实现的啊, 只不过是以压栈和出栈方式跳转的! 

说到底,能达到可重复调用的目的就是子程序的基本概念!

自动机器

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2010年4月26日
发表于:2010-06-06 23:55:00
12楼
你在主控中写个定时器,在子程序中也写个定时器,自己运行监视一下马上就明白的,主控就是是在MC到MCR的程序前面加了个总开关一样。

热门招聘
相关主题

官方公众号

智造工程师