找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 污水处理在线监测系统研究

[复制链接]
admin 发表于 2013-3-24 13:32:00 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 针对当前污水处理没有实现自动控制和污水处理工艺分散的特点,设计了基于CAN总线结构的污水处理集散控制系统(DCS)模型构建一体化氧化沟的整个控制系统。用CAN总线对上位机与下位机之间进行数据通信,解决了多台设备监控的实时传输。对CAN总线和DeviceNet协议作了详细的解释,并给出了DLL以及DeviceNet协议中控室的应用程序。
关键词: CAN总线;DeviceNet协议;DCS
    当今世界的水环境面临两大问题:水资源短缺和水污染加重。造成水污染的主要原因是工业废水、农田排水及城乡生活污水向江河湖海大量排放,造成地面水和地下水水质受到污染,严重制约了经济的发展并危害着人类的健康,因此,近年来各国对控制水污染越来越引起重视,全球都在加大和加快水污染治理的力度和速度。我国污水处理设备的制造水平和科技含量都比较低,本文对污水处理设备在线监测系统设计方案进行分析,并对其软件开发提供了一定的指导作用[1-2]。
1 污水处理系统现状
 目前,对污水处理系统运行状况进行在线监测已成为发展趋势,国外已开发出一些污水处理在线监测系统,并设计了一些基于神经网络、小波变化、专家系统等技术的诊断软件。现有的污水处理在线监测系统设计方案大多采用传统的上下位机结构。下位机完成现场设备运行状况和污水处理状态信号的在线监测,大多采用工控机和单片机来实现。上位机负责污水处理状态参数的监测显示、报警、故障诊断及识别等。这种结构对少量设备的几个状态参数的检测,实时处理效率较高,当需要对多个设备进行监测时,上下位机通信成为系统实时性和可靠性的瓶颈。另外,这些系统的在线监测和故障诊断相对脱离,即各成一套系统,即使有些系统将两者合在一起,当多个设备对多种诊断功能提出诊断请求时,整个系统的工作效率会明显降低,造成系统集成性差,不便于软件升级和扩充[2-3]。
2 污水处理软件开发
 为了便于用户监控和管理整个污水处理厂处理情况,本文开发了中控室通信与应用控制程序,提供了良好的人机操作界面。ADAM5000系列CAN模块与许多软件兼容,DeviceNet和CANopen可用来配置系统,建立在这两个协议上的动态链接库DLL可用于Windows程序设计。PCL-841附带软件包提供了7个函数,分别为初始化模块CanInitHW()、退出模块CanExitHW()、复位模块CanReset()、配置模块CanConfig()、设置正常运行状态模块CanNormRun()、发送帧模块CanSendMsg()及接收帧模块CanReceiveMsg()。其源文件在Can841.h中,运用这几个函数和DeviceNet指令集就可构成系统应用软件各个功能子程序,实现各个节点模块间数据传送数据采集和控制输出。PC机与CAN适配卡的联络采用命令的通信协议,即“命令+参数”形式和“多主竞争的总线仲裁”方式实现。
 适配卡设备驱动程序、动态连接库和所要开发的Ring3层应用程序的关系如图1所示。
    20121107050817252704402.gif
   
 Ring3应用层对CAN适配卡的访问全部通过动态链接库实现,这种访问主要包括对CAN卡的初始化、发送报文、接收报文以及其他操作。CAN卡初始化除了对CAN适配卡本身的初始化外,还包括虚拟设备驱动程序的动态加载和初始化(设置中断号和I/O地址)。
 污水处理自控软件的设计如图2所示。
    20121107050817299584403.gif
   2.1 对CAN串口的操作
 适配卡PCL-841上提供了两个独立的CAN串口,对该串口的操作有几种方法可以使用,如直接使用Windows AP对该串口进行操作,使用包装好的控件(例如MSComm),也可以先把涉及到串口操作的WindowsAPI都封装到一个类里面供开发使用。在本系统中,使用一个封装好的串口类来对串口进行操作。该类能支持多串口、多线程,并能在所有主流Windows系统下使用。serialPortEx类的用户只需熟悉少数几个公共成员函数,就能轻易在自己的程序中加入串口的支持。必须注意的是该类并不支持串口通信协议,因为不同应用场合下可能需要使用不同的协议,在本系统中使用的是DeviceNet协议。
2.2 实时运行数据的读取
 监控软件中设备实时运行状态的显示通过对设备实时运行数据的读取来实现。实时数据的读取通过定时发送状态请求(STATUS REQUEST)信号来实现,定时器的间隔足够小(例如1 s),那么每隔1 s监控软件都能够将其系统运行状态显示和现场设备的运行状态同步,这就保证了监控软件中系统状态显示的实时性。如果定时器的精度要求不高、定时器的间隔不是太小,使用Windows定时器就可以了,一般用SetTimer()函数来启动一个定时器,用KillTimer()函数来结束一个定时器。对于污水处理系统,通常每隔1 s左右读取一次系统状态信息就可以满足系统实时性的要求,因此使用Windows定时器完全可以满足要求。实时数据的读取步骤是:在监控软件启动时打开定时器,每次定时器被触发后,发送一条状态请求信号;接收到回应的状态信号后,再更新系统运行状态的显示,在下一次定时器被触发之后,再发送一条状态请求信号。不断循环,直到监控软件退出为止[2-7]。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-26 01:24 , Processed in 0.062172 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表