西门子S7-300PLC的V存储区的探索与发现.pdfVIP

西门子S7-300PLC的V存储区的探索与发现.pdf

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

西门子S7-300PLC的V存储区的探索与

发现

西门子S7-300plc有V存储区吗?听到这个问题,绝大多数

人都会笑起来,V存储区不就是S7-200的变量存储区吗?

S7-300哪里有什么V区?有没有搞错?最近有个网友在网

上询问这个问题:“我的疑问也是这个V区,被一堆人鄙视

的说是200的吧。另外我有个疑问没见有谁用这个区域编程,

麻烦有类似的例子给露露脸啊”,显出了几分急切和无奈。我

也曾经被这个问题困扰过,下面向大家介绍我寻找答案的过

程。首先在STEP7的帮助中搜索“V区”,在参数类型ANY

和POINTER的帮助中有个存储区编码表,其中就有V区,

其代码为16#87,对V区的描述为“先前的本地数据”。这几

个字像天书一样,可能很难有人能看懂。为了确认翻译的

准确性,我将STEP7切换到英语,“先前的本地数据”的英文

为“Previouslocaldata”。localdata一般翻译为“局部数据”,

看来翻译没有问题。德国人的英语水平很高,德国大学图书

馆的书籍和杂志大多数都是英语的,不用怀疑德语翻译为英

语时失真。V区与参数类型ANY和POINTER有关,打开

STEP7的帮助目录中的附录,选中其中的““数据类型和参数

类型类型参数类型参数类型参数类型POINTER的格式”,可以看到参数

类型由6个字节组成,0号和1号字节是DB块的编号,不

是数据块内的地址时为0。2~5号字节的格式与寄存器间接

寻址的格式相同。下面是寄存器间接寻址的32位指针格式:

x0000rrr00000bbbbbbbbbbbbbbbbxxx其中第0~2位

(xxx,最低位为第0位)为被寻址地址中位的编号(0~7),

第3~18位(16个b)为被寻址地址的字节的编号。第24~

26位(rrr)为被寻址地址的区域标识号,指针的最高位x为

0时,为区域内的间接寻址,最高位x为1时,为区域间(交

叉区域)间接寻址。参数类型ANY可以用来传递一片连续

的地址区,由10个字节组成。ANY和POINTER用于在块

调用时传递输入、输出参数。为了揭开V区之谜,编写了

FC1,将地址区中相邻的若干个字累加。地址区的起始地址

由参数类型为POINTER的输入参数Start_Addr提供。P#

DB2.DBX0.0也可以改写为DB2.DBX0.0。在OB1中调用

FC1:CALLFC1Start_Addr:=P#DB2.DBX0.0//数据区起始

地址Number:=5//需要累加的字数Result:=DB2.DBD10//

保存运算结果的双整数图1是运行时监控FC1的结果,累

加器1(STANDARD)中的数据为十六进制显示格式,AR1

是地址寄存器1。终于看到了AR1中的V区地址了!

800)this.width=800”

图1中第一条指令的P#表示指针,第2个#号表示局部变

量。P##Start_Addr就是调用FC1时,用输入参数Start_Addr

传送给FC1的指针P#DB2.DBX0.0(16#000284000000)存

放的地址。P##Start_Addr(16#870000a8)最低字节16#a8

对应的二进制数为2其字节部分为2#10101,即

十进制数21,最高字节16#87(2#10000111)表示存储区为

V区。第一条指令将P##Start_Addr送给累加器1,第二条

指令

文档评论(0)

131****2527 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档