陈建铎,张乐芳
(西安欧亚学院 信息工程学院,陕西 西安 710065)
针对水厂的生产流程,文中所讲到的全分布式管控一体化网络采用的是一种混合网络拓扑结构。现场设备由智能节点通过双绞线连接到LonWarkes总线网段上,总线网段再通过网络接口设备连接到Internet/Intranet上,实现水厂控制网络与信息网络一体化。总体结构如图1所示,上位机负责监控整个水厂现场生产情况,实现现场数据处理、信息存储、报警、远程控制等功能;网络适配器PCNSS负责数据的上传下达,可把控制网络的数据上传到上位机,也可以把上位机的控制命令下发到控制网络[1]。也可以使用i.Lon100把上位机和前端现场控制网连接起来[2]。i.Lon100既可以作为高性能的网络接口,又可以作为底层节点开发工具。另外,i.Lon100还提供进程分配、数据记录、信号传送、信号检测及报警等功能,既是路由器又是符合工业标准的Web服务器,可把LonWorks网络上的智能设备连接起来,供Internet上的用户访问。这里,通过组态软件CentruyStar及服务器LNSDDE Server/iLon100构建上层监控平台,实现控制与管理的集成以及远程监控。底层通过LON网连接各智能节点、变送器、执行机构,实现现场数据(如液位、温度、压力、流量等)采集与控制;远程计算机通过Internet实现现场组态画面的Web页发布,授权用户可通过浏览器在线浏览监控。
如图1所示,在底层,也就是前端测控现场,通过LonWorks中的LonMaker[1]组建底层控制网LON(Local Operation Network),利用NodeBuilder编写智能节点应用程序,以网络变量实现LON网络上的通信。图中使用LON通用智能节点与各测试设备和控制装置连接,向上与i.Lon100[2-3]连接。
图1 全分布式管控一体化网络结构Fig.1 Structure of full distribution integrative management and control network
智能节点使用的是一种基于LonWorks控制网络技术的HLC-1回路控制器[4],它不仅能实现数据采集与处理,完成控制等功能,还提供通信接口,以公共协议进行通信。内设12位A/D转换器,可对4路模拟信号进行转换,输入信号0~5 V或4~20 mA,即4通道模拟信号输入;内设12位D/A转换器,可对2路数字量信号进行转换,输出信号 0~5 V或 4~20 mA、即2通道模拟量输出;另外还有2通道数字量(触点或电平)输入及2通道开关量输出;还能实现2通道变量实现PID调节。在安装完成后,HLC-1回路控制器不仅可以实时接收上位机的控制命令,实现对前端执行机构的控制,还可脱离上层管理系统,自行完成数据采集处理及前端设备运行调控。
在前端,根据受控对象的不同选用的设备有可编程控制器(PLC)、FRENIC5000G/P11S变频器、网络适配器等。可编程控制器,比如S7-200 CPU224XPCN,本身就具有很强的编程控制能力,因此可顺利完成前端的监控功能。网络适配器选用的是PCLTA-10,可插在PC机的扩展槽上,作为一个特殊的智能接口设备,既能与所有和总线挂接的现场智能节点进行对等双向通信,又能快速实现复杂的数据处理和高级监控功能,在PC机与现场智能节点之间起到“上传下达”的纽带作用。
前端变送器与执行机构的选用,是基于水厂生产控制流程。所要采集的数据有液位、pH值、温度、压力、流量、余氯和泥土界面等。因此所使用的测试仪和变送器有超声液位计、pH测量仪、温度变送器、压力变送器、电磁流量计、余氯分析仪、泥土界面仪、浊度仪、漏氯报警仪等。采用的控制有电机变频调速、加氯与投药泵计量、电磁阀开启度控制等。现场执行装置有调频电机、电磁阀、继电器等。系统运行时,整体构成闭环控制系统,自动运行,自动调节。管理人员也可从监控计算机发出指令,控制前端执行机构。
本系统采用HLC-1回路控制器,该智能节点主要完成模拟量、数字量的输入输出控制。笔者使用NodeBuilder开发设计了智能节点前端控制程序[4-5]。数据采集设备的输出信号通过变送器连接到智能节点的模拟输入端;执行机构连接到智能节点的模拟输出端。通过NodeBuilder编写控制算法程序,经组态监控平台下发控制命令,控制前端执行机构在要求的范围内工作。
这里选用智能节点的Neurowire输入/输出作为I/O对象,实现与外部器件的同步通信。下面仅说明一个节点变量的定义,并以模拟量输出、模拟量输入和数字量输出为例,说明程序设计[6]。
1)Neurowire输入/输出对象语法结构定义:
IO_8 neuronwire master|slave[select (pin-nbr)][timeout(pin-nbr)]
[kbaud(const-expr)][clockedge(+|-)]io-object-name
IO_8:Neurowire输入/输出对象使用引脚 IO_8 ~IO_10,IO_8是时钟引脚,IO_9是串行数据输出引脚,IO_10是串行数据输入引脚;
Master:指定Neuron芯片在引脚IO_8上提供时钟,被指定为输出;
Slave:指定Neuron芯片检测引脚IO_8上的时钟,被设置为输入;
Select (pin-nbr): 为 Neurowire master指定片选引脚,为IO_0~IO_7引脚之一;
Timeout(pin-nbr):为 Neurowire slave 指定一个可选择的超时信号引脚,其范围是IO_0~IO_7。当使用超时信号引脚时,当neuron芯片等待时钟的上升沿或下降沿时,将检查该引脚的逻辑电平。如果检测到逻辑电平为“1”,则传输停止;
Kbaud (const-expr): 为 Neurowire master指定比特率,const-expr可以为 1 kb/s、10 kb/s或 20 kb/s; 对于 10 MHz的Neuron芯片输入时钟,缺省值为20 kb/s;
Clockedge(+|-):指定触发时钟信号极性, clockedge(+)为上升沿,clockedge(-)为下降沿;
io-object-name:由用户为该I/O对象指定的名字。
2)模拟量输出程序—电流表控制程序
“nviValue”=“电流表控制”;//组态变量 “电流表控制”值,赋给节点变量“nviValue”
IO_8 neurowire master select(IO_2)ioDA;//定义串行输出对象
IO_2 output bit ioDAselect=1; //确定片选信号int flag=0; //定义标志位 #progma ignore_notused ioDAselect
when(nviValue==1) //条件成立,完成一次数据发送
{unsigned long int t;
unsigned long int tt;
在食品领域,我国已出台一系列法律法规及相关标准,对生产、销售等多个环节进行着有力监管。而从安全保障的内在动力来看,要守住食品安全的大门,还需每一位食品行业从业者更加恭敬谨慎、心存敬畏。
if(flag==0) //输出电流值以1 mA递增变化
{t=t+4095;
if(t>62260) flag=1;
}
Else //输出电流值以1 mA递减变化
{t=t-4095;
if(t<=0) flag=0;
}
io_out(ioDA,&t,16); //数据输出,控制电流表
}
3)模拟量输入程序
在生产现场,液位、温度、压力等变送器输出的4~20 mA电流信号或0~5 V电压信号,经变送器连接到智能节点的模拟量输入通道上,经过节点内部运算放大器、12位串行模数转换器ADS7844和光电隔离后送入神经元芯片处理,再由LON网络以变量形式上传到组态监控平台,完成采集数据的实时检测[7]。程序如下:
when(reset) //复位后重新选择 ADS7844 地址
{adr[0]=0;
adr[1]=4;
adr[2]=1;
adr[3]=5;
}
stimer repeating t0=5; //定义秒定时器
IO_8 neurowire master select(IO_0) ioAD;//定义 I/O 对象
IO_0 output bit ioADselect=1; //确定片选信号
#progma ignore_notused ioADselect
when(timer_expires(t0)) //定时结束,开始数据采集
{int i;
int j;
unsigned int adc_info;
unsigned int adh,adl;
unsigned long int data;
for(i=0;i<4;i++) //循环采集 4 路数据
{adc_info=(adr[i]+8)*16+7; //定义 ADS7844 方式控制字
io_out(ioA2D,&adc_info,8); //发送控制字
for(j=0;j<100;j++) //采集延时
adc_info=0x00; //设置全零字节
io_out(ioA2D,&adc_info,8); //采集高 7 位数据
adh=adc_info;
for(j=0;j<100;j++) //采集延时
adc_info=0x00; //设置全零字节
io_out(ioA2D,&adc_info,8); //采集低 5 位数据
adl=adc_info;
data=(adh*32L+adl/8L)/1L; //整合数据送入上层监控平台
adIN[i]::nvoValue=data; //在功能模块上显示采样值
}
}
4)数字量输出程序
以温度控制为例,当加热器加热时,温度变送器输出4~20 mA电流值从智能节点的模拟量输入通道,经过转换,若该值超出设定报警值上限时,控制命令自动从智能节点的IO_1口送出,将继电器断开,加热器停止加热;当温度下降到报警值下限时,又使继电器吸合,加热器重新加热。程序如下:
“wendu”=“inIN[1]::nvoValue” //节点采集获得的温度值
IO_1 output bit jdq; //定义继电器控制端口为IO_1
int flag1=0; //定义标志位
when(inIN[1]::nvoValue>=200) //温度大于报警值上限时,加热器停止加热
{if(flag1==0)
{io_out(jdq,0); //控制继电器断开
flag1=0;
nvoValue=flag1; //在功能模块上显示当前结果
}
when(inIN[1]::nvoValue<=100) //温度小于报警值下限时,加热器重新加热
{io_out(jdq,1); //控制继电器吸合
flag1=1;
}
nvoValue=flag1; //在功能模块上显示继电器状态
}
现场总线技术(FCS,Fieldbus Control System)是一种全分布式的控制系统,可实现大型企业管控一体化网络系统的建立。文中研究结果证明,该系统完全可用于自来水厂的生产过程控制中,且优于当前所采用的基于PLC的集散式(DCS)控制模式。
[1]Echelon.LonMaker for Windows Release 3.1 User’s Guide[S].USA:Echelon Corporation,2002.
[2]Echelon.i.Lon100 Internet Server Programmer’s Reerence[S].USA:Echelon Corporation,2002.
[3]陈建铎.基于LonWorks/iLon100现场总线控制网络的结构与实现[J].探测与控制学报,2006(1):59-63.CHEN Jian-duo.Structure and implementation of fieldsus controlnetwork on LonWorks[J].Journal of Detection&Control,2006(1):59-63.
[4]吕增江.基于LonWoeks的智能节点的开发与设计[J].现代电子技术, 2005(10):20-22..LV Zeng-jiang.Development and design of smart node based on LonWorks bus[J].Modern Electronics Technique,2005(10):20-22.
[5]程启文,陈建铎,宋彩利.Lon网络中上位机与智能节点通信方式的研究[J].微电子学与计算机,2005(7):168-170.CHENG Qi-wen,CHEN Jian-duo,SONG Cai-li.Research and implementation of communication between supervisor and intelligent nodesin LonWoeksnetwork[J].Microelectronicsand Computer,2005(7):168-170.
[6]李言武,陈建铎.基于LonWorks的水厂自动化管控系统[J].现代电子技术,2006(8):95-97.LIYan-wu,CHEN Jian-duo.The waterworks’ automatic management and control system based on LonWorks[J].Modern Electronics Technique,2006(8):95-97.
[7]王东阳,晁晖,王辛,等.基于小波Mallat算法的次同步振荡监测[J].陕西电力,2011(8):37-41.WANG Dong-yang,CHAO Hui,WANG Xin,et al.Mallat algorithm of wavelet analysis based SSO monitoring[J].Shaanxi Electric Power,2011(8):37-41.