【摘要】梅钢1780热轧L2过程控制计算机系统是由上海宝信软件股份有限公司自主集成开发的,L2过程控制计算机系统中的加热炉燃烧控制模型在计算板坯温度时需要使用到加热炉DCS系统中的一些数据,同时需要将模型计算的相关结果下发到L1加热炉DCS系统,这就需在L2过程控制计算机系统与L1加热炉DCS系统之间进行数据通讯。本文主要介绍了在上海宝信软件的iPlature平台下,利用其iMultiLink技术实现L2过程控制计算机系统与L1加热炉DCS系统通讯的方法。
【关键词】:加热炉 DCS iMultiLink OPC DCOM
0、引言
在上海梅山钢铁股份有限公司1780热轧厂的L1基础自动化过程控制系统中,加热炉使用的是Honeywell的DCS系统,该DCS系统与L2过程控制计算机系统之间不存在通讯方式(分属两个物理隔离的网段)。但是L2过程控制计算机系统中的加热炉燃烧控制模型要实现板坯的自动燃烧控制就必须和L1加热炉DCS系统进行通讯,完成相关数据的采集和下装工作。本文主要阐述了如何利用iPlature平台下的iMultiLink技术实现L2过程控制计算机系统和L1加热炉DCS系统通讯的方法。
1、iMultiLink 技术简介
1.1、iMultiLink是iPlature平台下负责过程控制系统和基础自动化控制系统之间进行通信的模块,其使用国际上通用的OPC(OLE for Process Control)通信方式,可以与基础自动化控制系统提供的OPC服务建立通信,并且提供一些相应的辅助通信功能。
1.2、运行环境
iMultiLink的运行环境基本与iPlature平台其他模块相似,需要注意的是与OPC标准建立的连接是建立在微软的OLE技术基础之上的,所以与OPC服务建立联系的iMultiLink的OPC客户端代理程序必须运行在支持COM/DCOM的Windows系列的平台上。
1.3、系统环境配置
iMultiLink的系统环境配置与iPlature基本一致,但是需要特别注意OPC通信时的权限问题,如果DCOM的访问权限配置不正确,一般情况下会导致与基础自动化控制系统的OPC服务不能正解建立连接,从而不能进行通信。
2、OPC客户端和服务器端相关配置
2.1、OPC客户端和服务器端网络示意图
为保证网络通讯安全,在梅钢1780热轧L2过程控制计算机系统和L1加热炉DCS系统之间新增了硬件防火墙,且通过固定端口与L1加热炉DCS系统进行连接,进一步提高了网络通讯的安全性,能更好地保证L2过程控制计算机系统的安全稳定运行,示意图如下图1所示。
图1
2.2、OPCServer注册信息导出、导入
在远程访问OPC服务端时,为了访问方便,不用去记住OPCServer的服务名称,所以需要把OPCServer服务名称的注册信息从OPCServer服务器上导出,再导入到本地机器上。一般OPCServer的名称可以询问安装OPCServer的人员,也可以通过注册表方式来查询。现以Honeywell OPCServer为例进行说明。
2.2.1、 从OPCServer服务器(L1加热炉DCS服务器)导出注册信息
1)、按照“开始”->“运行” 输入“regedit”的顺序,打开注册表。
2)、在注册表信息中查找OPCServer,如果不知道OPCServer的名称,可以在注册信息查找中输入“OPC”,查看选项选择“项(K)”,选择“全字匹配(W)”。点击查找,找到后看是否为需要的 OPCServer,否则继续,知道找到为止。找不到匹配的注册信息,说明该机器上没有安装相关的OPCServer服务,请确认是否正确安装。如果知道OPCServer名称(如 HWHsc.OPCServer),可以直接输入名称,查看选项选择“项(K)”,选择“全字匹配(W)”。点击查找。
3)、找到OPCServer注册信息后,选中“HWHsc.OPCServer”,鼠标右击->“导出”,在文件名窗口中输入导出的名称,如“HWHsc.OPCServer”,点击“保存”,导出注册信息结束。
2.2.2、将OPCServer注册信息导入客户端(L2加热炉服务器)
将从L1加热炉DCS服务器上导出的“HWHsc.OPCServer.reg”注册信息文件导入到L2加热炉服务器中(双击“HWHsc.OPCServer.reg”文件,在弹出的对话框中选中“是”,导入结束)。
2.3、DCOM相关配置
在OPC客户端(L2加热炉服务器)和远程服务器端(L1加热炉DCS服务器)完成相关DCOM配置,这里不再赘述DCOM的具体配置方法,不同的操作系统DCOM的配置略有不同,可查阅相关资料完成。特别地由于梅钢1780热轧L1加热炉DCS服务器采用一用一备方式,因此需要在两台DCS服务器上均完成DCOM的相关配置。DCOM的配置相对来说比较繁琐,而且容易出错,有时需要进行多次配置才能成功。
2.4、添加授信账户
在OPC客户端与OPC服务器连接时,需要由OPC服务器端的计算机对OPC客户端应
用程序的计算机进行身份验证,因此,在客户端登录的用户必须是服务器中的合法用户。梅钢1780热轧L2过程控制计算机系统对安全有较高的要求,这里采用添加授信账户的方式来进行身份验证,授信账户应满足以下规则。
.png)
举例说明,在L2加热炉服务器(FUC)和L1加热炉DCS服务器(DcsServer)上按照如下规则建立分别建立账户:
.png)
2.5、完成上述工作后,表示L2加热炉服务器与L1加热炉DCS服务器通讯连接已经建立,理论上可以进行数据通讯。为验证通讯是否正常,可以利用第三方工具进行测试,这里不再举例,需要指出的是,如果利用第三方工具验证通讯不成功,则需要按照之前的步骤进行检查或重新配置,直到可以正常通讯。
3、iMultiLink相关配置
3.1、iMultiLink 冗余配置
iMultiLink支持冗余方式配置,该配置方式比一般配置要复杂。冗余配置是对相同的OPCServer进行配置,否则是不能进行冗余配置的。由于梅钢1780热轧L1加热炉DCS服务器采用一用一备的方式,且两台服务器的OPCServer是相同的,为了保证L1加热炉DCS服务器在主备切换过程中与L2加热炉服务器保持连接,需要用到iMultiLink的冗余配置。
默认情况下iPlature/bin/目录下,只有一个iMultiLink进程iMLAgent.exe存在,在进行冗余配置时,需要根据具体配置在iPlature/bin/目录下新增进程,即把iPlature/bin/目录下的iMLAgent.exe复制后改名为iMLAgent1.exe和iMLAgent2.exe。
默认情况下iPlature/conf/目录下,agentmaster.config只有一份配置文件存在,在进行冗余配置时,需要根据具体配置在iPlature/conf/目录下新增文件,即把iPlature/conf/目录下的agentmaster.config文件复制后改名为agentmaster1.config和agentmaster2.con
fig。
3.1.1、 修改iPlature\conf\admin.xml中iMultiLink部分配置信息,如下图2所示:
.png)
图2
3.1.2、在 iPlature\conf\目录下添加配置文件agentmaster1.config和agentmaster2
.config,具体如下图3所示。
.png)
图3
3.1.3、修改 iPlature\conf\imultilink.config 配置文件,如下图4所示:
.png)
图4
3.1.4、数据库内容修改
冗余配置时需要修改下列数据,其他按照正常的配置。
.png)
3.2、数据库配置表
iMultiLink安装完成后,会在Oracle数据库中自动生成13张表,在梅钢1780热轧L2过程控制计算机系统中主要对以下6张表进行相关配置(其它表全部使用安装后的默认状态),来完成对加热炉DCS数据的采集和下装,具体如下:
3.2.1、表t_bm_opc_server,该表定义了 iMultiLink 需要建立连接的 OPC Server,其表结构如下。
表中数据项举例:
.png)
3.2.2、表t_bm_opc_access,该表定义了OPC访问组,主要用于数据的读写。其表结构如下。
.png)
。其表结构如下。
3.2.4、表 t_bm_opc_tag_access,该表定义了访问组内的 OPC 点名。其表结构如下。
.png)
表中数据项举例:
.png)
3.2.5、表 t_bm_tag_index,该表保存了L2应用系统中定义的tag点,包括所有的基础数据和导出数据。任何未在该表中定义的tag点都将被Tag系统忽略。其表结构如下。
.png)
表中数据项举例:
3.2.6、表 t_bm_tag_relation,该表定义了tag点和OPC Server中定义的TagItem的对应关系。其表结构如下。
.png)
表中数据项举例:
3.3、步骤5.2所涉及的6张表,其关系如下图5所示。
图5
.png)
3.4、添加新的DCS数据点的方法
由于在实际生产过程中,时常需要从DCS系统中采集新的数据,这时就要在系统中新增需要采集的DCS点,如果加热炉DCS没有新增服务器或没有新增的OPC访问组时,T_BM_OPC_SERVER和T_BM_OPC_ACCESS表中是不需要更改的,只需要在剩余的4张表中新增相关记录即可。举例说明,如L2系统现需要获取1#加热炉的残氧量实时数据(DCS系统中对应的DCS点名称为CM_lanalyse.DATAACQ.PV),则在数库中执行如下操作即可。
1)、T_BM_OPC_TAG
insert into T_BM_OPC_TAG(OPCTAGID,OPCTAGNAME,TAGTYPEID,OPCSERVERID,COEFFICIENT)
values(1552,‘CM_lanalyse.DATAACQ.PV’,0,1,null)
2)、T_BM_OPC_TAG_ACCESS
insert into T_BM_OPC_TAG_ACCESS(ACCESSID,OPCTAGID) values(12,1552)
3)、T_BM_TAG_INDEX
insert into T_BM_TAG_INDEX(TAGNAME,TAGTYPE,SOURCE,UNIT,DESCRIPTION)
values(‘1_oxygen’,2,’L1OPC’,null,null)
4)、T_BM_TAG_RELATION
insert into T_BM_TAG_RELATION(OPCTAGID,TAGNAME,REMARK)
values(1552,‘1_oxygen’,null)
以上执行完成后,则新增的CM_lanalyse.DATAACQ.PV点在L2系统中可以解析为:CM_lanalyse.DATAACQ.PV点的ID为1552,其来源于OPCSERVERID为1的OPCServer服务,OPC访问组号为12,L2系统中与其对应的点名为1_oxygen。
4、 编程实现数据的采集与下装
4.1 、系统环境
Windows XP 或Windows 7、Oracle 10.2。
4.2、平台环境
iPlature 1.1、iMultiLink V1.1。
4.3、编程语言
Visual Studio 2008 C++ .net。
4.4、具体实现程序
1)、获取iMultiLink代理,代码如下:
_iMultiLinkPrx = iMultiLink::MultiLinkAPIPrx::checkedCast(communicator->propertyToProxy
("iMultiLink.Proxy"));
2)、读取DCS数据
::iPlature::TAGVALUEMAP tagPairsRead;
::iPlature::TAGVALUEMAP tagPairsWrite;
::iPlature::TAGVALUEMAP::iterator iterTagValue;
tagPairsRead.clear();
//读取访问组号为accessread_11的所有DCS点
_iMultiLinkPrx->ReadUpByBatch("accessread_11", 1, tagPairsRead);
for (int i = 0; i < fdP->_data.thmcpl.size(); i++)
{ indexStr = boost::lexical_cast<string>(i);
//读取组内具体的DCS点
iterTagValue = tagPairsRead.find("1"+ "_Cplsel_" + indexStr);
if (iterTagValue != tagPairsRead.end() && (*iterTagValue).second != "?")
//将DCS点的具体值存储到固定结构中
fdP->_data.thmcpl[i].tempAct = boost::lexical_cast<float>((*iterTagValue).second);
}
3)、写入DCS数据
::iPlature::TAGVALUEMAP tagPairsRead;
::iPlature::TAGVALUEMAP tagPairsWrite;
::iPlature::TAGVALUEMAP::iterator iterTagValue;
tagPairsWrite.clear();
for (int i = 0; i < fdP->_data.tempSV.size(); i++)
{ //确定要写入DCS点的Key值
string id = 1+ "_tempSV_" + boost::lexical_cast<string>(i);
//将所有要写入的值存储在固定结构中
tagPairsWrite.insert(::iPlature::TAGVALUEMAP::value_type(id, boost::lexical_cast
<string>(fdP->_data.tempSV[i] + fdP->_data.tempSVHMI[i])));
}
//根据写入组号将固定结构中的数据写入DCS
_iMultiLinkPrx->WriteDownByBatch("accesswrite_0", tagPairsWrite, 1);
5、结束语
本文通过采用上海宝信软件iPlature平台下的iMultiLink技术,有效地实现了梅钢1780热轧L2过程控制计算机系统与L1加热炉DCS系统之间的数据通信,使原本互相不存在联系的系统建立了数据通信,解决了不同系统之间数据通信困难的问题。同时又根据梅钢的实际情况,在保证安全通讯的前提下满足了生产的需要,取得了良好的效果。而且在这种通讯方式下,后续的维护工作亦相对简单。
参考文献
[1]上海宝信软件股份有限公司自动化技术研究所.基础自动化通讯中间件iMultiLink V1.1用户手册.2010.
作者简介:周心富,出生年月:198103,性别:男,民族:汉,籍贯:安徽省寿县,最高学历:本科,当前职称:工程师,研究方向:计算机应用.工作单位:上海梅山钢铁股份有限公司.