日志档案

发表于 2008-1-24 14:38:50

2

标签: 西门子 PLC MPI 通信

PLC之间的MPI通信详解

1.       MPI概述

MPIMultiPoint Interface)通信是当通信速率要求不高、通信数据量不大时,可以采用的一种简单经济的通信方式。MPI通信可使用PLC S7-200/300/400、操作面板TP/OP及上位机MPI/PFOFIBUS通信卡,如CP5512/CP5611/CP5613等进行数据交换。MPI网络的通信速率为19.2kbit/s~12Mbit/s,通常默认设置为187.5kbit/s,只有能够设置为PROFIBUS接口的MPI网络才支持12Mbit/s的通信速率。MPI网络最多可以连接32个节点,最大通信距离为50,但是可以通过中继器来扩展长度。通过MPI实现PLC之间通信有三种方式:全局数据包通信方式、无组态连接通信方式和组态连接通信方式。PLC之间的网络配置如图所示。

2.       硬件和软件需求

硬件:CPU412-2 DPCPU313C-2DPMPI电缆

软件:STEP7 V5.2 SP1以上

3.       设置MPI参数

可分为两部分:PLC侧和PC侧的参数设置。

(1)      PLC侧参数设置

在硬件组态时可通过点击图中“Properties”按钮来设置CPUMPI属性,包括地址及通信速率,具体操作如图所示。注意:整个MPI网络中通信速率必须保持一致,且MPI地址不能冲突。

点击看大图

(2)      PC侧参数设置

PC侧痛要也要设置MPI参数,在“控制面板”→“Set PG/PC Interface”中选择所用的编程卡,这里为CP5611,访问点选择“S7ONLIEN”,

4.       全局数据包通信方式

对于PLC 之间的数据交换,我们只关心数据的发送区和接收区,全局数据包的通讯方式是在配置PLC 硬件的过程中,组态所要通讯的PLC 站之间的发送区和接收区,不需要任何程序处理,这种通讯方式只适合S7-300/400 PLC之间相互通讯。

实验步骤如下:

   建立MPI网络  首先打开编程软件STEP7,建立一个新项,在此项目下插入两个PLC 站分别为SIMATIC 400/CPU412-2DP SIMATIC 300/CPU313C-2DP,并分别插入CPU 完成硬件组态,配置MPI 的站号和通讯速率,在本例中MPI 的站号分别设置为5号站和4 号站,通讯速率为187.5Kbit/S

   组态数据的发送和接收区  选中MPI网络,再点击菜单“Options →“Define Global Date”进入组态画面如图所示。

点击看大图

   插入所有需要通讯的PLC CPU  双击GD ID 右边的CPU 栏选择需要通讯PLC 站的CPUCPU 栏总共有15 列,这就意味者最多有15 CPU 能够参与通讯。在每个CPU 栏底下填上数据的发送区和接收区, 例如: CPU412-2DP 的发送区为DB1.DBB0~DB1.DBB21,可以填写为DB1.DBB022 (其中“DB1.DBB0”表示起始地址,“22”表示数据长度)然后在菜单“edit”项下选择“Sender”作为发送区。而CPU313C-2DP 的接收区为DB1.DBB0~21,可以填写为DB1.DBB022。如图所示。编译存盘后,把组态数据分别下载到CPU 中,这样数据就可以相互交换了。

点击看大图

注意:发送区和接收区的长度必须一致,地址区可以为DBMIQ区,S7-300地址区长度最大为22字节,S7-400地址区长度最大为54字节。

   通信的诊断  在多个CPU 通讯时,有时通讯会中断,可用通过下述方法进行监测:在菜单“View”中点击“Scan Rates”和“GD Status”可以扫描系数和状态字,如图所示。

点击看大图

SR:扫描频率系数。如上图SR1.1 225,表示发送更新时间为225×CPU 循环时间。范围为1255。通讯中断的问题往往设置扫描时间过快,可改大一些。

GSD:每包数据的状态字(双字)。可根据状态字编写相应的错误处理程序,结构如下:

第一位:发送区域长度错误。

第二位:发送区数据块不存在。

第四位:全局数据包丢失。

第五位:全局数据包语法错误。

第六位:全局数据包数据对象丢失。

第七位:发送区与接收区数据对象长度不一致。

第八位:接收区长度错误。

第九位:接收区数据块不存在。

第十二位:发送方从新启动。

第三十二位:接收区接收到新数据。

GST:所有GDS 相“OR”的结果

   事件触发的数据传送  如果我们需要控制数据的发送与接收,如在某一事件或某一时刻,接收和发送所需要的数据,这时将用到事件触发的数据传送方式。这种通讯方式是通过调用CPU 的系统功能SFC60 (GD_SND)SFC61(GD_RCV)来完成的,而且只支持S7-400CPU,并且相应设置CPU SR(扫描频率)为0,可参考下图全局数据的组态画面:

点击看大图

编译存盘后下载到相应的CPU 中,然后在S7-400 中调用SFC60/61 控制接收与发送。具体程序代码为:

5.       无组态连接通信方式

无组态的MPI通信需要调用系统功能块SFC65~SFC69来实现,这种通信方式适合于S7-300S7-400S7-200之间的通信。通过调用SFC来实现MPI通信又可分为两种方式:双边通信方式和单边通信方式。调用系统功能通信方式不能和全局数据通信方式混合使用。

(1)      双边编程通信方式

在通讯的双方都需要调用通讯块,一方调用发送块,另一方就要调用接收块来接收数据。这种通讯方式适用S7-300/400 之间通讯,发送块是SFC65(X_SEND),接收块是SFC66(X_RCV)。实验步骤如下:

STEP7 中创建两个站STATION1, CPU S7- 412-2DP, MPI 站地址为5; STATION2, CPU S7-313C-2DP , MPI 站号为45号站发送2 包数据给4 号站,4 号站判断后放在相应的数据区中。

编程  2 号站OB35 中须调用SFC65,具体程序代码为:

 

 

 

参数说明:

REQ 为发送请求,该参数为1 时发送。

CONT 1表示发送数据是连续的一个整体。

DEST_ID 表示对方的MPI 地址。

REQ_ID 表示一包数据的标识符 ,标识符自己定义。

 SD 表示发送区,以指针的格式表示,例子中第一包数据为DB1 中从DBX0.0

(DBB0) 以后的10个字节数据,发送区最大为76 个字节。

RET_VAL 表示发送的状态

BUSY 1 时表示发送中止。

  

在这个例子中, M1.1M1.3 1 时,CPU412-2DP 将发送标识符为“1”和“2”的两包数据给4 号站的CPU313C-2DP

一个CPU 究竟可以和能几个CPU 通讯和CPU 的通讯资源有关系,这也决定SFC 的调用的次数。以上例作说明,M1.1M1.3 1时,与4 号站的连接就建立起来了,反之4 号站发送,5号站接收同样要建立一个连接,也就是说两个站通讯时,若都需要发送和接收数据,则须占用两个动态连接。通信状态可参考下图。

点击看大图

M1.1M1.3 0 时,此时建立的连接并没有释放,必须调用SFC69 来释放连接,在上例中M1.5 1 时,与4 号站建立的连接断开,如下图:

点击看大图

S7 313C-2DPOB1中调用接收块SFC66,具体程序代码为:

参数EN_DT 表示接收使能,RET_VAL 表示接收状态字,REQ_ID 为接收数据包的标识符,NDA 1 时表示有新的数据包,为0 时则表示没有新的数据包,RD 表示接收区,接收区放在DB1 中从DBB0 以后10 个字节中。程序中,接收块只识别数据的标识符,而不管是哪一个CPU 发送的,接收从5号站CPU412-2DP 发送的两包数据,当标识符为“1 M1.3 1时,复制接收区的数据到DB2 的前10 个字节中(调用SFC20),当标识符为“2 时,M1.4 1,复制接收区的数据到DB3 的前10个字节中。数据传送状态如图所示。

点击看大图

(2)      单边编程通信方式

与双向通讯时两方都需要编写发送和接收块不同,单向通讯只在一方编写通讯程序,这也是客户机与服务器的关系,编写程序一方的CPU 作为客户机,没有编写程序一方的CPU 作为服务器,客户机调用SFC 通讯块对服务器的数据进行读写操作,这种通讯方式适合S7-300/400/200 之间通讯,S7-300/400 CPU 可以同时作为客户机和服务器,S7-200 只能作服务器。SFC67 (X_GET) 用来读回服务器指定数据区中的数据并存放到本地的数据区中,SFC68 (X_PUT)用来写本地数据区中的数据到服务器中指定的数据区中。

具体实验步骤如下:

     新建项目  建立两个S7 站,STATION1, CPU S7 313C-2DP ,MPI 地址为4作为客户机; STATION2 ,CPU S7 412-2DP, MPI 地址为5作为服务器。

     编程  CPU421-2DPOB1中调用SFC68,把本地数据区的数据DB2.DBB0开始的连续10个字节发送到CPU313C-2DPDB1.DBB20开始的10个字节中;调用SFC67CPU412-1DP读出CPU313C-2DP的数据DB1.DBB0开始的10个字节放到本地DB2.DBB20开始的10个字节中。程序代码如下图所示。

同样S7-300CPU 也可以作为客户机,S7-400CPU 也可以作为服务器。

数据传送状态如图所示。

点击看大图

6.       组态连接通信方式

MPI 网络,调用系统功能块进行PLC 站之间的通讯只适合于S7-300/400S7-400/400 之间的通讯,S7-300/400 通讯时,由于S7-300CPU 中不能调用SFB12(BSEND)SFB13 (BRCV)SFB14(GET)SFB15(PUT),不能主动发送和接收数据,只能进行单向通讯,所以S7-300PLC 只能作为一个数据的服务器,S7-400PLC 可以作为客户机对S7-300PLC 的数据进行读写操作。S7-400/400 通讯时,S7-400PLC 可以调用SFB14SFB15,既可以作为数据的服务器同时也可以作为客户机进行单向通讯,还可以调用SFB12SFB13,发送和接收数据进行双向通讯,在MPI 网络上调用系统功能块通讯,最大一包数据不能超过160 个字节。

具体实验步骤如下:

   新建项目 

建立两个S7 PLC ,STATION1 CPU S7 412-2DP ,站地址为5STATION2, CPU S7 313C-2DP,站地址为4,假设S7-400PLC 把本地数据DB1 中字节0 以后的5 个字节写到S7-300PLC DB1 中字节0 以后的5个字节中去,然后再读出S7-300PLC DB1 中字节0 以后的5个字节中的数据并将其放到S7-400PLC 本地数据块 DB2 中字节0 以后的5个字节中去。

   组态连接及参数设置  STEP7 中点击“Options Configure Network”进入网络组态画面,如图所示:

点击看大图

右键点击CPU412-2DP,选择“Insert New Connections”新建连接。在弹出的对话框中选择“S7 connection”连接类型,并选择所需连接的CPU,这里选择CPU313C-2DP。如图所示。

点击“Apply”按钮建立连接,并查看连接表的详细属性,如下图:

点击看大图

组态完成后编译存盘,并将连接组态分别下载到各自的CPU

   编程  PLC 中调用通讯所需的系统功能块,由于是单向通讯S7-300PLC 是数据的服务器,所以只能在S7-400PLC 侧编程,调用SFB15 写数据到S7-300PLC 中如下图:

点击看大图

程序编制好后下载到各自的CPU站,并建立变量表测试程序的运行。如图所示。

点击看大图

 

系统分类: PLC/PAC   |   用户分类: 无分类   |   来源: 整理

    阅读(857)    回复(21)  

最新评论

  • zwm00306

    2008-4-5 22:58:08

    应用得很多了

  • fuekuwyl

    2008-5-8 17:40:10

    iiiznwdv http://kdrsapxr.com oiwywivm zveehmzw

  • furosemide

    2008-5-11 1:28:27

    O, it is excellent to have a giant's strength; but it is tyrannous to use it like a giant.

  • tylenol

    2008-5-11 8:24:29

    A writer is a person for whom writing is more difficult than it is for other people.

  • simvastatin

    2008-5-11 14:52:43

    Whenever people agree with me I always feel I must be wrong.

  • xenical

    2008-5-11 18:49:05

    I sent the club a wire stating, PLEASE ACCEPT MY RESIGNATION. I DON'T WANT TO BELONG TO ANY CLUB THAT WILL ACCEPT ME AS A MEMBER.

  • tizanidine paniculat

    2008-5-12 0:32:27

    Men of genius do not excel in any profession because they labor in it, but they labor in it because they excel.

  • viagra

    2008-5-12 3:53:53

    You've achieved success in your field when you don't know whether what you're doing is work or play.

  • fluoxetine

    2008-5-12 7:35:40

    It is better to wear out than to rust out.

  • amoxycillin

    2008-5-12 11:06:29

    I have often wished I had time to cultivate modesty... But I am too busy thinking about myself.

  • order soma online

    2008-5-12 20:30:16

    America believes in education: the average professor earns more money in a year than a professional athlete earns in a whole week.

  • buy hydrocodone

    2008-5-13 0:00:44

    Innovation has nothing to do with how many R&D dollars you have. When Apple came up with the Mac, IBM was spending at least 100 times more on R&D. It's not about money. It's about the people you have, how you're led, and how much you get it.

  • generic viagra

    2008-5-13 3:27:04

    The only way to get rid of a temptation is to yield to it.

  • buy cialis camwood e

    2008-5-13 7:17:10

    Reality is that which, when you stop believing in it, doesn't go away.

  • cheap alprazolam

    2008-5-13 10:38:56

    When we lose one we love, our bitterest tears are called forth by the memory of hours when we loved not enough.

  • cozaar bangtail acer

    2008-5-13 13:46:02

    Never fear the want of business. A man who qualifies himself well for his calling, never fails of employment.

  • fioricet online

    2008-5-13 17:27:04

    It's wonderful what we can do if we're always doing.

  • hoodia

    2008-5-13 17:29:48

    I have very strong feelings about how you lead your life. You always look ahead, you never look back.

  • buy vicodin

    2008-5-14 4:25:42

    I have the worst memory ever so no matter who comes up to me - they're just, like, 'I can't believe you don't remember me!" I'm like, 'Oh Dad I'm sorry!'

  • purchase viagra

    2008-5-14 7:57:24

    I have always felt that a politician is to be judged by the animosities he excites among his opponents.

  • hn_xiaowt

    2008-6-20 11:55:32

    谢谢