西门子模块6ES7355-0VH10-0AE0型号规格
西门子模块6ES7355-0VH10-0AE0型号规格
1 引言
近年来,“嵌入式”一词越来越多的被人们提及,嵌入式产品被应用到各行各业。与嵌入式相关的技术如嵌入式产品,嵌入式系统的研究等也被列为“十五”国家发展的重点方向。
嵌入式系统 (bbbbbded System)被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
随着工业自动化的发展,基于PLC,单片机等设备的自动化系统,自动化设备越来越普及,几乎遍布所有自动化领域,与之相应的人机交互系统也应运而生,并得到同步发展。基于嵌入式技术的工业人机界面是人机交互系统中一颗耀眼的明星。高可靠,长寿命,体积小,高性能,多线程,多任务,强实时等特点使嵌入式工业人机界面越来越受到自动化系统集成商,自动化设备制造商的青睐。它能够理想,生动地显示PLC,单片机等工业设备上的数据信息,功能强大,使用方便。它作为PLC等控制设备的上端设备在用户和机器之间架设了一条桥梁。该产品目前广泛应用在工业自动化系统,医疗,金融等行业的自动化设备。
随着越来越多的工程项目采用了嵌入式人机界面,相应的,用户对与嵌入式硬件配套使用的监控系统(Supervisory Control and Data Acquisition,SCADA)等应用软件的需求也在增加。这也正是本文所要讨论的问题。这里讲的嵌入式监控系统,其硬件为嵌入式智能人机界面;其软件为嵌入式操作系统,另加自己开发的应用程序。本文后面主要介绍这个监控应用程序,重点介绍应用程序中通讯部分的实现原理。
当今,已发展有多种嵌入式操作系统,如Linux, VxWorks,WinCE.net等,完全可在其上开发出图文并茂、界面友好的应用,以满足监控系统的种种要求。只是由于嵌入式技术相对是一门新兴的技术,涉足的人相对还比较少,所以这样的应用目前还比较少。本文介绍的嵌入式监控系统算是一个实例吧。
2 系统组成
我们所开发的这套嵌入式监控系统,上位机是沈阳鹭岛资讯科技有限公司开发的嵌入式智能工业控制人机界面(以下简称人机界面)。其嵌入式工业控制器是以SA1110 (Strong Arm 1110)为核心处理器,包括网络通讯,数据通信,大尺寸触摸屏及液晶显示的硬件平台,在其上运行 WinCE操作系统。提供20个通用IO点供用户使用,物理层支持ProfiBus等现场总线,支持16位真彩TFT LCD显示,有64M SDRAM内存,32M FLASH闪存,据有USB接口,10/100M Ethernet网络通讯接口,以及串口,并口,VGA口等通用接口。
下位机用日本OMRON公司的PLC,或SIMENS PLC,或施耐德NEZA 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 bbbbbded Visual C++语言。下面我们将介绍一下开发过程的细节问题。
3. 软件流程
应用程序开发是在个人计算机上进行的。个人计算机的操作系统为bbbbbbS 2000。应用程序的开发平台是Microsoft bbbbbded Visual C++集成开发环境。
在应用程序开发时,还可以利用微软提供的测试模拟器(Emulator)。有了它可做到,即使没有人机界面,也可进行程序调试。
开发终生成的可执行文件,可使用Microsoft bbbbbded Visual c++开发环境提供的下载功能,通过串口或局域网,下载给人机界面。
工作时,PLC等工控设备运行它的控制程序,而人机界面则运行这个下载的可执行文件。两者通过串口进行通讯,但通讯的主动方为人机界面。人机界面依监控要求,向PLC等发送通讯命令,PLC则作相应的应答。
人机界面从PLC上收到应答的数据后,在触摸屏上,以图表、动画的界面显现出来,供用户观察。还可把这些数据进行存贮、打印,甚至于向ERP等管理信息系统传送。
如须对PLC或控制对象进行干预,也可在人机界面的触摸屏上,通过触摸键或触摸鼠标,向PLC发送命令或数据,以实现相应的控制。
4 画面构成
一般的工程监控画面有:文字显示,生产工艺流程显示(包括动画,柱状图显示等),报警,人员操作,趋势曲线等等。我们的系统架构是做一个基于主对话框的程序。再将这些不同的画面用子对话框表现出来。
主对话框负责初始化串口,打开串口,启动读串口线程等;而各子对话框则定时或根据需要向串口发送各种命令,通过主对话框的线程读回命令的应答,再在子对话框中以一定的形式提供给用户,以供监控现场作业。这其中主要的技术就是串口通讯。下面我们重点讲述通讯的实现。
5.通讯实现
人机界面提供的串口是符合通用标准的。WinCE.net下的串口通讯与bbbbbbs下的串口通讯原理相同。都是应用程序不直接控制硬件,而是通过操作系统提供的设备驱动程序,来进行数据传递。
WinCE.net 是Win 32编程。串口在Win 32中是作为文件来进行处理的,不是直接对端口进行操作。对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数。
但是也要注意WinCE.net所能支持的API函数只是bbbbbb API函数的子集。bbbbbbs有的,WinCE.net下不一定能使用。同时,WinCE.net字符集类似于bbbbbbs NT而不同于bbbbbbs 9x,它是基于Unicode的。这也是开发程序过程中从bbbbbbS转到WinCE.net的程序员遇到问题多的地方。另外在bbbbbbs下常用的一些通讯控件如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系统与bbbbbbs系统表达方式的细微不同,WinCE.net需要在串口后加上冒号;
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<ibuflen;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); //形成完整的通讯协议命令字符串;
一般I/O模块的价格占PLC价格的一半以上。PLC的I/O模块有开关量I/O模块、模拟量I/O模块及各种特殊功能模块等。不同的I/O模块,其电路及功能也不同,直接影响PLC的应用范围和价格,应当根据实际需要加以选择。
(一)开关量I/O模块的选择
1. 开关量输入模块的选择
开关量输入模块是用来接收现场输入设备的开关信号,将信号转换为PLC内部接受的低电压信号,并实现PLC内、外信号的电气隔离。选择时主要应考虑以下几个方面:
1)输入信号的类型及电压等级
开关量输入模块有直流输入、交流输入和交流/直流输入三种类型。选择时主要根据现场输入信号和周围环境因素等。直流输入模块的延迟时间较短,还可以直接与接近开关、光电开关等电子输入设备连接;交流输入模块可靠性好,适合于有油雾、粉尘的恶劣环境下使用。
开关量输入模块的输入信号的电压等级有:直流5V、12V、24V、48V、60V等;交流110V、220V等。选择时主要根据现场输入设备与输入模块之间的距离来考虑。一般5V、12V、24V用于传输距离较近场合,如5V输入模块远不得超过10米。距离较远的应选用输入电压等级较高的模块。
2)输入接线方式
开关量输入模块主要有汇点式和分组式两种接线方式,如图6-2所示。
图6-2开关量输入模块的接线方式
a)汇点式输入 b)分组式输入
汇点式的开关量输入模块所有输入点共用一个公共端(COM);而分组式的开关量输入模块是将输入点分成若干组,每一组(几个输入点)有一个公共端,各组之间是分隔的。分组式的开关量输入模块价格较汇点式的高,如果输入信号之间不需要分隔,一般选用汇点式的。
3)注意同时接通的输入点数量
对于选用高密度的输入模块(如32点、48点等),应考虑该模块同时接通的点数一般不要超过输入点数的60%。
4)输入门槛电平
为了提高系统的可靠性,必须考虑输入门槛电平的大小。门槛电平越高,抗干扰能力越强,传输距离也越远,具体可参阅PLC说明书。
2. 开关量输出模块的选择
开关量输出模块是将PLC内部低电压信号转换成驱动外部输出设备的开关信号,并实现PLC内外信号的电气隔离。选择时主要应考虑以下几个方面:
1)输出方式
开关量输出模块有继电器输出、晶闸管输出和晶体管输出三种方式。
继电器输出的价格便宜,既可以用于驱动交流负载,又可用于直流负载,而且适用的电压大小范围较宽、导通压降小,同时承受瞬时过电压和过电流的能力较强,但其属于有触点元件,动作速度较慢(驱动感性负载时,触点动作频率不得超过1HZ)、寿命较短、可靠性较差,只能适用于不频繁通断的场合。
对于频繁通断的负载,应该选用晶闸管输出或晶体管输出,它们属于无触点元件。但晶闸管输出只能用于交流负载,而晶体管输出只能用于直流负载。
2)输出接线方式
开关量输出模块主要有分组式和分隔式两种接线方式,如图6-3所示。
图6-3 开关量输出模块的接线方式
a)分组式输出 b)分隔式输出
分组式输出是几个输出点为一组,一组有一个公共端,各组之间是分隔的,可分别用于驱动不同电源的外部输出设备;分隔式输出是每一个输出点就有一个公共端,各输出点之间相互隔离。选择时主要根据PLC输出设备的电源类型和电压等级的多少而定。一般整体式PLC既有分组式输出,也有分隔式输出。
3)驱动能力
开关量输出模块的输出电流(驱动能力)必须大于PLC外接输出设备的额定电流。用户应根据实际输出设备的电流大小来选择输出模块的输出电流。如果实际输出设备的电流较大,输出模块无法直接驱动,可增加中间放大环节。
4)注意同时接通的输出点数量
选择开关量输出模块时,还应考虑能同时接通的输出点数量。同时接通输出设备的累计电流值必须小于公共端所允许通过的电流值,如一个220V/2A的8点输出模块,每个输出点可承受2A的电流,但输出公共端允许通过的电流并不是16A(8�2A),通常要比此值小得多。一般来讲,同时接通的点数不要超出同一公共端输出点数的60%。
5)输出的大电流与负载类型、环境温度等因素有关
开关量输出模块的技术指标,它与不同的负载类型密切相关,特别是输出的大电流。另外,晶闸管的大输出电流随环境温度升高会降低,在实际使用中也应注意。
(二)模拟量I/O模块的选择
模拟量I/O模块的主要功能是数据转换,并与PLC内部总线相连,同时为了安全也有电气隔离功能。模拟量输入(A/D)模块是将现场由传感器检测而产生的连续的模拟量信号转换成PLC内部可接受的数字量;模拟量输出(D/A)模块是将PLC内部的数字量转换为模拟量信号输出。
典型模拟量I/O模块的量程为-10V~ 10V、0~ 10V、4~20mA等,可根据实际需要选用,同时还应考虑其分辨率和转换精度等因素。
一些PLC制造厂家还提供特殊模拟量输入模块,可用来直接接收低电平信号(如RTD、热电偶等信号)。
(三)特殊功能模块的选择
目前,PLC制造厂家相继推出了一些具有特殊功能的I/O模块,有的还推出了自带CPU的智能型I/O模块,如高速计数器、凸轮模拟器、位置控制模块、PID控制模块、通信模块等。