网站标志
导航菜单
当前日期时间
当前时间:
购物车
购物车中有 0 件商品 去结算 我的订单
商品搜索
商品搜索:
文章正文
基于Modbus RTU协议实现S7-400H与Bently 3500的通讯设计
作者: 来源:中国机电工程网    发布于:2019-06-06 19:40:52    文字:【】【】【

1  引言
        石油化工生产中plc常常用于大机组的联锁与控制。对于机组的振动、位移等参数,点数较少时,可以采用变送器、传感器转换成4-20ma信号送入plc,实现联锁控制,但对键相、差胀等特殊测量参数或振动、位移等测量参数点数较多时,信号转换的难度大、成本高,使用传统的框架式机械保护系统反而会经济、有效。美国bently公司3500系统是传统的框架式机械保护系统之一,它可以运行于各种冗余级别,包括双电源供电和更高要求下的三重模块冗余(tmr)监测器组态。每个i/o卡可以对 4-6个点的信号进行转换处理,并通过编程的方法实现联锁逻辑。茂名乙烯厂在2006年7月建成投产的2#丁二烯装置的压缩机联锁、控制中,采用德国西门子公司的s7-400h系统实现总的联锁和过程控制,外壳振动、轴瓦温度的联锁主要在bently3500中实现。为了实现数据共享和联锁冗余,需要将bently3500中的模拟信号和报警、联锁信号以通讯方式传输到s7-400h。本文以2#丁二烯压缩机控制系统为例,描述了simatic s7-400h与bently 3500之间modbus rtu协议通讯实现的过程。

2  控制系统简介
        s7-400是大型可编程序控制器,由电源模板(ps)、中央处理单元(cpu)、信号模板(sm)、通信处理器(cp)等部分组成。s7-400h系统是s7-400的冗余系统,通过将发生中断的单元自动切换到备用单元的方法实现系统的不中断工作。它可以通过本地机架与s7-400的i/o模件、通讯网关连接,也可以通过基于profibus-dp总线的et200m分布式i/o与s7-300的i/o模块、通讯网关连接,以实现过程控制、与其它控制系统通讯。
        3500机械保护系统是一个全功能监测保护系统,其设计应用了最新微处理器技术。由1块或2块电源模块(3500/15)、框架接口模块(3500/20)、温度监测器模块(3500/60)、位移、速度、加速度监测模块(3500/42)、继电器模块(3500/32)、通信网关(3500/92)等组成。3500/92通信网关是3500系统主要通信通道,是与其它系统通讯的桥梁。

3  通讯方案选择
        通讯实现的目标是将3500中的15个温度点和6个压缩机外壳振动点的值以及其报警、联锁状态送到s7-400h,由于通讯的数据量不大,选用modbus rtu协议。
        s7-400h与3500之间通讯主要有两种方式:一是在s7-400h的本地机架上安装一个cp(通讯处理器)。s7-400h有两个冗余子系统,cp安装在其中一个子系统上,两个冗余的子系统都从该cp获得数据,并在两个相同的用户程序中进行计算。因此,就冗余系统模式中的信息处理而论,cp是连接到主cpu 还是热备cpu并无多大关系。缺点是,当子系统出现故障时,该子系统机架上的cp不再可用。另一种方式是,将cp安装在切换式i/o(et200m 分布式 i/o)上,该设备有一个有源板总线和一个冗余profibus-dp 从站接口模板im153-2,每个s7-400h子系统与et200m两个dp从接口中的一个相连。这样,某个s7-400h冗余子系统故障,cp会切换到它的冗余伙伴,可靠性高,而且经济。我们选用了该方案,通讯处理器采用cp341。

4  通讯系统硬件配置与接线
        s7-400h的通讯处理器是cp341,在使用modbus rtu协议时需要一个硬件狗(dongle)。3500的通讯处理器是3500/92。由于它们处于同一柜内,距离在15米以内,传输接口形式选用了rs-232 。rs-232采用9 pin引脚,通常只用到引脚2、3、5,即接收数据、发送数据和信号地,接口连接如图1所示。

图1  传输接口的连接

3  软件实现
        modbus rtu格式通信协议是以主从方式进行数据传输的,在传输的过程中主站是主动方,即主站发送数据请求报文到从站,从站返回响应报文。modbus系统间的数据交换是通过功能码(function code)来控制的,有些功能码是对位操作的,通讯的用户数据是以位(bit)为单位的:
        fc01 读输出位的状态
        fc02 读输入位的状态
        fc05 强制单一输出位
        fc15 强制多个输出位
        有些功能码是对16位寄存器操作的,通讯的用户数据是以字(word)为单位的:
        fc03 读输出寄存器
        fc04 读输入寄存器
        fc06 写单一输出寄存器
        fc16 写多个输出寄存器[1]
        cp341与3500/92的通讯,cp341做主站,3500/92做从站,主站、从站都需要设置波特率、停止位、校验位。这里设置波特率为9600bit/s,一位停止位,无奇偶校验。cp341 modbus协议通讯是通过simatic step7编程软件,并利用库函数fb8(p-snd-rk)和fb7(p-rcv-rk)功能块进行发送和读取数据操作的。它们均通过组态数据库的方法进行发送源信息和接收目的数据的信息,请求信息时,从源数据库读取相应字段后发送,接收信息是根据发送的内容进行对应字段数据的存储。报文格式存放在db42中前6个字节中,采用语句表语言编写程序,如下:
        l  2
        t  db42.dbb0 //从站地址
        l  3
        t  db42.dbb1 //使用fc03功能码
        l  5000
        t  db42.dbw2 //10进制的5000在bently 3500中是modbus寄存器组态区域的起始地址
        l  63
        t  db42.dbw4 //63是要从从站读16-bit字的数量
        由于3500/92modbus rs-232/422 i/o模件通常响应时间少于0.5秒,因此,0.5秒发送一次对从站的数据请求:
        an  m30.0
        an  m120.7  //其为1时发出读的命令
        l   s5t#500ms
        sd t30  //对bently 3500请求数据的速率
        a m0.0
        r t30
        a t30
        =  m30.0
        a m30.0
        s m120.7
        如果正在发送请求、发送完成或发送错误,就不能发出向从站的读数据请求命令:
        a m120.7
        an db40.dbx 0.0  //发送请求
        an db40.dbx 0.4  //发送完成
        an db40.dbx 0.5  //发送错误
        r m120.7
        s db40.dbx 0.0  //向bently 3500发出发送请求命令
        发送请求必须是边缘发出的:
        a(
        o db40.dbx 0.4  
        o db40.dbx 0.5
        )
        a db40.dbx 0.0
        r db40.dbx 0.4
        调用cp341的发送功能块fb8:
        call  fb8,db50
        sf :=‘s’
        req := db40.dbx 0.0
        r:= db40.dbx 0.1
        laddr:=624 //cp341的模块地址
        db_no:=42 //发送数据块=db42
        dbb_no:=0 //db42中的起始地址
        len :=6 //6 bytes
        r_typ:=‘x’
        done:=db40.dbx 0.4
        error:=db40.dbx 0.5
        status:=db40.dbw12
        接收从站响应数据:
        set
        = db41.dbx 0.0  //允许cp341接收数据
        call fb7 ,db70
        en_r:= db41.dbx 0.0
        laddr:=624
        db_no:=43  //接收用户数据的数据块
        dbb_no:=0
        ndr:=db41.dbx 0.4
        error:=db41.dbx 0.5
        len:=db41.dbw10
        status:=db41.dbw12
        3500/92作为从站只是发送数据,所以设置很简单。从3500传输数据到plc,可以使用固定的协议地址,也可以使用可组态寄存器。可组态寄存器modbus地址范围是45001-45500(浮点:46001-46000)。由3500手册可知,通道的每种状态用一个bit表示,全部通道状态可用一个word表示,见表1。对于modbus协议,每一种功能码控制一个信息帧,即读位、读字要在两个信息帧中完成。为了提高通讯速度,通道的状态作为一个字与模拟量在同一个帧中传输,到plc后再将位取出。我们选用可组态寄存器作为modbus协议地址。
        3500/92的modbus通讯组态是通过rack configuration software实现的。进入communication gateway界面后,点击configue按钮进入congigurable registers窗口,选择要传送的数据,将其拖入可组态的寄存器即可,见图2。

图2  3500/92 modbus寄存器组态

 

4  结束语
        通过采用modbus rtu通信协议,实现了cp341与3500/92之间数据交换,高效地实现了西门子s7-400h可编程控制器与bently 3500的通信,实现了关键联锁的冗余,方便了对现场设备的控制和操作,避免大量的变送器的使用,降低了成本。

浏览 (55) | 评论 (0) | 评分(0) | 支持(0) | 反对(0) | 发布人: 来源:中国机电工程网
将本文加入收藏夹
新闻详情
脚注栏目
|
脚注信息
机电工程网(C) 2015-2020 All Rights Reserved.    联系我们