工控网首页
>

应用设计

>

基于西门子S7系列PLC的集成MPI和Modbus网络应用

基于西门子S7系列PLC的集成MPI和Modbus网络应用

2008/2/18 11:44:00
[摘 要] 本文以西门子公司S7-300和S7-200系列PLC为例,使用其CPU集成的通信端口实现MPI网络和Modbus网络的透明通信,为新建现场总线和现有现场总线的升级提供一种可靠且成本极低的方案,也为Profibus-DP网络和Modbus网络在同一系统中的集成提供一种思路。 [关键词] S7-300 S7-200 MPI Modbus 现场总线 1 引言 Modbus现场总线自1979年诞生以来,已经经历了二十多年市场的洗礼。由于其兼容的设备广泛,通用性和易用性好,构成网络的成本低廉,在中小型系统中占据着大壁江山。MPI网络是西门子公司主导的一种网络,在S7-300,S7-400系列PLC中做为一种标准配置集成于CPU本体上,也可以将S7-200系列PLC方便的纳入MPI网络中。对于一个正在使用西门子S7系列控制器的系统来说,如何将已有的Modbus总线集成到S7控制系统中来,是一个头痛的问题,虽然可以使用S7-300/400的CP通信模板来实现,但繁琐的编程和用于购买软硬件的额外支出也是一个问题。本文以S7-200 CPU为网关,实现了S7-300/400和Modbus从站的透明通信,为解决这些问题提供一种可靠且成本极低的方案,也为Profibus-DP网络和Modbus网络在同一系统中的集成提供一种思路。 2 设计方法 2.1硬件构成 本文旨在建立一个由S7-300(CPU312)和一个S7-200(CPU224XP或CPU226),若干个支持MODBUS RTU协议的温度表构成的混合MPI和MODBUS RTU两种现场总线的通信网络。由于S7-200/300/400全系列CPU均支持MPI协议,且使用CPU模块上集成的通信口即可完成MPI通信,所以硬件方面不需要额外增加任何其它设备。在这个混合通信网络中,我们使用S7-200作为网桥,实现MPI和MODBUS RTU两种协议间的互相转换。系统的网络构成如图1所示:
温度表 图1 网络构成图 图1中红色线条表示MPI网络,蓝色线条表示MODBUS网络,PC仅作为编程器(PG)使用。在MPI网络中,S7-200作为MPI从站和作为主站的S7-300或PG通信,但在MODBUS网络中,S7-200却是作为主站和温度表等从站通信,这是通过在S7-200的通信口0上加载MODBUS通信协议,在通信口1上加载MPI通信协议来实现的。 2.2 通信链路详解 (1)PG与PLC间的通信:编程器PG仅可以通过MPI总线与S7-200,S7-300,TP270进行通信。除了上载/下载程序外,还可以在PG上运行Winccflexible Runtime运行系统来实现对系统的监控。注意:此处只能使用PC Adapter来实现上述链接。示意图如图2:
图2 PG与PLC间的通信 (2)MPI通信链路:在MPI通信链路中,S7-300作为主站,既可以与从站S7-200通信,又可以接受来自操作员站TP270的控制。TP270既可以和S7-300通信,也可以和S7-200通信,通过操作员的输入,控制S7-300和S7-200。作为MPI从站的S7-200,除了接受TP270的控制,更主要的是将I,Q,V区域的变量与S7-300共享,以便S7-300进行读写操作,从而实现对MODBUS网络数据的读写。示意图如图3:
图3:MPI通信链路示意图 (3)MODBUS通信链路:在MODBUS通信链路中,S7-200作为MODBUS主站直接对MODBUS从站进行读写,S7-300和TP270并不直接参与通信。作为从站的温度表也仅仅回应S7-200的通讯请求。当然,受MODBUS RTU的限制,各温度表从站之间不能互相通信,而只是回应来自主站S7-200的通讯请求。示意图如图4:
图4:MODBUS通信链路 2.3 软件设计 (1)MODBUS通信程序:为了在S7-200的通信口0加载MODBUS通信协议,需要使用通信口0的自由口通信模式,通过在STEP7-Micro/Win中编写通信程序,实现该目的。这里我们使用MODBUS协议库来实现该功能。以读取温度表从站的当前值和设定值,并写设定值为例,保持寄存器40001和40002分别为温度当前值和设定值。我们将程序分为两部分,一部分是读写温度表的子程序(后文称为加热控制子程序),另一部分是主程序。 (A) 首先需要在主程序中使用SM0.0调用加热控制子程序SBR(Heating_Control),如图5所示:
图5:在主程序中调用加热控制子程序 (B) 其次在加热控制子程序中使用MBUS_CTRL对S7-200的通信口0进行通信初始化,设置通信参数等,如图6所示:
图6:对通信口0进行初始化的程序 MBUS_CTRL的几个主要变量设置意义如下: Mode: 该变量的数据类型为BOOL型,当BOOL值为1时,通信口0用于MODBUS通信, 当BOOL值为0时,通信口0用于PPI通信。 Baud:该变量的数据类型为DWORD型,用来设置MODBUS网络的通信速率,可设置范围为1200bps到115200bps。 Parity:该变量类型为BYTE型,用来设置奇偶校验的类型,可设置为0,1或2。0表示无奇偶校验,1表示奇校验,2表示偶校验。 Timeout:该变量为INT型,表示通信超时的时间值,单位为毫秒。 Done:该变量为BOOL型,指示初始化完成,正常完成后会一直置位。 Error:错误状态,指示通信初始化时的状态。该变量类型为BYTE型。 由于Mode变量使用了SM0.0,所以当S7-200处于运行状态时,通信口0将一直用于MODBUS通信,不能用于和STEP 7-Micro/Win通信,即不能用于上载/下载程序,但通信口1不受影响,可用于和STEP 7-Micro/Win通信。 (C) 最后在加热控制子程序中使用MBUS_MSG实现对MODBUS从站的读写。以读取4号温度表从站的当前值和设定值为例,程序如图7所示:
图7:读取4号从站的当前值和设定值 MBUS_CTRL的几个主要变量设置意义如下: First:BOOL型变量。表示消息类型。为1时表示是新消息,为0时表示是重复的消息。 Slave:从站地址号。因为我们要读取4号温度表的值,所以这里设定为4,其设置范围为0——247(在MODBUS规约中,地址0表示广播地址)。该变量的数据类型为BYTE型。 RW:BYTE型变量。为0时表示该消息是读取从站寄存器的请求,为1时表示该消息是写从站寄存器的请求。因为是读取4号从站的寄存器,所以此处设置为0。 Addr:DWORD型变量。表示要读/写的从站寄存器的开始地址。因为保持寄存器40001和40002分别为温度当前值和设定值,所以此处设置为40001。 Count:INT型变量。表示要读/写的寄存器数量。温度当前值和设定值占用了两个连续的寄存器,所以此处设置为2。其设置范围为:1到120个WORD或1到1920个BIT。 DataPtr:DWORD型变量。对于读从站寄存器的操作,该参数表示将读取出来的参数存放在哪里;对于写从站寄存器的操作,该参数表示将哪里的数据写入到从站寄存器。如果读取的从站寄存器是两个或更多个,则从DataPtr指定的连续个内存区域将被占用。对于本例中DataPtr=&VB304,Count=2的设置,表示从站的40001中的值将被存放到S7-200的VW304,40002中的值将被存放到S7-200的VW306。 Done:完成标志。BOOL型变量。为1时表示已经完成,为0时表示任务繁忙中。 Error:错误状态。BYTE型变量。为0时表示无错误。 需要注意:只有在复位MBUS_MSG的EN位后,剩余的读写操作才能顺利完成。所以在MBUS-MSG的下一个网络中,我们利用Done标志位来复位EN位,为后面的通信做好准备。 (D) 对4号从站的寄存器进行写操作,同样使用MBUS-MSG,如图8所示:
图8 写4号从站的设定值 图8中我们将S7-200的VW466中的值写入到了4号站的40002。 到这里为止,已经将MODBUS从站的值和S7-200的V区域数据进行了交换,接下来进行S7-200和TP270的数据交换。 (2)S7-200和TP270的MPI通信程序 通过在Winccflexible中的组态,可以轻松实现在TP270上读写S7-200中(MODBUS从站寄存器)的数据。打开Winccflexible,在“通讯----连接”中建立两个连接,分别命名为“S7-200”和“S7-300”,为“S7-200”选择驱动程序SIMATIC S7 200,为“S7-300”选择驱动程序SIMATIC S7 300/400,并设置在线模式为“开”,为“S7-200”设置地址为3,为“S7-300”设置地址为“2”,此处的地址为MPI地址。详细设置如图9和图10所示:
图9 S7-200和TP270的通信设置
图10 S7-300和TP270的通信设置 要在屏幕上显示温度表的当前值和设定值,只需要在画面中放置对应S7-200的V区域的输出域即可。新建一画面,并在其中放置一输出域,设置该输出域的属性如图11所示:
图11 输出域的设置 对于变量VW304的设置,如图12,图13所示:
图12 变量VW304的常规设置
图13 变量VW304的寻址设置 要修改温度表的设置值,需要在画面中设置一输入域,设置其地址为VW466,然后由操作员在屏幕
投诉建议

提交

查看更多评论
其他资讯

查看更多

SCON-CB系列控制器 使用说明书

S7-200 CPU集成模拟量I/O在温度测量中的应用

基于触摸屏的远程控制的探讨与实现

在三菱GT Designer中制作动画