电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

基于RS485总线的多机通信系统设计方案解析

2022-01-15 08:34分类:电子元器件 阅读:

 

2.2 RS-485

  RS-485通信接口是单片机设计系统软件种较常用的一种串行接口之一。RS-485通信方式RS-485规范是由EIA(电子器件行业协会)和TIA(通信行业协会)一同制定和研发的。RS-485做为一种多一点差分信号传输数据的电气设备标准,已变成行业最广泛运用的规范通信协议之一。理论上,RS-485规范数最多连接32个机器设备(受集成ic推动功能的危害),能够工作中在半双工或双工方式下,较大传送间距约为1219米,较大传输速度约为10Mbps[1]。殊不知一般RS-485互联网选用均衡五类双绞线做为传输介质,均衡五类双绞线的尺寸与传输速度反比,仅有在20Kbps的传输速度下,才有可能做到较大传送间距。一般15米长的五类双绞线较大传输速度仅为1Mbps。但是针对速度规定并不是很高的自动控制系统而言现已充分了。

  RS-485选用均衡推送和差分信号接受方法来完成通讯:在推送端TXD将串行接口的TTL电平数据信号转化成音频信号A、B双路輸出,经传送后在协调器将音频信号转变成TTL电平数据信号。两根同轴电缆一般应用五类双绞线,也是差分信号传送,因而有较强的抗共模干扰的工作能力,接收机灵敏度也非常高。与此同时,较大传输速度和较大传送间距也进一步提高。假如以10Kbps速度传送数据时传送距離可以达到12m,而用100Kbps时传送距離可以达到1.2km。假如减少串口波特率,传送间距还可进一步提高。此外RS-485完成了多一点互联,数最多可以达到256台控制器和256台信号接收器,十分有利于多元器件的联接。不但能够完成半双工通讯,并且能够完成双工通讯。

 2.3 多机通信原理

  在多机通讯中,每台从机均分派有一个从机详细地址,服务器与从机中间开展串口通信时,一般是服务器先通话某从机详细地址,唤起叫成从机后,主、从两机中间开展数据传输。而未被通话的从机则再次开展不同的工作中。但是,假如在服务器与某被通话从机开展数据传输全过程中,别的从机如果不采取有效的数据信息识别系统,则这种从机便会由于串口通信网上有传输数据而时刻被切断,危害正常的的工作中。运用51单片机的串口通信工作方式2、方法3能够非常好处理以上难题。在多机通讯流程中,从机最先要处理的是如何识别服务器推送的是详细地址信息内容或是数据信息。当推送的是详细地址信息内容时,各从机都回应串口通信终断,接受服务器下达的一帧详细地址数据信息。而当服务器传送数据帧时,不相干从机并不回应串口通信终断。处理的办法是:当服务器推送一帧详细地址信息内容时,应维持这帧数据信息的第9位为1(即TB8=1)。从机依照工作方式2或工作方式3运作时,将串口通信存储器SCON中的操纵位SM2置为1,当所接受的一帧数据的第9位为1,全部从机都造成串口通信终断,接受这一帧详细地址数据信息并与彼此的从机详细地址开展较为,以辨别服务器是不是要与该设备通讯。接受到的地点数据信息与从机详细地址相同做到为被通话从机,该从机将串口通信操纵存储器SCON中的操纵位SM2清为0,  去接受服务器推送来的数据帧(数据帧的第9位为0),这时无论接受到的第9位数据信息是不是为1或0,都需要造成串口通信终断,这就确保了服务器与被通话从机间的一切正常数据通讯。数据通讯完毕后,该从机又再次将串行接口操纵存储器SCON中的操纵位SM2置为1,为下一次与服务器实现通讯做好充分的准备。别的从机则一直在SM2=1下再次自身的工作中,不容易由于主、从机中间的数据通讯而被切断。

  多机通讯的完成,关键靠主、从机恰当地设定与分辨多机通讯操纵位SM2和推送或接受的第9位数据信息(TB8或RB8)。当服务器给从机发送短信时,要依据发送短信的类型来设定TB8,推送详细地址数据信号时,设定TB8=1;传送数据或指令时,设定TB8=0。当从机的SM2为1时,该从机只接受详细地址帧(RB8位为1),对数据帧(RB8位为0)将置之不理。而当SM2为0时,该从机接受全部推送来的信息内容。多机通讯全过程以下:(1) 使全部从机的SM2置1,处在只接受详细地址帧的情况(即从机校准);

  (2) 服务器推送一详细地址帧信息内容,在其中包括8位详细地址,第9位为详细地址、数据信息标志位,第9

  部位1表明推送的是详细地址;

  (3) 从机传输到详细地址帧后,分别终断CPU,把接受到的地点与本详细地址来做比较; (4) 详细地址相符合的从机,使SM2清零以接受服务器接着发过来的全部信息内容,针对详细地址不相符合

  的从机,仍维持SM2=1情况,对服务器接着推送的数据信息置之不理,直至服务器推送来新的详细地址帧;

  (5) 服务器传送数据或操纵信息内容给被寻址方式的从机;

  (6) 被寻址方式的从机,因SM2=0,能够接受服务器推送回来的任何数据信息,当从机读取数据

  完毕时,置位SM2,回到接受详细地址帧情况(校准情况);

  (7) 当服务器改成与此外从机联络时,可再发详细地址帧寻址方式其从机,而此前被寻址方式过的从

  机修复SM2=1

  第4章 系统软件难题以及处理

  4.1 通讯标准

  因为MAX485通讯是一种半双工通信,推送和接受同用同一物理学无线信道。在任何时时刻刻只容许一台单机版处在上传情况。因而规定回复的单机版务必在监听到系统总线上通话数据信号早已推送结束,而且沒有其他单机版传出回复数据信号的情形下,才可以回复。半双工通信对服务器和从机的上传和接受时钟频率有严格要求的规定。假如在时钟频率上相互配合不太好,便会产生系统总线矛盾,使整体体系的通信偏瘫,没法正常的工作中。要保证系统总线上的机器设备在时钟频率上的严苛相互配合,务必要遵循下列几类标准:  (1) 校准时,主从关系机是应当处在接受情况。

  MAX485集成ic的上传和传输作用变换是由集成ic的 RE* ,DE端操纵的。RE*=1,DE=1时,MAX485推送情况;RE*=0,DE=0时,MAX485处在接受情况。一般应用单片机设计的一根口线联接RE*,DE端。在通电重置时,因为硬件配置电源电路平稳必须一定的時间,而且单片机设计各端口号校准后处在上拉电阻情况,那样便会使系统总线上每个电话分机处在上传情况,再加上通电时各电源电路的不稳定,很有可能向系统总线发送短信。因而,假如用一根口线作推送和接受操纵数据信号,应当将口线反方向后连接MAX485的调节端,使通电时MAX485处在接受情况。 此外,在主从关系机软件上也应额外多个解决对策,如:通电时或宣布通信以前,对串行接口做几回空实际操作,消除端口号的不法数据信息和指令。

  (2) 操纵端RE*,DE的讯号的合理占空比应当超过推送或接受一帧数据信号的总宽。 在双工通信全过程中,推送和传输数据信号各自在不一样的物理学链接上传送,推送端自始至终为推送端,协调器自始至终为协调器,不会有推送、接受操纵数据信号转换难题。在RS-485半双工通信中,因为MAX485的上传和接受都由同一元器件进行,而且推送和接受应用同一物理学链接,务必对操纵数据信号开展转换。操纵数据信号什么时候为上拉电阻,什么时候为低电频,一般以单片机设计的TXC(推送进行标识),RXC(接受进行标识)数据信号作参照。

  推送时,检验TXC是不是创建起來,当TXC为上拉电阻后关掉推送作用变为接受作用; 接受时,检验RXC是不是创建起來,当RXC为上拉电阻后,接受结束,又可以变为推送。 在理论上尽管可行,但在具体联调中却发生传送数据时校时错的状况。依据核实相关材料,并依靠数字示波器不断检测,才发觉一个特别注意的难题,我们可以查询单片机设计的时钟频率:

  单片机设计在串行接口传送数据时,只需将8位数据位传输结束,TXC标示即创建,但此刻应推送的第九位数据位(若推送详细地址帧时)和终止位并未传出。假如在这也是关掉推送操纵,必然导致推送帧数据信息不详细。假如单片机设计多机通信选用较高的串口波特率,几个实际操作命令的延迟就有可能超出2位(或1位)数据信息的推送時间,难题也许不容易发生。可是要是选用较低串口波特率,如9600,推送一位数据信息需104μs上下,只靠几个实际操作命令的延迟还不够,难题就突出地曝露出去。读取数据时也一样这般,单片机设计在接受完八个数据位后就构建起RXC数据信号,但这时还未读取到第九位数据位(若接受详细地址帧时)和终止位。因此 ,协调器务必延迟超过2位数据位的時间(1位数据位時间=1/串口波特率),再作回复,不然会产生系统总线矛盾。

  (3) 系统总线上所联接的各单机版的推送操纵讯号在时钟频率上彻底分隔。

  为了更好地确保推送和传输讯号的详细和恰当,防止系统总线上数据信号的撞击,对系统总线的所有权务必开展分派才可以防止市场竞争,联接到系统总线上的单机版,其推送操纵讯号在時间上应彻底防护。

  总而言之,推送和接受操纵数据信号应当充足宽,以确保详细地接受一帧数据,随意2个单机版的推送操纵讯号在時间上彻底分离,防止系统总线争议。

  第5章 软件开发

  5.1 体系结构

  该多机通信系统的系统框图如图所示5-1所显示,系统软件选用半双工主从关系通信方式,服务器能够载入从机的信息或写数据信息到从机,并将数据信息送终端设备开展表明;从机关键承担对遍布的电子产品开展检测或操纵,用终断的形式接受服务器发过来的指令并作出回复。

  基于RS485总线的多机通信系统设计方案解析  
5.2 通讯协议 5.2.1 信息

  该合同的信息以下:

  (1)编码格式;二进制代码。

  (2)串口波特率:9600 b/s。

  (3)通信方式:半双工。

  (4)每一个标识符由u 位构成; 1位:起止位(0); 8位:数据位;1位:详细地址/数据信息鉴别位(1为详细地址,o为数据信息); l位:终止位(1)。

  (5)  标识符推送次序;底位在先

  (6)  帧完毕标示:通信网络空余3.5 ms之上

  (7) 帧校检方法:数据信息和(2字节)

  (8)  服务器了解的一般文件格式见表5-2:

  表5-2 服务器了解的一般文件格式

  基于RS485总线的多机通信系统设计方案解析

  从机地址码:两字节数二进制数,后一字节是前一字节的反码。 指令码:一字节二进制数,O1H意味着服务器读,02H意味着服务器写。 数据信息数量:表明服务器要读写能力的字节数数量,一字节二进制数。

  校验和:两字节数二进制数,是将从机地址码、指令和信息按字节数从头开始先后求和,转化成两字节数的校验和。   从机回复的一般文件格式(如表5-3)

  表5-3 从机回复的一般文件格式

  基于RS485总线的多机通信系统设计方案解析

  图上信息内容段的界定同图2

  5.2.2 按时与再发

  本通讯协议按时要求以下:

  (1)帧推送期限;70 ms.超出这时限完毕推送。

  (2)服务器等候从机回复期限:7 ms,超出这时限,酌情考虑再发。 (3)服务器再发频次:不超过4次,超出后,判通讯不成功。

  5.2.3 通讯全过程

  一次详细的通讯全过程分成3个环节:服务器了解、从机回复和链接释放出来。服务器了解环节,服务器以帧的方式将从机地址码、指令、数据信息和检验码传输到特定从机;从机回复环节,从机表述接受的指令码,并机构相对应帧信息内容回送至服务器;链接释放出来环节,从机消除接收缓冲区及有关自变量,提前准备与服务器下一次通讯。一切一次详细的通讯全过程全是由服务器方进行的,从机在被服务器寻址方式前只有处在监听情况,从机在读取到地址码的第2个字节数后,马上分辨是不是寻址方式自身,如果是.再次接纳下边的数据信息,不然不与理会。

  5.3 通讯软件设计方案 5.3.1 从机通讯软件设计方案

  在该体系中,从机的首要目标是对被检测仪器开展常见故障检验和常见故障精准定位,通讯软件的关键功用是接受服务器的指令并将检验的結果回送服务器。从机通讯软件由2一部分构成:串行通信终断系统服务和计时器TO终断系统服务。串行通信终断系统服务用以读取或传送数据;TO终断系统服务用以当从机接受完一帧信息内容后开展表述并运行通讯向服务器回复,此外也用以当从机推送请求超时后的一些解决。从机里电时处在监听情况,当服务器寻址方式时,便进人终断系统服务,其程序流程图如图所示5-4所显示。

  基于RS485总线的多机通信系统设计方案解析  
图5-4 串口通信终断服务项目程序流程图

  计时器TO,并置收取和发送标示为收。当接受完第2个字节数后,各从机马上分辨是不是寻址方式该设备,若是,则置SM2为‘
0’,再次接受服务器送过来的数据信息;要不是,则严禁T0按时,没有接受后边的数据信息。当被寻址方式从机接受完一帧信息内容后,标识符间距计时器会造成按时终断,进到TO终断系统服务。图5-5是TO终断服务项目程序流程图
基于RS485总线的多机通信系统设计方案解析

   进到TO终断系统服务后,最先消除TO中断请求标示,终止TO计时器,然后分辨是接受进行或是推送请求超时,若是接受进行,再分辨校验和是不是恰当,若恰当,对传输的指令开展表述,看是服务器读或是服务器写实际操作,若是服务器读,则将数据信息装包,送至专业用以通信网络的二维数组,然后,严禁接受,置该设备为回复工作方式,最终运行推送,推送第一个字节数,与此同时运行推送期限计时器TO。当一个字节推送完后,便进到通讯终断系统服务,

  再次推送剩下数据信息。假如在上面判校验和时,发觉有误,则置SM2为‘1’,修复该设备的监听情况,便于接受服务器的再发信息内容。

  5.3.2 服务器通讯软件设计方案

  该系统软件服务器的首要目标是循环系统载入从机的检验結果,并送终端设备表明,其通讯软件由3一部分构成:源程序中承担寻址方式从机的寻址方式控制模块、通讯终断系统服务和TO终断系统服务。寻址方式控制模块程序流程图见图5-6。

  基于RS485总线的多机通信系统设计方案解析  
对从机寻址方式是依照从机的编码次序开展的,即从1号从机逐渐,服务器推送该从机信息帧的第1个字节数运行寻址方式,与此同时运行推送请求超时计时器TO,随后检验通讯完毕标示.当服务器取得成功的接受到该从机的回复信息内容后,便会置位该标示,进行与该从机的通讯。下面,寻址方式下一从机,直至全部从机都被寻址方式。最终,服务器进行其他作用后,又从1号从机逐渐下一循环系统的寻址方式。通讯终断系统服务和TO终断服务项目程的设计方法与从机的如出一辙,在这里不会再详细介绍。

  第6章 编程设计

  程序流程是单片机设计生命,沒有相应的程序流程,单片机设计系统软件是没法进行一切操作的,处理所涉及到的难题的。程序编写务必对设备的计算机指令十分的了解,并且不可以离开实际的设备,因而程序流程不可以在不一样的设备上通用性。未竟使本系统软件可以顺利运作,程序流程是不可或缺的,因此此次撰写了一个服务器程序流程,2个从机程序流程。

  6.1 服务器程序流程以下:

  #include《reg51.h》 #include《absacc.h》 #include《intrins.h》 unsigned char cort=0; sbit P3_5=P3^5;

  /********************************* 功能键扫描仪程序段

  *********************************/ key_serial() interrupt 0 using 1

  {

   cort; }

  /********************************* 推送程序段

  *********************************/ void master(void) { if(cort==1) { SBUF=0x01; while(TI!=1);TI=0; P3_5=0; SM2=0;

  while (RI!=1);RI=0;

  P2=SBUF;

  SM2=1; P3_5=1;

  }

  if(cort==2) {

  SBUF=0x02; while(TI!=1);TI=0; SM2=0; P3_5=0;

  while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1;

  }

  if(cort==3)cort=1; SM2=1;

  }

  /***************源程序****************/ void main(void) {

  P2=0xff; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf8; EA=1; EX0=1; IT0=1; P3_5=1;

  while(1) {

  master();

  //推送

  } }

  6.2 从机1程序流程以下: #include《reg51.h》 #include《absacc.h》 #include《intrins.h》

  unsigned char serial_receiver; sbit P3_5=P3^5;

  /**************************************** 串行接口终断程序段

  ****************************************/ void serial (void) interrupt 4 using 1 { ES=0; RI=0;

  if(SBUF==0x01)

  {

  P3_5=1; SM2=0; P1=0x10; SBUF=0x10;

  while(TI!=1);TI=0;

  }

  SM2=1; ES=1;

  P3_5=0;

  }

  /*****************源程序******************/

  void main(void) { P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_();

  }

  6.3 从机2程序流程以下: #include《reg51.h》 #include《absacc.h》 #include《intrins.h》

  unsigned char serial_receiver; sbit P3_5=P3^5;

  /**************************************** 串行接口终断程序段

  ****************************************/ void serial (void) interrupt 4 using 1 { ES=0; RI=0;

  if(SBUF==0x02)

  {

  P3_5=1; SM2=0; P1=0x80; SBUF=0x80;

  while(TI!=1);TI=0;

  } SM2=1; ES=1;

  P3_5=0;

  }

  /*****************源程序******************/ void main(void) { P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_();

上一篇:74ls283中文资料汇总(74ls259引脚图及功能_逻辑功能及特性)

下一篇:什么是光耦隔离_光耦隔离的主要作用

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部