9515136
yjig
本人认为:
三菱(FX)的子程序与MC,MCR指令差不多,没多大区别,因为它没有自定义变量。但西门子的子程序与三菱的不同,在子程序中,可以不直接涉及到输入、输出信号,可用一个自定义变量来代替输入、输出信号,由此可非常便利的,将经常使用的、规范的、标准的应用制作成子程序,以便在不同的程序中引用。
而三菱的要从其他程序中复制程序,由于没有自定义变量,程序被复制后,需要检查被复制的程序中,有无地址冲突现象,并将冲突的地址替换。由此可见,三菱的子程序与MC,MCR指令没多大差别。
芳季
人家都说MC指令。西门子没有MC指令的。没有可比性。
MC与子程序区别很大啊。根本没有什么是相同,相通的。请举一例说明,MC;MCR和CALL;CRET一样作用的程序。
你如果说JMP与CALL;CRET有共通之处还勉强可以。但是说到……
MC与子程序区别很大具体在哪方面呢?把MC中的程序放到子程序中一样可以正确的执行啊,条件不满足时一样都是不执行啊,还是我在使用上存在问提?
比如A:X1 闭合执行MC指令,然后再执行一段程序,再MCR,再END;
B:X1闭合就运行子程序,结束后再END ,
效果不是一样吗,倒是我觉得MC跟子程序一样,这两个跟跳转指令才有点不一样。
三菱的子程序功能比西门子的差多了啊
LD X0
MC N0 M0
LD X1
OUT Y0
MCR N0
END
两个同时接通的时候Y0才有电。
CALL P0
FEND
P0
CRET
只要X0 X1曾经同时接通过。后只要X0不再接通。Y0都有电。
两个程序你自己试试。
不管什么PLC只要子程序不运行。就等同于没有了这段程序。程序里的所有状态都不再改变。MC MCR程序和IL ILC(类似)可视作全部能流为0,程序仍然要执行。
你说能相同吗?
wenluderen
还不是很清楚 试一试再说吧
miy_gongkong
学过汇编的就很好理解这个问题, 其实就是 宏 和子程序的区别, 宏的每个实例是要在内存中分配地址的, 而子程序的所有实例共用1个内存地址空间; 在PLC 中有的厂家的PLC 说的子程序其实每个实例也要分配地址的,所以说不是真正意义上的子程序,只是在调用时给人感觉想子程序(例如和功能块FB一样) ,!
其实跳转指令就是子程序的概念啊! 子程序也是跳转实现的啊, 只不过是以压栈和出栈方式跳转的!
说到底,能达到可重复调用的目的就是子程序的基本概念!
自动机器