技术论坛

mb1中的值应该是多少?

作者 主题
游侠

经验值: 592
发帖数: 155
精华帖: 2
mb1中的值应该是多少?


只看楼主 2005-02-20 22:37:47
FUNCTION "Indirect" : VOID
TITLE =
VERSION : 0.1


VAR_INPUT
Source : POINTER ;
END_VAR
BEGIN

NETWORK
TITLE =

L P##Source;
LAR1 ;
L B#16#20;
T B [AR1,P#0.0];

END_FUNCTION

ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1

BEGIN
NETWORK
TITLE =



CALL "Indirect" (
Source := P#M 1.0);
NOP 0;
END_ORGANIZATION_BLOCK

我认为mb1中的值应该是B#16#20。可实际上并不是,这是怎么回事?
再请教一下:“前局域数据”是指什么?



 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=113593&b_id=4&s_id=0&num=6

游侠

经验值: 592
发帖数: 155
精华帖: 2
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 12:15:12
能详细点吗?

 
以下网友喜欢您的帖子:

  
至圣

经验值: 17112
发帖数: 4192
精华帖: 114
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 12:39:46
错了,POINTER类型你都没有搞清楚,仔细看看书吧!
指针类型为六个字节,头两个字节为该指针指向数据所处的数据块号(若为M区,则该两字节为零),后四个字节则为32位的地址。
所以你应该用:
L P##Source;
LAR1;
L W[AR1,P#0.0];
T LW0;
OPN DB[LW0]; //打开数据块
L D[AR1,P#2.0]; //打开32位地址
LAR1; //装入地址寄存器1
L B#16#20;
T B[AR1,P#0.0];

这样子才对,而且你在的形参最好用OUTPUT类型。
I can do it
以下网友喜欢您的帖子:

  
游侠

经验值: 592
发帖数: 155
精华帖: 2
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 13:20:44
书上关于指针结构,我的确没太搞清楚!:-(
“头两个字节为该指针指向数据所处的数据块号”这怎么理解?


L W[AR1,P#0.0];

T LW0;

OPN DB[LW0]; //打开数据块

L D[AR1,P#2.0]; //打开32位地址

LAR1; //装入地址寄存器1

为什么要打开数据块?

 
以下网友喜欢您的帖子:

  
至圣

经验值: 17112
发帖数: 4192
精华帖: 114
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 15:27:28
你仔细看看编程手册书中最后面的附录里关于数据类型的说明,就能理解指针类型了。你问我为什么要打开数据块?呵呵,最好去问西门子。比如你直接用DBB0,那谁知道这个DBB0是属于DB1(Db1.DBB0)还是属于DB2(DB2.DBB0)或者其他的DB呢?所以要先打开数据块,再引用里面的数据。还有你在FC/FB里应用POINTER类型时,其实类似于C语言里的指向指针的指针,自己好好理解吧,这个不是别人一下就能教会你的。我也是自己看书弄懂的
I can do it
以下网友喜欢您的帖子:

  
游侠

经验值: 592
发帖数: 155
精华帖: 2
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 21:06:22
”L D[AR1,P#2.0]; “
这是什么意思?为什么必须是”P#2.0“,而其他的都会出现错误?

 
以下网友喜欢您的帖子:

  
游侠

经验值: 592
发帖数: 155
精华帖: 2
回复:mb1中的值应该是多少?


只看楼主 2005-02-21 22:20:33
谢谢伊默,这个问题我已经弄清楚了!
L P##Source;
LAR1;
这两条代码中ar1中的值是previous local data。

L W[AR1,P#0.0];
T LW0;
OPN DB
表示获取指针结构中DB number,指针结构中前2字节。

L D[AR1,P#2.0];
表示获取p#m1.0的地址,指针结构中后4字节。

这种指针的指针,和c语言中的指针的指针意义上是一样的!!!

 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
mb1中的值应该是多少?
×
扫描打开手机版
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。