问题:
如何通过单向通信从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 kBd 和 187,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通信,块参数