签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
我们通常需要在编写的FB块的CPU首次扫描调用时需要初始化各种参数,或者该块还可能包含只需要执行一次的附加任务,具体取决于你的块功能。如果你的块是这种情况,你必须实现初始启动序列。下面介绍三种常见的初始化方式。
1
通过在静态变量区定义一个 BOOLEAN 变量来完成的,例如 SxFirstScan,其初始值为True,在初始程序内完成功能后复位。
但TIA Portal对于S7-1500中FB的保持性与经典STEP 7的S7-300/400不同,TIA如果勾选了优化块的访问,则FB编辑列会出现保持选项。如果选择不保持,CPU在暖启动Stop到Run时,SxFirstScan会有0到1的跳变,如果选择保持,当复位后,下次CPU暖启动等会保持为0,并不会执行你认为的初始化程序段。对于STEP 7中S7-300/400来说,所有的静态变量区都是保持的。
2
鉴于上述情况,如果我们希望静态变量区的数值都是保持的,可以取消块的优化访问,可以通过SFC6 “RD_SINFO”读取CPU当前执行的OB来进行程序初始化。如图在Temp临时变量区创建以下变量:
SI_Current: SI_None
SI_StartupLast: SI_Startup
SFC6_RetVal: INT
xOB_Cycle: Bool
xOB_Startup: Bool
调用SFC6,在变量SI_Current.OB_Nr中的值就是程序在CPU当前执行OB的编号,对于TIA CFC的OB编号来说,OB编号需要增加1000,如启动OB100在CFC的编号是1100,因此下图程序中xOB_StartUp只会在功能块被OB调用后接通一周期。
回到CFC,我们拖拽FB功能块到CFC编辑界面,在块属性中S7 specific > Task extensions > Additional task 中勾选Startup,为块添加启动附加任务后,功能块FB会被在CPU启动执行一次调用。
双击Chart sequence & extras后,在task assignment中可以看到FB既被OB1035调用,也被OB1100调用。
运行测试:
3
另外我们可以使用CPU属性中“Enable the use of system memory byte”,
如图设置后M1.0即为系统初始位。
基于面向过程对象编写实例,不建议在FB内使用M和T区域,因此推荐1和2两种方式。在第一种方法中,可以考虑是否需要将SxFirstScan设置为不保持,以保证每次暖启动等都能执行某些初始化程序。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1751101&b_id=66&s_id=0&num=1
OB100?
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录