串口接收发送的数据代表什么意思 点击:938 | 回复:5



    
  • 精华:2帖
  • 求助:45帖
  • 帖子:49帖 | 545回
  • 年度积分:0
  • 历史总积分:10298
  • 注册:2018年9月14日
发表于:2019-05-16 16:38:32
楼主
求助帖200分-已结帖

上一月的帖子,研究了个把星期,总算把RS指令发送出数据了。

http://bbs.gongkong.com/d/201904/790051_1.shtml

PLCAS.PNG

照着它的模块专用软件发送的, 01 03 00 20  00 18 44 0A

aikanbukan.PNG

通过PLC收到数据 01 00 30 40 40 27 71 可以对比它的专用软件接收的数据,基本一致,至此RS通讯已经通讯上了

捕js.PNG

01 03 是读取站号1的数据,最后位应该是效验。模块的通道1为H20,发送的 01 03 00 20  00 18 44 0A大概是什么意思,接受的数据又是什么意思,是如何转化为我们看到的浮点数的。下图是接收到的数据,在PLC中我该如何才能把这些接收到的数转化为可识别的浮点数

什么意思.PNG



1分不嫌少!



谢谢你的爱1999

  • [版主]
  • 精华:1帖
  • 求助:12帖
  • 帖子:717帖 | 3885回
  • 年度积分:23
  • 历史总积分:160147
  • 注册:2013年4月29日
发表于:2019-05-16 16:52:25
1楼

通道后面就是读取的内容  ASCI码转换

彩色气球

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 473回
  • 年度积分:0
  • 历史总积分:2657
  • 注册:2011年7月11日
发表于:2019-05-16 22:24:12
2楼

看下modbus的通讯的格式,然后你自己对比一下

 站地址-功能码-通讯地址-通讯长度-校验

01-03-00 20-00 18 - 44 0A


接收数据你要学会浮点表示法,知道符号 阶码 尾数 这样你才能知道你的浮点是怎么转换过来的

比如40 3F D8 8F  转换成浮点是 2.9975926876068115

aaaa.png

  • 精华:2帖
  • 求助:45帖
  • 帖子:49帖 | 545回
  • 年度积分:0
  • 历史总积分:10298
  • 注册:2018年9月14日
发表于:2019-05-17 10:10:37
3楼


引用 彩色气球 的回复内容: 看下modbus的通讯的格式,然后你自己对比一下 站地...

-------------------------

当D0=D8 8F,D1=40 3F时,D0浮点显示为2.9975927,

KANKAN.PNG

转成10进制之后得到数据

16WEI.PNG

捕获23.PNG

一.那排列的顺序应该是1101 1000 1000 1111 0100 0000 0011 1111(首位为正,为负数啊,这PLC取的数据都是相反的吗?)

假使排列的顺序就为40 3F D8 8F,即0100 0000 0011 1111 1101 1000 1000 1111

其中2.9975927=10.1111 1111 0110 001010000000如何表示指数为1的?这个我知道了,1为指数1,1000 0001为指数2,1000 0010 为指数3.....


二.0103 0020 0018 440A我知道是什么意思了,但返回的0103 30 403F D88F中的“30”大概代表什么意思



彩色气球

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 473回
  • 年度积分:0
  • 历史总积分:2657
  • 注册:2011年7月11日
发表于:2019-05-17 23:13:39
4楼
  1.    浮点D0 是个双字(D0 D1),D1 是高位 D0 是低位,PLC一般都是这样分布的。所以肯定是40 3F D8 8F  指数那块可以直接转无符号整型(0-255),然后计算得出数值 128-127=1

  2. 30是接收到的数据长度,转换成十进制就是48, 也就是说你这个应该接收到48个字节

  • 精华:2帖
  • 求助:45帖
  • 帖子:49帖 | 545回
  • 年度积分:0
  • 历史总积分:10298
  • 注册:2018年9月14日
发表于:2019-05-18 15:38:35
5楼

原来是-127,了解了


热门招聘
相关主题

官方公众号

智造工程师