《嵌入式智能人机界面与PLC的通讯》由会员分享,可在线阅读,更多相关《嵌入式智能人机界面与PLC的通讯(10页珍藏版)》请在金锄头文库上搜索。
1、嵌入式智能人机界面与PLC的通讯 阅览次数:2110 作者:刘勇 尉红敏 宋伯生 单位:沈阳鹭岛资讯科技有限公司 摘要:介绍以嵌入式智能工业控制人机界面为硬件平台,以嵌入式操作系统WinCE.net为应用程序载体,在其上开发的一套嵌入式监控系统,给出了监控系统的实现架构,通讯原理,以及人机交互界面的实现方法。关键词:嵌入式,人机界面,WinCE.net,监控系统,通讯Abstract:This paper introduces a set of supervisory control and data acquisition,SCADA system .In system, hardware
2、is embedded industrial HMI, operation system is WinCE.net.This paper describes the primary frame,commucication priciple,and some programme tips. Key words:Embedded;HMI;WinCE.net;SCADA ;Communication1 引言近年来,“嵌入式”一词越来越多的被人们提及,嵌入式产品被应用到各行各业。与嵌入式相关的技术如嵌入式产品,嵌入式系统的研究等也被列为“十五”国家发展的重点方向。嵌入式系统 (Embedded Sys
3、tem)被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。随着工业自动化的发展,基于PLC,单片机等设备的自动化系统,自动化设备越来越普及,几乎遍布所有自动化领域,与之相应的人机交互系统也应运而生,并得到同步发展。基于嵌入式技术的工业人机界面是人机交互系统中一颗耀眼的明星。高可靠,长寿命,体积小,高性能,多线程,多任务,强实时等特点使嵌入式工业人机界面越来越受到自动化系统集成商,自动化设备制造商的青睐。它能够理想,生动地显示PLC,单片机等工业设备上的数据信息,功能强大,使用方便。它作为PLC等控制设备的上端设备在用户和机
4、器之间架设了一条桥梁。该产品目前广泛应用在工业自动化系统,医疗,金融等行业的自动化设备。随着越来越多的工程项目采用了嵌入式人机界面,相应的,用户对与嵌入式硬件配套使用的监控系统(Supervisory Control and Data Acquisition,SCADA)等应用软件的需求也在增加。这也正是本文所要讨论的问题。这里讲的嵌入式监控系统,其硬件为嵌入式智能人机界面;其软件为嵌入式操作系统,另加自己开发的应用程序。本文后面主要介绍这个监控应用程序,重点介绍应用程序中通讯部分的实现原理。当今,已发展有多种嵌入式操作系统,如Linux, VxWorks,WinCE.net等,完全可在其上开
5、发出图文并茂、界面友好的应用,以满足监控系统的种种要求。只是由于嵌入式技术相对是一门新兴的领先技术,涉足的人相对还比较少,所以这样的应用目前还比较少。本文介绍的嵌入式监控系统算是一个实例吧。 2 系统组成 我们所开发的这套嵌入式监控系统,上位机是沈阳鹭岛资讯科技有限公司开发的嵌入式智能工业控制人机界面(以下简称人机界面)。其嵌入式工业控制器是以SA1110 (Strong Arm 1110)为核心处理器,包括网络通讯,数据通信,大尺寸触摸屏及液晶显示的硬件平台,在其上运行 WinCE操作系统。提供20个通用IO点供用户使用,物理层支持ProfiBus等现场总线,支持16位真彩TFT LCD显示
6、,有64M SDRAM内存,32M FLASH闪存,据有USB接口,10/100M Ethernet网络通讯接口,以及串口,并口,VGA口等通用接口。下位机用日本OMRON公司的PLC,或SIMENS PLC,或施耐德NEZA PLC,或日本三菱公司的 PLC,当然温控表,单片机等工业现场控制设备也可以。控制对象(比如锅炉等)的工作由上述控制设备(各种PLC等)控制;而控制对象的状态则用人机界面及在其上开发的应用程序进行监控。人机界面的操作系统采用了微软的WinCE.net。WinCE.net是为各种嵌入式系统和产品设计的一种紧凑,高效,可伸缩的操作系统(OS),主要面向各种嵌入式系统和产品。
7、其多线程、多任务、完全抢占式的特点是专门针对资源有限而设计的。OEM开发商可根据自己硬件组成的特点对WinCE.net进行选择裁剪,从而配置出稳定高效并且是特有的WinCE.net操作系统和相应的SDK开发包。在应用上,WinCE.net支持超过1000个公共Microsoft Win32 API和几种附加的编程接口,用户可利用它们来开发应用程序。另外,微软为开发WinCE.net应用程序的人员提供了与Visual C+类似、支持MFC的Microsoft eMbedded Visual C+语言。下面我们将介绍一下开发过程的细节问题。3. 软件流程应用程序开发是在个人计算机上进行的。个人计算
8、机的操作系统为WINDOWS 2000。应用程序的开发平台是Microsoft eMbedded Visual C+集成开发环境。在应用程序开发时,还可以利用微软提供的测试模拟器(Emulator)。有了它可做到,即使没有人机界面,也可进行程序调试。开发最终生成的可执行文件,可使用Microsoft eMbedded Visual c+开发环境提供的下载功能,通过串口或局域网,下载给人机界面。工作时,PLC等工控设备运行它的控制程序,而人机界面则运行这个下载的可执行文件。两者通过串口进行通讯,但通讯的主动方为人机界面。人机界面依监控要求,向PLC等发送通讯命令,PLC则作相应的应答。人机界面从
9、PLC上收到应答的数据后,在触摸屏上,以图表、动画的界面显现出来,供用户观察。还可把这些数据进行存贮、打印,甚至于向ERP等管理信息系统传送。如须对PLC或控制对象进行干预,也可在人机界面的触摸屏上,通过触摸键或触摸鼠标,向PLC发送命令或数据,以实现相应的控制。4 画面构成一般的工程监控画面有:文字显示,生产工艺流程显示(包括动画,柱状图显示等),报警,人员操作,趋势曲线等等。我们的系统架构是做一个基于主对话框的程序。再将这些不同的画面用子对话框表现出来。主对话框负责初始化串口,打开串口,启动读串口线程等;而各子对话框则定时或根据需要向串口发送各种命令,通过主对话框的线程读回命令的应答,再在
10、子对话框中以一定的形式提供给用户,以供监控现场作业。这其中主要的技术就是串口通讯。下面我们重点讲述通讯的实现。5通讯实现人机界面提供的串口是符合通用标准的。WinCE.net下的串口通讯与Windows下的串口通讯原理相同。都是应用程序不直接控制硬件,而是通过操作系统提供的设备驱动程序,来进行数据传递。WinCE.net 是Win 32编程。串口在Win 32中是作为文件来进行处理的,不是直接对端口进行操作。对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数。但是也要注意WinCE.net所能支持的API函数只是Window API函数的子集。Windows有的,WinCE.ne
11、t下不一定能使用。同时,WinCE.net字符集类似于Windows NT而不同于Windows 9x,它是基于Unicode的。这也是开发程序过程中从WINDOWS转到WinCE.net的程序员遇到问题最多的地方。另外在Windows下常用的一些通讯控件如MSComm等在WinCE.net下就不能正确使用了。本监控系统采用API函数实现串口通讯。以下分几个问题介绍串口通讯及整个系统的实现。51 打开串口首先是打开串口,这是串口通讯的第一步。其代码为:BOOL CMainDlg:OnInitDialog()。m_hComm=CreateFile(_T(COM1:),GENERIC_READ|G
12、ENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); /打开串口的操作,需要注意 WinCE.net系统与Windows系统表达方式的细微不同,WinCE.net需要在串口后加上冒号;SetupComm(m_hComm,1024,1024); /初始化串口的输入,输出缓冲区参数;SetCommState(m_hComm,&m_dcb) ; /配置串口参数;m_dcb为设置好的参数结构;。SetCommTimeouts(m_hComm,&timeout); /设置通讯超时时间参数;PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR
13、);/清空输入,输出缓冲区的字符,为开始接受数据,进入监控状态做好准备;。52读串口线程其次是启动读串口线程,它让读串口程序不停地在后台运行,而不影响前台程序的工作。与此有关的代码为:BOOL CMainDlg:OnInitDialog()。ReadFile(m_hComm,inBuffer+iBufLen,INBUFFERLEN-iBufLen,&dwBytes,NULL); /从串口读数据;iBufLen+=dwBytes;for(int i=0;iIBUFLEN;I+)if(inBufferi=r) /以连接的设备为OMRON PLC为例,其通讯协议规定应答应当以r结尾;inBuffer
14、i=0; /字符串结束标志;switch(m_iDlgType) / m_iDlgType为代表不同对话框的标志变量;case 子对话框1标志:子对话框1.ProcData(inBuffer,i); /不同对话框中对命令应答的处理,ProcData为处理函数名;break;。53各子对话框发送写命令各个子对话框根据需要,采用定时器的形式,定时向PLC发送命令。以OMRON PLC为例,在发送命令时,根据OMRON PLC的通讯协议,还需对发送的命令字符串加校验码。这些程序代码为:void 子对话框1类:OnTimer(UINT nIDEvent) 。strcpy(m_szCmd,00RR000
15、00001); /OMRON PLC的命令字符串;GenXor(m_szCmd,result); /进行校验码计算,调用 GenXor 函数;sprintf(szTailer,%02X*r,result); /OMRON PLC通讯协议以“*r”结尾;strcat(m_szCmd,szTailer); /形成完整的通讯协议命令字符串;WriteFile(m_hComm, m_szCmd, strlen(m_szCmd),&dwWriten,NULL);/将命令字符串写入串口;。以下为上面所调用的计算校验码的代码:void GenXor(LPCSTR strSource,char& result) /为计算校验码的函数,进行异或运算:result=0; /为校验码赋初值;int len=strlen(strSource); /命令协议字符串的长度;for(int i=0;iLEN;I+)result=strSourcei; /按位进行异或;54显示界面处理最后,读线程读到的