引言
宁波亚洲浆纸业有限公司采用了ABB的800xA系统作为DCS,在电气和纸机传动上面采用了西门子的设备,因此如何为两个不同制造商间设备通讯选择协议就成了关键。如果采用传统的4-20mA信号做为传输手段,那么在电缆和桥架上的费用就会变的相当可怕。采用成熟的现场总线通讯不仅可以避免这些麻烦。当然现场总线带来的便利不仅仅是这么一点。
Profibus通讯
现场总线是安装在生产过程区域的离散现场设备与过程控制系统之间的一种串行、数字式、多点通信的数据总线。
Profibus是PROcess FIeldBUS的缩写,广泛用于制造业自动化、流程工业自动化和楼宇、交通、电力等其他领域自动化。Profibus是一种开放的、与制造商无关、无知识产权保护的标准。由现场总线国际标准EN50170/IEC 61158定义的,而国内的Profibus规范的标准号为:GB/T 20540-2006。Profibus定义了主从站的概念:主站对整个总线拥有读写权,在获得总线读写令牌后不需要通过外部请求就可以直接发送数据;从站为离散的外围设备,典型的有I/O设备,阀门、马达以及变送器等,他们没有总线的
Profibus由三个兼容部分组成,即Profibus-DP(Decentralized Periphery)、Profibus-PA(Process Automation)、Profibus-FMS(Fieldbus Message Specification)
在SV3.1版本前的800XA已经支持DP和PA通讯,因此采用DP这种高速低成本通信,用于设备级控制系统与分散式I/O的通信,取代24V DC或4-20mA信号传输是非常合适的。
图1 ABB Industrial IT 所支持的Profibus设备
系统简介
ABB 800xA系统结构介绍
宁波亚洲浆纸业有限公司的DCS系统为ABB 800xA,采用了AC800M和支持Profibus-DP的CI854A作为系统硬件的核心结构,用CI840和S800 I/O构成完整的DCS硬件基础。在软件上使用4.1版本的800xA系统,采用C/S结构,分区域设置了3对冗余数据连接服务器和多台相互冗余的Aspect服务器。
图2 ABB 800xa DCS架构
图3 PROFIBUS Optional Board
西门子变频器Profibus-DP接口简介
制浆车间的马达绝大部分采用了西门子的变频器,一般以标准传动(SD)为主,采用了MM440。6KV以上中压,中等功率至大型功率采用了MD传动,6SE60,6SE70工程型变频器为主。由于西门子变频器和ABB的DCS系统间采用Profibus-dp通讯,因此所有接入DCS的变频器都购买了通讯接口。
在西门子Profibus通讯模块带的说明书里面很容易的就能找到它所支持的各种通讯方式,以及详细的字段说明,本文对次就不再进行讨论了。
通讯拓扑
由于外围设备的分散性,因此直连的Profibus通讯不可能完全覆盖整个网络,通过有效的OLM拓展是必须的。由于我们在AC800M端直接采用了支持DP网络的CI854A通讯卡,使得整个DCS网络建立在PROFIBUS-DP上,也就是图二里所描述的control network,正是因为采用了统一标准的网络,使得各种产品能够简单有效快速的融合在一起。因此不管马达变频器设备还是分布式I/O设备都可以有效的挂在整个通讯网络上。
图4 变频器和AC800M的通讯拓扑
图5 将标准的GSD文件转换成CBM的*.hwd文件
图6 组态后的CBM程序
互连实例
在实例中我们使用了AC800M的下位编程工具Control builder M Professional(以下简称CBM)编写了跟西门子MM440变频器的通讯程序。通过添加Hardware Definition File(ABB定义的HWD文件)文件来支持新的Profibus通讯设备,实际上该文件就是通过ABB GSDimportTool转换后的标准GSD文件。我们将西门子MM440标准的GSD文件,导入到GSDimportTool,然后选择Improt,导出为HWD文件。
例如图六中的Masterdriver我们就仅选择了PPO2:4PKW,6PZD的通讯方式。实际上整个项目中选择合适的通讯方式为最关键,不仅要了解通讯方式中的数据格式,还要了解数据所包涵的信息。(注:这些信息可以参考《MICROMASTER PROFIBUS Optional Board 操作说明》订购号6SE6400-5AK00-0BP0)
打开CBM,新建一个以AC800M P M864/TB830为控制器的程序,通过导入Micromaster以及Masterdriver的hwd文件。增加CI854 Profibus-DP V1的通讯卡。
设备添加完成后就可以对相应设备进行编址和命名,打开“4 PKW,6PZD (PPO2)”属性后看到如下对话框,如图八。通过图片,可以清楚的看到,本例通讯中并没有用到全部的通讯字段,而是根据需要对其进行了取舍。在回写slave设备的时候只设定控制字(STW)以及转速/频 率(HSW)
图7 对PPO2:4PKW.6PZD的通讯方式的数据类型进行定义
图8 报警信息
在库里建立定义一个新的功能块(FBD):MM440。接下来就是编写一定的程序对来自/写入西门子设备的数据进行分解。比如对input8 ZSW、PZD5状态字以及实际转速input9进行分解。通过模块将4个字节十进制的数据分解为16位二进制数据,使用标准的结构化文本语言进行编程,如下所示。
ZSW_status( C2 := 1,
(* ZSW_Status需定义为CONV_IB模块 *)
Set := 1, &nbs
L := 0,
Reset := 0,
I := Input_8,
(* 对input8 ZSW分解 *)
O[1] => DrvRdy,
(* Ready for ON, power supply switched on *)
O[2] => Diag.B12,
(* FC ready to run *)
O[3] => DrvRun,
(* Running information *)
O[4] => Diag.B13,
(* Summary fault *)
O[8] => Diag.B6,
(* Alarm is active *)
O[9] => Diag.B14,
(* Setpoint/act. val deviation OK *)
O[10] => Diag.B15,
(* Master control requested *)
O[11] => Diag.B16,
(* Min frequency reached *)
O[12] => Diag.B17,
(* Alarm : Motor at current limit *)
O[13] => Diag.B18,
(* Motor holding brake*)
O[14] => Diag.B1,
(* Motor overload*)
O[15] => Diag.B19,
(* Rotation direction *)
O[16] => Diag.B20 );
(* Converter overload *)
if Input_9 > 32768 then
MV := MaxSpeedValue
*( -(65535-Input_9) )/ 16384;
else
MV := MaxSpeedValue
* Input_9 / 16384;
end_if;
通过对输入信息的判读,转换成马达的当前信息:处于停止状态,还是运行状态;电流是多少,线圈温度是多少等等。这样通过数据总线获得了比传统硬连接更多的信号以及节省了更多的连接线,在此基础上获得更多的报警信息,对变频器的诊断也起到了一定的帮助;通过对这些数据的判读和编程,极大的方便了维护人员的作业。
结合具体的编程,比如操作员通过人机界面输入的启动/停止等指令,马达由DCS手/自动控制切换到现场点动控制模式等等,将这些信号或者指令一起写入程序中。最后将通过程序输出的多位二进制数据转换成4字节的十进制输出。
MainCmd (
C2 := 1,
Set := 1,
L := 0,
Reset := 0,
Sign := 0,
O => DrivePar.Output_14,
I[1] := SO1, (* On/Off *)
I[2] := 1,
(* OFF2 not used, constant “1” is transferred *)
I[3] := 1,
(* OFF3 not used, constant “1” is transferred *)
I[4] := Enable,
(* Enable operation, constant “1” is transferred *)
I[5] := 1,
(* Ramp function generation, constant “1” is transferred *)
I[6] := 1,
(* Enable RFG, constant “1” is transferred *)
I[7] := 1,
(* Enable setpoint,
I[8] := ResetFlt,
(* Acknowledge fault
I[9] := JogStart,
(* CW inching="jog" forward, "1"=jog *)
I[10] := JogRev, (* CW inching="jog" reverse, "1"=jog *)
I[11] := 1,
(* Setpoint valid, constant “1” is transferred *)
I[12] := RevSP,
I[13] := Not RevSP,
I[14] := 0,
(* Motor potentiometer UP, not used *)
I[15] := 0
(* Motor potentiometer DOWN, not used *)
);
同样,除了DCS端的通讯设置外还需要对变频器进行I/O设置。通过装有DriveMonitor软件的PG利用Mircomaster 4 PC-invertr通讯面板,将I/O设置好后下装到变频器上去。
结论
在后续的工作中笔者还添加了西门子的ET200M分布式I/O。在整个过程中,翻阅了大量的PDF资料以及在因特网上寻求帮助,解决了ABB AC800M设备与第三方Profibus-DP设备的通讯问题。一般的,在下位组态的时候只需要导入相应的GSD文件,相对来说比较简单;而绝大部分的工作是在第三方设备上展开的:了解产品,熟悉产品的通讯原理,熟悉数据格式等等。在本例中,ABB端的CBM组态相当的简单,90%的工作是放在MM440等西门子设备上的:通讯字分析, Profibus-DP通讯卡I/O设置,只有对这些设备的有很深的了解,才能在下位组态软件中编写出有效的通讯、控制程序。