首页 上一页 1 2 下一页 尾页

MODBUS协议真的存在吗? 点击:1324 | 回复:22



蠢猪

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 08:30:01
楼主

我是个菜鸟

在学MODBUS时看了很多资料和很多高手的帖子

都说要用MODBUS就必须支持MODBUS协议(像一些人机 PLC 和一些仪表类)

但我不知道单片机是否支持MODBUS协议

因为我看到很多帖子说:如果要用单片机通信最好自己写MODBUS协议和效验

但我看他们无非是设置好波特率 数据长度 数据类 奇偶效验 以及CRC效验等等

难道这就是传说中的MODBUS协议

如果以上不是所谓的协议 那么单片机是支持MODBUS的 而那些程序里面的“协议”只是设置他的参数 协议不可以个人随便写的 

如果上面是真的 那么是否只要支持通用通信口又可以自己写协议的话 那些不支持MODBUS的也能用MODBUS

我对此很不明白

谢谢高手赐教

原谅我这个低级菜鸟的弱智问题




标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 08:58:57
1楼
波特率 数据长度 数据类 奇偶效验 以及CRC效验等等,是任何串行通讯都要首先设定的最基础的通讯条件,这是用软件对通讯的硬件进行的设置。只有计算机、PLC或者单片机等等设定了相同的条件,通讯硬件才能相互进行通讯。MODBUS还有其他的协议,都要在这个硬件串行通讯设定的基础上进行通讯,MODBUS通讯协议本身是具体的通讯内容,在这个内容里,采用某种协议来控制具体设备,而不是控制通讯硬件的。

标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 09:07:08
2楼

这就好比你现在打电话,至于电话公司怎么来传输你的声音,这个是硬件协议(好比是波特率 数据长度 数据类 奇偶效验 以及CRC效验等等),你使用汉语还是英语或者其他的什么语言,这个才是MODBUS通讯协。因为只有具体的硬件协议搞好了,电话两端才有可能通话(硬件协议--波特率 数据长度 数据类 奇偶效验 以及CRC效验等等),但是通话是为了双方的沟通,要做什么事情,只有双方都懂得相同的语言(MODBUS通讯协议等等),才能明白,才能去具体执行。

标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 09:15:47
3楼
单片机是个最基础的CPU,除了硬件协议可以设定外,其他的软件协议都要单独编写(不好意思,现在单片机发展太快,或许现在单片机开发有某种软件协议),如果你需要通讯的设备是用“汉语”(MODBUS)和你对话的,你就要让单片机学会说“中国话”(编写MODBUS协议)。

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 09:20:19
4楼

触点大师

我想知道如果和不支持MODBUS的PLC通信

我设置好波特率 数据长度 数据类 奇偶效验 以及CRC效验等等

用标准的MODBUS格式发送命令和接受(利用他的通用通信口)

那样可以实现么?

还有你的意思是说:

单片机是不带MODBUS的  在设置好波特率 数据长度 数据类 奇偶效验 以及CRC效验等等

后再按标准的MODBUS格式发出

这个设置和格式总体来说就是MODBUS协议

是不是这样啊大师

非常感谢你热心的回复

 

 

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 09:26:33
5楼

还有

我看了MODBUS协议说明书

上面也只有说明

MODBUS的设置和标准格式以及命令和CRC效验

我个人感觉上面说明的那些

虽然市面上说不支持MODBUS的 只要可以自己写程序的控制器

都可以做到

很希望大师能给与批评和指导

pqsh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 291回
  • 年度积分:0
  • 历史总积分:432
  • 注册:2006年9月20日
发表于:2008-12-18 09:39:52
6楼
按标准的modbus格式,格式就是协议的一部分!
协议包括格式,比如"从站地址,命令码,首地址,长度和校验",这个主站求数据格式,就是协议的一部分.这个格式在其它协议里不会是一样的.
协议除了收发"格式"外,还要包括一系列的其它"规则",比如校验,响应时间,错误处理.
你也许觉得,你的单片机只是按格式发出数据,然后正好设备可以正确响应,你收到数据了,这不是太简单了,这也算协议吗?
这让你觉得,两个单片机,不要什么协议也可以通讯啊.你甚至可以让一台机器不停发送数据,一台接收.那协议是什么意思?真的存在吗?
但是,你可以想一下,如果没有收到数据呢?如果收到的数据不是你想象的呢?如果设备没连接上呢?连接多个设备怎么办?这些都要处理.
你所做的也许是你自己的两台机器,所以的过程都在你控制中.就算这样,你知道的数据交换过程,也叫协议.数据接口就是这样,再简单也需要定义规则,需要协议.
modbus定义的是一套大家都可以用,可以遵守的规则.根据和符合这个规则,大家就可以互相交流.像上面楼大师的解释.

标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 09:46:27
7楼

我可不是什么大师,还是直呼我的名字就好,呵呵。波特率 数据长度 数据类 奇偶效验是232、485、422等硬件通讯的设置内容。使用MODBUS协议格式发出,要编写按照MODBUS协议格式的程序。关键是这些控制器允许你写的是什么级别的程序,如果是全开放的(那不就成了自己开发控制器了),当然可以做到MODBUS通讯了。

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 09:48:28
8楼

楼上的大师

是不是只要我按照标准的MODBUS参数 命令 格式 时间 错误反馈 写程序(也就是协议)

那么不支持MODBUS的产品也可以用MODBUS了

是不是这样?

再次感谢两位大师热心的帮助

谢谢

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 09:56:39
9楼

关键是这些控制器允许你写的是什么级别的程序,如果是全开放的

这句我搞不懂哦

标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 09:57:31
10楼
是不是只要我按照标准的MODBUS参数 命令 格式 时间 错误反馈 写程序(也就是协议)

那么不支持MODBUS的产品也可以用MODBUS了

关键是你写是---不支持MODBUS的产品---的程序吗?如果你编写了一个该协议的程序到这个产品中,那么这个产品就支持这种协议

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 10:03:28
11楼

这下我懂了(除了上面那句话外)

非常感谢两位大师的热心帮助

再次感谢

有空来我这边请你们喝酒

东莞常平 卢屋 嘉丰电子 工程部 李钢  13729986857

标准触点

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 835回
  • 年度积分:0
  • 历史总积分:1281
  • 注册:2006年8月05日
发表于:2008-12-18 10:14:32
12楼
例如XP操作系统程序,它开放了一部分,所以很多工具软件或者游戏都利用这个开放的链接编写并运行,但是它又不是全部允许别人任意修改这个XP本身的。这是一个安全许可级别问题,强行进入了他的不允许别人修改的内容区域,就可能造成混乱或者黑客病毒。

蠢猪

  • 精华:0帖
  • 求助:1帖
  • 帖子:7帖 | 50回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2003年10月17日
发表于:2008-12-18 10:21:12
13楼

懂了

今天真幸运能遇到你们两位大师

再次感谢

死亡骑士

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1774回
  • 年度积分:0
  • 历史总积分:2630
  • 注册:2006年7月17日
发表于:2008-12-18 10:22:48
14楼

当然有了          

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2008-12-21 20:49:15
15楼
引用标准触点 的回复内容:是不是只要我按照标准的MODBUS参数 命令 格式 时间 错误反馈 写程序(也就是协议)

那么不支持MODBUS的产品也可以用MODBUS了

关键是你写是---不支持MODBUS的产品---的程序吗?如果你编写了一个该协议的程序到这个产品中,那么这个产品就支持这种协议

完全支持

dzwfosu

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 53回
  • 年度积分:0
  • 历史总积分:238
  • 注册:2008年2月26日
发表于:2008-12-30 14:19:57
16楼
完全支持                                                 。

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 651回
  • 年度积分:0
  • 历史总积分:1862
  • 注册:2005年6月12日
发表于:2009-03-05 17:20:21
17楼

那就是自由口协议了

 

blackdevil

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 123回
  • 年度积分:0
  • 历史总积分:188
  • 注册:2008年9月10日
发表于:2009-03-11 14:18:33
18楼

什么是协议~!?

协议就是两者之间通讯的规则,规则也就是协议

最下面的物理层主流就是基于RS485,11bit,奇偶效验,N位停止位等等

然后基于RS485再建立你的协议内容

也就是说,如果你的自由口是基于RS485的,你也就可以通过软件来编写MODBUS RTU协议了

xt19760104

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2009年1月22日
发表于:2009-09-20 12:40:27
19楼
楼主的意思我明白,modbus是某一个数值,而实际modbus一个方程,不是不变的,是在方程内可变的

xyn8512

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2009年10月30日
发表于:2009-11-13 16:39:55
20楼

看大师的解说,受益匪浅啊。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页