找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3393|回复: 7

Modbus通讯编程实例

  [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24116
发表于 2019-9-17 21:32 | 显示全部楼层 |阅读模式
Modbus通讯编程实例(一)

最近单独在写Modbus和现场总线的介绍,都是一些思路性质的介绍,不涉及具体的实例,可能很多童鞋还是觉得不够具体,因为我现在不做具体的编程调试了,所以直接些实例很费劲。参考了一些网上的和施耐德电气内部的资料,写成以下的案例,用了一些其他人的劳动成果,如果原作者在意版权问题,请联系我,我尊重您的所有权。

我的帖子里提过Modbus的功能码,常用的没几个,这里列出更多的(也不是全部):
功能码(十进制)十六进制说明
0101读线圈
0202读离散量输入
0303读保持寄存器
0404读输入寄存器
0505写单个线圈
0606写单个寄存器
0707读异常状态
0808诊断
110B获得事件计数器
120C获得事件记录
150F写多个线圈
1610写多个寄存器
1711报告从站ID
2216屏蔽写寄存器
2317读/写多个寄存器
2418读FIFO队列

DATA_EXCH功能块是用于Premium和M340传输数据到另外一台设备,这个功能块支持Modbus所有的功能码。

DATA_EXCH用梯形图表示:
各个引脚定义:
ADR为地址引脚,对于PREMIUM系列需要使用ADDR功能块连接。
对于M340系列需要使用ADDM功能块连接。
TYPE为类型引脚,1为接受/发送,2为只接受,3为只发送。
EMIS为要发送表
RECP为接受表
GEST为交换管理表

实例一:读取N位(功能码01)
其中在EMIS数组中第一个字,低字节为功能码01,高字节为读取位的起始位1
第二个字,低字节为读取位的起始位1,高字节为读取位的长度5
第三个字,低字节为读取位的长度5
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的数据起始地址,2个字节的读取位的长度,所以长度为1+2+2=5

在TWIDO中赋值如下:
在RECP中第一个字为返回码
第二个字为读取的数据


Modbus通讯编程实例(二)

实例二:读取N字(功能码03)
其中在EMIS数组中第一个字,低字节为功能码03,高字节为读取字的起始地址1
第二个字,低字节为读取字的起始地址1,高字节为读取字的长度6
第三个字,低字节为读取字的长度6
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的数据起始地址,2个字节的读取字的长度,所以长度为1+2+2=5

在TWIDO中赋值如下
在RECP中第一个字为返回码
第二个字开始为读取的数据


Modbus通讯编程实例(三)

实例三:写单字(功能码06)
其中在EMIS数组中第一个字,低字节为功能码06,高字节为从站要写入字的地址11
第二个字,低字节为从站要写入字的地址11,高字节为主站写出字的地址90
第三个字,低字节为主站写出字的地址90
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的从站写入字地址,2个字节的主站写出字地址,所以长度为1+2+2=5

在主站赋值如下
在TWIDO中显示如下:


Modbus通讯编程实例(四)

实例四:写N字(功能码16)
其中在EMIS数组中第一个字,低字节为功能码16,高字节为从站要写入字的起始地址20
第二个字,低字节为从站要写入字的起始地址20,高字节为要写入字的长度3
第三个字,低字节为要写入字的长度3,高字节为2倍的要写入字的长度
第四个字~第六个字为主站写出字,高低字节顺序要相互转换
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的从站写入字地址,2个字节的写入字的长度,1个2倍的要写入字的长度,6个字节的主站写出字,所以长度为1+2+2+1+6=12

在主站赋值如下
在TWIDO中显示如下
另外注意刷新数据时,必须要把EN引脚断开一下才可以重新读取或写入。通过实验,把交换管理表的完成位(即GEST第一个字的最低位)放在EN引脚前不太好使,所以最好编个令牌循环指令。把令牌放在EN引脚前,当取得令牌时再读取或者写入。
功能码05:

工控课堂 www.gkket.com

0

主题

132

回帖

294

积分

注册会员

积分
294
发表于 2019-9-17 21:32 | 显示全部楼层
我顶,我顶,我顶顶顶
工控课堂 www.gkket.com

0

主题

133

回帖

307

积分

注册会员

积分
307
发表于 2020-10-18 18:30 | 显示全部楼层
我顶,我顶,我顶顶顶
工控课堂 www.gkket.com

0

主题

113

回帖

413

积分

注册会员

积分
413
发表于 2025-11-17 04:57 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

99

回帖

156

积分

新手上路

积分
156
发表于 2025-11-18 09:54 | 显示全部楼层
蹲个后续,楼主记得更新呀,在线等挺急的~
工控课堂 www.gkket.com

0

主题

95

回帖

273

积分

注册会员

积分
273
发表于 2025-12-11 10:49 | 显示全部楼层
不请自来,就想夸一句:太顶了!
工控课堂 www.gkket.com

0

主题

123

回帖

422

积分

注册会员

积分
422
发表于 2025-12-11 12:39 | 显示全部楼层
水贴也要有仪式感,我先来打卡~
工控课堂 www.gkket.com

0

主题

82

回帖

124

积分

新手上路

积分
124
发表于 2025-12-11 14:23 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-30 05:53 , Processed in 0.074803 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表