打印

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

[复制链接]
6245|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨落沉轩|  楼主 | 2012-12-20 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
chen3bing| | 2012-12-20 10:23 | 只看该作者
你可以搜一下MODBUS协议,不难的。

使用特权

评论回复
板凳
comeon201208| | 2012-12-20 11:22 | 只看该作者
这个我同学在学校专门研究过的,可以的话我可以帮你问问的啊

使用特权

评论回复
地板
雨落沉轩|  楼主 | 2012-12-20 13:36 | 只看该作者
comeon201208 发表于 2012-12-20 11:22
这个我同学在学校专门研究过的,可以的话我可以帮你问问的啊

好呀,如果可以的话,最好不过了

使用特权

评论回复
5
忄小龙| | 2012-12-20 14:14 | 只看该作者
不难吧,你想了解哪方面啊?之前做过485通信modbus

使用特权

评论回复
6
雨落沉轩|  楼主 | 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上的,但碰到了这个问题不知道如何解决?不知道能否请前辈指点一二。

使用特权

评论回复
7
comeon201208| | 2012-12-20 17:57 | 只看该作者
回复楼主的,我同**系方式的短信发给你的,查收下的啊

使用特权

评论回复
8
雨落沉轩|  楼主 | 2012-12-20 19:28 | 只看该作者
comeon201208 发表于 2012-12-20 17:57
回复楼主的,我同**系方式的短信发给你的,查收下的啊

好的,看到了,谢谢你

使用特权

评论回复
9
chenyu988| | 2012-12-20 21:27 | 只看该作者
雨落沉轩 发表于 2012-12-20 16:02
因为之前没接触过,所以希望能从前辈那边得到点提示,具体我还不知道怎么问,还在看。但目前我在《MSP430 ...

G2553没有uart??你再看下。

使用特权

评论回复
10
chenyu988| | 2012-12-20 21:28 | 只看该作者
按照它的数据格式传输即可

使用特权

评论回复
11
cjzy22| | 2012-12-20 22:08 | 只看该作者
分机号+读/写+起始地址+寄存器长度+crc

使用特权

评论回复
12
denvice| | 2012-12-20 23:03 | 只看该作者
这个协议比较好弄,去网上下载一个modbus调试精灵,网上好像还有人上传了51写的程序你找一下

使用特权

评论回复
13
beanandpeach| | 2012-12-21 08:47 | 只看该作者

使用特权

评论回复
14
ymind| | 2012-12-21 09:00 | 只看该作者
设备侧(slave)用freemodbus,很多现成实现。
PC侧(master)用libmodbus,但好像没ASCII模式。网上也有商业的二进制库。

使用特权

评论回复
15
xiangyi0801| | 2012-12-21 09:32 | 只看该作者
。。。。

使用特权

评论回复
16
yayasoso| | 2012-12-21 09:39 | 只看该作者
你在论坛找下,有个叫孙可的网友用STM32的modbus,我自移植过,用来传送温度和压力值。温度传感器是DS18B20.因为替别人做的,代码不方便发。不过几乎都是参考他的这个帖子的。只用到功能3和功能6

使用特权

评论回复
17
雨落沉轩|  楼主 | 2012-12-21 10:25 | 只看该作者
首先,谢谢大家的回答,还在学习中,目前碰到了一个问题,就是MSP430中,使用串口如果要发送带有奇偶校检位的数据应该如何发送。我目前看一个前辈对51发送带有奇偶校检位的数据方式,其中说到“串口发送时,先把奇偶校验位的值写入TB8,然后再将要发送的数据写入发送缓冲器SBUF  的“
具体网页:http://bbs.**/thread-88478-1-1.html

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


使用特权

评论回复
18
tianm| | 2012-12-21 10:32 | 只看该作者
先去把modbus协议看明白  其它都好办了

使用特权

评论回复
19
caiming_138| | 2012-12-21 10:53 | 只看该作者
这东西不难

使用特权

评论回复
20
Ryanhsiung| | 2012-12-21 14:07 | 只看该作者
做过 24路温度采集,通过类似MODBUS总线传给上位机。分辨率0.1度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

250

帖子

0

粉丝