主程序和子程序 点击:1837 | 回复:15



我懂我心

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:47帖 | 220回
  • 年度积分:0
  • 历史总积分:1502
  • 注册:2007年11月23日
发表于:2007-12-10 17:15:00
楼主
我想问一下,plc在执行子程序的时候是否同时执行主程序呢(如果主程序条件满足的话)。
另外,子程序的返回是根据调用子程序的条件不满足呢,还是根据子程序已经执行完毕呢?



彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:54帖 | 1626回
  • 年度积分:8
  • 历史总积分:7586
  • 注册:2006年9月21日
发表于:2007-12-10 22:14:00
1楼
什么PLC

dxl1981

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 101回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2005年9月01日
发表于:2007-12-11 00:11:00
2楼
只要调用了子程序,就会调用到子程序执行完毕。我觉得调用子程序的同时应该是调用主程序的,但是如果中断就不一样了,要考虑扫描周期

我懂我心

  • 精华:0帖
  • 求助:2帖
  • 帖子:47帖 | 220回
  • 年度积分:0
  • 历史总积分:1502
  • 注册:2007年11月23日
发表于:2007-12-11 08:49:00
3楼
三菱plc。
还是有些不明白。
如果子程序里有plsy指令又有什么不同吗?是不是plsy指令不用执行完毕就直接返回呢,就是说执行plsy指令的同时去执行子程序下面的程序。

huangyoufu

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1083回
  • 年度积分:0
  • 历史总积分:1224
  • 注册:2006年9月23日
发表于:2007-12-17 20:05:00
4楼
应该是同时执行的

250106335gk

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 25回
  • 年度积分:0
  • 历史总积分:360
  • 注册:2009年8月05日
发表于:2009-08-14 13:18:20
5楼

都是顺序扫描,循环调用啊,看你用的什么PLC了哦?

索泰克

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 388回
  • 年度积分:0
  • 历史总积分:1041
  • 注册:2007年7月09日
发表于:2009-08-17 15:28:30
6楼

子程序要看你的调用的条件来执行的,如果用M0来调用子程序,且子程序里有PLSY指令,当MO和PLSY的前提条件都成立的话,PLSY将执行,但如果执行中MO变为OFF,那PLSY也就断了,而且PLSY对于FX的不同的型号的要求也有点点区别的,一般最好把PLSY放在主程序中,而前提的条件有不同就可心放在子程序或主程序中,主程序在执行中遇到子程序调用条件成立,则在子程序调用处开始执行子程序,执行到子程序结束指令又返回到主程序前面位置的下一步,也就是调用子程序的下一步。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-08-18 12:13:03
7楼
要解释你的问题要引入一个概念:后台执行。

保留字符

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 166回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2008年8月02日
发表于:2009-08-18 18:09:59
8楼

一般PLC都是 循环扫描 主程序,当子程序的调用条件满足时,才会“扫描更新”子程序,子程序执行过程中,遇到 RTS 则返回主程序的入口处继续往下扫描更新主程序。

哎,怎么又无法上传图片了。。。。。。。本来想用图片说明的。

只好用回答的了

1.PLC执行子程序的时候,当碰到RTS就返回到主程序,继续往下执行。

2.子程序的返回是看到RTS就返回。

3.子程序只有被调用时,元件的状态才会更新,否则保持为上个周期扫描到时的那个状态。

若想详细讨论可进群:53112576

 

 

 

 

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-08-19 10:05:13
9楼

按一般程序规律顺序执行,主程序调用子程序,子程序才被执行。

 

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2009-08-20 19:51:21
10楼

呵呵,楼主仔细看看编程手册把,对子程序有详细说明,

没有主程序和子程序这一概念,很可能你是第一个提出这个“概念”的人,子程序是相对主程序的一段程序,必须由主程序去调用,调用形式又分有条件调用,无条件调用两类;当一个子程序中又调用了另一个子程序,即为子程序嵌套调用,好像S7-200最多嵌套

8层深度!子程序返回指令,RET 指令返回到调用处;其实就是在调用子程序之前,先把当前 IP (指令指针寄存器)PUSH 压栈(也叫保存地址,保护现场),待子程序执行完成返回时, POP 出栈(将栈顶,之前保存的地址),恢复现场,即将栈顶值传给IP;这样就可以在子程序返回后,在原调用处继续往下执行;

不论是那一种PLC ,原理都是相通的,不过有的PLC 支持功能块,类似子程序,但那是宏,即在编译的时候就独立为该功能块实例分配内存,和子程序有差别的,这一点注意!

其他的自己看吧!

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2009-08-20 20:02:45
11楼
不好意思,我上面想说:没有主程序和子程序同时执行这一概念!

Feng加油

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 196回
  • 年度积分:0
  • 历史总积分:269
  • 注册:2008年10月26日
发表于:2009-08-31 20:32:46
12楼
顶一下十楼的。。。确实是这样的

dayanyan123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 34回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2009-08-31 20:37:34
13楼
涡轮流量计觉得主程序调用子程序。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-09-08 12:07:16
14楼

我要更正10楼的一个说法。

引用

<子程序是相对主程序的一段程序,必须由主程序去调用,>

不必一定要主程序调用。

我懂我心

  • 精华:0帖
  • 求助:2帖
  • 帖子:47帖 | 220回
  • 年度积分:0
  • 历史总积分:1502
  • 注册:2007年11月23日
发表于:2009-09-11 08:38:14
15楼
呵呵 谢谢大家。我要继续学习啊!

热门招聘
相关主题

官方公众号

智造工程师