求救台达高手.数据处理问题.怎样把两个寄存器的之各取出一半? 点击:3226 | 回复:11



qyanghuaq

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 18回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2007年3月13日
发表于:2010-11-26 11:56:50
楼主

各位大侠快来看看了.台达PLC问题搞的头疼死了...我用的一台台达PLC 型号:DVP-14SS .现在和一台仪表用485通讯读取数据.问题出现了:485读过来的数据是:  01(地址)     04(功能码)      02(数据个数)   12 34(数据值)   56 78(CRC校验)..放在寄存器里面变成了 比如:

D100 :(0104)   D101:( 0212)   D102:(3456)    D103:(7800)   现在搞得值反映不出来.因为数值存到两个寄存器里面去了..求各位高手想想办法.怎样能把读的数据值挨个的存到一个寄存器里面去.就像这种形式: D100:(0001)   D101:(0402)    D102:(1234)  (关键!这样就可以用组态或屏读出来了) D103:(5678)

就是说把度过来的数值放在一个寄存器里面去..总之就是怎么样能把1234放在一起?




donglisheng1@163.com

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 136回
  • 年度积分:0
  • 历史总积分:532
  • 注册:2005年9月24日
发表于:2010-11-29 10:47:34
1楼
你能把你PLC里边的通讯及通讯设置与485仪表的通讯设置发上来让大家看看问题出在哪里吗?可能是起始字符的设置引起的吧?

rsview32

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 133回
  • 年度积分:0
  • 历史总积分:123
  • 注册:2006年2月25日
发表于:2010-11-29 23:28:41
2楼

ld m1000

mul d101 k256 d200

div d102 k256 d202

wor d200 d202 d204

end

haha_gao

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 635回
  • 年度积分:0
  • 历史总积分:848
  • 注册:2004年9月29日
发表于:2010-11-30 09:44:20
3楼

用与或的逻辑关系处理

将高8位,低8位屏蔽掉就可以了

qyanghuaq

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 18回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2007年3月13日
发表于:2011-05-11 17:36:49
4楼
自己回答,方便以后有人遇到我同样的问题。用 ‘与 ’就可以了。例如: DAND D100 HFF00 D200    取高两位存到D200里面,DAND D100 H00FF D201 取低两位存到D201里面。。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-05-11 18:54:04
5楼

用移位啦。向左移也行,向右移也行。循环也行。一个乘256另一个除256也行。

哇。

学到了那一招?

小雯

  • 精华:0帖
  • 求助:2帖
  • 帖子:19帖 | 116回
  • 年度积分:231
  • 历史总积分:6964
  • 注册:2001年8月05日
发表于:2011-05-11 21:22:31
6楼

用位传送就行啦!

 

 

彰輝

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 19回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2004年8月30日
发表于:2011-05-13 15:28:24
7楼

ld m1000

mov d101 k4m0

mov d102 k4m16

mov k2m8 k2m32

mov k2m16 k2m40

mov k2m32 d150

end

 

彰輝

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 19回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2004年8月30日
发表于:2011-05-13 15:30:12
8楼

写错一句

mov k2m32 d150改成mov k4m32 d150

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2011-05-13 22:53:26
9楼

用 与或非 操作很方便就取出来了!

robotH

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 688回
  • 年度积分:0
  • 历史总积分:2433
  • 注册:2004年10月14日
发表于:2011-05-14 09:08:53
10楼

你如果用的是RS指令,可以将M1161=ON,设为8位模式,则每个字都只存一个字节的数据,就不会有你说的问题了。

你如果用的是MODRD指令,将M1143=ON,设为RTU模式,也是同样效果。

wanqiu123

  • 精华:0帖
  • 求助:6帖
  • 帖子:9帖 | 20回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2014年10月19日
发表于:2015-11-05 10:40:53
11楼

回复内容:

对: qyanghuaq 自己回答,方便以后有人遇到我同样的问题。用 ‘与 ’就... 内容

我也遇到这样的问题了  我是四个寄存器D300 D301  D302  D303 ,这四个寄存器里显示的都是十进制啊,如何将他们转化为16进制后再并到一个寄存器里,现在主要是我不知道怎么转化为16进制,求大哥帮帮忙


热门招聘
相关主题

官方公众号

智造工程师