基于CAN总线的液位控制装置的设计Word格式文档下载.docx
《基于CAN总线的液位控制装置的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于CAN总线的液位控制装置的设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
4.2.2中断程序16
第5章课程设计总结18
参考文献19
第1章绪论
1.1本设计的研究背景以及意义
近年来有关液位控制的形式及方法越来越多技术性能也越发先进自动化程度也有较大地提高。
但就以各类型水罐、水池的液位控制来说许多项目没有达到自动化的程度有的在设计上虽然设置有较为精密仪表和其它电气设备但是没有达到充分的开发和合理的配置自动化程序较低有许多电气及仪表装置,在系统中只起到了液位显示及报警功能其液位控制全凭生产运行人员根据系统工艺流程人为地手动或电动操作水罐或水池的进出口阀门来实现液位控制使其液位保持在正常的生产状态范围内。
由于受各工艺流程生产系统中的影响液位的变化和稳定性也受到较大影响为此生产运行人员在工作中要时时监测液位的变化而不得有半点疏忽,这样就较大地增加了生产运行人员的劳动强度。
九十年代计算机已渗透到工业、农业、国防、科研等部门及民用生活的各个方面而工业生产过程计算机控制则是计算机技术应用的一个重要而有发展远景的领域。
信息时代的今天工控界正进行着一场新的革命各种新型控制设备不断出现产品的性能和可靠性不断提高价格进一步下降。
作为该领域的另一个重要组成部分工控软件也受到越来越多的工程技术人员的重视正在向着产业化方向发展。
工控软件的特点是开发周期长被控对象复杂多样且软件与具体工程和设备交织在一起。
长期以来软件的通用性和可维护性一直困扰着工程技术人员。
设备管理人员或主要编程人员的变动将给控制系统的运行带来极大的不便甚至影响其正常工作许多企业决策者也对此表现出极大的关注。
为改变这一状况,国内外许多专家、学者、工程技术人员对工控软件进行了积极的探索然而目前的工控软件仍存在两方面的主要问题:
一是工控软件缺乏通用性工控公司只提供特定设备的驱动程序一旦设备更新或变动系统就必须重新设计;
二是国外工控软件价格昂贵使许多国内用户特别是高校及中小型企业难以接受以至于不得不花费许多精力去开发各自专用的测控软件。
1.2CAN总线的发展
本设计要求用CAN总线进行设计。
80年代末,在汽车工业中,由于众多的控制设备与测试仪器之间需要进行大量数据交换,传统的总线无法满足需求,德国BOSCH公司提出了CAN总线,这种新的串行数据通讯协议。
CAN总线即控制器局域网总线,通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
它具有如下特点。
CAN是到目前为止为数不多的有国际标准的现场总线,总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。
CAN总线没有采取传统的站地址编码不对节点进行地址规定,而是把通信数据块进行编码。
这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成。
这种按数据块编码的方式,使用报文的标识符来指定报文的优先级以及报文的内容,高优先级的节点享有传送报文的优先权。
还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。
采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短,从而保证了通信的实时性。
CAN总线采用了多主竞争式总线结构,通信介质可以是双绞线、同轴电缆或光导纤维,可以多个主站运行并且分散仲裁。
CAN总线上任意节点可以点对点,一对多及广播集中方式传送和接受数据,而且可以任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。
CAN通讯距离最大是10公里(设速率为5Kbps),最大通信速率为1Mbit/s(设通信距离为40米)。
CAN采用非破坏性的总线仲裁技术,即载波侦听多路访问/冲突检测(CSMA/CD)的总线仲裁方式,当多个节点同时发送数据时,优先级低的节点会主动停止发送,高优先级的节点可继续传输,节省总线仲裁时间。
避免多个节点同时开始发送消息而造成总线冲突,保证优先级高的报文能够优先发送。
CAN总线协议采用了完善的错误检测与错误处理机制,包括了CRC校验、错误报文自动重发、错误状态判断、临时错误自动恢复等措施,从而很好的保证了数据通信的可靠性。
节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响。
CAN总线采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。
具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。
可根据报文的ID决定接收或屏蔽该报文。
可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发,报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的通信,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
第2章课程设计的方案
2.1系统功能的分析
对于水位进行控制的方式有很多,而应用较多的主要有2种,一种是简单的机械式控制装置控制,一种是复杂的控制器控制方式。
两种方式的实现如下:
简单的机械式控制方式。
其常用形式有浮标式、电极式等这种控制形式的优点是结构简单,成本低廉。
存在问题是精度不高不能进行数值显示另外很容易引起误动作,且只能单独控制与计算机进行通信较难实现。
复杂控制器控制方式。
这种控制方式是通过液位传感器,把出口压力变成标准工业电信号的模拟信号经过放大滤波、A/D转换成数字信号传送到单片机经单片机运算和给定参量的比较,得出调节参量,经由CAN总线控制器进行调控,进入CAN总线接收电路来驱动电磁阀驱动电路,来调节电磁阀开度,以达到控制水位的目的。
本设计选择复杂控制器控制方式,实现的功能是完成一个基于CAN总线的液位传感器实现通过CAN总线接收控制指令及上传数据、并根据指令进行液位的控制功能的硬件电路设计及软件设计。
2.2系统的方案设计
图2.1系统总体框图
该系统由1个液位传感器、单片机、CAN的控制器、CAN收发器与CAN总线部分组成。
该系统的总体框图如图2.1所示。
第3章硬件设计
本设计要求硬件设计包括CPU选型、CAN总线控制器选型、CAN总线收发器选型及液位采集与驱动电路,要求CAN总线符合CAN2.0B规范,CAN总线通讯速率500kbit/s,同时需要进行光电隔离设计。
3.1CPU的最小系统设计
本设计要求通过CAN总线接受控制指令,控制调节液位,选择C8051F060单片机,该单片机是一种与51系列单片机内核兼容的单片机,CPU的最小系统图如图3.1所示。
其特点:
图3.1C8051F060最小系统
(1)内核采用流水线结构速度可达25MIPS(25MHz晶振)比普通的51单片机快10倍;
其指令与标准系列51单片机兼容因而掌握开发过程非常容易;
该芯片的JTAG调试方式支持在系统、全速、非插入调试和编程且不占用片内资源。
(2)片上集成有64kBFlash、4352B内部RAM(256+4kB可外扩至64kB)、59个I/0口、2通道16位1MSPS的可编程增益ADC、8通道10位200kSPS可编程增益ADC、2路12位DAC、3路模拟比较器、内部电压基准以及片内电源监视、降压检测和看门狗功能。
由于C8051F060的高集成度因无需外扩ROM、RAM、AD、DA、watchdog、可编程I/O口和EEPROM(用片内Flash实现)从而大大简化了硬件电路并为构成以C8051F060为核心的单片机系统创造了条件同时也提高了系统的可靠性。
C8051F060在该设计中的最大特点为其控制器已集成在CPU中,无需进行CAN总线控制器的选型以及接线。
3.2液位传感器选型
本课程设计需要检测液位,在此选用wi86755型静压投入式液位变送器对其进行测量变送。
该液位传感器测量量程:
0~300m,该仪表能够输出4~20mA、0~5V、0~10mA等标准信号供用户选用,供电电压:
12~36VDC,稳定性好,满度、零位长期稳定性可达0.1%FS/年。
在补偿温度-40~85℃范围内,温度飘移低于0.1%FS,在整个允许工作温度范围内低于0.3%FS。
具有反向保护、限流保护电路,在安装时正负极接反不会损坏变送器,异常时送器会自动限流在35mA以内。
选择的wi86755型静压投入式液位变送器如图3.2所示。
本设计选择输出信号为4~20mA,供电电压12~36VDC的档位。
其具体工作原理(静压测量原理)是:
当液位变送器投入到被测液体中某一深度时,传感器迎液面受到的压力公式为:
式中:
P
:
变送器迎液面所受压力;
被测液体密度;
g:
当地重力加速度;
液面上大气压;
h:
变送器投入液体的深度。
同时,通过导气不锈钢将液体的压力引入到传感器的正压腔,再将液面上的大气压
与传感器的负压腔相连,以抵消传感器背面的
,使传感器测得压力为:
,显然,通过测取压力F,可以得到液位深度。
图3.2wi86755型静压投入式液位变送器实物图
3.3液位采集系统
3.3.1信号调理电路
本设计中由液位传感器检测的信号为压力,是模拟量,传感器信号不能直接转换为数字量,输出信号为4~20mA,在变换为数字信号之前必须进行调理。
信号调理电路如图3.3所示。
图3.3调理电路图
调理就是放大、缓冲或定标模拟信号等,使其适合于模数转换器(ADC)的输入。
然后,ADC对模拟信号进行数字化,并把数字信号送到MCU或其他数字器(在本设计中为C8051F060单片机)以便用于系统的数据处理。
3.3.1A/D转换电路
因为液位传感器采集的信号为模拟量,由于进入单片机的信号需要数字量,所以选择A/D转换器进行转换,本设计选择ADC0809进行A/D转换。
A/D转换过程是将模拟信号变换为用于数据采集、控制过程、执行计算显示读出或其他目的的数字信号,方便MPU进行运算控制。
本设计选择的A/D转换器型号为ADC0809,是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成,ADC0809引脚图如图3.4所示。
图3.4ADC0809引脚图
其主要特性:
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。
4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。
7)低功耗,约15mW。
3.4阀驱动电路
IRF540MOS管应用VDSS=100VRDS<
0.077ID=22A,VGS(th)=4V
VGS=10.RDS接近0.007ID=11A,负载电流小的情况下可以5V驱动IRF540,IN4007MOS管内部等效,100/10W(可用2W)功率电阻。
此电路驱动24V的电磁阀,电流只能在2A左右,不能太大,因为Vgs只有5V,IRF540没有达到完全的导通状态,如果要增大电流得重新设计驱动电路,使Vgs在10V左右才能充分发挥IRF540的驱动能力。
图3.5阀驱动电路
3.5CAN接口电路
CAN接口电路包括CAN总线控制器和CAN总线收发器。
由于本设计所选择的CPUC8051F060内部已经集成CAN总线控制器,只需选择CAN总线收发器即可。
3.5.1CAN总线收发器
本设计选择的收发器是
ISO1050,是CAN协议控制器和物理总线之间的接口,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。
这是全世界使用最广泛的CAN收发器。
它有更高的击穿电压,因此可以在电源电压范围内驱动低至45Ω的总线负载。
而且ISO1050在隐性状态下的拉电流更小,在掉电情况下的总线输出特性有一定改善。
其他特性:
抗瞬间干扰,保护总线;
斜率控制,降低射频干扰(RFI);
差分接收器,抗宽范围的共模干扰,抗电磁干扰(EMI);
热保护;
防止电池和地之间的短路;
低电流待机模式;
未上电的节点对总线无影响。
ISO1050的引脚分布如图3.6所示。
图3.6ISO1050的引脚图
3.5.2光电隔离器
光电隔离电路的作用是在电隔离的情况下,以光为媒介传送信号,对输入和输出电路可以进行隔离,因而能有效地抑制系统噪声,消除接地回路的干扰,电路需要两个光电耦合器组成。
光电耦合器一般由三部分组成:
光的发射、光的接收及信号放大。
输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。
这就完成了电—光—电的转换,从而起到输入、输出隔离的作用。
图3.7CAN接口电路
3.6总体硬件图
图3.8总体硬件图
第4章软件设计
4.1流程图
图4.1软件工作流程图
4.2软件编程
主程序编程:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitMOR=P2^7;
sbitMOT=P2^6;
sbitLED=P2^0;
codeuchartab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
voiddelay(uintn)
{
while(n--);
}
voidLED_SHOW()
if(P1==0xfe)
P0=tab[8];
LED=0;
MOR=0;
MOT=1;
if(P1==0xfd)
{
P0=tab[7];
LED=0;
}
if(P1==0xfb)
P0=tab[6];
LED=1;
MOR=1;
if(P1==0xf7)
P0=tab[5];
P0=tab[4];
if(P1==0xef)
if(P1==0xdf)
P0=tab[2];
MOT=0;
}if(P1==0xbf)
P0=tab[1];
if(P1==0x7f)
P0=tab[0];
voidmain()
while
(1)
LED_SHOW();
4.2.1系统初始化
C8051f060单片机的初始化设置主要包括I/O口交叉编译设置系统时钟设置ADC采集系统设置CAN控制器设置以及其他相应的功能设置3。
本文主要介绍CAN寄存器的设置现根据需要对CAN控制器进行初始化设置:
为了接受遥传短节的命令数据本文设置一个消息对象来接受数据:
Unsignedintid;
UnsignedintMsgNum;
unsignedinttemp;
id—Oxl8B;
MsgNum—l;
SFRPAGE=CANO—PAGE:
CANOADR=lFlCMDMSK;
//指向IFlCom—mandMaskRegisters
CANODAT=0xOOb3;
/*IF1CommandMaskRegisters一0x00b3
WR/RD一1Mask=OArb一1Control=lClrIntPnd—OTxRqst=0DataA=1DataB=1一次发送8字节数据*/
CANOADR—IFlARBl;
CANODAT=OxOOOO;
/*lFlArbitrationRegisters1=OxOOOO即IDl5一O—O*/
temp—id<
2;
//标准id为lD28一IDl8所以要左移2位
temp&
=Oxlfff;
tempI=ox8000;
CANoDAT—temp;
//地址自增指向IFlArbitrationRegisters2
/*IFlArbitrationRegisters2=101(id)OOb
MsgVal=1Xtd=O为标准模式扩展1D无效Dir=O为接收*/
CANODAT=Ox0088;
/*IFlMessageControlRegisters—Ox0088
NewDat=0MsgI。
st=0IntPnd—O
UMask—OTxIE—ORxIE=ORmtEn=O
TxRqst一0
EoB一1DI。
C3—0=1000即数据长度为8*/
CANOADR=IFlCMDRQST;
CANODAT=MsgNum;
/*IF1CommandRequestRegisters—Ms—gNum将以上配置写入MsgNum号消息*/该程序的作用就是将1号消息对象配置为接收(帧lD为oxl8b)缓冲区。
这样CAN总线上ID为Oxl8b的数据帧就会被接收放到消息号为1的消息寄存器中了。
然后用同样的方法将2号消息对象设为远程帧(帧ID为oxl8b)接收缓冲区3号对象设置为发送(帧ID为Ox28b)数据缓冲区。
接着要配置波特率发生器将CAN传输速度配置为800Kbps:
SFRPAGE—CANo—PAGE;
//切换到CAN配置页面
CANOCN=0X41:
CANOADR=BlTREG:
CANODAT=oX2542;
//配置波特率
最后打开CAN中断并启动CAN:
SFRPAGE=CANo—PAGE;
CANODATI一OxFF:
for(i一1;
i<
33;
i++)
CANOADR—lFlCMDRQST;
CANODATI。
=i;
}//所有消息清零
CANOCN—Ox02:
//使能CAN中断Init清零结束初始化操作CAN控制器进入正常工作
4.2.2中断程序
单片机执行完系统初始化后进入主程序开始数据采集以及数据预处理并等待遥传命令准备数据传送。
这里要编写CAN中断子程序在其中完成数据接收。
编写数据发送程序在其中完成数据发送。
voidCAN—ISR(void)interrupt19//CAN中
断子程序
uinttempi;
ucharstatus;
uchartemppage;
temppage—SFRPAGE;
status=CANOSTA:
if((status&oxlO)!
一O)//RxoK一1成功接收报文
CANOSTA&一Oxef;
CANOADR=INTPENDl;
temp—CANODAT;
if((temp&OX01)!
=O)//如果为数据帧
//接收数据
if((status&
Ox08)!
=O){
CANOSTA&
一Oxf7;
CANOADR=INTPENDl:
if((temp&Ox02)!
一O)//如果为远程帧
//发送数据
}}
SFRPAGE—temppage;
在接受到CAN中断之后单片机转入CAN中断子程序首先判断是接收中断还是发送中断。
然后进行数据接收或者发送进而完成数据传输通讯。
第5章课程设计总结
本设计能够完成液位的控制功能,所用元件也很简单,主要是应用CAN总线的控制器以及其他的硬件再结合软件来完成液位监测并且判断液位高度进行调节控制。
在本次课程设计过程中对整个控制系统的硬件结构进行了仔细的了解熟悉了控制过程。
同时熟练掌握了CAN总线的应用进一步强化了其控制方法。
起初通过查阅相关资料了解了其不同模块的作用以及使用的场合合理选择了适合本次设计的模块设计了液位监控的设计系统。
本系统的原理是由液位传感器接受的水体压力信号,并由传感器的接收器进行接收,此信号经过放大滤波、A/D转换进入单片机然后利用CAN的控制器进行处理又经过CAN的收发器和光电耦合模块送入到CAN总线上,最后进入阀驱动电路。
在此过程中由程序根据接受信号的变化调节阀打开度来控制。
完成液位检测控制节点的设计。
在这次课程设计中很好的培养了用专业知识、专业技能分析和解决问题的能力。
熟练掌握了CAN总线在实际问题中的应用以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步为日后成为合格的应用型人才打下良好的基础。
参考文献
[1]杨宪慧.现场总线技术及其应用[M].北京清华大学出版社.2008.10:
59-99
[2]周立功.iCAN现场总线原理与应用[M].北京航空航天大学出版社.2007.6
[3]杜尚丰.CAN总线测控技术及其应用[M].电子工业出版社.2007.9:
16-19
[4]邹益仁.现场总线控制系统的设计和开发[M].国防工业出版社,2003
[5]谢宋.单片机原理及应用系统开发技术[M].北京航空航天大学出版社,1999
[6]唐灵军,唐杰,胡斌.基于单片机的水位控制系统设计[J].电子设计工程,2012(8)
[7]吴再群.基于单片机的水位控制系统[J].电子科技.2013(6)
[8]易军,费敏锐,王红蕾.
基于CAN总线技术的一类智能节点开发及应用[J].测控技术.2003(07)
[9]李伟光.
基于SJA1000的CAN系统节点设计[J].机电工程技术.2009(06)
[10]谢元光.单片机原理及系统开发[M].机械工业出版社,199