当前在国际上有影响的现场总线标准很多,其中,Profibus-DP主要用于中央处理器与分散外围设备之间的高速数据通信,解决自动控制系统(如PLC、PC等)通过高速串行总线与分散的现场设备(I/O、驱动器、阀门等)之间的通信问题。本文采用Profibus-DP实现了西门子公司S7系列的PLC系统和和利时公司的CPU24x和CPU21x系列PLC的通讯互连。
图1 主-从通信系统配置
图2 在从站模式下CPU和CP数据交换原理示意图
系统设计
和利时的CPU24x和CPU21x一般作为主站设备,而西门子S7-300 PLC的CPU 315-2DP、CP342-5等既可做主站也可做从站。当它们做从站时,可设计为被动从站或主动从站。被动从站执行简单的DP协议功能,相当于简单从站;主动从站在总线中可以取得令牌,然后在确定的时间窗口中可以与从站通信,它除了支持简单的DP协议功能外,还支持一些其它的服务,如支持FDL服务、S7、PG等。另外,CP342-5和带CP5611卡的PC站还可实现二类DP主站、用于编程、诊断等功能。
因和利时公司的CPU24x和CPU21x的 PLC为主站设备,在系统中只能做主站,因此本设计把西门子的设备S7-300和S7-200 PLC作为从站,利用Profibus-DP的主-从通信原理实现他们的通信。系统配置如图1所示。
在图1中,和利时 PLC使用Profibus-DP通信模块FM208连接到Profibus-DP网络,FM208通信模块为DP主站模块,在DP网络中做DP主站。所有的西门子DP从站设备都可以作为FM208的从站连接到DP网络中,并通过使用DP通信协议实现相互间的直接数据通信。在此,西门子的S7-300、S7-200 PLC和变频器分别通过Profibus-DP通信模块CP 342-5、EM 277和CBP2做为和利时PLC的FM208的从站,并实现相互通信。
通信编程
用于DP主站的用户程序
用于DP主站的用户程序都已集成在Profibus-DP通信模块FM208中,用户只需完成以下几个方面的组态及设置即可完成主站的用户编程。
(1) DP网络组态,用WinNCS软件完成。
① 启动WinNCS软件,网络类型选取Profibus。然后在Profibus网络中插入主站,系统默认CPU24x为主站,指定其DP主站地址为2,总线网络的传输速率为1.5Mbps。
② 在FM208主站中插入DP从站CP342-5、EM277和CBP2,对应的DP网络地址为3、4、5。CP342-5的I/O数据选择16个字进16个字出,EM277的I/O数据模块选择8个字进8个字出,CBP2的数据类型选择PPO3。各从站的I/O数据在主站FM208中按顺序自动指定相应的地址。
③ 编译并保存文件,然后下载到通信处理器FM208中。
(2)FM208配置的从站I/O数据地址在CPU241中的地址分配。
根据用WinNCS配置的从站数及设定的I/O数据起始地址和长度,可以在PLC程序的数据块DB1中为其指定数据寻址地址。例如上述从站I/O起始地址都是从0开始,数据总长度各为28个字,在DB1中加入地址配置指令:
KC='UAT: 0 28 0 28 ;END'
在PLC用户程序中,直接根据上述设定的地址就可寻址从站的过程数据,不需要额外的通信编程。
用于DP从站S7-300的用户程序
S7-300 PLC通过CP342-5作为主站和利时PLC的从站,为确保数据通信的实现,需完成以下工作。
① 组态CP342-5做从站。
② 编写从站用户程序,并下载到S7 PLC。
③ 启动和调试DP从站和DP主站。
④ 通信异常诊断。
(1)CP功能
CP342-5用作DP从站可以被DP主站组态为智能从站或模块化主站,做从站时可以组态为被动从站或主动从站,但不允许在组态为从站的同时组态为主站。用作主动从站时除了提供从站服务功能外,还可以提供如FDL连接服务等其它的通信服务。CP342-5的主要功能有:
① 从主站接收用于配置和组态的参数,包括过程输出数据和传递到CPU的数据。
② 从CPU的DP数据域接收输入数据,为DP主站准备数据。
③ 给DP主站准备拾取和*估的诊断数据。
④ 给2类主站准备读取的I/O数据。
(2)数据交换原理
DP主站与DP从站的数据交换采用轮循方式,使用DP数据域中的接收缓冲区与发送缓冲区来完成。DP主站启动数据交换,将数据输出到输出缓冲区,并从输入缓冲区将数据取回,其原理如图2所示。
CPU和CP间的数据交换是通过在CPU循环中调用S7的DP_RECE和DP_SEND功能来实现的。其中,DP_RECE功能是接收由DP主站发送到从站CP的接收缓冲区的数据,然后把数据输出至CPU指定的DP数据域。而DP_SEND则是把CPU中指定的DP数据域中需传输的数据传送至CP的发送缓冲区,然后传输到DP主站。
(3)用户程序
在S7 PLC中,CPU中的用户数据域可以为过程映像、位寄存器以及数据块,在本用户程序中使用了数据块。在S7用户程序的Blocks目录下,定义两个数据块DB1和DB2,分别用于存放接收和发送的数据,然后在循环执行的组织块OB1中调用DP_RECE和DP_SEND功能。
当DP主站改变运行模式或崩溃时,操作系统通过调用从站上的某个OB作出反应。如果从站上的这些OB丢失,则CPU会立即自动地切换到STOP。因此为了防止这种情况,需在从站建立相关的OB。
当主站的CPU从RUN转换到STOP时,在从站的组织块OB82(诊断中断)将被调用。为防止CPU由于不存在OB82而停止,需在S7-300站的Blocks文件夹中插入组织块OB82。
同理,当DP主站崩溃时,在从站上将调用组织块OB86(机架故障)。为了防止S7-300从站的CPU在这样的情况下进入STOP,需在S7-300站的Blocks文件夹中插入组织块OB86。
用于DP从站S7-200的用户程序
主站和利时PLC和从站S7-200 CPU226之间的Profibus-DP通信是通过使用FM208模块将S7-200 CPU226作为DP从站连入网络的。FM208为模块化的DP从站,I/O数据大为32字。FM208通过串行总线和S7-200 CPU226连接,通过DP通信端口连接到Profibus上。其主要功能为:可运行在9.6kbps-12Mbps之间的任何速率;接收从主站来的I/O配置和参数信息;向主站发送和接收不同数量的数据;传送I/O数据,以及支持变量块的传送等。
对主站的组态包括从站地址,从站的变量存储区(V存储区)偏置以及选取I/O模块。
运行时,DP主站首先建立网络,然后初始化启动DP从站,并且主站将参数赋值信息和I/O配置写入到从站。然后主站从从站获取诊断信息,在确认从站已接收到信息后,主站就拥有了此从站的指挥权。此时网络上的其它主站可以读取该从站的数据但是不能向该从站写入数据。整个主站的组态是通过设备数据库(GSD)文件siem089d.gsd来完成的。
从站地址通过FM208模块上的硬件开关设定,此开关必须与主站软件设定的地址一致。从站I/O缓冲区驻留在S7-200的V存储区,因此要求参数赋值中必须包含V存储区的缓冲区的起始位置及I/O的数据量,以确定缓冲区的大小。FM208提供字节、字、缓冲区三种类型的数据交换。
S7-200 CPU226 PLC的通信用户程序如下:
NETWORK 1
//计算输出数据指针到V寄存器
LDB= SMB224,2
MOVD &VB0,VD1000
ITD SMW226,AC0
+D AC0,VD1000
NETWORK 2
// 计算输入数据指针到V寄存器
LDB =SMB224,2
MOVD VD1000,VD1004
BTI SMB228,AC0
ITD AC0,ACO
+D AC0, VD1004
NETWORK 3
//设置传输的数据量
LDB =SMB224,2
MOVB SMB228,VB1008
MOVB SMB229,VB1009
NETWORK 4 //传输数据
LDB =SMB224,2
BMB *VD1000,QB0,VB1008
BMB IB0,*VD1004,VB1009
结语
采用Profibus现场总线,不需做复杂的通信编程,就能方便地实现不同厂商的现场总线设备在一个系统中的集成,而且数据传输可靠、组态灵活、可以真正的实现即插即用功能。而且集成方法简单,通信可靠、快速,很适合实时系统控制的要求。在目前厂家为其提供的通信产品和通信服务功能由于不够丰富而存在的一些通信问题,通过灵活配置完全可以解决。