关于西门子PLC中地址的问题 点击:1562 | 回复:7



linhao0806

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 17回
  • 年度积分:0
  • 历史总积分:184
  • 注册:2011年8月02日
发表于:2011-08-15 14:17:03
楼主

大家好,我是一个新手,最近在看一段程序时,对于其中左移三位这个指令不是很明白,问别人说是西门子存储物理地址就是这样。请教高手们,麻烦给我解释清楚为什么商的值要左移三位,而余数的值不用。程序如下。

//地址偏移量要大于零
L #OffsetAdress
L 0
<=I

R #Error //取消报警
//地址偏移量减一
L #OffsetAdress
L 1
-I
T #OffsetAdress
//取得地址的整数部分
L #OffsetAdress
L 8
/I
T #PullCord_R_Quotient
L #PullCord_R_Quotient
SLD 3
T #PullCord_R_Quotient
//取得地址的小数部分
L #OffsetAdress
L 8
MOD
T #PullCord_R_Residue
//求和获得实际地址
L #PullCord_R_Quotient
L #PullCord_R_Residue
+I
T #RealAdress
JU END
//地址偏移量报警
END: NOP 0

 

 

另外这个左移三位是物理地址与逻辑地址的变换吗????




彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:54帖 | 1626回
  • 年度积分:8
  • 历史总积分:7586
  • 注册:2006年9月21日
发表于:2011-08-16 06:22:30
1楼
移动三位即移动了一个字节,因一个字节占8位,如现在地址是MB5如向左移就到了MB6地址,向右就寻址到了MB4地址。

linhao0806

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 17回
  • 年度积分:0
  • 历史总积分:184
  • 注册:2011年8月02日
发表于:2011-08-16 13:42:48
2楼
回复内容:
对:彩虹 关于移动三位即移动了一个字节,因一个字节占8位,如现在地址是MB5如向左移就到了MB6地址,向右就寻址到了MB4地址。 内容的回复:

你的意思就是说:我的商的值占在MB5,将他左移三位后到MB6,然后将余数值放在MB5中,和移位完成的MB6做成一个WORD型来表示地址吗??

linhao0806

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 17回
  • 年度积分:0
  • 历史总积分:184
  • 注册:2011年8月02日
发表于:2011-08-16 17:56:27
3楼

回复内容:
对:彩虹 关于移动三位即移动了一个字节,因一个字节占8位,如现在地址是MB5如向左移就到了MB6地址,向右就寻址到了MB4地址。 内容的回复:



还要麻烦您问下,单纯的地址30.0的存放形式是什么啊?今天有个工程师跟我讲地址的存放形式是不管有没有小数即30或者30.0,其实在PLC中是一样的,都是后三位(就是0---2)是小数的存放区,整数放在3---15或31的位置。是这样的吗?

还有如果现在把30.0上加2,须先把2左移三位成为2.0才能加,要是直接加就成30.2了。是这样吗???

China_boy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2011年8月15日
发表于:2011-08-16 22:23:30
4楼
回复内容:
对:linhao0806 关于

回复内容:
对:彩虹 关于移动三位即移动了一个字节,因一个字节占8位,如现在地址是MB5如向左移就到了MB6地址,向右就寻址到了MB4地址。 内容的回复:



还要麻烦您问下,单纯的地址30.0的存放形式是什么啊?今天有个工程师跟我讲地址的存放形式是不管有没有小数即30或者30.0,其实在PLC中是一样的,都是后三位(就是0---2)是小数的存放区,整数放在3---15或31的位置。是这样的吗?

 

还有如果现在把30.0上加2,须先把2左移三位成为2.0才能加,要是直接加就成30.2了。是这样吗???

内容的回复:32位指针的结构(内部区域):31 ..............19   18..................3    2 1 0 ;    0 1 2是位地址,   3......18 是字节地址(无符号的整数),  19.........31 未定义。你说的是基本正确的,所以指针的寻址要偏移3位。


彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:54帖 | 1626回
  • 年度积分:8
  • 历史总积分:7586
  • 注册:2006年9月21日
发表于:2011-08-17 06:45:10
5楼
你要清楚这里的移位是说变动地址,是在做地址运算(即变动地址)。

彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:54帖 | 1626回
  • 年度积分:8
  • 历史总积分:7586
  • 注册:2006年9月21日
发表于:2011-08-17 06:56:39
6楼
还有如果现在把30.0上加2,须先把2左移三位成为2.0才能加,要是直接加就成30.2了。是这样吗???
答:这里的加2是在地址30.0地址上加2,如这里指针地址是指向的是输入地址I30.0或Q30.0或M30.0或DB0.DBX30.0那你加2后地址就指向了I30.2,要搞清楚寻址有位寻址,字节寻址,字寻址,双字寻址。很多人刚学都很难搞懂高清晰,这也使学西门子的难点要对西门子的数据结构很清楚才能很好的运用指针寻址。

华狼

  • 精华:0帖
  • 求助:5帖
  • 帖子:32帖 | 145回
  • 年度积分:2
  • 历史总积分:650
  • 注册:2008年2月03日
发表于:2011-08-18 10:04:21
7楼
学习了。

热门招聘
相关主题

官方公众号

智造工程师