综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章通信网络正文
 
基于RS-485的农业机器人与上位机可靠通信的实现
发布日期:2006-06-26 作者:张传省 张铁中 来源:微计算机信息

摘    要:针对农业机器人在现场控制中通信可靠性问题,提出了一种基于RS-485总线的农业机器人与上位机的通信方法。机器人控制器以Winbond公司的W78E58单片机为主控制器。机器人通过RS-485总线与上位机进行通信,数据格式为16进制ASCLL编码,求和校验 。通信协议为以自由口创建用户自定义的协议。试验结果表明,当数据传输速率为9.6Kbit/s时,误码率< ,能够达到农业机器人现场控制的要求。

关 键 字:串行通信;RS485;单片机;可靠性;农业机器人;

Abstract:In allusion to the reliability problem ,The paper developed a communication approach for the communication between agricultural robot and IPC and adopted W78E58 of Winbond as slave device, which communicated with IPC by RS-485 standard. and hex adecimal ASCLL code as the form of data transform to verify the sum of ascll.Communicarion protocols are  freestyle.The test results indicated that the functions of online surveillance and remote debugging of agricultural robot could be realized with code-error less 10  when transferring date at a speed of  9.6 Kbit/s.

Kay words:  serial communication;RS485;singlechip;reliability;agricultural robot;

0 引言

随着高科技的发展,适应劳动力日益短缺这一客观形势的需要,机器人的发展早已突破工业领域,正在向更多、更广的领域推进,其中农业机器人的出现就充分证明这一点。但是由于在农业机器人现场控制中,尤其是在需要实时与上位机通信的田间工作机器人的现场控制中,由于周围环境复杂、信号传输较远等问题,导致机器人控制器在与上位机通信中误码率高。针对上述问题,笔者提出了在农业机器人现场控制中,一种基于RS-485总线的可靠的通信方法。

目前,在我国应用中现场控制总线中,RS-485使用最为普遍。RS-485总线的共模输出电压在-7V至+12V之间,具有抑制共模干扰的能力,数据传输速率最大为10Mbit/s,当波特率为1200bps时最大的传输距离理论上可达15千米。所以非常适合用于机器人的现场控制中。

1         系统原理及结构框图

目前我国应用的工业现场总线中,RS-485使用非常普遍。当用户基于标准的RS-232接口设备,如PC机,连接到现场控制器时,由于RS-232是为点对点(即只用一对收发设备)通信而设计的,其驱动器负载为3~7KΩ。并且由于RS-232发送电平与接收电平的差为2V到3V左右,所以其共模抑制能力差,再加上双绞线的分布电容,其传输距离大约为15米,最高传输速率为20Kb/S。只适合本地设备。

RS-485总线收发器采用平衡发送和差分接收,既在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号转换成TTL电平,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能够检测低达200mV的电压,故数据传输可达1200米。 如下表所示RS-232与RS-485接口电气特性相比:

 

 

RS-232

RS-485

工作方式

单端

差分

最大传输距离

约15米

1200米

最大传输速率

20Kb/s

10Mb/s

最大输出电压

+/-25V

-7V~+12V

驱动器负载阻抗(Ω)

3K~7K

54

接收器输入电阻(Ω)

3K~7K

≥12K

摆率(最大值)

30V/μS

N/A

 

因此,将RS-232总线转换成RS-485总线通信,可以实现可靠性极高的通信。因此在设计中农业机器人与PC机通信方式为RS-485方式。系统结构示意图如下:

2  系统硬件设计

在本系统的硬件电路设计中,选择了全双工芯片MAX1482,根据规定,标准RS-485接口的输入阻抗为≥12kΩ,相应的标准驱动节点数为32。为适应更多节点的通信场合,有些芯片的输入阻抗设计成1/2负载(≥24kΩ)、1/4负载(≥48kΩ)甚至1/8负载(≥96kΩ),

相应的节点数可增加到64、128和256。MAX1482是全双工RS-485接口芯片其驱动器理论上可以驱动256个节点。

在本设计中,由于环境比较复杂,现场存在各种干扰源,所以在485总线的传输端加有保护措施。在设计中采用稳压管D1、D2、D3、D4组成的吸收回路,也可以选用能够抗浪涌的瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如SN75LBC184等)。

同时考虑到线路中的特殊情况,为防止总线中其它分机的通信受影响,在通信线路中串联了20Ω的电阻。这样本机的硬件故障不会使的整个总线的通信受到影响。另外在实际应用中,由于通信双绞线,它的特性阻抗为120Ω左右,所以电路设计中,在RS-485网络传输线的始端和末端各接一个120Ω电阻,以减少线路上的信号反射。

由于RS-485芯片的特性,接收器的监测灵敏度为±200mV,即差分输入端VA-VB≥+200mV,输出逻辑1,VA-VB≤-200mV,输出逻辑0;而A、B端电位差的绝对值小于200mV时,输出不稳定。如果在总线上所有发送器被禁止时,接收器输出逻辑0,这会误认为通信帧的起始引起工作不正常。解决这个问题的办法是人为地使A端电位高于B端电位,这样RXD的电平在485总线不发送期间(总线悬浮时)呈现唯一的高电平,单片机就不会被误中断而收到乱字符。通过电路的A、B输出端加上拉、下拉电阻R5、R6,即可以很好的解决这个问题。同理Z、Y端加上拉、下拉电阻R7、R8。

3、通信协议原理

   根据双方的通信要求,自定义通信协议:上位机向目标下位机发送指令,若存在几个下位机,各从站都接收来自上位机的指令后,各自进行目标地址确认,如果目标站地址和本站事先设定好的地址不同则不做响应,反之开始判断接收的数据是否完整正确;如果数据完全正确,目标从站开始读取接收缓冲区的数据,完成一系列的内部逻辑判断、数据移动后,再按要求向上位机发送返回数据,并向上位机发送错误信息。上位机接收各个从站上传的数据完成信息交换。

     自定义的通信协议如下:

        上位机发送指令:

SA

DA

SL

DT

LE

DU

FC

EA

       上位机接收指令:

SA

SL

DU

FC

EA

       下位机发送指令:

SA

SL

DU

FC

EA

        下位机接收指令:

SA

DA

SL

DT

LE

DU

FC

EA

其中各指令代码的意义为:
         SA:起始字符                DA:目标地址

     SL:发送的字节数            DT:指令类型

     LE:数据区长度              DU:数据区

     FC:校验码                  EA:结束字符

   4、软件设计

      上位机部分程序:

      VC提供了MSCOMM(microsoft communication control)控制,通过串口进行数据传输和接收,为应用程序提供串行通信功能。

      可以通过选择“Project->Add To Project->Components And Cotrols”菜单中命令把MSCOMM控件加入到工程中。MSCOMM控件通信功能的实现实际上是调用了API函数,而API函数是由Comm.drv解释并传递给设备驱动程序运行的,即MSCOMM控件的属性提供了通信接口的参数设置,能实现串口通信。 MSCOMM控件属性如下:

      CommPort:设置并返回通信端口号,Windows系统将会利用该端口与外界通信。

      Setings:设置并返回初始化参数,其组成格式为“BBBB,P,D,S” ,BBBB为数据波特率,P为奇偶校验,D为数据比特,S为停止位。

      PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口。

      OutPut:向传输缓冲区写1B数据。

      InPut:将传送到输入缓冲区的字符读到程序里。

      RThreshold:设置在产生OnComm之前要接收的字符。

      InPutLen:设置并返回InPut属性,从接收缓冲区读取的字符数。

      InBuffersize:设置或返回输入缓冲区大小。

      InBuffercout:返回输入缓冲区等待读取的字节个数,可以通过设置该属性值为0清除接收缓冲区。

      InPutMode:设置或返回传输数据类型。

      CommEvent:传回OnComm事件发生时的数值码。

  装载窗体时初始化并打开:

       m.Comm.SetCommProt(1);

       m.Comm.SetInBuffersize(1024);

m.Comm.SetOutBuffersize(512);

if(!m.Comm.GetProtOpen(1))

        m.Comm.SetProtOpen(true);

m.Comm.Settings(“9600,1,8,1”);

m.Comm.SetRThreshold();

m.Comm.SetInPutLen (1);

m.Comm.SetInPutMode(0);

    发送主程序和接收主程序略,在实际应用中,从站被动的接收上位机命令,然后作出响应,由于上

位机在通信过程中不能被中断,因此上位机在接收与发送数据过程中采用了不可中断的方法,本研究把通

信软件设计在单独的线程中,专门用于监视串口的输入,从计算机串口设备接收数据,并将接收到的数据

送到数据处理线程中显示和处理。

    下位机程序:

     基于Winbond的W78E58单片机机器人控制器串口程序是使用C语言编写的,使用KEIL公司的KeilC51

编译器编译通过,单片机串口通信程序处于被动地位,即时刻接收来自上位机传来的命令,然后根据命令

的类型作出反应。 具体程序略。

波特率是串行通信中的关键参数,波特率的一致性是数据位同步的保证,在选择下位机的波特率时,应当考虑SMOD位的选择对波特率的准确度的影响。在编写微机与单片机软件程序的时候要对波特率、数据传输格式、工作方式设置进行严格规定,另外,为保证数据传输的正确性还在传输的数据帧中加入了校验码。

5、结 论

   经过测试RS-485总线具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能够检测低达200mV的电压,故数据传输可达1200米。当数据传输速率为9.6Kbit/s时,误码率< ,能够达到农业机器人现场控制的要求。同样本设计可以应用与工业的现场控制中。具有一定的实用性和推广价值。

 

参考文献:

[1] 李现勇, Visual C++串口通信技术与工程实践(M),北京:人民邮电出版社 2002,56-144

[2] 阳实惠, 现场总线技术应用(M),北京:清华大学出版社 1999,4-16

[3] 何立民,单片机应用技术选编(5)(第一版)(M),北京:北京航空航天大学出版社 1997

[4] 李朝青, PC机及单片机数据通信技术(M),北京:北京航空航天大学出版社  2000

[5] 马忠梅, 单片机的C语言应用程序设计[M],北京:北京航空航天大学出版社  1996,

[6] 金华频等,提高单片机主从式远程多机通信能力的方法[J],工控电子,1999,10,8-11


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
谢谢,现在还没有相关信息...
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号