您现在的位置是:首页 > PLC技术 > PLC技术

PLC的S7通信基础

来源:艾特贸易2018-04-20

简介对于 S7 通信(如图 20-16 所示),在 SIMATICS7 站之间可以传输更大量的数据。站与站之间通过子网互连;网络可以是 MPI 网络、 PROFIBUS 网络或以太网络。这些通信连接是静态的;在连接表

    对于S7通信(如图20-16所示),在SIMATICS7站之间可以传输更大量的数据。站与站之间通过子网互连;网络可以是MPI网络、PROFIBUS网络或以太网络。这些通信连接是静态的;在连接表中可以组态(“通过组态连接通信”)。

S7通信

    20-16    S7通信

    通信功能就是存在于CPU操作系统中的S7-400的系统功能块SFB。关联的实例数据块存在于用户存储器中。如果要使用S7通信,需要把来自位于系统功能块下标准库中的SFB的界面描述复制到block容器处,以产生一个用于每次调用使用的实例数据块,并且用相关实例数据块调用SFB。对于增加的输入,可以从程序的元件目录中选择SFB并自动产生实例数据块。

    对于S7-300,通信功能是标准的功能块FB,可以从通信块下的标准库中找到这样的FB。把需要使用的功能块复制到block容器处,然后可以像使用一般的功能块那样使用这些功能块。

    1.组态S7通信

   S7通信的先决条件是组态连接表,在该表中已经定义通信连接。

    通过一个通信ID为每个通信伙伴指定通信连接。STEP 7在编译连接表的时候分配这些连接ID。使用“本地ID”初始化本地或“自己的”模块中的FBSFB,使用“远程ID”可以初始化通信伙伴模块中的FBSFB

    同样的逻辑连接可以用于不同的发送/接收请求。为了区分它们,需要为连接ID增加一个工作ID,以定义发送块和接收块之间的关系。

    2.初始化

   S7通信必须在重启时初始化,这样才能建立与通信伙伴的连接。在CPU接收到连接表中的属性“Active connection build up=YES”(建立实际连接=YES)时,就要开始初始化。在重启OB时,按如下条件调用在循环操作中使用的通信块,并初始化参数(给定的这些参数是有效的):

    REQ= FALSE

    ID=来自连接表中的本地连接ID(数据类型WORDW#16#xxxx

    R_ID=请求ID,可以用于定义“blockpair”(“块对”)(数据类型DWORDDW#16#xxxx xxxx)

    PI_NAME=ASCII代码中内容为“P_PROGRAM”的变量(例如,CHAR数据类型的数组ARRAY[1..91)。

    在程序循环中,必须连续调用这些块,直到参数DONE的信号状态为“1”。参数ERRORSTATUS给出的信息涉及发生的错误以及工作的状态。

    在重启时无需切换数据区域(涉及ADDR_xRD_xSD_x参数)。除了在S7-400系统中:对于SFB 8 USEDNSFB 9 URCVSFB 14 GETSFB 15 PUT,当首次调用的时候,要创建保证连续性用的通信缓冲器,并且为进一步调用定义每次传输的最大数据量。

    3.循环操作

    在循环操作中,可以通过参数REQEN_R无条件地调用通信块并控制数据传输。每次通信块处理之后,必须立刻确定参数NDRDONEERRORSTARUS的值,因为这些参数只保持到下次调用前有效。

    对于S7-300,只能把位存储器和数据地址区域指定给数据类型为ANY的参数(SD_1RD_1ADDR_1)。

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务