黄军政 杨权文 王晓春 马润波
(新疆独山子石化公司乙烯厂仪表车间,新疆 克拉玛依 833600)
在化工生产中,常常需要将来自现场的仪表信号通过Modbus通信在监测控制、联锁保护等系统之间传递,以实现仪表信号在不同控制系统中的数据共享。这种数据通信在当今化工生产中已经被普遍采用并标准化,但是仍然需要用户根据具体情况灵活应用。本文对CS3000系统和Tricon SIS系统之间的Modbus通信进行了探讨。
Modbus的最初定义是:Modicon的各种控制器所使用的公共语言称为Modbus协议[1]。该协议定义了控制器能识别和使用的信息结构。通信分主从站,一个主站最多可以有32个从站。当通信接口采用RS-232时,最大传输距离为15 m,仅用于点对点通信;当采用RS-422时,最大传输距离为1 220 m,但仅用于点对点通信;当采用RS-485时,最大传输距离为1 220 m,可用于点对点或多点串行通信,RS-485可用2线或4线电缆,均采用双绞线,以提高抗干扰能力。
Modbus有两种通信模式:ASCII模式和远程终端装置(remote terminal unit,RTU)模式。
当控制器以ASCII模式在Modbus总线上进行通信时,是将原始数据信息中的每8 bit数据信息转换为2个以16进制表示的ASCII字符传输。这种模式效率较低,只能传输7 bit的老式设备。
当控制器以RTU模式在Modbus总线上进行通信时,数据信息是以原始的二进制传输的,效率高。因此本设计的集散控制系统(distributed control system,DCS)和安全仪表系统(safety instrument system,SIS)的Modbus通信都采用RTU模式。
当DCS与其他控制系统采用RS-485串口进行Modbus通信时,必须采用RTU模式,以消息帧的形式传输。RTU模式的Modbus消息结构图如图1所示。
图1 Modbus消息结构图Fig.1 Structure of Modbus message
消息帧正文包括:地址域、功能码、数据域和校验域。每个消息帧的开始和结尾是3.5个字符传输时间的静默[2]。
Modbus网络上的每个设备都有唯一的地址码,范围为1~247。当一个主设备在Modbus网络上发出一个请求时,该网络上的所有从设备将解码该消息帧中的设备地址域,以决定它是否是发给自己的。只有地址码与消息帧地址域中地址码相同的设备才会做出响应,其他设备将丢弃这个请求。
消息中的功能代码表示被寻址的从设备应执行的动作类型。Modbus功能码简要说明如表1所示。
表1 Modbus功能码Tab.1 Functional code of Modbus
数据域中的内容就是功能码所表示的操作功能的操作对象。在查询消息中,数据域由数据起始地址和数据长度组成,它们分别占用2 B。在响应消息中,数据域包括数据长度(2 B)和数据内容。
校验域用于检查传输过程中的错误,保证设备不去响应错误消息,提高系统的安全性。校验采用循环冗余校验CRC16。
在CS3000和Tricon的通信中,CS3000为主站,Triconex为从站。CS3000的 ALR121是该系统的Modbus专用模块,它将传输信息按Modbus协议进行打包处理,然后通过RS-485串口通信将信息传输给Triconex的 TCM通信模块。CS3000和 Tricon的Modbus连接图如图2所示。
图2 CS3000与Tricon的Modbus连接图Fig.2 Modbus connections between CS3000 and Tricon
Tricon是带3个主处理器的三重冗余系统,TCM与DCS通信通过Modbus总线,而与3个主处理器的通信是通过Tricon内部的通信总线。
3.1.1 CS3000 系统 ALR121 硬件组态
在系统组态画面System View中,选中与PLC连接的ALR121卡。右键单击,在跳出的属性设置对话框中进行参数定义,如波特率、偶校验、响应时间等。属性对话框中Card Common属性页的Connnection Device一项一定要选Modbus。
3.1.2 Tricon系统TCM硬件通信组态
TCM硬件组态分为网络接口组态、串口组态、点对点接口组态、Modbus TCP接口组态、路由组态等。
Tricon TCM硬件通信组态步骤如下。
①在Tristation中,打开要组态的项目,然后展开控制树,双击组态,展开硬件配置。
②双击安装有TCM的槽,在出现的对话框中点击Setup。
③在出现的TCM设置对话框中选择Modbus TCP,打开下一级对话框,完成 Modbus通信组态[3]。
3.2.1 ALR121 通信卡的 Modbus软件组态
在定义完ALR121通信卡属性后,最重要的一项工作就是在 ALR121中定义通信点的地址[4]。在System View中对应的Flash通信服务器(flash communication server,FCS)中找到要组态的 ALR121,右击该图标选择 Edit Detail,出现 communication building,其中关键参数如下。
Size:4;
Port:1;
Station:1;
Device&Address:A31030;
Ddata Type:input(discrete)。
其中,Device&Address的地址 A31030是SIS编程者提供的Modbus通信地址的起始地址,以后的排列顺序必须与 SIS提供的地址表相一致。“Device&Address”在 Modbus PLC的地址结构如下:
在本例中(Device&Address:A31030):A为CS3000功能码,表示读或写Tricon中打包好的数据,一次读写16 bits;“3”表示CS3000要读的信息存储在Tricon的输入寄存器内;“1030”表示Tricon中输入寄存器的初始地址。
ALR121字地址分配图如图3所示。
图3 ALR121字地址分配图Fig.3 Distribution map of ALR121 word address
3.2.2 数字量的Modbus通信组态
对于数字量通信,在定义完硬件地址A31030等参数后,应记住%WW0089地址,然后在所在FCS的Switch表格中定义通信点变量详细地址。由于1字符=2 B=16 bit,因此%WW0089对应Switch表格中的%WB008901~%WB008916,可以定义16个数字量。按照SIS程序提供的通信变量顺序,将变量分配给%WB008901~%WB008916。其中Switch表格中的Tag Name是在CS3000系统中调用的变量名称。
3.2.3 模拟量的Modbus通信组态
模拟量的Modbus通信可以采用以无符号16位整型数的形式传输和以浮点数的形式传输。
3.2.3.1 以无符号16位整型数的形式传输
对于由Tricon通信到 CS3000的模拟量信号,Tricon将一个模拟量转换成一个无符号16位整型数,取值范围为819~4 095,并赋予别名,每个别名对应一个Modbus地址。CS3000根据Modbus地址收到该信号后,将此无符号16位整型数放在ALR121的一个%WWxxxx中,并在 Data Type中选16-bit unsigned(16位无符号整型数);然后在Control Drawing中组态时采用PVI显示模块。该模块输入地址为%WWxxxx,从而将信号值传到 PVI中处理。在 PVI显示模块 Edit Detail中的 Input菜单下填入利用式(1)计算出的GAIN和BIAS值,将无符号16位整型数转换成CS3000所需要的工程值。Tricon整型数与实型数对应图如图4所示。
图4 Tricon整型数与实型数对应图Fig.4 Corresponding graph of Tricon integer and real number
式中:Y为HIS中显示的PV,即图4中的实数值;X为通过Modbus传到DCS的数据(无符号16 bit整型数),即图4中(Modbus最大值-Modbus最小值)之间的值,这里取值范围为0~32 767;GAIN为“斜率”,即图4中(量程上限 -量限下限)/(Modbus最大值 -Modbus最小值);BIAS为偏差值,即图4中量程下限。
3.2.3.2 以浮点数的形式传输
以浮点数的形式传输是指Tricon将一个模拟量直接转换成用浮点数表示的工程量,并赋予别名,每个别名对应一个Modbus地址。CS3000根据Modbus地址收到该信号后,将此浮点数放在ALR121的一个%WWxxxx中,并在Data Type中选32-bit floating(32位浮点数)。然后在Control Drawing中组态时采用PVI显示模块,模块输入地址为%WWxxxx,从而将信号值传至PVI中。此时无需再利用式(1)就可以在DCS中显示该值的工程量。
3.2.4 Tricon 别名的使用规则
Tricon系统对每一个变量分配一个别名,每个别名对应一个唯一的Modbus地址,这样Modbus主机或其他外部的计算机可以通过Modbus地址来访问Tricon控制器内的数据。
Tricon系统使用三种类型的变量和别名,即输入/输出变量、内存变量、系统变量。
①输入/输出别名是在用户安装或拆下输入/输出卡件时由Tricon自动分配的。
②内存别名必须由编程者根据协议、规则制定分配。
③系统别名由Tricon预定义,而且不能改变。
别名由五个数字组成,表2给出了Modbus数据类型表示方法。
表2 别名与Modbus数据类型对照表Tab.2 Contrast between alias and Modbus data type
值得注意的是,数字2~数字5中的数据须经过转换才是真正的Modbus地址。
3.2.5 Tricon 中的 Modbus程序
Tricon支持布尔型数、16位整型数、32位整型数和32位实型数等。假如Tricon有16个数字量信号需要传输到DCS,则系统将这16个数字量信号打包装入一个16位输入寄存器中,并且给它分配Modbus地址(从31030开始)。DCS通过这个地址可以读到相应信息。然后CS3000使用Communication I/O Builder将信息包中信息分配给DCS系统中的Switch开关量,同时给这些开关量指定tag name,以备CS3000调用。若Tricon通过Modbus通信接收到来自CS3000的信息,则使用拆包程序,Tricon可以使用这些拆分好的开关量信息参与逻辑运算。
本设计中DCS采用的是CS3000系统,SIS采用Tricon三重冗余系统,压缩机状态检测采用本特利3500系统,压缩机速度控制系统采用Woodward505。以上各系统均可以实现Modbus通信,因此,Modbus通信在实际应用中非常普遍,发挥着十分重要的作用。本文仅对DCS和SIS之间的Modbus通信进行了比较全面的阐述,希望对大家有一定的启发作用。
[1]张喆,姜薇.TriStation 1131配置及应用[M].上海:上海福克斯波罗有限公司,2006.
[2]刘文权,刘玲,张文.如何建立CS3000与子系统的MODBUS通讯[J].化工自动化及仪表,2010,37(10):118 -120.
[3]赵恒.内嵌Modbus协议的通用监控模块[J].自动化仪表,2010,31(12):12 -15.
[4]王翔,丁伟.Modbus通信协议在CS3000中的应用[J].石油化工自动化,2011(1):57-60.