《串行通信接口技术》PPT课件.ppt

《串行通信接口技术》PPT课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第3章串行通信

接口技术;;3.1串行通信基础;3.1.1串行异步通信数据格式;串行异步通信数据格式

;3.1.2通信的连接握手;软件连接握手

发送者通过发送一个特定字节表明它想要发送数据

接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据

当发送者看到这个信息时就知道它已完成连接,可以发送数据了

接收者还可以通过一个另外的编码来告诉发送者停止发送。;硬件连接握手

接收者在准备好了后将相应的端口线带入到某个规定的电平状态,如高电平

发送者从串行接口监测到这个信号的电平变化,便开始发送数据

接收者可以在任何时候将这根端口线带入到低电平;当发送者检测到这个低电平,就停止发送

;3.1.3确认;3.1.4中断;3.1.5轮询;3.1.6差错检验;冗余数据校验;奇偶校验;校验和;出错的简单处理;3.2RS-232C串行通信接口;计算机到MODEM控制信号:

DTR(数据终端准备好接收),RTS(请求发送)

MODEM到计算机控制信号:

DSR(数据设备准备好接收),CTS(准备好发送)

RI(振铃信号),DCD(数据信号检测)

数据信号:TXD,RXD,;电气特性:;3.2.2通信接口的连接;3.2.3RS-232C电平转换器;3.3RS-485串行通信接口;EIA-485与EIA-232主要技术参数比较;3.3.2RS-485收发器;精品文档;3.4Modbus通信协议;;3.4.2两种传输方式;ASCII模式

原理:每8bit字节用两个16进制字符ASCII发送

代码系统:由16进制字符ASCII码组成

每个字节的位:1个起始符,7个数据位,1个奇偶校验位(或无校验),1个停止位(无检验时2个)

错误检验域:LCR(纵向冗余检测);RTU模式

代码系统:8位二进制数

每个字节的位:1个起始位,8个数据位,1个奇偶校验位(或无校验),1个停止位(无校验时2位)

错误检验域:CRC

;3.4.3Modbus消息帧;地址域:ASCII(2字符),RTU(1字节)

地址0用作广播地址

功能域:ASCII(2字符),RTU(1字节)

主设备用功能码告知从设备需要执行的动作

从设备用功能码指示响应是否正确,异常响应的功能码最高位置1。;数据域

功能代码03H(读一组寄存器),数据域指定起始寄存器以及数量

功能代码10H(写一组寄存器),数据域指明起始寄存器以及数量

错误??验域

ASCII:LRC

RTU:CRC

字符的连续传输

使用ASCII字符帧时:图3-17,7位数据,先低位后高位

使用RTU字符帧时:图3-18,8位数据,先低位后高位

;3.4.4错误检测方法;LRC检测;BYTEGetCheckCode(constchar*pSendBuf,intnEnd)//获得校验码

{

BYTEbyLrc=0;

charpBuf[4];

intnData=0;

for(i=1;iend;i+=2) //i初始为1,避开“开始标记”冒号

{

//每两个需要发送的ASCII码转化为一个十六进制数

pBuf[0]=pSendBuf[i];

pBuf[1]=pSendBuf[i+1];

pBuf[2]=\0;

sscanf(pBuf,%x,nData);

byLrc+=nData;

}

byLrc=~byLrc;

byLrc++;

returnbyLrc;

};CRC检测;CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。

整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。CRC添加到消息中时,低字节先加入,然后高字节。下面是它的VC代码:;WORDGetCheckCode(constchar*pSendBuf,intnEnd)//获得校验码

{

WORDwCrc=WORD(0xFFFF);

for(inti=0;inEnd;i++)

{

wCrc^=WORD(BYTE(pSendBuf[i]));

for(intj=0;j8;j++)

{

if(wCrc1)

{

wCrc=1;

wCrc^=0xA001;

}

else

文档评论(0)

韩喜芝 + 关注
实名认证
内容提供者

赶紧 下载啊啊啊啊

1亿VIP精品文档

相关文档