文章目录前言协议简介协议分类硬件层协议板级总线现场总线RS232485通信CAN总线软件层协议MODBUS协议总结合集前言本系列主要记录STM32使用Modbus协议实现主从通信的功能此篇主要介绍一些相关的基础知识笔者学习参考的是灵育科技胥工的Modbus教程想要学习的可以去这个链接购买。协议简介我们都知道在计算机的世界里只有0和1那么计算机是怎么从一堆1、0组成的数据中识别出特定的内容的呢这就需要使用到协议协议是指两台或者多台设备之间进行通信所必须共同遵守的规定或规则可以形象的理解为规定了数据包的断句位置和每一个位数据的具体意义。举个栗子如下从机发送了一个数据包是“00100110101”在没有协议约定的时候我们根本无法知道其中的意思只有约定好了协议双方都知道了断句位置以及每一位代表的是什么才能知道这其中的意义。利用协议进行解读就可以得到主机发送的内容是0x4D这样一个数。协议分类在嵌入式的学习过程中会接触到两大类的协议其一是用来实现主系统与其他从系统的硬件层通信协议类似于STM32与AT24C04、STM32与DS1302、STM32与串口屏等这种通信都属于硬件层通信协议而另外一种则是类似于MODBUS、TCP/IP这样的软件层协议。硬件层协议在硬件层协议中又分为板级通信协议和现场通信协议硬件层协议决定了数据传输中的0、1该怎样的方式传输需要用几个信号线进行连接是同步通信还是异步通信是全双工、半双工还是单工。可以形象的理解为A城区与B城区的公路可以使双向的也可以是单行道的。可以是八车道也可以是双车道。板级总线板级通信见名知意就是应用在PCB板上的的通信协议主要是指SPI、IIC、UART、1-Wire这一类。有关这些协议的详解可以参考笔者树莓派笔记系列中的各个例子。例如UART这一板级通信协议中的0就是指低电平1就是指高电平。单片机中常用的是TTL电平TTL电平中低电平是指IO电压小于0.2V高电平一般是指大于2VCMOS电平中低电平是0.3VCC高电平是0.7VCC如果电压是5V基准的则分别对应1.5V和3.5V。现场总线现场协议主要是应用在工业控制现场由于使用环境变得复杂各种干扰会出现并对通信造成影响所以这类通信协议一般采用差分信号或者提高高低电压范围的方式来提高抗干扰能力不同协议有不同的电压信号代表逻辑值0和1。RS232例如RS232使用的是后者其逻辑1是-3V至-15V逻辑0是3V至15V;由于单片机一般是TTL电平所以要与使用RS232协议的系统通信需要使用TTL与RS232的转换电路常用的是max232电路实现。485通信而485通信协议和CAN总线就是采用的差分信号利用两个信号线之间的电压来传输逻辑0和1。485通信连接图485的逻辑0是A,B两个信号线的电压差Ua-Ub-5V或者UB-UA2V至6V482的逻辑1是A,B两个信号线的电压差Ua-Ub5V或者UA-UB2V至6V同样由于单片的电平与485设备电平不一致所以需要进行硬件转换常用MAX485实现。CAN总线CAN总线逻辑1-1.5V–0V 逻辑01.5V–3V这里的电平指CAN_High、CAN_Low 两线间的电压差。CAN总线通信连接图逻辑1U CAN_High - U CAN_Low 0V逻辑0U CAN_High - U CAN_Low 2V。同上面其他两种现场通信总线一样CAN总线也需要有电平转换电路来实现单片机与CAN总线上的设备通信。类似上述三种需要转换后才能正常通信的还有USB接口我们串口烧录和调试的时候就经常使用到它一般是采用CH340的电路实现。上述三种现场总线的图片转载的此篇博文。软件层协议软件层的协议最主要的作用就是决定数据怎么传给数据包做好断句和数据位的定义使得通信双方能够根据这个协议的定义去解析出数据包中的数据从而达到通信的方式。此系列将要详细记录的·MODBUS就属于软件层的协议类似的还有TCP/IP等等需要注意的是软件层的协议都是需要借助硬件层的通信协议来实现物理层的传输的所以同一个软件协议可能会出现不同硬件载体的分支版本。MODBUS协议MODBUS协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备包括PLCDCS智能仪表等都在使用Modbus协议作为他们之间的通讯标准。1Modbus工作原理当在一Modbus网络上通信时此协议决定了每个控制器须要知道它们的设备地址识别按地址发来的消息决定要产生何种行动。如果需要回应控制器将生成反馈信息并用Modbus协议发出。在其它网络上包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。它是一个串行半双工通信协议。有关modbus协议的详细介绍可以参考此链接。总结有关通信协议的基础知识介绍就先记录到此如有不足欢迎指正此篇目的是做个铺垫主要描述了硬件层协议的传输方式后面将借助这些知识实现一个MODBUS RTU的通信。合集STM32 Modbus通信学习笔记——理论基础STM32 Modbus通信学习笔记——通信流程STM32 Modbus通信学习笔记—— 代码及示例STM32 使用MODBUS与维控屏通信modbus系列代码什么是MODBUS ↩︎