串口通信及MODBUS协议学习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

串口通信及MODBUS通信协议学习2020-02-18目录串行通信串口分类MODBUS通信RTU协议报文实践1.2.3.4.5.一、串行通信简介串行通信技术,是指通信双方按位进行,遵守时序的一种通信方式。串行通信中,将数据按位依次传输,每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。串行通信并行通信串行通信要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。同步与异步通信发送字符时,所发送的字符之间的时隙可以是任意的,接收端必须时刻做好接收的准备。其必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位。同步通信异步通信异步串行通信的三个要素单位时间内码元的传输速率(单位:波特B)波特率奇偶校验位数据位与停止位由于我们采用二进制码元,因此波特率等同于比特率,即每秒传输0/1的个数(单位:位/秒bps)例如:采用1起始位、1停止位、8数据位进行每秒240个字符的传送,则:波特率=10bX240B/s=2400bps无论数据位多少位,校验位只有一位例如:源码:1011000数据位和校验位一共所含的1个数为奇数,称为奇校验奇校验:10110000数据位和校验位一共所含的1个数为偶数,称为偶校验偶校验:10110001用在数据通信中来保证数据的有效性,包含:偶校验、奇校验、或非校验。每个字节所占的位宽,用来标识该字节结束的位。数据位(DataBits):数据位一般为8位一个字节的数据(也有6位、7位的情况),区分高低位。停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态,停止位位宽可变。二、常用串口分类常用串口的分类及基础知识RS485传输特点1、最大驱动输出电平-7V≤VAB≤+12V2、发送端AB间的电压差VAB:+2~+6V逻辑“1”-2~-6V逻辑“0”3、接收端AB间的电压差VAB:>+200mv逻辑“1”<-200mv逻辑“0”RS485网络特点1、RS-485网络的拓扑结构:带有终端匹配的总线型结构(也称“手拉手”方式)2、485总线可以带32(或128、256)台设备进行通讯★一般485芯片负载能力有三个级别―32台、128台和256台,整个485网络由指标较低的芯片确定。★由RS-485网络的通讯距离一样,理论上的标称往往实际上是达不到的,通讯距离越长、波特率越高、线径越细、线材质量越差、转换器品质越差、转换器电能供应不足(无源转换器)、防雷保护越强,这些都会降低真实负载数量。三、Modbus通信协议Modbus概述Modbus协议是工业控制器网络协议中的一种,此协议定义了一个控制器能认识的消息结构,描述了一个控制器请求访问其它设备、回应来自其它设备的请求以及侦测错误并记录的过程。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一种通用工业标准,可以将不同厂商生产的控制设备(例如:变频器,伺服驱动器,智能仪表,信号采集卡等)连成工业网络,进行集中监控。Modbus概述Modbus主从协议原理2Modbus通讯总是由主站发起,当从站没有收到来自主站的请求时,将不会发送数据。主站同时只能启动一个Modbus事务处理,从站之间不能相互通信。3主站用两种模式向从站发出Modbus请求,分别为单播模式和广播模式。每个从站必须有唯一的地址(1~247)。1Modbus串行链路协议是一个主-从协议。在同一时间,只能将一个主站连接到总线,将一个或多个从站(最大数量为247)连接到相同的串行总线。01-247248-255广播地址从站某个地址保留地址Modbus的分支RTU与ASCII控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络中进行通信。用户可以选择想要的模式,包括波特率、校验方式等串口通信参数,在配置每个控制器的时候,一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。(1)ASCII模式当控制器设为在Modbus网络上以ASCII模式通信时,在消息中的每个数据字节都转换为两个表示其16进制编码的ASCII字符发送。这种方式的主要优点是人工可读、字符发送的时间间隔可达到1秒而不产生错误,缺点是表示方式冗长。(2)RTU模式当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信时,在消息中的每个字节以8个bit发送。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。ASCII帧使用ASCII模式,消息以冒号’:’字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH),其它域可以使用的传输字符是”0...9,A...F”。网络上的设备不断侦测’:’字符,当有一个’:’接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。消息中字符间发送的时间间隔最长不能超过1秒,否则接收的设备将认为是传输错误。一个典型的ASCII模式消息帧如下所示:RTU帧使用RTU模式,两个连续发送的数据帧之间至少要有3.5个字符的停顿时间间隔。传输的第一个域是设备地址。网络设备不断侦测网络总线上的有效数据和停顿间隔时间,当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。如果发送完一个数据帧,间隔时间小于3.5个字符时间又发送第二个数据帧,那么接收站点就会误认为它们是同一个数据帧,从而造成接受数据混乱。一个典型的RTU模式消息帧如下所示。四、Modbus-RTU详解响应原理图寄存器与线圈的概念常用功能码CRC校验计算原理CRC(CyclicRedundancyCheck)循环冗余校验是常用的数据校验方法CRC校验码就是将数据除以某个固定的数(比如ANSI-CRC16中,这个数是0x18005),所得到的余数就是CRC校验码,在CRC8中出现了误码但没发现的概率是1/256,CRC16的概率是1/65536,而CRC32的概率则是1/2^32,那已经是非常小了,所以一般在数据不多的情况下用CRC16校验就可以了,而在整个文件的校验中一般用CRC32校验。计算:比如说2个字节B1,B2,那么对应的数就是(B18)+B2;如果是3个字节B1,B2,B3,那么对应的数就是((B116)+(B28)+B3),比如数字是0x01,0x02,0x03,那么对应的数字就是0x10203;依次类推。寄存器的读写0x03:读保持寄存器寄存器的读写0x03:读保持寄存器示例寄存器的读写0x04:读输入寄存器寄存器的读写0x04:读输入寄存器示例线圈的读写0x01:读线圈线圈的读写0x01:读线圈五、报文分析实践八通道现场通信数据帧分析[2019:07:18:13:32:32][接收]01030300006444650103C8000000000000000000000000000000000000000000000000000001F6000000660000BAFE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012FB根据协议写指令陕西公众电气股份有限公司感谢您的聆听,谢谢!

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功