打印

实现modbus通讯协议的思路

[复制链接]
5867|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuaaa|  楼主 | 2010-5-25 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
兄弟姐妹们,我刚接触modbus,谁能说一下实现modbus的具体思路吗?具体步骤。我现在不知道如何下手了
沙发
wuaaa|  楼主 | 2010-5-25 09:44 | 只看该作者
大侠们帮帮忙啊,我自己体会的话会走不少弯路。

使用特权

评论回复
板凳
jiabin1024| | 2010-5-25 10:30 | 只看该作者
找点资料看看不就知道了,

ModBus_protocol.pdf

156.79 KB

使用特权

评论回复
地板
wuaaa|  楼主 | 2010-5-25 15:11 | 只看该作者
我有一些资料,但不明白协议中的字符帧(11位)和消息帧(地址码、功能码...8bit)是什么关系,
是包含关系吗?比如单说消息帧中的功能码的格式就是前面提到的字符帧格式吗?8和11又是怎么回事

使用特权

评论回复
5
zuoyou| | 2010-5-28 10:22 | 只看该作者
买个具有MODBUS引擎的多串口扩展芯片不就得了
SPI接口,4个UART,每通道256bytes,28 pin(SDIP)

使用特权

评论回复
6
stonejust| | 2010-5-30 07:28 | 只看该作者
把复杂的东西简单化就好了。搞个modscan看看它发的数,就明白了。消息帧是你发送的一组(n个字节)数据的总称,11位的是串行通讯一个字节由11个二进制组成,1起始位8数据位1校验位1停止位(如无校验位为2停止位)。刚搞了个项目,两次用到modbus RTU,一点建议:首先两个软件很好很强大,modscan和modsim,一主一从,外加一个232-485转换器,如果必要的话还有一根usb-232转换线。这个东西没有捷径,网上有不少程序参考,自己学习吧。

使用特权

评论回复
7
wuaaa|  楼主 | 2010-5-31 15:19 | 只看该作者
本帖最后由 wuaaa 于 2010-5-31 15:22 编辑

谢谢,但是消息帧中每一位都要求是8bit,是不是字符帧(11bit)中的起止位不用管,发送数据时硬件自动置低或置高?PIC传送数据时一次最多只能传送9bit吧?

使用特权

评论回复
8
stonejust| | 2010-5-31 17:28 | 只看该作者
晕!8位或9位是你发的,还有3位(8位)或2位(9位)你不用理他,自动生成的。你那个帖子回头再回复你,下班了。

使用特权

评论回复
9
wuaaa|  楼主 | 2010-6-1 16:07 | 只看该作者
谢谢8楼的兄弟,我一直疑惑多出的那几位是不是不用管,只是没能确定。这下确定了

使用特权

评论回复
10
stonejust| | 2010-6-3 08:36 | 只看该作者
客气了。

使用特权

评论回复
11
pqsh| | 2010-6-4 11:12 | 只看该作者
想得太复杂了.
串口的实现不用管的,能收能发8位的数据就行了.在modbusrtu层,你就认为是一串数字的格式好了.
6楼说得很清楚了.补充一下,pic出来的应是TTL(或近似)信号电平,用PC调试的话,要转232或者485信号.因为电平的关系,转485的要简单得多.
貌似大家习惯modscan,其实有款更好的modbus调试软件,mdbus,好像是calta的.

使用特权

评论回复
12
stonejust| | 2010-6-5 09:30 | 只看该作者
11楼你好,哪里有mdbus,找到几个不能下载。有的话能否共享一个,O(∩_∩)O谢谢!

使用特权

评论回复
13
yun_xiao| | 2010-6-5 10:14 | 只看该作者
附议。

使用特权

评论回复
14
chengqing3968| | 2014-6-13 16:06 | 只看该作者
学些了……

使用特权

评论回复
15
949155525| | 2014-6-29 20:04 | 只看该作者
embedded-solutions.at
这是个http连接
不看广告看疗效

使用特权

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

本版积分规则

0

主题

40

帖子

1

粉丝