中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 PLC论坛 → 浏览主题: 程序家族的故事(4)
发表新帖 回复该主题
回帖:0个,阅读:1081 [上一页] [1] [下一页]
* 帖子主题:

程序家族的故事(4)

分享到
5994
liaosun
文章数:1398
年度积分:50
历史总积分:5994
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2010/7/19 8:11:25
#0楼
   西门子s7-300/400的子程序分为功能(function)和功能块(function block)。
   1.功能(fc)
   功能是用户编写的没有固定的存储区的程序块,其临时变量存储在局部数据堆栈中,功能执行结束后,不再保存这些数据。可以用共享数据区来存储那些在功能执行结束后需要保存的数据。
   功能与s7-200的子程序的局部变量基本上相同(见下图)。与s7-200的子程序相比,其局部变量多了个返回值(ret_val)。返回值实际上属于输出参数。
图
   2.参数类型
   用于块之间传送数据的形式参数可以定义为12种基本数据类型、5种复杂数据类型(见上图),也可以为块之间传送数据的形式参数定义下列的参数类型:
   1)timer或counter:指定执行块时要使用的定时器或计数器。例如定义功能中的输入变量ton1的数据类型为timer,两次调用功能时分别设置ton1的实参为t5和t6。
   2)块:指定用作输入或输出的特定块。例如定义某个输入变量的数据类型为block_fb,在调用块时指定块地址(例如fb 3)作为实参。
   3)pointer:指针是变量的地址而不是变量的值。pointer参数类型的形参应为地址,例如p#m50.0。在step 7中,指针也可以用地址作实参 (例如m 50.0)。
   4)any:用于将任意的数据类型传递给声明的形参。any可用于实参的数据类型未知,或实参可以使用任意数据类型的情况。例如p#db2.dbx50.0 byte 10表示db 2中的dbb50~dbb59。any也可以用地址作实参,例如db2.dbw30和q12.5,但是只能指向一个变量。
   5)udt:用户自定义的数据类型。
   3.功能块(fb)
   功能块是用户编写的有自己的存储区(背景数据块)的程序块,功能块的输入、输出变量和静态变量(stat)存放在指定的背景数据块 (di) 中,临时变量存储在局部数据堆栈中。功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局部数据堆栈中的数据。
   4.背景数据块
背景数据块是专门指定给某个功能块(fb)使用的数据块,它是fb专用的工作存储区。
   背景数据块用来保存fb的实参和静态数据,背景数据块中的数据是自动生成的。它们是功能块的变量声明表中的数据(不包括临时变量)。调用功能块时应指定对应的背景数据块。
   5.功能与功能块的区别
   fb和fc均为用户编写的子程序,局部变量表中均有in、out、in_out和temp变量。fc的返回值ret_val实际上属于输出参数。下面是fc和fb的区别:
   1) 功能块有背景数据块,功能没有背景数据块。
   2)只能在功能内部访问它的局部变量。其他逻辑块可以访问功能块的背景数据块中的变量。
   3)功能没有静态变量(stat),功能块有保存在背景数据块中的静态变量。
   功能如果有执行完后需要保存的数据,只能存放在全局变量(例如共享数据块和m区)中,但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要作任何修改,就可以将它们移植到其他项目。如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会与别的块产生地址冲突。
   4)功能块的局部变量(不包括temp)有初始值,功能的局部变量没有初始值。调用功能时应给所有的形参指定实参。
   调用功能块时可以不设置某些输入、输出参数的实参,此时这些参数将使用背景数据块中的初始值。

----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=119612&Name=liaochangchu
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002