您现在的位置是:首页 > 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”后,通信双方的链接资源被释放。