STEP7編程中AR1AR2与DB寄存器的应用.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STEP7編程中AR1AR2与DB寄存器的应用

关于AR1,AR2及DB,DI的使用注意事项。 数据块寄存器描述 S7-300/400 CPU拥有2个数据块寄存器,它们保存着当前打开的数据块编号: DB寄存器保存着打开的共享数据块编号; DI 寄存器保存着打开的背景数据块编号; !注意:DI寄存器主要用于FB引用背景数据块,但也常用于程序中同时打开2个数据块的操作。 举例:OPN DB1 OPN DI2 L DBW0 T DIW0 就能实现把DB1.DBW0赋给DB2.DBW0的功能。在线监视状态如上图: STEP 7编程中,应清楚当前所打开的DB寄存器的内容,否则将会发生错误。下面2种常见的导致DB寄存器内容改变的例子,应在程序中予以避免。 以绝对地址对DB块的访问 如以下语句: OPN DB1 当前打开的DB为DB1 L DB2.DBW0 绝对引用方式,此时打开的DB已变为DB2 T DBW2 DB2.DBW0→DB2.DBW2 在线监视状态如上图: FB的多重背景调用;在程序中,在引用了一个多重背景FB后,应该重新打开一次所用的DB块。 二:AR1,AR2在程序中的变化: 为了清除程序中AR1,AR2寄存器内容的变化,我们来做一个实验。首先,我们建立一个FC1, 程序内容如下,并在线监视其内容: 在OB1中编写如下程序: 监视后可以发现,在调用FC1后,AR1和AR2的内容已经发生了改变,如果在编程过程中调用FC1后没有注意到这一变化,势必给程序带来错误! 解决办法:在FC1的程序块中,开始可以把AR1和AR2,以及DB,DI的值保存起来,在程序末尾,再将保存出来的值释放,恢复AR1,AR2,DB,DI的内容,具体如下: 在FC1的临时变量中建立如下变量: AR1_SAVE: DINT; AR2_SAVE: DINT; DB_SAVE: INT; DI_SAVE : INT; 在NETWORK1中编写如下程序: 在程序的末尾编写如下程序: 这样便保证了从FC返回后,确保寄存器内容的正确性,下面我们再来看看OB1中程序运行情况: 可以看到,再调用FC1后,AR1,AR2的内容仍保持调用前的内容不变。综上,为了养成良好的编程习惯,确保FC功能块的正确执行,建议在所有的FC程序块中都加上如上的处理过程。

文档评论(0)

s4as2gs2cI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档