有人做过采集温度,并通过Modbus协议传输协议传输给PC吗?

[复制链接]
 楼主| 雨落沉轩 发表于 2012-12-20 10:14 | 显示全部楼层 |阅读模式
目前只是检测温度值,但需要采集多个,所以老师要求利用Modbus协议,之前没有接触过利用通信协议来实现数据的收发,希望有前辈能指点一下!
chen3bing 发表于 2012-12-20 10:23 | 显示全部楼层
你可以搜一下MODBUS协议,不难的。
comeon201208 发表于 2012-12-20 11:22 | 显示全部楼层
这个我同学在学校专门研究过的,可以的话我可以帮你问问的啊
 楼主| 雨落沉轩 发表于 2012-12-20 13:36 | 显示全部楼层
comeon201208 发表于 2012-12-20 11:22
这个我同学在学校专门研究过的,可以的话我可以帮你问问的啊

好呀,如果可以的话,最好不过了
忄小龙 发表于 2012-12-20 14:14 | 显示全部楼层
不难吧,你想了解哪方面啊?之前做过485通信modbus
 楼主| 雨落沉轩 发表于 2012-12-20 16:02 | 显示全部楼层
本帖最后由 雨落沉轩 于 2012-12-20 19:35 编辑
忄小龙 发表于 2012-12-20 14:14
不难吧,你想了解哪方面啊?之前做过485通信modbus


因为之前没接触过,所以希望能从前辈那边得到点提示,具体我还不知道怎么问,还在看。但目前我在《MSP430系列单片机实用C语言程序设计_张晞_人民邮电出版社》这本书上看到有一个关于发送包的例子,用的是USART的串口。我看了一下,其中用到了一个接收控制寄存器U0RCTL,代码如下:
***********************************************************************/
#pragma vector=USCIAB0RX_VECTOR
__interrupt void Usart0Rx()
{ if((U0RCTL&RXERR)==0)
     {
          AddUsData(UCA0RXBUF);
     }
  else
     {
          SetBaoErr();
          U0RCTL &= ~(FE+PE+OE+BRK);  
     }
     LPM3_EXIT;
}

而我用的是之前在Ti网站上申请到MSP430lanuchpad,芯片是G2553,用的是USCI的串口(没有USART),对比一下两个数据手册,发现没有这个寄存器。U0RCTL &= ~(FE+PE+OE+BRK);  这句话的意思应该是产生错误时这些相应的位会置位,然后发送完包错误信息SetBaoErr()后,需要把它清楚。本来想把书上的程序移植到G2553上的,但碰到了这个问题不知道如何解决?不知道能否请前辈指点一二。
comeon201208 发表于 2012-12-20 17:57 | 显示全部楼层
回复楼主的,我同**系方式的短信发给你的,查收下的啊
 楼主| 雨落沉轩 发表于 2012-12-20 19:28 | 显示全部楼层
comeon201208 发表于 2012-12-20 17:57
回复楼主的,我同**系方式的短信发给你的,查收下的啊

好的,看到了,谢谢你
chenyu988 发表于 2012-12-20 21:27 | 显示全部楼层
雨落沉轩 发表于 2012-12-20 16:02
因为之前没接触过,所以希望能从前辈那边得到点提示,具体我还不知道怎么问,还在看。但目前我在《MSP430 ...

G2553没有uart??你再看下。
chenyu988 发表于 2012-12-20 21:28 | 显示全部楼层
按照它的数据格式传输即可
cjzy22 发表于 2012-12-20 22:08 | 显示全部楼层
分机号+读/写+起始地址+寄存器长度+crc
denvice 发表于 2012-12-20 23:03 | 显示全部楼层
这个协议比较好弄,去网上下载一个modbus调试精灵,网上好像还有人上传了51写的程序你找一下
beanandpeach 发表于 2012-12-21 08:47 | 显示全部楼层
ymind 发表于 2012-12-21 09:00 | 显示全部楼层
设备侧(slave)用freemodbus,很多现成实现。
PC侧(master)用libmodbus,但好像没ASCII模式。网上也有商业的二进制库。
xiangyi0801 发表于 2012-12-21 09:32 | 显示全部楼层
。。。。
yayasoso 发表于 2012-12-21 09:39 | 显示全部楼层
你在论坛找下,有个叫孙可的网友用STM32的modbus,我自移植过,用来传送温度和压力值。温度传感器是DS18B20.因为替别人做的,代码不方便发。不过几乎都是参考他的这个帖子的。只用到功能3和功能6
 楼主| 雨落沉轩 发表于 2012-12-21 10:25 | 显示全部楼层
首先,谢谢大家的回答,还在学习中,目前碰到了一个问题,就是MSP430中,使用串口如果要发送带有奇偶校检位的数据应该如何发送。我目前看一个前辈对51发送带有奇偶校检位的数据方式,其中说到“串口发送时,先把奇偶校验位的值写入TB8,然后再将要发送的数据写入发送缓冲器SBUF  的“
具体网页:http://bbs.**/thread-88478-1-1.html

他的意思应该是,奇偶位是要自己算出来的,然后再写入TB8(对51不是很熟悉,所以TB8也不了解)。那么再MSP430中奇偶位应该写到哪里呢?还有如何发送这个校检位也不是太理解?  不知道是本身就理解错了,还是?望前辈指教。


tianm 发表于 2012-12-21 10:32 | 显示全部楼层
先去把modbus协议看明白  其它都好办了
caiming_138 发表于 2012-12-21 10:53 | 显示全部楼层
这东西不难
Ryanhsiung 发表于 2012-12-21 14:07 | 显示全部楼层
做过 24路温度采集,通过类似MODBUS总线传给上位机。分辨率0.1度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

250

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部