您现在的位置是:首页 > PLC技术 > PLC技术
PLC的S7通信基础
来源:艾特贸易2018-04-20
简介对于 S7 通信(如图 20-16 所示),在 SIMATICS7 站之间可以传输更大量的数据。站与站之间通过子网互连;网络可以是 MPI 网络、 PROFIBUS 网络或以太网络。这些通信连接是静态的;在连接表
对于S7通信(如图20-16所示),在SIMATICS7站之间可以传输更大量的数据。站与站之间通过子网互连;网络可以是MPI网络、PROFIBUS网络或以太网络。这些通信连接是静态的;在连接表中可以组态(“通过组态连接通信”)。
图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”初始化本地或“自己的”模块中的FB或SFB,使用“远程ID”可以初始化通信伙伴模块中的FB或SFB。
同样的逻辑连接可以用于不同的发送/接收请求。为了区分它们,需要为连接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”。参数ERROR和STATUS给出的信息涉及发生的错误以及工作的状态。
在重启时无需切换数据区域(涉及ADDR_x、RD_x和SD_x参数)。除了在S7-400系统中:对于SFB 8 USEDN、SFB 9 URCV、SFB 14 GET和SFB 15 PUT,当首次调用的时候,要创建保证连续性用的通信缓冲器,并且为进一步调用定义每次传输的最大数据量。
3.循环操作
在循环操作中,可以通过参数REQ和EN_R无条件地调用通信块并控制数据传输。每次通信块处理之后,必须立刻确定参数NDR、DONE、ERROR和STARUS的值,因为这些参数只保持到下次调用前有效。
对于S7-300,只能把位存储器和数据地址区域指定给数据类型为ANY的参数(SD_1、RD_1和ADDR_1)。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)
点击排行
