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

温柔似野鬼°
503次浏览
2021年02月10日 03:54
最佳经验
本文由作者推荐

-

2021年2月10日发(作者:大王具足虫)


西门子


S7-300PLC


< br>V


存储区的探索与发现



时间


:2011-03-13


来源


:




作者


:


廖常出



点击


: 288






西门子


S7-300PLC



V


存储区吗?听到这个问题,绝大多数人都会笑起来,

< br>V


存储区不


就是


S7-200< /p>


的变量存储区吗?


S7-300


哪里有什 么


V


区?有没有搞错?最近有个网友在网上

询问这个问题:


“我的疑问也是这个


V

区,


被一堆人鄙视的说是


200


的 吧。


另外我有个疑问


没见有谁用这个区域编程,麻烦有类似的例 子给露露脸啊”,显出了几分急切和无奈。




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




首先在


STEP 7


的帮助中搜索“V


区”,在参数类型


ANY



POINTER


的帮助中有个存储


区编码表,其中就有


V


区,其代码为


16#87


,对


V


区的 描述为“先前的本地数据”。这几个


字像天书一样,可能很难有人能看懂。




为了确认翻译的准确性,我将


STEP 7

切换到英语,“先前的本地数据”的英文为


“Previous local data”。


local data


一般翻译为“局部数据”, 看来翻译没有问题。德


国人的英语水平很高,


德国大学图书馆的 书籍和杂志大多数都是英语的,


不用怀疑德语翻译


为英语时失真 。



V


区与参数类型


ANY



POINTER


有关,打开


STEP 7


的帮助目录中的附录,选中其中的< /p>




数据类型和参数类型

< br>


参数类型



参数类型


POINTER


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


6< /p>



字节组成,


0


号和


1


号字节是


DB

< br>块的编号,不是数据块内的地址时为


0



2~5


号字节的格式


与寄存器间接寻址的格式相同。下 面是寄存器间接寻址的


32


位指针格式:



x000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx



其中第


0



2


位(


xxx


,最低位为第


0


位)为被寻址地址中位的编号(


0



7


),第


3



18



< br>16



b


为被寻址地址的字节的编号。



24



26




rrr



为被寻址地址的区域标识号,


指针的最高位


x



0


时,为区域内的间接寻址,最高位


x



1


时,为区域间(交叉区域)


间接寻址。

< p>



参数类型


AN Y


可以用来传递一片连续的地址区,由


10

个字节组成。


ANY



POINT ER



于在块调用时传递输入、输出参数。为了揭开

< p>
V


区之谜,编写了


FC1


,将地址区中相邻的若


干个字累加。地址区的起始地址由参数类型为

POINTER


的输入参数


Start_Addr


提供。


P#


0.0


也 可以改写为


0.0


。在


OB1


中调用


FC1




CALL FC 1


Start_Addr :=P#0.0 //


数据区起始地址



Number :=5 //


需要累加的字数


-


-


-


-


-


-


-


-