modbus

本文详细介绍了Modbus协议在串口通信中的应用,包括功能码解读、数据帧格式、硬件与软件设计、定时器使用以及不同功能码的处理方法,还涉及CRC校验码的计算。
摘要由CSDN通过智能技术生成

一,协议简介

 我的博客:写写感悟

03,功能码,一直发送数据

Tx: 01 03 00 00 00 0A C5 CD

Rx:01 03 14 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9E 9B

发送

 设备地址  功能码  寄存器起始地址H 寄存器起始地址L 寄存器数量H 寄存器数量L

 04  03  00 06  00 02  24 5f

接收

设备地址  功能码  数据长度   寄存器数据  校验码

04         03     04        00 07  00 09       DE F4

06,功能码,返回发送的内容

Tx:000652-   01  06   00 00  00 06    09 C8

16功能码,16进制0X10

Tx: 01  10  00 00  00 01  02  00 00  A6 50

Rx: 01 10 00 00 00 01 01 C9

二,程序流程

1,硬件就是串口,但是串口传输距离有限制,所以加上了485芯片.

2,软件层就是规定一帧数据的格式为一种特定的意义,本质就是串口收到的数据进行一种解析.

3,实现过程,根据波特率算出一个byte的时间,然后串口一个字节是10byte,如果4个字节的时间没有收到数据,就默认为一帧数据接收完成,需要通过一个定时器来判断接收完成没有.

三,程序

1,串口3接收到数据并保存到数组里,而且还告诉定时器开始计时了.

2,当定时器开始计数,在间隔8ms没有收到数据的时候,停止计数,并把收到一帧的标志告诉modbus处理函数.

3,当modbus没有收到一帧完成标志的时候就继续等待接收

4,如果收到一帧接收标志的时候先处理数据最后在把标志清掉

5,收到不同的功能码,需要不同的处理

3号功能码

6号功能码

7,modbus初始化函数

8,寄存器数组

9,在modbus.h文件里面定义一个结构体这样可以方便在别的文件里面调用.并初始化函数

10,CRC校验码计算

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值