freemodbus modbus TCP 学习笔记

2019-12-22 13:46发布

1.前言
    使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西。在嵌入式中实现TCP就需要借助一个以太网协议栈,在这里我选择最简单的uIP协议栈。uIP协议栈简单易用方便上手,相比于LwIP无论是移植还是使用难度都低些,这样就可以把更多的精力花在modbus tcp协议本身而不必花大量的时间研究以太网协议栈。modbus协议栈为freemodbus
    【发表本文主要目的,还文字债


【其他资料】
    【1】uIP学习笔记
    【2】MODBUS协议整理——汇总

【工程代码】
    示例代码托管于GitHub——【Github Clone
    如果有问题我会及时更新。
【使用说明】
    【1】工具链为IAR 6.5
    【2】从机IP为固定IP 192.168.1.15,请保证从机和路由器位于同一个网段中。
    【3】modbus tcp的侦听端口号为502

2.MODBUS TCP注意点
2.1 主机和从机、服务端和客户端
图2 modbus TCP数据包和modbus RTU数据包比较.png (9.81 KB, 下载次数: 0) 下载附件 2014-3-20 22:47 上传

图2 modbus TCP数据包和modbus RTU数据包比较

在modbus TCP中包含一个MBAP头,该头包含以下几个部分
区域长度
描述
客户端
服务器
传输标志
2字节
MODBUS 请求和响应传输过程中
序列号
客户端生成应答时复制该值
协议标志2字节
Modbus协议默认为0
客户端生成
应答时复制该值
长度
2字节
剩余部分的长度客户端生成
应答时由服务器端生成
单元标志
1字节
从机标志(从机地址)客户端生成
应答时复制该值
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
70条回答
Elex
1楼-- · 2019-12-24 10:07
 精彩回答 2  元偷偷看……
icemagicisme
2楼-- · 2019-12-24 14:12
问一个问题,一个工程中 既要用到modbus tcp 也要用到 modbus rtu,可以实现吗?比如一个典型应用,rtu与hmi连接,tcp与pc连接,谢谢。
xukai871105
3楼-- · 2019-12-24 18:59
icemagicisme 发表于 2014-4-4 10:33
问一个问题,一个工程中 既要用到modbus tcp 也要用到 modbus rtu,可以实现吗?比如一个典型应用,rtu与hm ...

如果使用STM32我看实现起来比较困难,但是使用linux的话实现起来非常简单。
可能刚开始熟悉linux需要些时间,但是过了这个阶段就好了!

如果你不嫌弃,看看这个

树莓派学习笔记——实现modbus RTU从机
MODBUS学习笔记——modbus tk modbus TCP主机实现
ziho2005
4楼-- · 2019-12-24 20:54
价值好帖!
良马一号
5楼-- · 2019-12-25 00:32
Lz看过你的帖子,我刚刚接触modbus,我想请教一下,modbus能不能在单片机之间传大量的数据(不是操作寄存器,io口什么的),怎么没看到传输数据的功能码??
hejiang177
6楼-- · 2019-12-25 01:11
 精彩回答 2  元偷偷看……

一周热门 更多>