基于CAN的农业灌溉监测系统设计

发布者:糖三角最新更新时间:2015-03-30 来源: chuandong关键字:CAN  农业灌溉  监测系统 手机看文章 扫描二维码
随时随地手机看文章
0引言

近年来,随着经济社会的发展,各地水需求量逐渐增加,水资源供需的矛盾日益显著。我国水资源利用效率很低,农业灌溉水利设施建设落后,水浪费现象严重。因此,如何提高农业灌溉水资源的利用率就显得极其重要。通过测量灌溉流量的实时信息来有效地节约利用水资源,这就用到了自动控制系统。确保系统稳定性,降低系统成本的重要环节是在自控系统中使用何种通讯方式。基于现场总线的通讯与控制技术是目前工业自动控制领域中的主要技术之一,它具有信息数字化和控制分散化等技术优点,在自动控制领域中应用日益广泛。现场总线技术的国际先进水平已经达到二芯载波电缆控制10Km距离的推广阶段,但我国在大田农业灌溉控制系统应用上,基于总线方式的控制技术还显得相当薄弱[1]。因此,借鉴先进的设计思想,开发出具有自主知识产权的基于现场总线的灌溉控制系统,符合农业现代化对自动化技术的需求。
 

1系统组成

组成现场网络,并通过以AT89C51处理器为核心的一个数据转换系统。本系统CAN总线模块以AT89C51为微处理器,在CAN总线通信接口上,采用了飞利浦公司的SJA1000和TJA1050芯片,SJA1000是独立CAN通信控制器,TJA1050为高性能CAN总线收发器。电路主要由微控制器AT89C51、独立CAN通信控制器SJA1000、CAN总线收发器TJA1050和流量计四部分所构成。微处理器AT89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。系统结构原理图如图1-1所示:

图1-1系统结构原理图

1灌溉系统测量及数据处理

水流量传感器主要由阀体、水流转子组件和霍尔传感器组成。它装在进水端,用于检测进水流量,当水通过水流转子组件时,磁性转子转动并且转速随着流量变化而变化,霍尔传感器输出相应脉冲信号,反馈给控制器,由控制器判断水流量的大小,进行调控。接线端口有正极、信号输出线、负极。单片机通过计算输出脉冲数,结合水流量计的参数计算流过的水流量;单片机I/O与存储器的接口连接,单片机将采集后的数据经处理后可以存放在存储器中,单片机的I/O接口与液晶以及上位机连接,经过单片机采集处理后的数据可以进行实时显示并上传至上位机保存。流量计的接线方式如图1-2所示:

图1-2水流量传感器接线端口

1.2灌溉系统通信部分的组成

CAN总线器件比较流行的有两大种:一种是有在片CAN的微控制器。另一种是独立的CAN控制器,本设计选用PHILIPS公司的SJA1000CAN控制器以及TJA1050总线收发器,其中TJA1050可以支持110个CAN节点,SJA1000持CAN2。0A/B规约。SJA1000用于汽车和一般工业环境中的控制器局域网络中,它是PHILIPS半导体PCA82C200CAN控制器(BasicCAN)的替代产品。而且,它增加了支持具有很多新特性的CAN2.0B协议的工作模式[2]。片内含信息缓冲、位流处理、位定时逻辑、接收滤波、错误管理逻辑等电路,并配置有丰富的功能寄存器。可完成数据成帧、总线填充、错误检测、总线仲裁及错误界定处理等规范。SJA1000的数据线AD0-AD7连接到单片机的P0口,/CS与P2.0连接。P2.0为低时,CPU的外部存储地址可选种SJA1000,CPU通过这些地址可以对SJA1000进行读/写操作。SJA1000的ALE,/WR,/RD引脚分别与CPU的相应引脚相连。/INT与CPU的INT0相连,CPU通过中断方式对SJA1000进行访问.试验中应该加强CAN总线节点的抗干扰的能力,这就要求SJA1000当的RX0,TX0不直接与TJA1050中的RXD,TXD相连,而要通过光藕6N137和TJA1000相接,这样总线上的各个节点之间的电气隔离就能更好的实现。不过,应该注意的是,这样光藕部分所应用的两个电源必须完全电气隔离,不然的话采用光偶就失去了意义。电源隔离可以采用带多个5V隔离输出开关电源来实现[3]。单片机与SJ1000的连接原理图如图1-3所示:

图1-3SJA1000与单片机接口设计原理图

TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。TJA1050可以为CAN控制器提供差动接收性能,为总线提供差动发送性能。能够将输出信号CANH和CANL的最佳匹配,能够将电磁辐射变得更小。TJA1050的CAN总线接口部分采取了抗干扰和安全的一些措施。TJA1000的两个引脚CANL,CANH都是用一个5.1Ω的电阻与CAN总线连通,其中电阻可以起到限流保护作用,使TJA1000不被过流的损害[4]。在地与CANL,CANH之间并联了两个30PF的电容,具有防辐射和滤除总线上的高频干扰的能力。再就是在CANH,CANL与地间可以接入两个防雷击管,当地与两个各输入端之间出现瞬变干扰的时候,防雷击管的放电可以起到一定的保护作用[5]。TJA1050设计原理图如图1-4所示:

图1-4TJA1050设计原理图

2系统的软件设计

CAN总线的软件设计主要包含三部分:CAN初始化程序、报文的发送程序、报文的接收程序[6]。CAN初始化主要是设置CAN的通信参数。需要初始化的CAN控制寄存器有:模式寄存器、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。值得注意的是以上寄存器只能在CAN控制器处于复位状态下才可写访问[7]。发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址填入帧头,将信息帧发送到CAN控制器的发送缓冲区。在接收到主机的发送请求后,发送程序启动发送命令。信息从CAN控制器发送到总线是由CAN控制器自动完成的。信息从CAN总线到CAN控制器的接收缓冲区也是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取信息,并将其存储在数据存储区。[page]
 

2.1CAN总线节点初始化程序

节点初始化主要指的是在系统上电以后对89C51以及CAN控制器SJA1000所进行初始化,来保证工作主频、输出特性以及波特率等。89C51的初始化能通过结合他们的监控任务来进行,主要就是完成对中断允许与屏蔽以及定时器的使用与和设置等。这里着重来说明SJA1000的初始化,SJA1000内部没有微处理器,要实现它的初始化要依靠89C51对其编程实现。在复位模式下才能进行SJA1000的初始化,因此在SJA1000初始化程序中第一要把工作方式置换为复位模式,然后设置验收滤波方式等。在CAN协议物理层当中的通信波特率的大小以及同步跳转宽度都是由定时寄存器BTR0和BTR1的程序所决定。着重强调的是:对一个系统当中的所有的节点来说,这两个寄存器的所有内容一定要一样,不然将没有办法进行通信。当初始化的设置完成以后,把复位请求位置‘0’,SJA1000就能够进入到工作状态,来完成正常的通信任务[8]。初始化程序如下:

#include<80c196kd.h>//包含的控制器寄存器定义

#include_SFR_H_

#include_FUNCS_H_

#defineBASE_CAN0xa000//定义CAN控制器基址

typedefstruct{

unsignedintid;/*报文标识符*/

unsignedcharrtr;/*远程帧位*/

unsignedchardlen;/*数据长度*/

unsignedchardata[8];/*数据*/

}MSG_STRUCT;/*将CAN协议的帧用C语言的结构表示*/

voidinit_can(){

*(unsignedchar*)(BASE_CAN+0)=0x01;

/*SJA1000进入复位状态*/

*(unsignedchar*)(BASE_CAN+4)=0x00;

/*初始化接收代码寄存器ACR*/

*(unsignedchar*)(BASE_CAN+5)=0xff;

/*初始化接收屏蔽寄存器AMR*/

*(unsignedchar*)(BASE_CAN+6)=0x00;

/*初始化总线时序寄存器BTR0*/

*(unsignedchar*)(BASE_CAN+7)=0x14;

/*初始化总线时序寄存器BTR1*/

*(unsignedchar*)(BASE_CAN+8)=0xfa;

/*初始化输出控制寄存器OCR*/

}

2.2报文发送程序

发送程序负责节点报文的发送,发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,并将SJA1000的命令寄存器发送请求标志位(TR)置位。SJA1000会自动启动发送过程。但是,在往SJA1000发送缓存区发送报文之前,必须先对发送缓冲器是否释放进行判断,只有当发送缓冲器标志(TBS)为“1”时,发送缓冲器才被释放,可将新报文写入发送缓存,否则,在发送缓冲器被锁定时,新报文是不能被写入发送缓冲器的。发送程序分数据帧和发送远程帧两种。远程帧无数据场。发送程序一般编写成子程序的形式。报文发送程序如下:

unsignedcharcan_send(MSG_STRUCTsmsg)

{unsignedcharv;

inti;

v=*(unsignedchar*)(BASE_CAN+2);

if(v&0x08)/*判断是否可以发送数据*/

{v=smsg.id>>3;/*标识符送识别码寄存器*/

*(unsignedchar*)(BASE_CAN+10)=v;

v=*(unsignedchar*)(BASE_CAN+10);

v=smsg.id&7;/*识别码0-2位、RTR、DLC*/

v<<=5;

v+=smsg.dlen;

*(unsignedchar*)(BASE_CAN+11)=v;

for(i=0;ii

{

*(unsignedchar*)(BASE_CAN+12+i)=smsg.data[i];

}

*(unsignedchar*)(BASE_CAN+1)=0x01;

return(1);

}

else

return(0);

}
 

2.3报文接收程序

SJA1000的报文接收是它自身独立完成的,它接收到的报文经过滤波验收以后,暂时放在接收缓冲器FIFO当中。在报文进到接收缓冲器之后,状态寄存器的RBS会被置‘1’,与此同时若中断使能寄存器的RIE被设为‘1’时,中断寄存器的RI位也会被置为‘1’,然后SJA1000向CPU提出中断请求。报文接收可以采取查询接收方式或者是中断接收方式。如果对通信的实时性的要求没有那么强那就可以采取查询接收方式[9]。报文接收程序如下:[page]

unsignedcharcan_receive()

{

MSG_STRUCTrmsg;

inti;

unsignedcharbuf1,buf2;

while((*(unsignedchar*)(BASE_CAN+2))&0x01)

/*判断是否有可接收信息*/

{

buf1=*(unsignedchar*)(BASE_CAN+20);

/*将一帧信息取出*/

buf2=*(unsignedchar*)(BASE_CAN+21);

rmsg.dlen=buf2&0x0f;/*数据长度*/

for(i=0;i

rmsg.data[i]=*(unsignedchar*)(BASE_CAN+22+i);

}

*(unsignedchar*)(BASE_CAN+1)=0x04;

/*释放接收缓冲器*/

rmsg.rtr=(buf2>>4)&0x01;/*远程帧*/

rmsg.id=buf1;/*取出报文标识符*/

rmsg.id<<=3;

rmsg.id|=(buf2>>5)&0x06;

switch(rmsg.id)/*按标识符转入不同的数据处理程序*/

case

......

break;

}

3系统应用必要性总结

中国是一个水资源严重缺乏的国家,提倡节水灌溉势在必行,实施按方收费是农田灌溉用水的必然趋势,最终实现农田灌溉用水的微机自动监测、计量、收费一体化。CAN总线是自动化控制领域的热点之一,被誉为自动化领域的局域网,现在已经广泛应用于工业控制的各个领域。在本次设计中将控制器与CAN总线进行了很好的结合,在应用中充分发CAN总线的优势,在农田灌溉监测中发挥更大的作用。

参考文献

[1]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.

[2]譬学勤.现场总线与发展趋势过程检测控制仪表及系统现状和发展研讨会文集,1996(12):252-257

[3]伍伟杰.基于CAN总线的节水灌溉自控系统设计与研究[J]节水灌溉2006(1)13-5

[4]邬宽明.CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,1996

[5]史久根,张培仁,陈真勇.CAN现场总线系统设计技术.北京:国防工业出版社,2004

[6]陈杨,刘曙生,龙志强.基于CAN总线的数据通信系统研究[J].测控技术,2000,19(10):53-55

[7]史九根等.CAN现场总线设计技术[M].北京:国防工业出版社,2004.

[8]蔡华锋,廖冬初,潘健,等.C8051F040中的CAN控制器的应用[J].单片机与嵌入式系统应用,2005(1):55—58.

[9]章磊,李耀,刘光徽.基于CAN总线网络的现场监控系统[J].仪表技术与传感器,2007(12):39-41,49

关键字:CAN  农业灌溉  监测系统 引用地址:基于CAN的农业灌溉监测系统设计

上一篇:比较LonWorks与RS485总线技术之优劣
下一篇:基于CAN总线飞机燃油系统维修培训系统的设计

推荐阅读最新更新时间:2024-05-02 23:34

基于CAN总线汽车车身视觉检测站的研究
    摘要: 研究CAN总线和多主机控制在汽车白车身视觉监测站中的应用;提出以采用摩托罗拉MC68HC05X16和微机为主机的多主机分布式控制系统;介绍控制网络的物理层接口及有关硬件,并对通信部分进行较为详细的研究。     关键词: 视觉检测 三维测量 分布式控制 控制器局域网 数据通信 前言 汽车车身视觉检测站是用于测量车身关键点的三维空间坐标的大型的专用检测系统。它由机械及定位系统、三维视觉传感器系统、测量控制与接口系统、标定系统以及计算机软件五大部分组成。主要方法采用结构光传感器,经标定系统标定后,通过控制系统选取被测点,采集图像,结合视觉检测算法,求出被测点坐标参数。为进行测量,必须把计算机与
[工业控制]
基于SAE J1939协议的车辆网络集成方法
摘要 电控单元(ECU)是车辆内部系统控制模块的代名词。本文介绍如何集成自定义ECU和具有SAEJI939CAN接口的ECU产品,实现基于SAE JI939协议的车辆网络,完成自定义ECU的信息采集和各ECU 间的信息交换。该网络使用双核单片机和μC/OS-II操作系统,通过液晶显示器和按键实现信息交互,解决了车辆仪表盘信息量较少和故障诊断实时性不足等问题。该方法可推广应用到其他工业环境类似的CAN通信领域,如列车控制、工厂控制等。 引 言   随着车辆电子化和自动化程度的提高,车辆上的ECU日益增多。为了提高信号的利用率,要求在不同的ECU间,大量的数据状态信息能够实现共享,大量的控制信号能够实时交换。这样,传统线束
[汽车电子]
基于SAE J1939协议的车辆网络集成方法
can总线(二)--如何测量can总线的波特率
这两天在研究车载can总线,因为对于车上的can总线的接口以及波特率没有对应的资料可查(不同的车接口都不一样,波特率也可能不同), 做一想要从车上测出can总线上的数据还不太容易。 于是我首先使用示波器(我使用的示波器型号是TDS 220)来找出汽车上can总线的接口,然后测出can总线的波特率,测量波特率的步骤如下: 1、将示波器的两个接口(接地和探头)分别接在can总线的两条线(CAN_H和CAN_L)上,这里需要注意如果CAN线上需要接一个120欧姆的负载电阻,否则波形是不规整方波,接上负载之后才是规整的方波。 2、此时如果can线上有数据,则会在示波器上显示出方波如图1所示。(这里使用示波器的RUN/STOP按
[测试测量]
<font color='red'>can</font>总线(二)--如何测量<font color='red'>can</font>总线的波特率
远程健康监测系统上线 移动医疗进入2.0模式
    日前,台湾应宏集团旗下杭州应宏赤纬科技有限公司携手中国联通正式发布其研发数年之久的“应宏远程家庭健康监测系统”,此系统由权威医疗机构大数据中心支持的后台诊疗系统、个人健康检测智能终端设备、移动互联网络等组成个人居家健康管理平台。而比达咨询发布的《2016第一季度中国 移动医疗 市场研究报告》中显示,中国移动医疗用户呈高速增长态势,规模高达2873。4万人,比2015年第四季度同比增长68。3%。2016年底中国移动 医疗健康 市场规模预计将达到74。2亿元。到2018年,中国移动医疗健康市场规模将达到184。3亿。但是,目前移动医疗市场鱼龙混杂,大多数公司还是仅仅停留在预约挂号、院前咨询、轻问诊等基本功能,对于居家健康管理
[医疗电子]
CAN总线在液压支架电液控制系统的应用
1 液压支架电液控制系统的通讯方式分析   液压支架电液控制系统是实现综采工作面高产高效的关键技术设备。当前国际上主流的液压支架电液控制系统有:DBT公司的PM4、MARCO公司的PM31和JOY公司的RS20型3种。在通讯方面,PM4架间通过BIDI Bus互联成综采面网络。这种方式的缺点在于,一旦控制器不能正常工作,将导致控制系统通讯的中断。PM31架间的通讯通过BIDI Bus,全工作面的互联则采用T Bus。RS20控制器间通过一条19芯强电缆连接,其中的8根线用于通讯和紧急闭锁。可以看出,PM4与PM31都采用总线的方式进行通讯,但都不是标准的现场总线。通过对3种控制器的剖析发现,它们的技术思路形成较早,且产品一直延续
[工业控制]
<font color='red'>CAN</font>总线在液压支架电液控制系统的应用
CAN FD帧结构介绍
CAN FD帧结构 CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。 与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。 2.1、帧起始 CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。 2.2、仲裁段 与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。 标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。扩展帧仲裁段由29位ID和SRR(隐
[嵌入式]
<font color='red'>CAN</font> FD帧结构介绍
基于CAN总线和双传感器仿人机器人运动控制系统研究
    一、引言     机器人研究是自动化领域最复杂、最具挑战性的课题,它集机械、电子、计算机、材料、传感器、控制技术等多门学科于一体,是多学科高技术成果的集中体现。而仿人步行机器人技术的研究更是处于机器人课题研究的前沿,它在一定程度上代表了一个国家的高科技发展水平。运动控制系统是机器人控制技术的核心,也是机器人研究领域的关键技术之一,在机器人控制中具有举足轻重的地位,因此,各研究机构都把对机器人运动控制系统的研究作为首要任务。     动作协调、具有一定智能、能实现无线实时行走已经成为当今机器人发展的主题。随着以电子计算机和数字电子技术为代表的现代高技术的不断发展,特别是以DSP为代表的高速数字信号处理器和大规模可编程逻辑
[嵌入式]
Linux+QT+SocketCAN:使用信号槽机制实现数据收发
最近在考虑采用面对对象的方式重新搭建机器人的主控程序框架,虽然之前的框架也是有这种思想在里面,但是总感觉还是有程序化编程的影子,很多地方的处理都不太理想,而且虽然之前也是一直在采用QT Creator作为IDE开发程序,但是实际上并没有怎么用QT的库,只是单纯的作为一个IDE来用,未免也是空守宝山而不入。 因此这次决定充分利用QT的库和信号槽机制来对程序框架进行重新构建。 0.开发环境 HOST平台: Ubuntu16.04 ARM平台:at91sam9x35 QT版本: 5.13.1 1.分析 针对Linux上的CAN通信,Socket CAN提供了一种十分简单方便的解决方案,QT中并没有像QTcpSocket一样的库可以使
[单片机]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved