黄军政,姜绍阳,孙照江,张彦军
(新疆独山子石化信息网络公司 乙烯仪表车间,新疆维吾尔自治区 克拉玛依 833600)
在炼油、化工生产中,经常需要将仪表、电气、工艺的各种信号通过Modbus 通讯在以DCS为主的工艺操作站、仪表专业的DCS工程师站、SIS工程师站、PLC等监测控制、联锁保护设备、电气设备、第三方厂家等不同专业、不同系统之间传递。在这些信号中,仪表信号主要分为模拟信号和数字信号。这样一方面可以实现各种信号在不同专业系统中的数据共享,使各个不同专业人员可以更加全面、及时、有效、方便地分析各自专业的各种信息,实现综合分析,并尽快甚至提前预见故障的发生,更好地为装置安全生产服务。另一方面,也因为使用方便,可以为企业降低各方面成本,提升企业在市场中的综合竞争力。
虽然这种数据通信在当今化工生产中已经被普遍采用并标准化,但是仍然需要技术人员根据生产实践的具体情况,机动灵活地采取有效措施解决问题。
独山子石化研究院溶聚丁苯橡胶中试装置是国内首套丁苯橡胶中试装置,可为工业试产提供可靠的工艺方案。该装置在运行一段时间后,由于工艺生产的需要,新增加了一台变频器用于实现现场泵的变频运行。设计上,这台变频器接收来自CENTUM VP系统硬线传输的4mA~20mA信号,作为变频器的频率设定值。变频器内部的PID调节器根据设定值进行运算,输出变频信号到现场泵,使该泵按着工艺要求的速度运转。现场泵运行情况的反馈信号则是通过Modbus通讯由第三方厂家传递返回DCS,保证工艺操作人员能够在DCS画面上查询并观察变频器的运行状态和电流信号。
要实现以上功能,需要仪表人员在CENTUM VP系统中修改Modbus组态。具体来讲就是根据新增通讯信号的Modbus地址完成信号的读取、显示。为了更好地理解仪表技术人员的工作思路,首先介绍一下Modbus协议。
Modbus是工业标准的主/从通信协议,广泛应用于能源管理、传送线控制、管道监测和其他工业过程。Modbus的最初定义是:MODICON的各种控制器所使用的公共语言称为Modbus协议[1]。该协议定义了控制器能识别和使用的信息结构。因为免费,现在实际上已经成为各种工业通信中的行业标准。通信接口采用RS232,最大传输距离为15m,仅用于点对点通信;采用RS422,最大传输距离1220m,但仅用于点对点通信;采用RS485,最大传输距离1220m,可用于点对点或多点串行通信。RS485可用2线或4线电缆,均采用双绞线,以提高抗干扰能力。在Modbus 通信中,一个主站最多可以有32个从站。
Modbus有两种通信模式:ASCII模式和RTU模式。
当控制器以ASCII模式在Modbus总线上进行通信时,是将原始数据信息中的每8bit转换为两个以16进制表示的ASCII字符传输。这种模式效率较低,主要用于只能传输7bit的老式设备。
当控制器以RTU模式在Modbus总线上进行通信时,数据信息是以原始的二进制传输的,效率高。因此,本厂DCS和SIS的Modbus通信都采用RTU模式。
1)ALR121卡件与外部设备接线
在CENTUM VP和第三方厂家的通信中,CENTUM VP为主站,第三方厂家为从站(在本文中第三方厂家为南瑞继保)。CENTUM VP的ALR121是该系统的Modbus专用模块,负责接收从第三方厂家,具体就是南瑞继保的光电转换器NR0203B通过RS485串口通讯接收传输的Modbus信号。CENTUM VP的ALR121和南瑞继保的NR0203B的Modbus连接图如图1。
图1 ALR121 接线图Fig.1 Wiring diagram of ALR121
2)ALR121卡件软件组态
在系统组态画面SYSTEM VIEW中,选中与第三方厂家设备连接的ALR121卡。右键单击它,出现属性设置对话框。可以在属性页中定义一些参数,如波特率、偶校验、响应时间等。属性对话框中Card Common属性页的Connection Device一项,一定要选Modbus。
在定义完ALR121通信卡属性后,最重要的一项工作是在ALR121中定义通信点的地址。在SYSTEM VIEW中对应的FCS中找到要组态的ALR121,右击该图标选择edit detail,出现communication building(图2),其中关键参数是:
图2 ALR121字地址分配图Fig.2 Distribution diagram of ALR121 word address
SIZE:4
PORT:1
STATION:1
DEVICE&ADDRESS:A31030
DATA TYPE:input(discrete)
DEVICE&ADDRESS的地址A31030是第三方厂家提供的Modbus通信地址的起始地址,以后的排列顺序必须与第三方厂家提供的地址表相一致。“Device & Address”在Modbus PLC的地址结构如下:
< function code> +
在本例中“A”为CENTUM VP功能码[2],表示读或写第三方厂家系统中打包好的数据,一次读写16bits。第一个数字“3”表示CENTUM VP要读的信息是存在第三方厂家系统中的保持寄存器[2]中的内容,“1030”表示第三方厂家系统中保持寄存器的初始地址。
对于数字量通信,在定义完硬件地址A31030等参数后,应记住%WW0089地址,然后在所在FCS的SWITCH表格中定义通信点变量的详细地址。注意,由于1Word=2Byte=16Bit,因而%WW0089对应SWITCH表格中的%WB008901~%WB008916,可以定义16个数字量。按照第三方厂家提供的通信变量顺序将变量分配给%WB008901~%WB008916。其中,SWITCH表格中的Tag Name是在CENTUM VP系统中调用的变量名称。
模拟量的Modbus通信可以采用两种方式。
1)以无符号16位整型数的形式传输
对于由第三方厂家通信到CS3000的模拟量信号,第三方厂家一般将一个模拟量转换成一个无符号16位整型数,取值范围是819~4095,并赋予别名。每个别名对应一个Modbus地址。CENTUM VP根据Modbus地址收到该信号后,将此无符号16位整型数放在ALR 121的一个%WWxxxx中,并在data type中选16-bit unsigned(16位无符号整型数)。然后在CONTROL DRAWING 中组态时采用PVI显示模块,该模块输入地址为%WWxxxx,从而将信号值传到PVI中处理。在PVI显示模块EDIT DETAIL中的INPUT菜单下填入利用公式(1)算出的GAIN和BIAS的值。将无符号16位整型数转换成CS3000所需要的工程值。原理图见图4。
式(1)中:Y为HIS中显示的PV;X为通过Modbus传到DCS的数据,即图4中(Modbus Max-Modbus Min),这里取值范围是0~32767;GAIN为“斜率”,即图4中(Maxspan-Minspan)/(Modbus Max-Modbus Min);BIAS为偏差值,即图4中Minspan。
2)以浮点数的形式传输
第三方厂家也可以将一个模拟量直接转换成用浮点数表示的工程量,并赋予别名,每个别名对应一个Modbus地址。CENTUM VP系统根据Modbus地址收到该信号后,将此浮点数放在ALR 121的一个%WWxxxx中,并在data type中选32-bit floating(32位浮点数)。然后在CONTROL DRAWING 中组态时采用PVI显示模块,该模块输入地址为%WWxxxx,从而将信号值传到PVI中。此时,无需再利用公式就可以在DCS中显示该值的工程量。
为了完成新增变频泵运行状态信号和变频电流信号的Modbus通讯,仪表人员首先检查了装置建设期间DCS最初的Modbus组态表,发现该装置原先通过Modbus通讯传递至DCS的信号有91个模拟量和91个数字量。
按着前述3.2中关于功能码的介绍可知:在装置改造之前,CENTUM VP通过Modbus通讯从第三方厂家的第1~第91个保持寄存器[3]中读取了91个模拟量。新增变频器之后,第三方厂家提供资料中给出的变量列表(此变量列表并不是Modbus通讯点表,因此并没有仪表需要的Modbus通讯地址)中将模拟量和数字量都增加到了98个,并且明确表示Z-P-402变频器中标志泵转速的电流百分比信号是第98个(图3)。为了寻找到仪表组态所需要的Modbus地址,谨慎起见仪表人员仔细检查了厂家最新表格中前91个模拟量和数字量与DCS原先Modbus组态表中的量,发现都能对应上,说明前91个通讯变量的Modbus地址和相关组态没有变化。
图3 第三方厂家通讯Fig.3 Third party communication list
进一步分析,仪表人员发现原先DCS中的91个模拟量的Modbus地址是从30001~30091,对应的DCS内存地址为%WW0001~%WW0091。而变频器电流信号在厂家新表格中是第98个,因此推断电流百分比信号的Modbus地址是30098。
基于以上思考,仪表人员将原先DCS中的Modbus组态表中的SIZE由91变为98,使DCS每次可读取98个内存地址中的Modbus信号。对应的DCS内存地址[3]为%WW0001~%WW0098,如果402泵电流信号是通过Modbus地址30098通讯过来,就会存在内存%WW0098中(图4)。然后将新增泵电流信号组态为读取DCS内存地址%WW0098中的信息,从而被DCS读取。组态下装后果然顺利读取了电流信号。
图4 DCS中Modbus组态表图Fig.4 Modbus configuration table in DCS
如该电流信号在DCS中需要显示时,利用CENTUM VP系统的FUCTION BLOCK建立PVI模块组态下装即可。
根据第三方厂家说明,数字量变频器运行信号在厂家给出的数字量表格(同样不是Modbus点表,没有Modbus通讯地址)中是第97个(表格和模拟量Modbus通讯表类似,以下不再给出),而原先DCS中91个数字量的Modbus地址是从10001~10091,因此仪表人员推断新增变频器运行信号有可能在Modbus地址为10097的word中。按这个思路组态下装后,也顺利读取到了变频器运行信号。
在这个寻找Modbus地址的过程中,首先需要和厂家反复沟通、确认。另一方面是建设期间DCS厂家做Modbus组态时,手中是有Modbus通讯点表的,表中列出了需要读取的每个量的Modbus地址。按着前述3.3中介绍的数字量的Modbus通讯组态方法,仪表人员猜测的这个Modbus地址首先是对应DCS中的某个%WWxxxx,在本文中Modbus地址10097就对应着%WW0123内存(类似模拟量)。而每个%WWxxxx中可以装16个数字量,它们对应在SITCH表格[3]中的%WBxxxx01~%WBxxxx16内存地址中。因此,仪表人员还需确认这个数字量最终对应哪一个%WBxxxxzz(zz是1到16的整数)内存地址。在本文中402泵运行信号经过测试,确认就存在%WB012301内存中(图5),DCS下装后成功读取到泵运行信号。
图5 DCS中Modbus组态表图Fig.5 Modbus configuration table in DCS
在DCS画面组态中使用%WB012301对应的仪表位号XL-BZP402进行画面链接,即可实现画面显示。
某公司DCS采用的是CENTUM VP系统,该系统支持Modbus 通信,因此Modbus通信应用非常普遍,发挥着十分重要的作用。本文对DCS的Modbus通信进行了比较全面的阐述,并且分享了在实际工作中的经验,希望对大家有一定的启发作用。