您现在的位置是:首页 > PLC技术 > PLC技术
不用连接组态的MPI通信
来源:艾特贸易2018-01-31
简介不用连接组态的 MPI通信用于S7-300之间、S7-300与S7-400之间、S7-300/400与S7-200之间的通信,是一种应用广泛的通信方式。 1.需要双方编程的S7-300/400之间的通信 首先建立一个项目,对两个
不用连接组态的MPI通信用于S7-300之间、S7-300与S7-400之间、S7-300/400与S7-200之间的通信,是一种应用广泛的通信方式。
1.需要双方编程的S7-300/400之间的通信
首先建立一个项目,对两个PLC的CPU进行MPI网络组态,假设A站和B站的MPI地址分别设置为2和3。下面程序的功能是将A站中M20~M24中的数据发送到B站的M30~M34。
在A站的循环中断组织块0835中调用系统功能SFC 65“X_SEND”,将MB20~MB24中SB的数据发送到B站。在B站的OB1中调用系统功能SFC 66“X_RCV”,接收A站发送的数据,并存放到MB30~MB34中。
下面是发送方A站的OB35中的程序:
Network 1:通过MPI发送数据
CALL "X_SEND"
REQ :=TRUE //激活发送请求
CONT :=TRUE //发送完成后保持连续
DEST_ID:=W#16#3 //接收方的MPI地址
REQ_ID:=DW#16#1 //任务标识符
SD :=P#M 20.0 BYTE 5 //本地PLC发送区
RET VAL:=LWO
BUSY :=L2.0 //=1:发送未完成
输入REQ等号之后的值时输入“1”,输入后自动变为“TRUE”。下面是接收方(B站)的081中的程序。
Network l:从MPI接收数据
CALL "X_RCW"
EN_DT:=TRUE //将接收到的数据复制到接收区
RET_VAL:=LW0 //返回的错误代码,=W#16#7000时无错误
REQ_D:=LD2 //SFC 65“X_SEND”的任务标识符
NDA ::L6.0 //为0没有新的排队数据;为1且EN DT为1新数据被复制
RD :=P#M 30.0 BYTE 5 //本地PLC的数据接收区
2.只需一个站编程的S7-300/400之间的通信
假设A站和B站的MPI地址分别为2和3,B站不用编程,在A站的循环中断组织块OB35中调用发送功能SFC 68“X_PUT”,将MB40~MB49的lOByte的数据发送到B站MB50~MB59中。同时A站调用接收功能SFC 67“X_GET”,将对方的MB60 -,MB69中10Byte的数据读入到本站MB70~MB79中。下面是A站0835的程序:
Network l:用SFC 68从MPI发送数据
CALL ”X PUT”
REQ :=TRUE //激活发送请求
CONT :=TRUE //发送完成后保持连接
DEST ID:=W#16#3 //接收方的MPI地址
VAR_ADDR:=P#M 50.0 BYTE 10//对方的数据接收区
SD :=P#M 40.0 BYTE 10//本地的数据发送区
RET_VAL:=LWO //返回的故障信息
BUSY :=L2.1 //为1发送未完成
Network 2:用SFC67从MPI读取对方的数据到本地PLC的数据区
CALL "X_GET"
REQ :=TRUE //激活请求
CONT :=TRUE //接收完成后保持连接
DEST_ID:=W#16#3 //对方的MPI地址
VAR ADDR:=P#M 60.0 BYTE 10//要读取对方的数据区
RET_VAL:=LW4 //返回的故障信息
BUSY :=L2.2 //为1发送未完成
RD :=P#M 70.0 BYTE 10//本地的数据接收区
SFC 69“X_ABORT”可以中断一个由SFC“X_SEND”、“X_GET”、或“X_PUT”建立的连接。如果上述SFC的工作已完成,即BUSY=O,调用SFC 69“X_ABORT”后,通信双方的链接资源被释放。