电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> plc工业软件使用 >> 正文

西门子PLC功能和功能块的区别

作者:佚名    文章来源:本站原创    点击数:    更新时间:2019/6/1
西门子plc的FB和FC均为用户编写的子程序,局部数据均有IN、OUT、IN_OUT、TEMP,临时变量TEMP储存在局部数据堆栈中。
1)FC的返回值RET_VAL实际上输出参数,因此有无动态变量(STAT)是二者的局部变量的本质区别,功能块的静态变量用北京数据块来保存,如果功能有执行完后需要保存的数据,只能存放在全局变量(I/O、PI/PO、M、T、共享数据块DB中),但是这样会影响功能的可移植性,如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要做任何修改,就可以将块移植到其他项目,如果块使用了全局变量,在移植时需要重新统一分配它们的内部使用的全局变量地址,以保证不会出现地址冲突,当程序复杂,子程序和中断程序很多时,这种重新分配全局变量地址的工作量非常大,也容易出错。如果逻辑块有执行完成需要保存的数据,显然应使用功能块,而不是功能。
2)功能块的输出参数不仅与来自外部的输入参数有关,还与用静态变量保存的内部状态数据有关,功能因为没有静态变量,相同的输入参数产生的执行结果是相同。
3)功能块有背景数据块DB,功能没有背景数据块,只能在功能内部访问功能的局部变量,其他逻辑块与人机界面可以访问相应背景数据块中的变量。
4)不能给功能的局部比啊娘设置初始值,可以给功能块的局部变量(不包含TEMP)设置初始值,在调用功能块时如果没有设置某些输入参数的实参,将使用背景数据块中的初始值,或上一次执行后的值,调用功能时应给所有的形参指定实参。
举例说明:
1、生成功能
打开SIMATIC管理器执行【插入】-【S7块】-【功能】如下图所示


2、生成局部数据
双击打开FC1,如下图,将分隔条向下拉,分隔条上面是功能的变量声明表,下面为程序编写区,


在变量声明表中定义局部变量,(局部变量只能在所在的功能中使用),
1)IN:由调用它的块提供的输入参数
2)OUT:返回给调用它的块的输出参数
3)IN_OUT:初值由调用它的块提供,块执行后返回给调用它的块。
4)TEMP:暂时保存在局部数据堆栈中的数据,只是在执行块时使用临时数据,执行完后,不再保存临时数据的数值,它可能被别的数据覆盖。
5)RETURN中的RET_VAL属于输出参数。
本例IN和OUT参数如下图


3、生成功能中的程序


STEP7自动在局部变量的前面加#号,如#start。
4、调用功能
在OB1导入FC1,如下图


启动仿真如下:

Tags:西门子plc,功能块  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询