单线数据7位modbus协议M16实现原理
来源:互联网 发布:加湿器品牌推荐知乎 编辑:程序博客网 时间:2024/04/28 17:56
起因
由于普通UART口需占两个IO,且大部分片子自带的UART是不支持7位数据的通讯方式
实现原因:
工业应用中有应用模块为单线的MODBUS的总线通信方式,数据大概结构为
通常在最未还添加回车(16进制0x0D 0x0A)来表示数据传输结束
实现目标:
1. 单线通信
2.2400bps, 7, E, 1。2400波特率,7位数据位,偶较验,1位停止位
实现方法:
一、先说串口通信的相关内容
2400的波特率也就是1/2400=417us,也就是每417us发送一个数据,这里所指的数据如下
数据1数据2数据3数据4数据5数据6数据7校验位停止位也就第次发9位的数据,当然还得在头尾加上启始位和终止位
二、再说在M16上如何实现。
modbus通信和串口通信是一样的,只是定义了数据结构能够应用于许多场合,甚至是网络(可以参考下介绍modbus的书籍)
用一个定时器来产生417us和625us的延时。
417us用于发送时决定波特率,625us用于接收时等待一个启始位加半个终止位。至于发送数据就和模拟串口相同。
具体实现可以参考模拟串口的实现。
三、校验和的计算可以参考我的上一篇文章
C#实现modbus基于ASCII的LRC校验
四、调试
硬件的调试可以用示波器结合串口工具观察
- 单线数据7位modbus协议M16实现原理
- 多CPU单线通信原理与实现
- modbus通讯协议及其原理
- modbus通讯协议及其原理
- modbus通讯协议及其原理
- MODBUS协议数据测试总结
- modbus 协议在RS485实现
- ModBus RTU协议 16 位CRC校验方式最简实现
- 基于AVR128的简单Modbus协议实现
- 基于MODBUS 协议的CRC16程序实现
- modbus4j.jar实现modbus tcp协议
- Modbus协议
- Modbus协议
- Modbus协议
- Modbus协议
- Modbus协议
- Modbus协议
- MODBUS协议
- 禅设计模式
- boost学习之-scoped_array
- 【学习笔记】DM9000裸机驱动(三)之简单ARP协议的实现
- 3T硬盘(GPT分区)支持
- IOS循环播放音乐实例
- 单线数据7位modbus协议M16实现原理
- 数据结构——算法的时间复杂度
- 工作经验
- proxool报错信息
- MFC 主线程等待子线程退出函数
- QT installEventFilter 快捷键的设计
- 杭电acm1018
- Understanding The Linux Virtual Memory Manager
- 深层复制构造函数