7
西门子模块6ES7214-2BD23-0XB8支持验货
2.1plc的定义plc称为可编程序控制器,它是按照成熟而有效的继电器控制概念和设计思想,利用不断发展的新技术、新电子器件,逐步形成了具有特色的各种系列产品,是一种数字运算操作的**电子计算机。它是将逻辑运算,顺序控制,时序和计数以及算术运算等控制程序,用一串指令的形式存放到存储器中,然后根据存储的控制内容,经过模拟,数字等输入输出部件,对生产设备和生产过程进行控制的装置。
2.2plc的发展历程1969年dec公司按照gm(美国通用汽车公司)的要求研制了世界上**台plc并且在gm公司得到成功的应用。此后公司使plc商品化。plc是专门设计出来用于同继电器产品竞争并逐步取代了传统的继电器。plc作为一种工业**计算机,经历了以下几个发展的历程。
1969-1972为**阶段,是plc的初期阶段,在该阶段的各厂家的plc差别很大、没有统一的硬件和软件标准、功能简单、**性强,硬件主要以分离元件为主,体积较大、性能较差、可靠性不高。
1972-为*二阶段,在该阶段plc逐步演化为一种**的工业计算机,可靠性大大提高,成本大幅度降低,面向过程的梯形图和语句表语言面世,系统逐步向标准化过渡,这些都为plc的普及奠定了基础。
1981-至今,iec正式发表了plc的标准,各厂家的plc都向规范化发展。梯形图、语句表、sfc语言已经成熟,同时还有和高级编程语言的接口,其存储能力、运算速度、对模拟量的处理功能已经大大加强,现在的大中型plc已经具有以前dcs所“特有”的经典pid算法、斜坡函数、自适应算法、模糊控制等算法。
2.3 plc特点和功能
(1)plc的主要特点。plc的特点是:工作可靠、运行速度快、积木式结构、组合灵活、良好的兼容性、程序编制及生成简单、丰富、网络功能强。
(2)plc的主要功能。plc系统能很好的完成工业实时顺序控制、条件控制、记数控制、步进控制等功能;能够完成模/数(a/d)、数/模(d/a)转换、数据处理、通讯联网、实时监控等功能。
多年的实践表明,plc耐用、可靠,是专为工厂设计的,具有根据工作环境要求加固的元件,实时扫描实践及故障诊断功能,故障排除简便,深得用户偏爱。
plc如此可靠的原因是一个可执行继电器逻辑、顺序功能图、功能块、结构文本、命令目录或其组合的实时核心或操作系统。若出现故障,其内置安全装置能保持机械受损,且能保持有序、有预见的顺序。
2.4 plc的发展趋势
有较快的逻辑运算和较强的逻辑控制、顺序控制能力,在离散控制中有**的可靠性,方便简单易学的编程方法,使其在以离散为主的工业自动化领域中有无可争议的**地位。
**工业计算机控制领域,围绕开放与再开放过程控制系统、开放式过程控制软件、开放性数据通信协议,已经发生巨大变革,几乎到处都有plc,但这种趋势也许不会继续发展下去。随着软plc(softplc)控制组态软件技术的诞生与进一步完善和发展,安装有softplc组态软件和基于工业pc控制系统的市场份额正在逐步得到增长,这些事实使传统plc供应商在思想上已经发生了戏剧性的变化,他们必须面对现实,在传统plc的技术发展与提高方面做出更加开放的高姿态。对于控制软件来讲,这是plc控制器的核心,plc供应商正在向工业用户提供开放式的编程组态工具软件,而且对于工业用户表现得非常积极。此外,开放式通信网络技术也得到了突破,其结果是将plc融入更加开放的工业控制行业。
(6)过程控制和管理功能。随着plc、dcs和ipc(工业现场控制用计算机)之间的竞争逐步加强,各plc厂家正在逐步将传统dcs所特有的过程控制功能逐步移植到plc中,使其在过程控制领域能够与dcs进行竞争,这方面plc已经取得了很大的成果。为了满足生产管理的需要,各plc厂家也在其软件开发上增加了管理软件,通过与其plc 的实时通讯采集现场数据
并通过相应的软件完成生产管理所需要的管理功能。 随着自动化程度的提高,小型plc的应用领域比以前更为广泛,越来越多的行业开始使用小型PLC。小型PLC产品更加多元化,不仅有**度很高的国际,国内一些自动化企业也看到小型PLC广大的市场,纷纷推出自主的小型PLC产品,这为不同细分市场的中国用户提供了更多的选择。
我个人还是建议大家使用****的产品,因为,从技术角度来讲,保证PLC在复杂的工业环境下的高可靠性仍然是很多新加入小型PLC领域的厂家面临的技术难题。从创新角度来讲,持续的大规模的研发投入是不断创新,满足市场的日益增长的需求的保证,而这种投入对许多厂家来说也是很大的考验。从市场开发角度来看,大厂商拥有明显的强势和领域,拥有优势的核心技术,成熟的解决方案,和适合行业和市场开发的销售网络。西门子小型PLC经过十多年的市场考验,品牌与服务已经得到了市场的广泛认可,这不仅靠市场宣传,更靠优秀的产品品质和完整的解决方案。
近几年自动化产品用户除了可靠稳定性、性价比等因素之外,越来越重视项目的维护成本,现在中国用户都已将维护成本列入整个自动化系统的成本中。西门子小型PLC为用户提供灵活多样的远程服务解决方案,可以基于固定电话,网络,GPRS无线通讯等,为客户后期维护节约可观的成本。为了进一步为广大用户降,2005年,西门子成功完成了S7-200PLC的本地化生产,同时还本地化生产了S7-200PLC**触摸屏KTP-178和四行中文文本显示器TD400,进一步提高了西门子小型PLC整体解决方案的性价比,开放性已达到同类品牌中型机水平,支持PPI、RS-485、Profibus-DP、以太网等多种通讯协议,保证了完全的无缝连接。
我认为小型PLC的市场份额会持续保持快速的发展。随着中国加入WTO,出口额逐年提高,中国正逐步成为**机械设备的制造基地,使得国内OEM厂商迅猛发展。一些OEM厂商为了避免激烈竞争,追求更高的利润,将用小型PLC替代继电器或单片机控制方案。而且,小型PLC不再仅仅进行单机单站的控制,工厂信息化的潮流将会使更多的生产设备联网,进行集中监控。西门子小型PLC开放的平台为工厂生产设备联网和工厂信息化提供了可能性,使客户*增加额外的硬件投资即可实现联网



1、引言
近年来,“嵌入式”一词越来越多的被人们提及,嵌入式产品被应用到各行各业。与嵌入式相关的技术如嵌入式产品,嵌入式系统的研究等也被列为“十五” 家发展的重点方向。
嵌入式系统 (bbbbbded System)被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的**计算机系统。
随着工业自动化的发展,基于PLC,单片机等设备的自动化系统,自动化设备越来越普及,几乎遍布所有自动化领域,与之相应的人机交互系统也应运而生,并得到同步发展。基于嵌入式技术的工业人机界面是人机交互系统中一颗耀眼的**。高可靠, 寿命,体积小,高性能,多线程,多任务,强实时等特点使嵌入式工业人机界面越来越受到自动化系统集成商,自动化设备制造商的青睐。它能够理想,生动地显示PLC,单片机等工业设备上的数据信息,功能强大,使用方便。它作为PLC等控制设备的上端设备在用户和机器之间架设了一条桥梁。该产品目前广泛应用在工业自动化系统,医疗,金融等行业的自动化设备。
随着越来越多的工程项目采用了嵌入式人机界面,相应的,用户对与嵌入式硬件配套使用的监控系统(Supervisory Control and Data Acquisition,SA)等应用软件的需求也在增加。这也正是本文所要讨论的问题。这里讲的嵌入式监控系统,其硬件为嵌入式智能人机界面;其软件为嵌入式操作系统,另加自己开发的应用程序。本文后面主要介绍这个监控应用程序,重点介绍应用程序中通讯部分的实现原理。
当今,已发展有多种嵌入式操作系统,如Linux, VxWorks,等,完全可在其上开发出图文并茂、界面友好的应用,以满足监控系统的种种要求。只是由于嵌入式技术相对是一门新兴的良好技术,涉足的人相对还比较少,所以这样的应用目前还比较少。本文介绍的嵌入式监控系统算是一个实例吧。
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等)控制;而控制对象的状态则用人机界面及在其上开发的应用程序进行监控。
人机界面的操作系统采用了微软的。是为各种嵌入式系统和产品设计的一种紧凑,,可伸缩的操作系统(OS),主要面向各种嵌入式系统和产品。其多线程、多任务、完全抢占式的特点是专门针对资源有限而设计的。OEM开发商可根据自己硬件组成的特点对进行选择裁剪,从而配置出稳定并且是特有的操作系统和相应的SDK开发包。在应用上,支持**过1000个公共Microsoft Win32 API和几种附加的编程接口,用户可利用它们来开发应用程序。另外,微软为开发应用程序的提供了与Visual C++类似、支持MFC的Microsoft bbbbbded Visual C++语言。下面我们将介绍一下开发过程的细节问题。
3、软件流程
应用程序开发是在个人计算机上进行的。个人计算机的操作系统为bbbbbbS 2000。应用程序的开发平台是Microsoft bbbbbded Visual C++集成开发环境。
在应用程序开发时,还可以利用微软提供的测试模拟器(Emulator)。有了它可做到,即使没有人机界面,也可进行程序调试。
开发较终生成的可执行文件,可使用Microsoft bbbbbded Visual c++开发环境提供的下载功能,通过串口或局域网,下载给人机界面。
工作时,PLC等工控设备运行它的控制程序,而人机界面则运行这个下载的可执行文件。两者通过串口进行通讯,但通讯的主动方为人机界面。人机界面依监控要求,向PLC等发送通讯命令,PLC则作相应的应答。
人机界面从PLC上收到应答的数据后,在触摸屏上,以图表、动画,文字等的界面显现出来,供用户观察。还可把这些数据进行存贮、打印,甚至于向ERP等管理信息系统传送。
如须对PLC或控制对象进行干预,也可在人机界面的触摸屏上,通过触摸键或触摸鼠标,向PLC发送命令或数据,以实现相应的控制。4、画面构成
一般的工程监控画面有:文字显示,生产工艺流程显示(包括动画,柱状图显示等),报警,人员操作,趋势曲线等等。我们的系统架构是做一个基于主对话框的程序。再将这些不同的画面用子对话框表现出来。
主对话框负责初始化串口,打开串口,启动读串口线程等;而各子对话框则定时或根据需要向串口发送各种命令,通过主对话框的线程读回命令的应答,再在子对话框中以一定的形式提供给用户,以供监控现场作业。这其中主要的技术就是串口通讯。下面我们重点讲述通讯的实现。
5、通讯实现
人机界面提供的串口是符合通用标准的。下的串口通讯与bbbbbbs下的串口通讯原理相同。都是应用程序不直接控制硬件,而是通过操作系统提供的设备驱动程序,来进行数据传递。
是Win 32编程。串口在Win 32中是作为文件来进行处理的,不是直接对端口进行操作。对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数。
但是也要注意所能支持的API函数只是bbbbbb API函数的子集。bbbbbbs有的,下不一定能使用。同时,字符集类似于bbbbbbs NT而不同于bbbbbbs 9x,它是基于Unicode的。这也是开发程序过程中从bbbbbbS转到的程序员遇到问题较多的地方。另外在bbbbbbs下常用的一些通讯控件如MSComm等在下就不能正确使用了。
本监控系统采用API函数实现串口通讯。以下分几个问题介绍串口通讯及整个系统的实现。
5.1 打开串口
首先是打开串口,这是串口通讯的第一步。其代码为:
BOOL CMainDlg::OnInitDialog()
{
......
m_hComm=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); //打开串口的操作,需要注意
系统与bbbbbbs系统表达方式的细微不同,需要在串口后加上冒号;
SetupComm(m_hComm,1024,1024); //初始化串口的输入,输出缓冲区参数;
SetCommState(m_hComm,&m_dcb) ; //配置串口参数;m_dcb为设置好的参数结构;
......
SetCommTimeouts(m_hComm,&timeout); //设置通讯**时时间参数;
PurgeComm(m_hComm,PURGE_TXbbbbb|PURGE_RXbbbbb);
//清空输入,输出缓冲区的字符,为开始接受数据,进控状态做好准备;
......
}
5.2 读串口线程
其次是启动读串口线程,它让读串口程序不停地在后台运行,而不影响前台程序的工作。与此有关的代码为:
BOOL CMainDlg::OnInitDialog()
{
......
ReadFile(m_hComm,inBuffer+iBufLen,INBUFFERLEN-iBufLen,&dwBytes,NULL); //从串口读数据;
iBufLen+=dwBytes;
for(int i=0;i{
if(inBuffer[i]=="\r") //以连接的设备为OMRON PLC为例,其通讯协议规定应答应当以"\r"结尾;
inBuffer[i]=0; //字符串结束标志;
switch(m_iDlgType) // m_iDlgType为代表不同对话框的标志变量;
{
case 子对话框1标志:
子对话框1.ProcData(inBuffer,i); //不同对话框中对命令应答的处理,ProcData为处理函数名;
break;
......
}
......
}
5.3 各子对话框发送写命令
各个子对话框根据需要,采用定时器的形式,定时向PLC发送命令。以OMRON PLC为例,在发送命令时,根据OMRON PLC的通讯协议,还需对发送的命令字符串加校验码。这些程序代码为:
void 子对话框1类::OnTimer(UINT nIDEvent)
{
......
strcpy(m_szCmd,"@00RR00000001"); //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;iresult^=strSource[i]; //按位进行异或;
}
5.4 显示界面处理
最后,读线程读到的数据,交由对应的子对话框进行处理。要对这些数据进行分析,并以动画,柱状图,趋势曲线等表现出来。以所连接的为OMRON PLC为例,其代码为:
void子对话框1类::ProcData(char *buffer, int len)
{
......sscanf(buffer+7,"%04X",&wData); //根据OMRON PLC的命令规约,从应答中将需要的数据取出到变量wData中;
....... //对获得的变量值根据需要进行处理,如以文字或动画等形式在子对话框中进行显示;
}
在进行界面处理时,有一些技巧,如动画显示时,可以用一个定时器控制图片的轮番显示。(在本系统中动画是通过CbitmapButton这个控件进行显示的。)
switch(m_iImage) // m_iImage为定义的动画显示标志;
{
case 1: //显示**幅图片,同时将动画显示标志置为2;
CBitmapButton控件变量.LoadBitmaps(图片标志1);
m_iImage=2;
break;
case 2: //显示*二幅图片,同时将动画显示标志置为1;
CBitmapButton控件变量.LoadBitmaps(图片标志2);
m_iImage=1;
break;
}
在显示实时曲线时,采用循环数组的方式,在内存中开辟一定大小的空间,使读上来的数形成一个循环数组,在界面上动态的显示出来。
本系统中以20个模拟量为一个数组大小,也就是实时趋势曲线一直显示20个点的信息,但因为使用了循环数组的技术,所以看上去很有动感。
void 子对话框类::循环数组函数(int iValue) // iValue为从命令应答中解析出来的有效数据;
{
int index=(m_iBegin+m_iCount)%20; //计算循环数组的下标,初始从0开始;
m_aryValue=iValue; //为循环数组赋值;
m_iCount++; //循环数组的个数加1;
if(m_iCount>20) //判断个数是否**过20个,如是,将下一个数组下标从1开始,依此类推;
{
m_iCount=20;
m_iBegin=(m_iBegin+1)%20;
}
......
}
通讯是本系统的关键。我们的实践证明,以上四步是实现整个监控系统基本之要点。