modbus如何实现主从机通讯 点击:4937 | 回复:19



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-06-16 14:48:00
楼主
请问:采用modbus协议,如何实现PC机到单片机的主从式通讯



1234567890

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2002年7月09日
发表于:2003-06-06 09:57:00
1楼
PC做Modbus主,单片机做从,做2个程序就可以了。

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2003-06-06 14:14:00
2楼
MODBUS已经很明确规定其报文格式,你是在什么地方遇到麻烦无法实现呢?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-06-06 21:22:00
3楼
谢谢两位的回复。 我的问题如下: 1、如果用单片机串口的模式2和模式3实现主从式多机通讯,那么作为主机的PC机用VB编程时,如何写第9位数据? 2、根据modbus协议,主机查询从机时,是先发地址码,等从机回应后,再把功能码、数据、校验码发出,还是将地址码、功能码、数据、校验码一起发出去?

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2003-06-09 09:16:00
4楼
如果你的第9位想设为1,那就直接把数值加上128

仪表新兵

  • 精华:1帖
  • 求助:0帖
  • 帖子:38帖 | 387回
  • 年度积分:0
  • 历史总积分:508
  • 注册:2003年4月14日
发表于:2003-06-09 18:12:00
5楼
TO:hongyun: "根据modbus协议,主机查询从机时,是先发地址码,等从机回应后,再把功能码、数据、校验码发出,还是将地址码、功能码、数据、校验码一起发出去?"    当然是一块发出去,然后等待接收应答。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-06-09 18:32:00
6楼
谢谢! plc1234: 如果一块发出去,那么消息帧各为3.5个字符的起始位和停止位(T1-T2-T3-T4)怎么处理? 远方: 我不太理解。要发送的1个字节(8bit)加上128怎么能使第9位为1?如果第9位想设为0又该怎么办?

仪表新兵

  • 精华:1帖
  • 求助:0帖
  • 帖子:38帖 | 387回
  • 年度积分:0
  • 历史总积分:508
  • 注册:2003年4月14日
发表于:2003-06-09 20:27:00
7楼
用延时。是大于3.5个字符。 用“与”运算置零置一。

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2003-06-10 12:49:00
8楼
先确定你使用的帧格式,如: <7 N 2> <7 E 1> <8 N 2> <8 E 1> 等,举个例子,如果你使用<8 N 2> 那发送一个字节就有11bit,如发送数据0X02: STR(0) 0 1 0 0 0 0 0 0 stop(1) stop(1)

hongyun

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年4月29日
发表于:2003-06-13 19:57:00
9楼
Thanks. 我还有一个问题。 请问,那位有CRC-16校验的可执行程序(校验多项式X16+X15+X2+1)?我想检验一下我生成的校验码对不对。

陈新

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 14回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2002年5月19日
发表于:2003-06-14 17:55:00
10楼
modus手册上都有

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2003-06-16 14:48:00
11楼
FF 03 21 01 00 02 8A 29 看看上面这个序列,8A和29分别是高低位CRC值,看看你的结果是否一样

新鲜果果

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2004年4月26日
发表于:2004-05-29 13:49:00
12楼
我是modbus新手,我也要开发一个微机做主,单片机做从的系统。 可是我无从下手。主要是程序方面有障碍,希望各位高人给提供一个程序实例。我参考参考。 楼上1234567890大哥所说的做两个程序我不太明白。能给解释清楚一点吗?

学习学习~~~

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2005年9月28日
发表于:2005-09-30 09:33:00
13楼
学习学习~~~~

alwayssq

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2005年11月02日
发表于:2005-11-02 14:35:00
14楼
我也是新手啊,希望高人们给个程序实例参考一下
sq001670@sohu.com

club

  • 精华:0帖
  • 求助:0帖
  • 帖子:47帖 | 739回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2007-03-30 10:34:00
15楼
学习中

xiaonawu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2007年3月27日
发表于:2007-04-23 22:44:00
16楼
求助:具体的程序实例参考下.
谢谢!!!

cs860422

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2012年7月10日
发表于:2012-07-10 14:17:41
17楼
求实例:shengyun4251@163.com  谢谢

misakacya

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 94回
  • 年度积分:0
  • 历史总积分:103
  • 注册:2017年8月29日
发表于:2017-12-24 15:00:53
18楼


引用 陈新 的回复内容: modus手册上都有


bioe

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 42回
  • 年度积分:0
  • 历史总积分:42
  • 注册:2010年10月09日
发表于:2018-06-26 10:16:28
19楼

ModBus RTU协议,常用的功能码03 04,例如某品牌的多联机空调,对于同一台室内机,功能码03读holding register与功能码04读input register相比较,室内机返回的数据是不是相同(假设读操作期间室内机参数不变)?


热门招聘
相关主题

官方公众号

智造工程师