ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:567.25KB ,
资源ID:14066687      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14066687.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RS485通信和Modbus协议Word下载.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RS485通信和Modbus协议Word下载.docx

1、5、通信的时候只能两点之间进行通信,不能够实现多机联网通信。针对S32接口的不足,就不断出现了一些新的接口标准,RS48就是其中之一,他具备以下的特点:1、我们在讲/D的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是能够抑制共模干扰。尤其工业现场的环境比较复杂,干扰比较多,因此通信假如采纳的是差分方式,就能够有效的抑制共模干扰。而S4就是一种差分通信方式,它的通信线路是两根,通常用A和B或者和D-来表示。逻辑“1”以两线之间的电压差为+(0、26)表示,逻辑“0”以两线间的电压差为-(0、2)V来表示,是一种典型的差分通信。2、S85通信速度快,最大传输速度能够达到10

2、Ms以上。3、RS485内部的物理结构,采纳的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。4、传输距离最远能够达到200米左右,然而他的传输速率和传输距离是成反比的,只有在0Kb/s以下的传输速度,才能达到最大的通信距离,假如需要传输更远距离能够使用中继。5、能够在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的S8芯片来看,有能够挂32、6、128、256等不同个设备的驱动器。RS48的接口特别简单,和RS23所使用的AX232是类似的,只需要一个S48转换器,就能够直截了当和我们单片机的URT串行接口连接起来,同时完全使用的是和UAT一致的异步串行通信协议、然而由于R

3、S85是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。那我们如何判断什么时候发送,什么时候接收呢?RS85类的芯片特别多,这节课我们以MX45为例讲解RS485通信,如图81所示。图18-1 AX45硬件接口MA48是美信(Max)推出的一款常用RS485转换器。其中5脚和脚是电源引脚,6脚和7脚就是485通信中的A和两个引脚,而脚和4脚分别接到我们单片机的RXD和TXD引脚上,直截了当使用单片机AR进行数据接收和发送、而2脚和3脚就是方向引脚了,其中脚是低电平使能接收器,3脚是高电平使能输出驱动器。我们把这两个引脚连到一起,平常不发送数据的时候,保持这两个引脚

4、是低电平,让AX48处于接收状态,当需要发送数据的时候,把这个引脚拉高,发送数据,发送完毕后再拉低这个引脚就能够了、为了提高RS85的抗干扰性能,需要在靠近AX48的A和B引脚之间并接一个电阻,这个电阻阻值从100欧到1K都能够。在这个地方我们还要介绍一下如何使用KST5单片机开发板进行外围扩展实验。我们的开发板只能把基本的功能给同学们做出来提供实验练习,然而同学们学习的脚步不应该停留在这个实验板上。假如想进行更多的实验,就能够通过单片机开发板的扩展接口进行扩展实验、大伙儿能够看到蓝绿色的单片机座周围有2个插针,这32个插针就是把单片机的3个IO引脚全部都引出来了。在原理图上体现出来的就是我们

5、的J4、J5、J7这4个器件,如图18-2所示。图18-单片机扩展接口这32个IO口不是所有的IO口都能够用来对外扩展,其中既作为数据输出,又能够作为数据输入的引脚是不能够用的,比如P3、2、P3、4、。6引脚,这三个引脚是不可用的。比如3、2这个引脚,假如我们用来扩展,发送的信号假如和S8B0的时序吻合,会导致DS18B2拉低引脚,影响通信。除这3个I口以外的其他2个口,都能够使用杜邦线接上插针,扩展出来使用、当然了,假如把当前的I口应用于扩展功能了,板子上的相应的功能就实现不了了,也就是说需要扩展功能和板载功能二选一、在进行RS485实验中,我们通信用的引脚必须是P。0和P3、1,此外还有

6、一个方向控制引脚,我们使用杜邦线将其连接到P、上去、RS485的另外一端,大伙儿能够使用一个USB转45模块,用双绞线把开发板和模块上的和B分别对应连起来,USB那头插入电脑,然后就能够进行通信了。学习了第13章的实用串口通信的方法和程序后,做这种串口通信的方法就特别简单了,基本是一致的。我们使用实用串口通信的思路,做了一个简单的程序,通过串口调试助手下发任意个字符,单片机接收到后在末尾添加“回车换行符后再送回,在调试助手上重新显示出来,先把程序贴出来。程序中需要注意的一点是:因为平常都是将85设置为接收状态,只有在发送数据的时候才将48改为发送状态,因此在UartWrite()函数开头将48

7、5方向引脚拉高,函数退出前再拉低。然而这个地方有一个细节,就是单片机的发送和接收中断产生的时刻都是在停止位的一半上,也就是说每当停止位传送了一半的时候,I或TI就差不多置位同时马上进入中断(假如中断使能的话)函数了,接收的时候自然可不能存在问题,但发送的时候就不一样了:当紧接这向BUF写入一个字节数据时,UA硬件会在完成上一个停止位的发送后,再开始新字节的发送,但假如此时不是接着发送下一个字节,而是差不多发送完毕了,要停止发送并将45方向引脚拉低以使485重新处于接收状态时就有问题了,因为这时候最后的这个停止位实际只发送了一半,还没有完全完成,因此就有了UatWrte()函数内Del1u()这

8、个操作,这是人为的增加了延时50s,这50s的时间正好让剩下的一半停止位完成,那么这个时间自然就是由通信波特率决定的了,为波特率周期的一半。/*R485。c文件程序源代码*/ncude reg5、h#ncde itrins、hsbiR8_DIR= P17;/S85方向选择引脚bitflagOeTd=0;/单次发送完成标志,即发送完一个字节bitcArred =; /命令到达标志,即接收到上位机下发的命令unsigd cntx = 0;nsined chr pdata buRx4;/串口接收缓冲区oiConiART(unsign nt aud)/串口配置函数,ad为波特率 RS45_DIR= ;

9、 /485设置为接收方向 SN =0x50;配置串口为模式1 TMOD0x0F;/清零1的控制位TMO|= 0x20;/配置T1为模式2TH1 = 256 (1105920012/3)bud;/计算T1重载值 L TH1;/初值等于重载值 ET1 = ; /禁止T中断 ES ;/使能串口中断TR1 1;/启动T1unsedcharUrRa(usigd chr*buf,nignedcarlen) 串口数据读取函数,数据接收指针bu,读取数据长度len,返回值为实际读取到的数据长度 nd hari; if ( cntxd)/读取长度大于接收到的数据长度时,ln cntRd;/读取长度设置为实际接收

10、到的数据长度 fo (=0;ilen; i+) /拷贝接收到的数据 buf ufRxdi;buf+; cntxd = 0;/清零接收计数器 renlen;/返回实际读取长度void elyX10us(unsiged car t)/软件延时函数,延时时间(1)us do nop();_nop_();_np_();nop_(); whil (t);void UatWite(unsiged char uf, sgnd c len) /串口数据写入函数,即串口发送函数,待发送数据指针buf,数据长度len RS485_DIR ;/S85设置为发送 wle (en-)/发送数据 fOnced 0;BU

11、= *u;bu;whil (!flagOncexd); DelyX10us(5);/等待最后的停止位完成,延时时间由波特率决定 RS85_DI= 0;/RS48设置为接收void artriver() /串口驱动函数,检测接收到的命令并执行相应动作 usgned harn; unined charuf0; if(mArrve) /有命令到达时,读取处理该命令cmArrivd = 0;len UarRad(buf, size(uf)2); 将接收到的命令读取到缓冲区中buflen+ = r;/在接收到的数据帧后添加换车换行符后发回blen+ = n;rWrite(bu, len);void UartRMonito

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1