LabVIEW和PLC技术在燃煤锅炉自动控制系统中的应用研究

2014-03-21 12:23徐桂华徐保国
仪表技术与传感器 2014年5期
关键词:组态串口应用程序

徐桂华,徐保国

(江南大学物联网工程学院,江苏无锡 214122)

1 燃煤锅炉系统工艺流程分析

燃煤锅炉系统主要由:给水系统、燃料系统、蒸汽系统、燃烧系统、风烟系统和排污系统等部分构成[1],系统流程如图1和图2所示。首先用点燃的木柴对炉膛预热,此过程成为烘炉,烘炉的目的是为了脱除衬里中的自然水和结晶水。烘炉结束后,将煤粉通过传输带、煤斗运送到炉排上开始燃烧,燃烧过程中,引风机不断地将烟气经过除尘器处理后通过烟囱排出来,鼓风机用来增加炉膛内的含氧量,使煤充分燃烧,水泵将净化处理后的软水通过省煤器传送到锅筒,锅筒内的水经过加热,产生汽水混合物,传送到汽包,通过汽包内的汽水分离器,将蒸汽传送到白酒生产车间。

2 系统的自动化设计与实现

2.1软硬件配置

2.1.1硬件配置

硬件配置包括SIMATIC工控机,PLC S7-300 (CPU315-2DP),引风机,鼓风机,水泵等电机,变频器,变送器,CP5611卡,氧化锆烟氧含量传感器,压力传感器,液位传感器等。其中CP5611卡用于实现上位机与PLC的PROFIBUS通讯;各类传感器实时采集数据,通过变送器实时显示、并将测量值变送为4~20 mA的标准电流信号输出给PLC的AI模块;变频器连接引风机、鼓风机和水泵,通过改变电机工作电源频率来控制其运行。

2.1.2软件配置

图1 锅炉风、煤、烟、渣系统框图

图2 锅炉汽、水系统框图

LabVIEW 2011:为上位机编程软件;SIMATIC NET PC SOFTWARE V6.5:用于在工控机上通过PROFIBUS建立OPC服务器;STEP 7 V5.4:对PLC进行硬件组态及软件编程,并组态OPC服务器。

2.2系统总体构成

系统总体结构如图3所示,系统运行时,安装在炉膛内的压力传感器、烟氧含量传感器、温度传感器,锅筒内的液位传感器以及汽包内的蒸汽压力传感器实时采集数据,将数据传送给变送器,变送器将采集到的信号转换成4~20mA的电流信号输出给PLC的AI模块,PLC通过PROFIBUS总线传送数据至上位机。基于LabVIEW开发的上位机软件通过DataSocket技术对OPC Server访问,从而读取PLC上所有开关量和模拟量数据,并根据用户预设的控制要求,通过RS485总线方式控制变频器频率,进而调节引风机、鼓风机以及水泵的运行速度。利用变频器调节引风机、鼓风机和水泵这3个主要电机,极大的节约了能源、提高了锅炉运行效率。

图3 系统总体结构图

3 系统软件设计

3.1LabVIEW与PLC之间的通讯

LabVIEW与PLC之间通过PROFIBUS-DP总线技术通讯[2-3],由于LabVIEW和PLC编程软件来自不同的厂商,我们采用OPC SERVER来建立这两者间的通信连接。OPC(OLE for Process Control) 是一个工业标准,利用它可以将不同开发商研发的驱动程序与应用软件有机的集成或连接起来。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性。LabVIEW与PLC实时通信的实现步骤如下:

3.1.1OPC Server的组态

安装完CP5611卡和SIMATIC NET软件后,点击Station Configuration Eidtior,配置其窗口,在一号槽中插入OPC Server,在3号槽中插入CP5611并配置PROFIBUS通信的参数,设置地址为3、波特率为1.5 M、Bus profile为DP,点击“Station Name”按钮指定PC站的名称为“Coal-fired Boiler”确认后即完成PC站的硬件组态。

3.1.2配置控制台(Configuration Console)的设置

配置控制台是PC机组态设置和诊断的核心工具,在完成PC机的硬件配置后,打开配置控制台,如果CP5611没有转变成Configuration Mode,则手动将其转变为Configuration Mode,此外在Access Points设置窗口中将S7ONLINE指向PC internal(local),此设置是为PC站组态的下载做准备。

3.1.3在Step7中组态PC Station

打开SIMATIC Manager新建一个项目,插入一个PC站,注意此PC站的名称要与在OPC服务器里组态的PC站名称一致,在硬件组态中,PC硬件机架的配置选择与在Simatic Net中硬件组态相同,双击CP5611打开其属性对话框,设置PROFIBUS 地址和波特率与步骤(1)中一致,并进行编译下载,这一步完成后,进入NETPro相应界面,选择OPC服务器,点击右键插入一个新的连接,在S7连接属性对话框中对Profibus地址进行相应的配置,编译并下载到PC机上,在Step7上对S7-300PLC进行组态,组态完成后下载到PLC上。

3.1.4OPC Scout中变量的设定

OPC Scout是OPC Server中用于调试OPC通信的软件,在OPC Scout中可以定义与PLC连接的变量,在OPC Scout的左框图双击 OPC SimaticNET建立一个组,然后双击组名进入OPC-Navigator界面,双击Connection,在PLC的存储区建立需要监控的变量。

3.1.5LabVIEW与PLC通讯的建立

设计使用DataSocket技术,DataSocket技术是面向测控领域的网络通讯技术,用于共享和发布实时数据,能支持本地计算机上不同应用程序对特定数据的同时应用,DataSocket中隐含着OPC client可通过该OPC client与OPC server进行通讯,通过访问OPC Server实现上位机与PLC的通讯。DataSocket以URL的方式访问服务器数据项目,访问OPC的URL基本结构为:OPC://主机名//OPC服务器名/数据项目。程序框图如图4所示,其中localhost为主机名,S7 connection_1是组态PROFIBUS网络、定义S7连接时系统默认的ID名称,IB0、 PIW128为所需读取的存储区首地址。

图4 LabVIEW与PLC通讯程序框图

3.2LabVIEW与称重仪表通讯的实现

根据要求,将每次消耗的煤粉重量在上位机上显示出来,称重仪表通过RS485总线的方式与上位机通讯,在LabVIEW中实现串口通讯主要有2种途径:一是利用其自身的VISA驱动程序;二是利用标准串口通讯函数[4-5]。

文中利用标准串口通讯函数在VC++中开发动态链接库函数(DLL)供LabVIEW调用实现串口通讯。动态链接库是在应用程序运行时被装入和链接的,而不是把源代码复制到应用程序中去,因此使用动态链接库可以实现多个应用程序之间代码和资源的共享,该方法比直接利用VISA驱动实现通讯方式更加的灵活,而且节省了内存和购买VISA模块的费用。

3.2.1基于VC++的串口读写动态链接库函数开发

串口通讯函数库中包含comInit、comRead、comWrite 3个函数,分别负责对串口进行初始化及读写任务。

在使用串口进行读写操作时,首先需要对串行端口进行一些初始化配置,这是通过设置设备控制块DCB结构体中数据成员来实现的,DCB结构中包含诸如波特率、数据位数、奇偶校验和停止位数等重要的串口信息,通常在成功打开串口后,应用程序可以先调用GetCommState函数获取串行口的当前配置信息,再根据自身要求修改串口配置信息,这是通过修改DCB结构中部分数据成员的值、调用SetCommState函数设置串口配置信息实现的。

除设置DCB结构外,应用程序一般还需要设置I/O缓冲区的大小及传输超时,Win32系统使用系统I/O缓冲区来暂存串口的传输数据,如果通讯速率较高,那么应用程序应该设置较大的系统I/O缓冲区。设置传输超时的作用是:当在指定时间内没有读取或发送指定数量的字符时,ReadFile函数或WriteFile函数的操作仍然可以结束,不会出现无限等待的情况,该设置可以通过SetCommTimeouts函数实现。

应用程序主要通过ReadFile函数和WriteFile函数对串口进行读写操作,在读写时采用重叠I/O方式执行,采用此方式时,即使读写操作尚未完成,这两个函数也会立即返回,I/O操作留给后台处理。需要注意的是:在完成串口读写操作后需要关闭串口,否则串口将一直被暂用,下次将无法打开串口,关闭串口非常简单,只需使用CreateFile函数返回的句柄作为参数调用CloseHandle函数即可。具体程序如下所示:

MFCDLL_API int comRead (int *data,int n,int Number)

//*data存放返回的模拟量值,n连续读取仪表数量,Number指定的串口号

{ int i;

HANDLE hcomm1;//串口句柄

DWORD dw=0,rec=0;//实际读写操作时读取和写入的字节数

unsigned char strsend[8]={0};//写串口指令组

unsigned char strrece[10]={0};//仪表返回指令组

char str[4];//设置串口编号

sprintf(str,"COM%d",Number);

hcomm1=CreateFile(str,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);//打开串口

if (hcomm1==(HANDLE)-1) {return -12;}

for (i=0;i

{strsend[0]=0x80+(unsigned char)i+1;//地址+80H

strsend[1]=0x80+(unsigned char)i+1;

strsend[2]=0x52;//仪表读标志

strsend[3]=1;//

strsend[4]=0;

strsend[5]=0;

strsend[6]=(strsend[3]*256+82+strsend[0]-128)%256;//计算CRC校验码

strsend[7]=(strsend[3]*256+82+strsend[0]-128)/256;

if(!WriteFile(hcomm1,strsend,8,&dw,NULL)) return -1;//写入串口

if(!ReadFile(hcomm1,strrece,10,&rec,NULL)) return -1;//读取仪表返回值

else

{ unsigned int check;

check=(unsigned char)strrece[1]*256+(unsigned char)strrece[0];

check+=(unsigned char)strrece[3]*256+(unsigned char)strrece[2];

check+=(unsigned char)strrece[5]*256+(unsigned char)strrece[4];

check+=(unsigned char)strrece[7]*256+(unsigned char)strrece[6];

check+=(unsigned char)strsend[0]-128;

if((unsigned char)strrece[8]==check%256 &&

(unsigned char)strrece[9]==check/256)

{data[i] = (unsigned char)strrece[0]+strrece[1]*256;}

else

data[i]=8888;//校验错误,返回校验失败标志8888

}

}

CloseHandle(hcomm1);//关闭串口

return 11;//读取成功,返回成功标志11

}

3.2.2基于DLL技术的LabVIEW与称重仪表通信的实现

LabVIEW中调用动态链接库是通过CLF节点实现的,即调用库函数节点(Call Library Function),位于“函数→互连接口→库与可执行程序”中,使用前首先需要双击对其进行配置 。在选择好“库名/路径”后,在函数名中将出现上文编译DLL库文件时所定义好的3个函数,即comInit、comRead、comWrite,选择相应需要的函数并在参数栏中对其输入输出参数进行设置,各输入输出的数据类型及含义和DLL函数库中所定义的对应函数一致。另外,需要注意的是在该设置窗口的函数一栏中需将线程设置为“在任意线程中运行”,否则上位机在对串口进行读写操作时将独占线程,致使其他线程无法正常响应,进而易造成程序假死现象。成功设置好CLF节点后即可进行串口读写操作,LabVIEW读取称重仪表数据程序框图如图5所示。

图5 LabVIEW读取称重仪表数据

4 结束语

文中设计并实现了一种基于LabVIEW 和PLC技术的燃煤锅炉自动控制系统。创新利用了DLL技术实现称重仪表与上位机的通信,节约了系统资源、提高了系统灵活性。实践证明:该系统不仅有助于提高锅炉生产效率和资源利用率,而且对于推进节能减排的发展有着重要的影响。

参考文献:

[1]张晓梅.燃煤锅炉机组.北京:中国电力出版社,2006.

[2]曾珞亚.基于OPC技术的PLC与LabVIEW通信实现.微计算机信息,2009,25(6-1):52-54.

[3]徐国强,陈树,徐保国,等.黄酒前酵自控系统的研究与应用.自动化仪表,2011,32(2):31-33.

[4]陶以政,潘振显.怎样在LabVIEW中调用Win32动态链接库(DLLs).计算机应用,2000,20(6):72-73.

[5]王兰省,李振海.虚拟仪器系统开发技术.测控技术,1999,18(4):58-59.

猜你喜欢
组态串口应用程序
浅谈AB PLC串口跟RFID传感器的通讯应用
基于PLC及组态技术的恒温控制系统开发探讨
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
基于PLC和组态的智能电动拧紧系统
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
铸造行业三维组态软件的应用
基于PLC和组态的新型回转类测试设备的研制