1、引言
近年来,“嵌入式”一词越来越多的被人们提及,嵌入式产品被应用到各行各业。与嵌入式相关的技术如嵌入式产品,嵌入式系统的研究等也被列为“十五” 家发展的重点方向。
嵌入式系统 (Embedded System)被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
随着工业自动化的发展,基于PLC,单片机等设备的自动化系统,自动化设备越来越普及,几乎遍布所有自动化领域,与之相应的人机交互系统也应运而生,并得到同步发展。基于嵌入式技术的工业人机界面是人机交互系统中一颗耀眼的明星。高可靠, 寿命,体积小,高性能,多线程,多任务,强实时等特点使嵌入式工业人机界面越来越受到自动化系统集成商,自动化设备制造商的青睐。它能够理
随着越来越多的工程项目采用了嵌入式人机界面,相应的,用户对与嵌入式硬件配套使用的监控系统(Supervisory Control and Data Acquisition,SCADA)等应用软件的需求也在增加。这也正是本文所要讨论的问题。这里讲的嵌入式监控系统,其硬件为嵌入式智能人机界面;其软件为嵌入式操作系统,另加自己开发的应用程序。本文后面主要介绍这个监控应用程序,重点介绍应用程序中通讯部分的实现原理。
当今,已发展有多种嵌入式操作系统,如Linux, VxWorks,WinCE.net等,完全可在其上开发出图文并茂、界面友好的应用,以满足监控系统的种种要求。只是由于嵌入式技术相对是一门新兴的领先技术,涉足的人相对还比较少,所以这样的应用目前还比较少。本文介绍的嵌入式监控系统算是一个实例吧。
2、系统组成
我们所开发的这套嵌入式监控系统,上位机是沈阳鹭岛资讯科技有限公司开发的嵌入式智能工业控制人机界面(以下简称人机界面)。其嵌入式工业控制器是以Geode X86为核心处理器,包括网络通讯,数据通信,大尺寸触摸屏及液晶显示的硬件平台,在其上运行 WinCE操作系统。提供20个通用IO点供用户使用,物理层支持ProfiBus等现场总线,支持16位真彩TFT LCD显示,有64M SDRAM内存,64M FLASH闪存,据有USB接口,10/100M Ethernet网络通讯接口,以及串口,并口,VGA口等通用接口。
下位机用日本OMRON公司的PLC,或SIMENS PLC,或施耐德NEZA PLC,或日本三菱公司的 PLC,等等当前比较流行的PLC,当然温控表,单片机,智能模块等工业现场控制设备也可以。
控制对象(比如锅炉等)的工作由上述控制设备(各种PLC等)控制;而控制对象的状态则用人机界面及在其上开发的应用程序进行监控。
人机界面的操作系统采用了微软的WinCE.net。WinCE.net是为各种嵌入式系统和产品设计的一种紧凑,高效,可伸缩的操作系统(OS),主要面向各种嵌入式系统和产品。其多线程、多任务、完全抢占式的特点是专门针对资源有限而设计的。OEM开发商可根据自己硬件组成的特点对WinCE.net进行选择裁剪,从而配置出稳定高效并且是特有的WinCE.net操作系统和相应的SDK开发包。在应用上,WinCE.net支持超过1000个公共Microsoft Win32 API和几种附加的编程接口,用户可利用它们来开发应用程序。另外,微软为开发WinCE.net应用程序的人员提供了与Visual C++类似、 支持MFC的Microsoft eMbedded Visual C++语言。下面我们将介绍一下开发过程的细节问题。
3、软件流程
应用程序开发是在个人计算机上进行的。个人计算机的操作系统为WINDOWS 2000。应用程序的开发平台是Microsoft eMbedded Visual C++集成开发环境。
在应用程序开发时,还可以利用微软提供的测试模拟器(Emulator)。有了它可做到,即使没有人机界面,也可进行程序调试。
开发最终生成的可执行文件,可使用Microsoft eMbedded Visual c++开发环境提供的下载功能,通过串口或局域网,下载给人机界面。
&n
人机界面从PLC上收到应答的数据后,在触摸屏上,以图表、动画,文字等的界面显现出来,供用户观察。还可把这些数据进行存贮、打印,甚至于向ERP等管理信息系统传送。
如须对PLC或控制对象进行干预,也可在人机界面的触摸屏上,通过触摸键或触摸鼠标,向PLC发送命令或数据,以实现相应的控制。
这个应用的执行流程框图为:
图1 执行流程框图
4、画面构成
一般的工程监控画面有:文字显示,生产工艺流程显示(包括动画,柱状图显示等),报警,人员操作,趋势曲线等等。我们的系统架构是做一个基于主对话框的程序。再将这些不同的画面用子对话框表现出来。
主对话框负责初始化串口,打开串口,启动读串口线程等;而各子对话框则定时或根据需要向串口发送各种命令,通过主对话框的线程读回命令的应答,再在子对话框中以一定的形式提供给用户,以供监控现场作业。这其中主要的技术就是串口通讯。下面我们重点讲述通讯的实现。
5、通讯实现
人机界面提供的串口是符合通用标准的。WinCE.net下的串口通讯与Windows下的串口通讯原理相同。都是应用程序不直接控制硬件,而是通过操作系统提供的设备驱动程序,来进行数据传递。
WinCE.net 是Win 32编程。串口在Win 32中是作为文件来进行处理的,不是直接对端口进行操作。对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数。
但是也要注意WinCE.net所能支持的API函数只是Window API函数的子集。Windows有的,WinCE.net下不一定能使用。同时,WinCE.net字符集类似于Windows NT而不同于Windows 9x,它是基于Unicode的。这也是开发程序过程中从WINDOWS转到WinCE.net的程序员遇到问题最多的地方。另外在Windows下常用的一些通讯控件如MSComm等在WinCE.net下就不能正确使用了。
本监控系统采用API函数实现串口通讯。以下分几个问题介绍串口通讯及整个系统的实现。
5.1 打开串口
首先是打开串口,这是串口通讯的第一步。其代码为:
BOOL CMainDlg::OnInitDialog()
{
......
m_hComm=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); //打开串口的操作,需要注意
WinCE.net系统与Windows系统表达方式的细微不同,WinCE.net需要在串口后加上冒号;
SetupComm(m_hComm,1024,1024); //初始化串口的输入,输出缓冲区参数;
&n
......
SetCommTimeouts(m_hComm,&timeout); //设置通讯超时时间参数;
PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
//清空输入,输出缓冲区的字符,为开始接受数据,进入监控状态做好准备;
......