你现在位置:首页>技术论文>经验技巧>西门子PLC>正文
S7-300的V区的探索与发现(1)
日期:2011-3-12 15:59:04 点击:
来源:本站整理
作者:
点击【】放大字体.
S7-300有V存储区吗?听到这个问题,绝大多数人都会笑起来,V区不就是S7-200的变量存储区吗?S7-300哪里有什么V区?有没有搞错?最近有个网友在网上询问这个问题:“我的疑问也是这个V区,被一堆人鄙视的说是200的吧。另外我有个疑问没见有谁用这个区域编程,麻烦有类似的例子给露露脸啊”,显出了几分急切和无奈。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    我也曾经被这个问题困扰过,下面向大家介绍我寻找答案的过程。
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

    首先在STEP 7的帮助中搜索“V区”,在参数类型ANY和POINTER的帮助中有个存储区编码表,其中就有V区,其代码为16#87,对V区的描述为“先前的本地数据”。这几个字像天书一样,可能很难有人能看懂。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

    为了确认翻译的准确性,我将STEP 7切换到英语,“先前的本地数据”的英文为“Previous local data”。local data一般翻译为“局部数据”,看来翻译没有问题。德国人的英语水平很高,德国大学图书馆的书籍和杂志大多数都是英语的,不用怀疑德语翻译为英语时失真。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

    V区与参数类型ANY和POINTER有关,打开STEP 7的帮助目录中的附录,选中其中的“\数据类型和参数类型\参数类型\参数类型POINTER的格式”,可以看到参数类型由6个字节组成,0号和1号字节是DB块的编号,不是数据块内的地址时为0。2~5号字节的格式与寄存器间接寻址的格式相同。下面是寄存器间接寻址的32位指针格式:
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

                               x000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

    其中第0~2位(xxx,最低位为第0位)为被寻址地址中位的编号(0~7),第3~18位(16个b)为被寻址地址的字节的编号。第24~26位(rrr)为被寻址地址的区域标识号,指针的最高位x 为0时,为区域内的间接寻址,最高位x 为1时,为区域间(交叉区域)间接寻址。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

    参数类型ANY可以用来传递一片连续的地址区,由10个字节组成。ANY和POINTER用于在块调用时传递输入、输出参数。为了揭开V区之谜,编写了FC1,将地址区中相邻的若干个字累加。地址区的起始地址由参数类型为POINTER的输入参数Start_Addr提供。P# DB2.DBX0.0也可以改写为DB2.DBX0.0。在OB1中调用FC1:
——可——编——程——控-制-器-技——术——门——户

      CALL  FC     1
WWW_P※LCJS_CO※M-PLC-技-.术_网

       Start_Addr :=P#DB2.DBX0.0    //数据区起始地址
WWW_P※LCJS_CO※M-PLC-技-.术_网

       Number   :=5                //需要累加的字数
WWW_PLCJS@_COM%-PLC-技.术_网

       Result     :=DB2.DBD10      //保存运算结果的双整数
WW.W_PLC※JS_C,OM-PL,C-技.术_网

    图1是运行时监控FC1的结果,累加器1(STANDARD)中的数据为十六进制显示格式,AR1是地址寄存器1。终于看到了AR1中的V区地址了!
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

WW.W_PLCJS_COM-PLC-技.术_网

W1WW_P4LCJS_COM-PLC-技.术_网

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行