单片机modbus通讯源程序_ModBus的单片机实现方法核心思想

本文介绍了ModBus通讯协议的基础知识,强调其作为一种半双工的一主多从通讯方式。核心在于主机发起查询命令,从机响应。内容详细阐述了ModBusRTU消息帧结构,包括地址选项和3.5个字符时间的帧结束标志。通过计算,建议使用单片机定时器以1ms中断判断ModBus结束标志。实现方法涉及单片机资源设置,包括一个定时器和一个串口,以及ModBus初始化、服务函数、串口中断和定时器服务函数的编写,特别指出通常只需实现功能码3和功能6(读写操作)即可完成基本的ModBus功能。
摘要由CSDN通过智能技术生成

ModBus简单来说就是一种半双工通讯的一主多从闭环式传输方式。

核心就是主机发送查询从机命令。

无论是查询还是写入都是一种查询机制!

从机不会主动发送任何数据在总线上。主机会发布查询消息,查询某一从机的状态,从机负责回复状态。

为了实现一主多从,消息帧内加入了地址选项。也就是每一个从机对应一个地址

089b8a803affe7928a051cc280d8a403.png

ModBusRTU消息帧

数据接收到一帧数据后以3.5个字符时间作为一帧数据结束的标志!

这句话这么理解,如果是串口,串口接收完这么一堆数据后如何判定这是ModBus的数据,就是看有没有这后面的T1-T2-T2-T4时间段。这时间段就是用3.5个字符传输时间总和来计算的。

判定一帧数据结束:3.5Byte时间。

假设速度9600bit/s

那么1字节=10位=1起始位+8数据位+0校验位+1结束位

1秒传输960Byte

1Byte =1.04ms

3.5Byte =3.64ms

总结:如果用单片机定时器以1Ms定时器计算,就是4ms以上定时判定Modbus的结束标志。

自此我们可以去设计一下实现方法:

单片机资源:

定时器一个,串口一个

单片

//单片机Modbus RTU Slave程序 //==================================================================================================== //波 特 率:9600bps //起 始 位:1位 //数 据 位:8位 //校 验 位:偶校验 //停 止 位:1位 //系统时钟:11.0592MHz //物 理 层:RS485 //从站地址:0x01 //使用串口:STC12C5A60S2单片机串口1 //功 能 码:支持01、02、03、04、05、06、15、16等功能码 //01功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)数字量输出多路进行读操作 //02功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)数字量输入多路进行读操作 //03功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)模拟量输出多路进行读操作 //04功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)模拟量输入多路进行读操作 //05功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)数字量输出一路进行写操作 //06功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)模拟量输出一路进行写操作 //15功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)数字量输出多路进行写操作 //16功能码:此功能可对单片机16路(甚至更多,根据自己实际需要扩展)模拟量输出多路进行写操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值