找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3168|回复: 0
打印 上一主题 下一主题
收起左侧

精通S7-200子程序形参和实参的调用

[复制链接]
跳转到指定楼层
楼主
ID:26188 发表于 2015-5-28 01:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个完整的程序要实现多个功能,我们可以只用一个主程序来实现,还可以分多个子程序单独来实现再由主程序分别调用;如果只用一个主程序就会显得很纷乱,而且调试修改效率低,而使用子程序可以一目了然,快速的确定问题所在。所以首选使用子程序来编程。


   在实际的项目中有很多类似的功能,像这样的就可以使用子程序,而不用多次复制相同的语句,而选择调用相同的子程序。
   在编写子程序时,子程序中可以使用全局变量(实际参数),而功能块中用到的都是局部变量L(形式参数),两者的另一个区别是:在调用子程序时不用给子程序任何的输入,只要一个使能调用就可以。而在调用功能块时就要给功能块输入一些参数,一般编好的功能块是有输入输出的,至于功能块中使用了那些变量我们不用去考虑,还有一个优点就是功能块内的变量是自动分配的,在变量中想添加一变量时可以直接插入而不用管它占用了那些变量地址。所以要想实现某个功能就可以调用功能模块,我们只需要给几个参数,然后就直接取输出就可以了,很方便快捷,这样下来我们的程序就是由一个一个的功能块完成了,直观。就在子程序的下图内创建我们需要的局部变量:

   子程序变量名称中的“#”表示局部变量,是编程软件自动添加的。输人局部变量时不用输入
“#”
号。不能使用跳转语句跳人或跳出子程序。



  在主程序中调用子程序的功能块:


只要在子程序中写一遍程序,在主程序内可以多次调用并填写实际数据,这样就可以减少工作量。

   在主程序中调用使用全局变量的子程序 :

上边提到过,因为使用的是全局变量,就不需要再输入参数,这个子程序就是直接调用的关系。




下面说一下功能块中遇到的一些问题:
我们都知道这样的程序:



如果I0.0闭合,Q0.0输出确实0;I0.0断开,Q0.0输出是1.在功能块中也有这样的特点,就是功能块的输出变量如果不能执行就会最后输出为零,无论之前是否输出变量赋值。所以我们在编程时要注意,功能块是否执行的判断语句不要放到功能块的内部开头部分,而要放到功能块的外部,变为是否调用功能块而不是调用后再判断是否执行。









分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表