Win32API串口通信编程实例-基于Modbus(RTU)协议对服务端数据进行读写操作(一)——基本窗口和组件的实现

目录

一、Modbus协议简介

1、Modbus交换特点

 2、Modbus报文格式

3、寻址方式

4、Modbus功能码详解

二、通过Win32API串口通信编程实现

1、实现简单的窗口程序

 2、往窗口程序里添加按钮等组件

一、Modbus协议简介

1、Modbus交换特点

        Modbus是一种主/从规约,它允许读或写一个或多个字(16位)操作,但任何情况下不支持字节的读或写。其信息交换特点是以主站采取主动实现的,即由主站启动交换,除广播命令外,所有的一个完整交换由下行和上行两个报文组成。

        下行报文:主站发出的一个请求

        上行报文:从站发回的一个回答

图1  一般信息交换图

图2  广播方式信息交换图

        主站发出的请求,一般情况下,只可发送到某一个指定的从站(由请求帧第一个字节中规定的从站号码来辨认),如图1所示。在广播方式下(从站号码为0),此请求则发送到全部从站,但是,规约规定广播命令必须是写命令,而且从站也不发送回答,如图2所示。

 2、Modbus报文格式

        所有交换的RTU类型报文(帧),无论上下行,具有相同的结构:

Modbus RTU报文格式
从站号 功能码 数据区 CRC16校验和
1字节 1字节 n字节 2字节

        从站号:1字节,取值范围0~FFH,例外的,该值为0,则作为主站的广播信文标识,因此,物理上使用的从站号在01H~FFH之间,即1~255之间

        功能吗:功能码为1字节,它用来选择一个命令(读、写或回答校验是否正确等),有效功能码范围在1~255之间,该文只涉及对服务端的读写操作,因此后文仅对读写命令进行介绍。

        数据区:数据区为n字节,它包含与功能码相关的一串十六进制数据。

        CRC16校验和:2字节,从报文的首字节(从站号)至数据区的最末节以CRC16方法计算出校验和。

3、寻址方式

        如上图1、2所示,主站可以与n个从站联系,即1~255个之间,当n为0时当作主站的广播信文所用。主站对从站的访问实际上归结为对某个从站中的某个设备的若干地址的访问,即由三个要素才能决定所要访问的地址:从站号、设备号和设备中的地址。

4、Modbus功能码详解

        功能码详解可以在网上搜索,相关资料有很多,这里给出一个Modbus详解的博客地址:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g-yli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值