上位机和下位机之间的串行通信采用RS一485标准接口,PC端接一个RS232/ 485的转换器,就实现RS485总线控制了。在通信频率1200bps 的情况下,有效通信距离为1.2km。由于有多个从设备并联在485总线上,所以要制定严格的通信格式,表1是用到的通信协议。
结语
笔者设计了一种基于RS485总线的温控系统。此系统投资少,架设简单、可扩展性强,大大减轻管理者的负担,实现了工业控制自动化。目前在多个场所得到了具体应用,其测温精度在0.5℃以内,系统工作可靠稳定,无通信故障。
引言
RS一485总线由于平衡差分传输的特性,具有抗干扰能力强,传输距离远、有较强的级连的能力。能实现多站远距离通信,组网方便,成本低廉,因此在工业控制领域得到广泛应用。
本系统是基于RS一485总线的远程多路温度监测、控制系统,上位机是一台PC,下位机是多个以AT98S51为控制器的温度传感器。工作时,下位机会向上位机发出本机地址和询问预置温度的请求。上位机获得下位机地址后,就知道那些地址的下位机已启动并根据请求把相应的预置温度发给下位机,此后每隔一定时间逐一询问已启动的下位机测定的温度信息,获得温度值后存入数据库并实时显示当前各路传感器测定温度,当温度过高时,会告警提示。下位机获得预置温度后,开始对传感器的数据采集和温度测量。当温度低于预置温度时,接通加热器加热温度,温度过高时,接通制冷设备加速降温,同时把温度信息传回上位机,温度超出范围后,还会以蜂鸣器报警。上位机接收下位机的测量温度后存入数据库,并实时显示,系统还具备数据库管理、温度变化曲线绘制等功能。当下位机掉电重启后,会向上位机重新问询获得掉电前的预置温度。温度监控系统由传感器电路、信号调整电路、A/D采样电路、控制电路、监控主机组成。基本工作原理是:传感器电路将感受到的温度信号以电压形式输出,经调整电路变换到TTL电平、由A/D采样后将数字量送给单片机控制电路,单片机根据开机时上位机传来的设定温度判断作何种控制,如温度未到设定温度,经驱动控制继电器闭合接通加热器,如温度过高则接通制冷设备加速降温。单片机还将所测温度在数码管上显示,并在上位机询问时把测量温度送到上位机入库。系统框图如下图1。
系统实现
硬件设计
AT89S51是ATMEL公司的可在线编程的单片机,它价格低廉,且支持在系统编程(ISP),方便设计者开发调试。温度传感器选用NS公司生产的L= M35,它具有很高的工作精度和较好的线性工作范围,测温范围为一55℃~+150℃,完全适用于一般的测温场合。其输出电压与摄氏温度线性成正比,无需外部校准即可提供1/4℃的测量精度。信号调整电路将传感器电路输出的变化范围为2V左右的直流电压,调整为TTL电平,以便与A/D兼容。由于单片机 IO口有限,在对测温实时性要求不是太高的情况下,A/D变换采用8位串行A/D转换器ADC0832,它与单片机的IO连线只有三根,减少了IO占用量。四个数码管的数据端都接到单片机P1口,控制端由P2[3..0]控制,利用定时器中断触发,每次只接通一个数码管,显示相应数值,利用分时显示在数码管上显示温度值。当温度变化时,A/D采集调整电路输出电压值,送单片机,单片机根据采样值判定温度,通过数码管显示温度值并回馈上位机。
原理图如图2 所示。
软件设计
下位机软件设计
下位机的软件是在Keil uVisiml2下,使用C语言开发的。下位机的软件设计中,主要解决三个问题:一是ADC0832的控制位写入。根据数据手册,在时钟上升沿写入配置字即可,但按此方法始终不能正确读出数据,后来经过试验,在写入配置字的每一位后,还要在负跳变前把数据翻转,配置字才能正确写入。二是数码管上温度值的显示。最后采用中断方案,每隔10ms进入中断程序,循环选通各个数码管,分时显示对应的数字值。三是A/D采样数据的处理,为避免因干扰而造成A/D采样数据不稳定,这里采用软件滤波的方法以滤除可能的尖峰干扰。方法是连续采样七次,去掉最高值和最低值,其余五次取平均值来获得A/D采样的数字量。
经测量,0V对应的温度为0℃,,5V时对应的温度为1 25℃,则比例因子K=0.04V/℃。每个数字量对应的电压值为20mV,则数字量变化与温度变化比例关系K1=2数字量/℃,利用此比例因子就可由数字量得到当前温度。
上位机软件设计
本系统为主从式监控系统,主机(即上位机)在向下位机发预置温度启动下位机后,轮询不同地址码的从机,获得温度值,存入数据库并在主界面显示。从机接收到主机预置温度后启动,每次主机询问温度值时回送测量温度值。如出现掉电后重启的情况,从机向主机发出重置请求,要求主机重发预置温度。上位机的通信软件开发采用Borland公司的C++Builder5.O,它的集成RAD开发环境可以帮助开发人员快速高效地开发出高质量的程序。在C++Builder中对串口进行编程可以使用Mscomm控件加快开发进度。它是一个ActiveX组件,不在C++Builder。安装中提供,可以在装有VC6.0的PC 上获得,拷贝到本机上注册后,在C++ B u il d e r下,先是在菜单的Compotlent选项中导入ActiveX控件,再Install Packages后就可以在ActiveX面板中看到并使用它了。
数据库采用微软的ACC:ESS数据库,使用ADO数据引擎;C++Builder在ADO面板中提供了完备的ADO开发控件,实现了通过鼠标操作就能实现连接数据库、编辑数据内容、显示数据等一些基本数据库操作功能。程序还可以绘制温度变化历史曲线便于操作员管理。
总线通信格式设置
上位机和下位机之间的串行通信采用RS一485标准接口,PC端接一个RS232/ 485的转换器,就实现RS485总线控制了。在通信频率1200bps 的情况下,有效通信距离为1.2km。由于有多个从设备并联在485总线上,所以要制定严格的通信格式,表1是用到的通信协议。
结语
笔者设计了一种基于RS485总线的温控系统。此系统投资少,架设简单、可扩展性强,大大减轻管理者的负担,实现了工业控制自动化。目前在多个场所得到了具体应用,其测温精度在0.5℃以内,系统工作可靠稳定,无通信故障。