登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:关于ANY 类型定义迷茫中

点击:1045 回复:2

LAR1  P##ANY_1                    //Address helpvariable
     L     W#16#1002                   //Typ = Byte ;02 is means Byte
     T     LW [AR1,P#0.0]              //为什么是1002 而不直接2哪? 根据ANY指针格式,第一个字的低位表示数据类型,高位表示该类型的保留字同意为10H   此处为2个字节
     L     2                           //length Data   重复因子 重复因数表明通过参数类型ANY传递的数据类型的大小
     T     LW [AR1,P#2.0]
     L     #Stat_DB                    //No DBs
     T     LW [AR1,P#4.0]
     L     DBW   10                    //Address SEND
     SLW   3                           //为什么左移3位 因为当变为指针寻址时 指针寄存器的存储位意义改变 后三位变为位
     L     P#DBX 0.0                   //DBX Vorbelegen      OD                                //此处为什么做个或运算
     T     LD [AR1,P#6.0]              //指定存储区域   表示由dbx10.0开始存储

该程序 为ANY数据类型定义,不明白红色标记部分  忘大侠指导,因收集的ANY 资料太少,现在正处于迷茫期  
哪位大侠给点 ANY的 资料 chuxianfa@163.com     不胜感激
11-09-20 13:35
ANY指针是32位指针,0~2位表示位地址,3~18位表示存放数据的地址;
请参考西门子官方网站下载中心
11-09-20 14:52
楼上的解释有问题:
1. ANY是一种用于装载和传输‘任意’类型数据用的数据类型,其大小(字节数)未知;
2. ANY数据类型要通过ANY类型指针进行寻址;
3. ANY型指针由10个字节组成(即上图),其中,
a) 字节0为西门子S7标识符16#10
b) 字节1是具体所装载和传输的数据类型;
c) 字节2,3为传送的字节数;
d) 字节4,5为数据块号;
e) 字节6,7,8,9为寻址双字指针;
楼主的程序有问题吧,L DBW 10 //Address SEND
SLW 3  这两段完全没有意义
L P#DBX 0.0
T LD [AR1,P#6.0] //将P#DBX0.0指针值传递给LD [AR1,P#6.0]
要不就是楼主程序不完整。
以上是我的看法,有错之处请各位大侠指导~
11-12-21 05:01

工控新闻

更多新闻资讯