《《串行通信接口技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《串行通信接口技术》PPT课件.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章 串行通信串行通信接口技术接口技术vPC机通常作为上位机,单片机作为下位机v上位机与下位机一般采用串行通信技术v常用的有RS-232C,RS422,RS4853.1 串行通信基础串行通信基础v串行通信概念串行通信概念数据流从源节点依次逐位历经传输介质数据流从源节点依次逐位历经传输介质到达目的节点的传输过程到达目的节点的传输过程v串行通信有效性的方法串行通信有效性的方法数据格式,连接握手,数据确认,中断数据格式,连接握手,数据确认,中断或轮询,差错检验等或轮询,差错检验等3.1.1 3.1.1 串行异步通信数据格式串行异步通信数据格式v串行异步通信报文帧结构串行异步通信报文帧结构“
2、起始起始”位(帧头)位(帧头)+“+“数据数据”位位+“+“停止停止”位(帧尾位(帧尾 )v“起始起始”位(帧头)位(帧头)通知接收方有数据到达通知接收方有数据到达给接收者一段准备接收数据、缓存数据和做出其它响应所给接收者一段准备接收数据、缓存数据和做出其它响应所需要的时间需要的时间可设置一个或多个起始字节作为帧头可设置一个或多个起始字节作为帧头 v“停止停止”位(帧尾)位(帧尾)告知接收方本次传输过程的终止告知接收方本次传输过程的终止可设置一个或其他规定字节作为帧尾可设置一个或其他规定字节作为帧尾 v串行异步通信数据格式串行异步通信数据格式3.1.2 3.1.2 通信的连接握手通信的连接握手
3、 v连接握手连接握手从发出连接请求到确认收发双方已经建立了连接从发出连接请求到确认收发双方已经建立了连接关系的过程关系的过程通信伙伴双方已经做好准备,可以进入数据收发通信伙伴双方已经做好准备,可以进入数据收发的状态的状态 可以通过软件和硬件来实现可以通过软件和硬件来实现v软件连接握手软件连接握手发送者通过发送一个特定字节表明它想要发送数发送者通过发送一个特定字节表明它想要发送数据据接收者看到这个字节的时候,也发送一个编码来接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据声明自己可以接收数据当发送者看到这个信息时就知道它已完成连接,当发送者看到这个信息时就知道它已完成连接,可以发送
4、数据了可以发送数据了接收者还可以通过一个另外的编码来告诉发送者接收者还可以通过一个另外的编码来告诉发送者停止发送。停止发送。v硬件连接握手硬件连接握手 接收者在准备好了后将相应的端口线带入到某个接收者在准备好了后将相应的端口线带入到某个规定的电平状态,如规定的电平状态,如高高电平电平发送者从串行接口监测到这个信号的电平变化,发送者从串行接口监测到这个信号的电平变化,便开始发送数据便开始发送数据接收者可以在任何时候将这根端口线带入到低电接收者可以在任何时候将这根端口线带入到低电平;当发送者检测到这个低电平,就停止发送平;当发送者检测到这个低电平,就停止发送3.1.3 3.1.3 确认确认v概念概
5、念接收者向发送者发送一个回复信息,表明数据已接收者向发送者发送一个回复信息,表明数据已经正确收到,这个过程称为确认。经正确收到,这个过程称为确认。确认报文可以是一个的特别定义的报文,例如标确认报文可以是一个的特别定义的报文,例如标识接收者地址或编号,表明哪个接收者已正确接识接收者地址或编号,表明哪个接收者已正确接收报文收报文发送方根据是否接收到确认报文,采取相应的措发送方根据是否接收到确认报文,采取相应的措施,或结束本次通信,或重发,或开始下一个通施,或结束本次通信,或重发,或开始下一个通信过程信过程3.1.4 3.1.4 中断中断v中断请求:中断是用于通知中断请求:中断是用于通知CPUCPU
6、有任务需要有任务需要立即响应的一个信号立即响应的一个信号v中断处理:中断响应服务程序用于在中断发中断处理:中断响应服务程序用于在中断发生时执行所期望的相应操作生时执行所期望的相应操作v节点可以通过中断请求与处理进入串行通信节点可以通过中断请求与处理进入串行通信处理过程处理过程 3.1.5 3.1.5 轮询轮询 v通过周期性地获取特征或信号来读取数据通过周期性地获取特征或信号来读取数据或发现是否有事件发生的工作过程称为轮或发现是否有事件发生的工作过程称为轮询询v为了不遗失数据需要足够频繁的轮询为了不遗失数据需要足够频繁的轮询v在没有分配中断的端口使用轮询在没有分配中断的端口使用轮询3.1.6 3
7、.1.6 差错检验差错检验v差错检验的含义差错检验的含义根据接收端接收到的冗余信息特征,判断报文根据接收端接收到的冗余信息特征,判断报文在传输中是否出错的过程,称为差错检测。在传输中是否出错的过程,称为差错检测。只能判断是否出错,不能确定哪个或哪些位出只能判断是否出错,不能确定哪个或哪些位出现了错误,也不能纠正传输中的差错。现了错误,也不能纠正传输中的差错。v差错检验的方法差错检验的方法冗余数据校验冗余数据校验奇偶校验奇偶校验 校验和校验和冗余数据校验冗余数据校验v概念:发两次,接收方进行比较v特征:花两倍时间,适合短报文v红外线使用该方法奇偶校验奇偶校验v校验方法校验方法在每个单位数据域(如
8、字符)中加上一个在每个单位数据域(如字符)中加上一个校验位(奇偶校验位),使得包括该校验校验位(奇偶校验位),使得包括该校验位在内的各单位数据域中位在内的各单位数据域中1 1的个数是偶数的个数是偶数(偶校验),或者是奇数(奇校验)。(偶校验),或者是奇数(奇校验)。v奇偶校验的特点奇偶校验的特点方法简单,检验效率高方法简单,检验效率高可以检测出所有单比特错误可以检测出所有单比特错误但也有可能漏掉许多错误但也有可能漏掉许多错误 校验和校验和v校验方法:加入检验字节校验方法:加入检验字节v检验和的典型方法:所有字节相加,取结检验和的典型方法:所有字节相加,取结果的最低字节果的最低字节v适合长报文的
9、传输适合长报文的传输v求和校验能检测出求和校验能检测出9595的错误的错误v比奇偶校验方法的计算量大,更可靠比奇偶校验方法的计算量大,更可靠vCRCCRC循环冗余校验循环冗余校验 出错的简单处理出错的简单处理两种常用的纠错方法:两种常用的纠错方法:v自动重传自动重传当检测到一个错误时,接收端自动请求重新传输当检测到一个错误时,接收端自动请求重新传输技术简单,但确认、重发过程可能造成通信障碍技术简单,但确认、重发过程可能造成通信障碍v前向差错纠正前向差错纠正在接收端检测和纠正差错,无需请求重发在接收端检测和纠正差错,无需请求重发将一些额外的位按照某种方式进行编码,加入到通信数将一些额外的位按照某
10、种方式进行编码,加入到通信数据中。根据这些位的状态可检测到一定数量的错误并进据中。根据这些位的状态可检测到一定数量的错误并进行纠正。行纠正。增加这些额外的位增加了通信开支,同时也增加了计算增加这些额外的位增加了通信开支,同时也增加了计算量量3.2 RS-232C串行通信接口v两种插头(两种插头(2525针或针或9 9针),针),DB-9DB-9连接连接器外形器外形v信号含义见表信号含义见表3-13-13.2.1 RS-232C端子信号含义:v计算机到MODEM控制信号:DTR(数据终端准备好接收),RTS(请求发送)vMODEM到计算机控制信号:DSR(数据设备准备好接收),CTS(准备好发送
11、)RI(振铃信号),DCD(数据信号检测)v数据信号:TXD,RXD,电气特性:vRS-232C数据通信的特点数据通信的特点 接口为非平衡式,共用一根地线接口为非平衡式,共用一根地线信号传输距离最大信号传输距离最大15米米数据的最大传送速率在数据的最大传送速率在20Kbps 只适合于两台设备之间的数据传输只适合于两台设备之间的数据传输 vRS-232C的信号电平的信号电平采用负逻辑采用负逻辑以以-5V-15V电平表示逻辑电平表示逻辑“1”以以+5V+15V表示逻辑表示逻辑“0”与与TTL电平不兼容,需要电平转换电平不兼容,需要电平转换3.2.2 通信接口的连接v通信节点间端口直接连接(无通信节
12、点间端口直接连接(无ModemModem)3.2.3 RS-232C电平转换器v用途:实现TTL电平接口与RS-232C连接v转换芯片:MAX232A等vMAX232基本原理和功能:充电泵,两路收发vMAX232引脚(16脚),图3-5vMAX232应用电路,图3-6(书上错,换成1uF电容)3.3 RS-485串行通信接口用于通信节点多,位置分散,通信距离远,要求用于通信节点多,位置分散,通信距离远,要求采用最少的连线完成的通信任务采用最少的连线完成的通信任务允许一对线路上连接多达允许一对线路上连接多达3232个发送器和接收器个发送器和接收器采用二线差分平衡传输,图采用二线差分平衡传输,图3
13、-73-7,抑制噪声,抑制噪声没有规定数据链路协议没有规定数据链路协议没有规定连接器没有规定连接器使用方便,价格便宜使用方便,价格便宜3.3.1 RS-485接口标准EIA-485EIA-485与与EIA-232EIA-232主要技术参数比较主要技术参数比较规 范 EIA-232 EIA-485 最大传输距离 15m1200m(速率100Kbps)最大传输速度 20Kbps 10Mbps(距离12m)驱动器最小输出V 5 1.5 驱动器最大输出V 15 6.0 接收器敏感度V 3 0.2 最大驱动器数量 132单位负载 最大接收器数量 132单位负载 传输方式 单端 差分 3.3.2 RS-4
14、85收发器v芯片举例:MAX485,SN75LBC184(引脚兼容)vSN75LBC184引脚定义,图3-83.3.3 应用电路v图3-9v总线拓扑结构,需要终端电阻,图3-103.4 Modbus通信协议vModbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。v此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连
15、成工业网络,进行集中监控。3.4.1 概述vModbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。vModbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。3.4.2 两种传输方式v下表是ASCII协议和RTU协议进行的比较:协议开始标记结束标记校验传输效率程序处理ASCI
16、I:(冒号)CR,LFLRC低直观,简单,易调试RTU无无CRC高不直观,稍复杂vASCII模式原理:每8bit字节用两个16进制字符ASCII发送代码系统:由16进制字符ASCII码组成每个字节的位:1个起始符,7个数据位,1个奇偶校验位(或无校验),1个停止位(无检验时2个)错误检验域:LCR(纵向冗余检测)vRTU模式代码系统:8位二进制数每个字节的位:1个起始位,8个数据位,1个奇偶校验位(或无校验),1个停止位(无校验时2位)错误检验域:CRC3.4.3 Modbus消息帧vASCII帧图3-15,“:”开始,回车换行结束vRTU帧至少个字符时间的停顿开始图3-16v地址域:ASCI
17、I(2字符),RTU(1字节)地址0用作广播地址v功能域:ASCII(2字符),RTU(1字节)主设备用功能码告知从设备需要执行的动作从设备用功能码指示响应是否正确,异常响应的功能码最高位置1。v数据域功能代码03H(读一组寄存器),数据域指定起始寄存器以及数量功能代码10H(写一组寄存器),数据域指明起始寄存器以及数量v错误检验域ASCII:LRCRTU:CRCv字符的连续传输使用ASCII字符帧时:图3-17,7位数据,先低位后高位使用RTU字符帧时:图3-18,8位数据,先低位后高位3.4.4 错误检测方法v奇偶校验vLRC检测vCRC检测LRC检测vLRC域是一个包含一个8位二进制值的
18、字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。vLRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的VC代码:vBYTE GetCheckCode(const char*pSendBuf,int nEnd)/获得校验码 v v BYTE byLrc=0;v char pBuf4;v int nData=0;v for(i=1;iend;i+=2)/i初始为1,避开“开始标记”冒号
19、 v v/每两个需要发送的ASCII码转化为一个十六进制数 vpBuf 0=pSendBuf i;vpBuf 1=pSendBuf i+1;vpBuf 2=0;vsscanf(pBuf,%x,&nData);vbyLrc+=nData;v v byLrc=byLrc;v byLrc+;v return byLrc;v CRC检测vCRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。vCRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行
20、处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。vCRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。v整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。CRC添加到消息中时,低字节先加入,然后高字节。下面是它的VC代码:vWORD GetCheckCode(const char*pSendBuf,int nEnd)/获得校验码 v vWORD wCrc=WORD(0 xFFFF);vfor(int i=0;inEnd;i+)vvwCrc=WORD(BYTE(pSendBufi);vfor(int j=0;j=1;v wCrc=0 xA001;vvelsev v wCrc=1;vvvvreturn wCrc;v3.4.5 Modbus的编程方法v在RTU方式下至上字符时间的间隔传输过程中每个字符之间不能超过字符的时间v字符时间的设定v数据帧接收的编程:通过串口的中断接收数据,启动定时器实现时序判断