plcmodbus地址表:用示波器看透PLC中ModBus通讯的UART物理传输表达方式
plcmodbus地址表:用示波器看透PLC中ModBus通讯的UART物理传输表达方式只有看透了UART物理表达,PLC中ModBus通讯才不会"缺一门"。异步收发,没有时钟线,那就得有约定,这个约定就是"UART硬件通讯协议",本文的主角。Receiver/Transmitter早于ModBus的硬件通讯器,用于并行数据转为串行进行传输,实现增距减线的目的。同步收发,有时钟线,就像节拍器,打一拍,收发一个数位(0或1),短距离传输还好,长距离传输时钟线就会惹麻烦,这就有了异步收发。
ModBus通信协议一种串行应用层软件通信协议,由Modicon公司(如今的施耐德电气)在1979年为PLC通信而制定。现已成为工业通讯业界标准,并且也设备间常用的通信协议。
UART / 串口通用异步收发传输器
Universal
Asynchronous
Receiver/Transmitter
早于ModBus的硬件通讯器,用于并行数据转为串行进行传输,实现增距减线的目的。
同步收发,有时钟线,就像节拍器,打一拍,收发一个数位(0或1),短距离传输还好,长距离传输时钟线就会惹麻烦,这就有了异步收发。
异步收发,没有时钟线,那就得有约定,这个约定就是"UART硬件通讯协议",本文的主角。
只有看透了UART物理表达,PLC中ModBus通讯才不会"缺一门"。
下面我将通过示波器,让您看透"UART硬件通讯协议"——物理传输表达方式。
ModBus协议是一个层级很少的的协议,从应用层直接跨接到数据链路层。
UART是在最底层(第1层)负责用逻辑电平,来把信号,从一端传递到另外一端,并能正确接收。
一个ModBus数据帧是这样约定的,如下图:
UART负责传输的是添加了地址和CRC校验域的串行链路PDU。
每个串行链路PDU,都是由多个字节(8数位组成的最小记录单位)组成,用UART硬件协议格式实施物理传输,如下图:
由于TTL、RS422、RS485、RS232都能表达物理传输的逻辑,为了便于我们识别,我们使用基带信号TTL电平的表达方式来实验。
搭建测试电路 和 程序1个usb转422通讯接口
1个422转TTL双向接口
1个stc单片机,并编一个echo程序,让收到的信息原样发送出来,同时生成一个波特率脉冲与数据对齐。
RS422实际上是双工的RS485,使用这种接口来下载程序和测试串口,可以使用机载电源,也就是不让usb给系统供电,这是产品化过程中的优化考虑。
下面我们把422通讯线连接起来
接入usb准备下载程序和串口调试
用充电宝,独立给系统供电,与usb供电无关。
接入示波器,通道1观察TXD发送端的TTL波形,通道2,观察程序产生的波特率脉冲,这样有助于我们理解每一个数位是在什么时刻传输的。
1、空闲状态
2、发送55H
3、发送56H
4、发送57H
5、发送58H
6、用起始位解读数据位接收的采样过程
所有的UART硬件传输协议,都在上面这些图片里。
8位数据打包成带有校验功能的11位帧进行发送和接收。
ModBus协议规定:
波特率19200bps
偶校验
1位起始位、8位数据位
1位校验位、1位停止位
这样的11位传输格式是必须的,也可以有其他波特率和无校验位(校验位由1填充)的格式也是兼容的。