关于子程序调用 点击:1602 | 回复:11



wang_039

    
  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-16 09:20:07
楼主
  s7-200中,在调用子程序时,是调用一次还是一直调用(就是说前面的触点要闭合一次还是一直闭合),这两种方式怎样来区别,是不是和扫描周期有关系呢,请详细解释?!
  在子程序中,可能有开关,或赋值,或递增(减),或者模拟量的信号采集等。


楼主最近还看过



dgtp001

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年3月17日
发表于:2012-10-16 09:43:24
1楼
写的不错,这个做网站程序吗?

mahuahui

  • 精华:1帖
  • 求助:1帖
  • 帖子:12帖 | 45回
  • 年度积分:127
  • 历史总积分:2447
  • 注册:2011年6月06日
发表于:2012-10-16 10:05:07
2楼
主程序应该是一直在循环调用子程序的,只是子程序里面的相关条件完成,就跳出子程序。像您所说的触点的一次闭合,还是一直闭合,完全是程序自行控制。比如你子程序里面一个i0.0导通一个输出,但是输出没有自锁信号的话,那就只闭合一次。

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-16 16:47:19
3楼

  谢谢。

  再比如,一个主程序通过SM0.1调用一次子程序,在这个子程序中连接了一个中断子程序。这样,调用子程序只是调用了一次就结束了,而在子程序中在等待着中断事件的发生,一旦发生就调用中断子程序,但主程序调用子程序早就结束了,怎么理解呢?

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-16 16:53:33
4楼
     子程序都是在主程序中通过一个位变量(如I0.0)的触点来调用的,只要该触点=1,主程序就时时调用它,当该触点=0,主程序就立即停止调用它。如用I0.1的常开触点调用自动子程序(SBR_0),用I0.1的常闭触点调用手动子程序(SBR_1),程序运行时,如I0.1=1,则程序运行只进行自动程序,而手动停止,如I0.1=0,则程序运行只进行手动程序,而自动停止。

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-16 17:25:07
5楼

     对3楼的回答,一个主程序通过SM0.1调用一次子程序一般这个子程序是用于初始化作用,即只在PLC开机的第一个扫描周期执行一次,以后就不需要调用这个子程序。如定时中断,就用SM0.1调用定时中断的子程序(如SBR_0),在SBR_0内执行的是将定时时间间隔给SMB34,再将连接中断事件号送入中断程序里,见下图:

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2012-10-16 19:38:07
6楼
如果是一直调用,那么跟全部写在主程序没有区别。

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-16 19:50:25
7楼
回复内容:
对:ye_w关于如果是一直调用,那么跟全部写在主程序没有区别。 内容的回复:


  曾见过有的子程序一直调用是不可以的。

#天涯

  • 精华:0帖
  • 求助:3帖
  • 帖子:100帖 | 2953回
  • 年度积分:0
  • 历史总积分:8816
  • 注册:2005年3月02日
发表于:2012-10-17 07:24:08
8楼
学习了!                                             

miy_gongkong

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

引用 wang_039 的回复内容:回复内容:对:ye_w关于如果是一直调用,那么跟全部写在主程序没有区别。 内容的回复:  曾见过有的子程序一直调用是不可以的。

-----------------------------------------------------------------------
这个要看你子程序的 工艺要求了,有的需要一直调用,例如初始化子程序 一般用SM0.1 调用一次。

 

1. ye_w关于如果是一直调用,那么跟全部写在主程序没有区别。

-----------------------------------------------------------------------------

有区别,子程序中最好不要用绝对地址, 例如你子程序中 写了一个定时器指令 T10, 而你在 主程序中,调用了2次子程序, 这时候 T10 定时器就不能正确执行。

 

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-18 18:51:08
10楼

  我想这和子程序中指令的功能有关系吧,何时调一次,何时一直调的。

  “这个要看你子程序的 工艺要求了”

狼人杀

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 42回
  • 年度积分:41
  • 历史总积分:558
  • 注册:2018年5月26日
发表于:2018-06-12 12:17:07
11楼


回复内容:

对: ye_w 如果是一直调用,那么跟全部写在主程序没有区别。 内容的回复!

-------------------------

子程序的作用是方便多个地方用到这个程序,可以在多个地方调用的,可以提高程序的移植性。


热门招聘
相关主题

官方公众号

智造工程师