陈汉洌先生,广东省茂名市第一污水处理厂工程师。
关键词:NetDDE 以太网 连接
茂名市自来水公司河东水厂已建成两期,工艺和设备都由国外引进,控制系统均采用PLC和PC组成的计算机分散控制系统,自动化程度较高。由于采用的通信协议不同,所以两套系统没能很好地整合,给使用带来一定困难。因此,我们决定利用以太网和监控组态软件InTouch来实现连接,使其成为一套完整系统。
一 系统组成及存在问题
第一期采用THYSSEN PLC,网络拓扑结构为环形,通信协议采用T800;第二期采用Telemecanique PLC,网络拓扑结构为总线型,通信协议是FIPWAY。系统结构图见图1。
两期监控组态软件采用Wonderware公司不同版本的inTouch组态软件包,主要有两部分功能程序:开发环境windowmaker和运行环境windowviewer。另外还有很多实用工具,NetDDE(Dynamic Data Exchange, 网络动态数据交换)就是其中之一,它是microsoft windows的DDE的扩展,不同之处是它用于网络而后者用于单机。
由于两套系统之间没有通信,数据交换只能靠手工完成,既不准确,又不及时。在操作中,操作人员必须不停地奔波于两者之间,生产报表的编制要人工合成,不够方便,不能实现水厂的全自动控制。
二 解决方案
考虑到两期系统所采用的PLC、网络拓扑结构和通信协议不同,若直接从PLC方面着手,技术难度高,工作量多,投资大,耗时长。经过多次尝试和比较,最后决定直接从InTouch着手,利用其基于以太网和TCP/IP协议的网络功能来实现两者之间的连接。此法投资较少,对操作人员要求不高。连接后,可在以太网任何一台计算机分享数据,并可对全厂生产进行监控,两期系统的生产数据可实现实时通信。利用InTouch NetDDE,使两套独立的系统(甚至多套系统)通过以太网有机连接起来,扩展灵活方便,空间制约少,InTouch在这方面的功能完善,是给排水应用领域不错的选择。实现过程如下。
1. 组建以太网
首先,组建一个以太网,用交换机作为集线设备,将两期的监控PC分别作为其工作站,命名为PC1和PC2,系统结构见图2。在PC1和PC2上分别安装TCP/IP通信协议、NetDDE程序及完成其他一些辅助工作。
2. inTouch设置
(1)整合两期应用程序数据
运行inTouch的开发环境windowmaker,利用导入功能将两期程序数据合二为一,使之成为一个完整应用程序。具体做法是:
将两期应用程序数据分别安装于两个目录:maoming和maoming2,运行windowmaker,以maoming为当前工作目录,使用“导入”菜单,将maoming2目录中的程序数据导入maoming中,数据导入后略作修改即可使用,其中主要工作是使被导入的参数名可用,修改过程简单,在此不赘述。
至此,两期系统的应用程序数据已经整合为一套系统。
将整合后的应用程序数据安装于PC1和PC2上,用以取代原来的程序数据,这样,这两台计算机均可对生产过程进行监控,然而,为免控制冲突,根据实际情况,我们为各台PC设置了不同的操作权限,例如给PC1设置了监控权,而仅赋予PC2监视权,这样,全部监控工作只在PC1即可顺利完成,又不至于造成控制混乱。
(2)设置DDE Access
在单机上,程序间进行实时动态数据交换可采用DDE,而在以太网上,则可采用NetDDE实现,NetDDE是INTOUCH软件包中比较实用的工具程序,运用它,可以很方便地在以太网上实现程序间的实时动态数据交换。利用NetDDE进行通信,必须明确通信双方的名称和来源,因为是在PC1和PC2中的windowviewer之间进行数据通信,所以通信的名称就是INTOUCH“tagname dictionary”中的参数,只要将两计算机上的这些名称进行对应通信即可,而数据来源则来自对方计算机上的windowviewer,这个程序的进程名为viewer,所以读取数据时,只要指出是哪台PC上的viewer中的名字(tagname)即可。因此,须对inTouch的DDE Access进行设置。设置方法是在“Modify DDE Access Name”对话框中的“DDE Application/Server Name”栏增加“\\PC2\viewer”(在PC1上)和“\\PC1\viewer”(在PC2上)。除此之外,还要为导入的参数设定DDE数据源。
(3)运行系统
运行InTouch windowviewer前先运行NetDDE以进行通信初始化,然后计算机才能与网络上的其他计算机进行实时通信。
三 系统功能
原来各自独立的两套系统通过InTouch实现了在线有机连接,可在以太网TCP/IP协议的统一通信标准和NetDDE下实现在线数据交换和相互操作。例如第一期矾耗参数名为ALU0101,第二期矾耗参数名为PLC1_ALU,总矾耗参数名为TOTAL_ALU,则可直接用公式:
TOTAL_ALU=ALU0101+PLC1_ALU
方便求出总矾耗,不必再用人工离线计算。
又如,为保证清水池有足够多的水,两期滤池不能同时反冲洗,所以冲洗前必须先检测其他滤池是否在进行反冲洗。
现在只要设置两个状态参数BW1和BW2来判别滤池的反冲洗状态,(BW1=1时表示第一期滤池正在反冲洗,BW1=0时表示没有反冲洗;而BW2表示第二期的反冲洗状态,设置同前),加入程序可实现两期滤池反冲洗的互相协调:
If BW1=1 then
BW2=0
Else BW2=1
Endif
If BW2=1 then
BW1=0
Else BW1=1
Endif
而这些协调工作在系统更改前也须人工干预。