打印本文 打印本文  关闭窗口 关闭窗口  
通过MPI在S7-300 / 400 和 S7-200 之间通信
作者:超音速  文章来源:不详  点击数 877  更新时间:2009/6/12 9:32:20  文章录入:超音速

问题:
如何通过单向通信从S7-300 / 400访问S7-200上的数据?

解答:
通过MPI,从带有X_PUT / X_GET的S7-300 / 400 可以访问几个S7-200 CPU。在这种情况下,g S7-300 / 400 是主站,S7-200 是从站。

对于CPU22x系列的S7-200 CPU,可以在19,2 kBd187,5 kBd下工作。从某个固件状态起,CPU21x系列的S7-200 CPU只能控制波特率19,2 kBd。关于相应的固件状态信息可以在下表中获得。

对于S7-200 CPU 21x必须考虑下列事项:

CPU

固件版本

接口

总连接数

保留的逻辑连接的数目和种类

212

从V1.10 版本起

0

2

一个用于编程设备

214

从V1.11 版本起

0

4

两个:
一个用于编程设备
一个用于操作员面板

215

从V1.02 版本起

0

4

两个:
一个用于编程设备
一个用于操作员面板

216

从V1.02 版本起

0

4

两个:
一个用于编程设备
一个用于操作员面板

1

4

两个:
一个用于编程设备
一个用于操作员面板

表 1:保留的逻辑连接的数目和种类

S7-300 / 400 CPU在MPI接口支持的传送速率可以在该CPU的技术数据中找到。

在下表中,可以查找到能够同时与S7-3XX连接的MPI连接的数目。
如果MPI连接被中断,然后重新建立,那么必须考虑到有大约 1 秒的延时。

该值取决于CPU周期和该CPU的通信设置。
如果连续编辑几个MPI连接,那么必须考虑更长的运行时间。

CPU

可能的MPI连接数目

312 / 312C

2 / 2

313 / 313C

4 / 4

314 / 314C

8 / 8
315 / 315-2AG10-0AB0 8 / 12
316 8
318 30

表 2:同时与CPU S7-3XX连接的MPI连接的可能的数目

用S7-200 CPU的前提条件:

  • 设置S7-200 CPU的地址。

  • 将要发送的数据放置在缓冲区中或者从缓冲区中获取已接收的数据。

  • 发送和接收缓冲区必须在X_PUT / X_GET组态期间在STEP7 中定义。

  • 请注意S7-200 系统手册中有关连网CPU的信息。

要读取来自S7-200的数据,使用SFC 67 (X_GET),它可以在S7-300 / 400 的OB1中调用。

示例:>
在S7-200 CPU (地址 4)中,想读取输入字节 EB 0,并将其保存在S7-300/400上数据块DB10 的字节 0 中:< /p>

调用

SFC67

参数功能

REQ:=

E 0.0

S7-300 / 400 的E 0.0上的正电平开始从S7-200 的读取过程

CONT:=

False

传输完成之后关闭连接

DEST_ID:=

W#16#4

要读取其数据的CPU的MPI地址(S7-200)

VAR_ADDR:=

P#E0.0 Byte 1
--------------------
P#DB1.DBX100.0 Byte 10

S7-200 的输入字节 0 被读取
----------------------------------------------
S7-200 的数据区 100-109 被读取

RET_VAL:=

MW 10

错误代码;
如果没有错误发生,那么在接收区"RD"中复制的数据块长度必须在此按字节输入正数。

BUSY:=

M 12.0

BUSY=1:接收过程还没有完成。
BUSY=0:接收过程已经完成。

RD:=

P#DB10.DBX0.0 Byte 1

参考接收数据区。
允许下列数据类型:BOOL,BYTE,WORD,DWORD,以及提及数据类型的数组,BOOL除外。接收数据区RD必须和其通信伙伴的读取数据区VAR_ADDR 一样长。
RD和VAR_ADDR的数据类型也必须匹配。

表 3: SFC 67 参数

要将来自S7-300 / 400的数据写入S7-200,使用SFC68 (X_PUT),它可以在S7-300 / 400 的OB1 中调用。

示例:
想在S7-200 的输出字节 1 中显示来自S7-300 / 400的存储字节MB 4的内容:

调用

SFC68

参数功能

REQ :=

E 1.1

S7-300 / 400 的E 1.1上的正电平开始到S7-200 的写过程

CONT :=

FALSE

传输完成之后关闭连接

DEST_ID :=

W#16#3

地址参数"Destination ID"。它包含通信伙伴的MPI地址。这已经在STEP 7 进行了组态。< /p>

VAR_ADDR:=

P#A 1.0 BYTE 1

被动CPU区的参考,数据从该CPU中读取。必须选择通信伙伴支持的数据类型。

SD :=

P#M 4.0 BYTE 1

CPU源区的参考,该CPU包含要发送的数据。允许下列数据:BOOL,BYTE,WORD,DWORD,以及提及数据类型的数组,B OOL除外。SD必须和通信伙伴的参数VAR_ADDR有相同的长度。SD和VAR_ADDR的数据类型也必须匹配。< /p>

RET_VAL :=

MW 21

如果在编辑该功能过程中,出现错误,那么返回值包含有相应的错误代码。

BUSY :=

M 12.2

BUSY=1:
接收过程还没有完成。
BUSY=0:
接收过程已经完成,或没有活动的发送过程。

表 4:SFC 68 参数

关于功能X_GET / X_PUT的进一步信息可以在自动化系统S7-300/400,系统和标准功能手册中找到。

注意事项:
SFC67/SFC68 在STEP 7 块中被调用到开环控制,在传送该STEP 7 块之前,应该将S7-300/400 控制设置到模式"STOP"。否则,通信块不能初始化或者不能通信。

如果要求更快的数据传输,那么必须使用一个PROFIBUS网,而不是MPI网。

关键字:
数据传送,MPI通信,块参数