工业物联网常用协议概念梳理–小白学习笔记
前言
作为初入物联网领域的小白,常常会混淆RS-232、RS-485、RS-422、Modbus、CAN、OPC等诸多物联网数据集成领域常见的协议和概念。因此在工作之余,本人搜集了大量物联网相关技术博客材料对易混淆物联网协议进行了简单梳理,目的是搞清楚这些协议的概念,而不对协议使用进行深入探讨。希望能对一些刚接触物联网数据采集领域的新手能有所帮助,由于本人能力有限,文章表述可能存在些许错误,希望各位大神能及时指正。
为了理清楚各个协议的本质区别,首先我对协议按照OSI网络模型进行分类,如下图。
- RS-232、RS-485、RS-422三种协议之规定了接口的电气特性并未对协议内容进行规定为最底层协议
- CAN协议起源于汽车行业,同时对电气特性和数据传输校验进行了规定,并未对传输内容进行规定,可基于CAN协议载体搭载不同软件协议
- Modbus为更高层级的应用层协议,规定了报文内容含义,可以基于TCP/IP协议、UART协议进行数据传输
- OPC和MQTT相比Modbus则为更高层级的应用协议,有一套冗杂完整的规定和标准,一般基于以太网TCP/IP通信。
下面按照OSI层级对以上协议进行简单介绍。
⚙RS-232、RS-485、RS-422标准
RS-232和RS-485、RS-422均为异步串行通信的接口标准(属于电平协议),只规定了串行通信接口的电气特性(电压、阻抗、信号线功能等),不对软件协议进行规定,因此属于物理层协议。
串口协议 | RS-232 | RS-485 | RS-422 |
---|---|---|---|
工作方式 | 单端(非平衡) | 差分(平衡) | 差分(平衡) |
双工模式 | 全双工 | 半双工 | 全双工 |
传输距离 | 15米 | 1200米 | 1200米 |
物理接口 | 不固定接口,一般为DB9 | 不固定接口,一般是凤凰头(两针插口) | 不固定接口,一般是凤凰头(四针插口) |
连接方式 | 点对点 | 点对多(可串并、组网) | 点对多(可串并、组网) |
电气特征 | 逻辑0:+3V ~ +15V | 逻辑0:-6V ~ -2V | 逻辑0:-6V ~ -2V( |
逻辑1:-15V ~ -3V | 逻辑1:+2V ~ +6V | 逻辑1:+2V ~ +6V | |
引脚 | RX、TX、GND(交叉接线) | A+、B- | Rx+、Rx-、Tx+、Tx- |
表格中RS-485、RS-422的逻辑0和1的电压值均为AB双绞线的差值(差分信号),双绞线信号振幅相同、相位相反,抗干扰能力强。
- 传输速度(波特率)和传输的距离成反比
- RS-232 仅限15m内传输,最大速率20kb/s (波特率19200bit/s)
- RS-485和RS-422在100kb/s速率下才能达到最大传输距离,100米双绞线速率仅位1Mb/s ,实际传输速率和传输介质、芯片有关
异步串行通信协议
虽然RS-232、RS-485、RS-422这些接口标准只规定了电气特性并未对数据链路层进行规定,但三者同属异步串行通讯接口,均符合异步串行通信协议标准,其数据帧、时序如下:
- 起始位:发送1位逻辑0开始传输
- 数据位:可以为5-8位数据,先发低位后发高位,常见8位。
- 校验位:数据位中1的个数为奇数则校验位为0(奇校验)或数据位中1的个数为偶数则校验位为0(偶校验)
- 停止位:1、1.5或2位逻辑1
- 空闲位:保持逻辑1状态
⚙CAN
控制器局域网总线(CAN,Controller Area Network)是德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线,采用多主结构(具备总线仲裁,不同于Modbus一主多从),但CAN协议仅规定了 物理层、数据链路层要求,需要用户自定义应用层协议(例如CANOpen、DeviceNet、J1939、iCAN)来解析总线数据的发送节点和信息含义,下图是CAN总线协议的OSI分层结构。
物理层要求
CAN物理层采用差分信号进行传输,与串口相同都需要约定波特率(与UART协议的数据格式不同),CAN节点的硬件结构如下图所示,CAN控制器将CPU传来的信号转换为逻辑电平。CAN发送发器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上,接收过程则信号方向相反。CAN的收发器包括发送器和接收器,两者独立工作。
CAN通信网络可以分为高速CAN和低速CAN网络,分别遵循ISO11898和ISO11519-2标准
高速CAN网络
高速CAN也叫闭环网络,遵循ISO11898标准(ISO11898-1规定数据链路层,ISO11898-2规定物理层),适用于高速、短距离网络的通信,传输限制为40M,最高速度为1Mbps。
- 逻辑1叫做隐性电平,两根信号线的电压值都是2.5V,它们的差值为0V
- 逻辑0叫做显性电平,其中高电平信号线的电压值为3.5V,低电平信号线的电压值1.5V,它们的差值为2V
- 线与特性:当CAN总线上不同的两个节点同时输出逻辑1和逻辑0,逻辑0的电平将覆盖逻辑1的电平,因此可以认为逻辑0的优先级大于逻辑1,因此逻辑0也叫做显性电平。
低速CAN网络
开环网络也叫低速CAN,遵循ISO11519-2标准(ISO11898-3后替代了ISO11519-2),适用于低速、远距离网络的通信,传输距离限制为1KM,速率为125kbps。
总线的两根信号线彼此独立,但要求每根总线串联一个2.2k欧的电阻。