首页 理论教育 西门子工业通信网络的SFB综合应用实例

西门子工业通信网络的SFB综合应用实例

时间:2023-11-16 理论教育 版权反馈
【摘要】:图14-56 S7连接组态2.S7通信编程中需要考虑的一些问题因为两台CPU之间只建立了一条S7连接,所有被调用的通信SFB均使用同一个连接ID,其值为1。用周期为200ms的两个反相的信号M8.1和M9.0作为PUT和GET的通信请求信号REQ,在这两个信号的上升沿,分别读写通信伙伴的数据区。发送站的M4.0和M14.0分别是USEND和BSEND的发送请求信号。

西门子工业通信网络的SFB综合应用实例

1.项目结构

在STEP7中创建一个项目(见随书光盘中的例程MpiS7mul),生成两个站,CPU模块均为CPU 413-2(见图14-55)。点击SIMATIC管理器中的978-7-111-28256-3-Chapter14-116.jpg按钮,打开网络组态工具NetPro,将两个站连接到MPI网络上,设置它们的MPI站地址分别为2和3(见图14-56)。选中2号站的CPU,双击下面的连接表的第1行,生成一个双向的S7连接,连接ID为1。

978-7-111-28256-3-Chapter14-117.jpg

图14-55 SIMATIC管理器

该项目中名为SIMATIC 400-SEND的站,在OB1中调用SFB8“USEND”和SFB12“BSEND”,向名为SIMATIC 400-RCV的3号站发送数据,调用SFB14“GET”和SFB15“PUT”读、写3号站中的数据。该项目中名为SIMATIC 400-RCV的站,在OB1中调用SFB9“URCV”和SFB 13“BRCV”接收数据。

978-7-111-28256-3-Chapter14-118.jpg

图14-56 S7连接组态

2.S7通信编程中需要考虑的一些问题

因为两台CPU之间只建立了一条S7连接,所有被调用的通信SFB均使用同一个连接ID,其值为1。USEND和URCV的R_ID(发送与接收请求号)为2,BSEND和BRCV的R_ID为3。PUT和GET不需要设置R_ID。

在名为SIMATIC 400-SEND的2号站的CPU属性视图的“周期/时钟存储器选项卡中,设置MB8为时钟存储器字节。用周期为200ms的两个反相的信号M8.1和M9.0作为PUT和GET的通信请求信号REQ,在这两个信号的上升沿,分别读写通信伙伴的数据区。

在USEND和BSEND的发送请求信号REQ的上升沿发送数据,接收站的URCV和BRCV的接收使能信号EN_R信号一直为1(true),允许接收数据。

3.发送站的OB1

下面是发送站的OB1中的程序,M8.1的时钟周期为200ms。

程序段1:使M9.0与M8.1反相

978-7-111-28256-3-Chapter14-119.jpg

程序段2:读取对方的数据区

978-7-111-28256-3-Chapter14-120.jpg

程序段3:写对方的数据区

978-7-111-28256-3-Chapter14-121.jpg

程序段4:用USEND发送数据

978-7-111-28256-3-Chapter14-122.jpg

程序段5:用BSEND发送数据

978-7-111-28256-3-Chapter14-123.jpg

4.发送站的OB100(www.xing528.com)

在OB100中预置BRCV接收的字节数,分别将DB 1、DB 3、MB40~MB59、DB 5和DB 6中要发送的数据字分别预置为W#16#4011和W#16#4013~W#16#4016,将DB 2、DB 4和MB20~MB39存放读取的数据的数据区清零。

5.接收站的OB1

程序段1:

978-7-111-28256-3-Chapter14-124.jpg

程序段2:

978-7-111-28256-3-Chapter14-125.jpg

978-7-111-28256-3-Chapter14-126.jpg

6.接收站的OB100中的程序

在OB100中,预置BRCV接收的字节数,分别将DB 1、DB3和MB40~MB59存放发送站要读取的数据的地址区预置为W#16#4021、W#16#4023和W#16#4024,将DB2、DB4、DB 5、DB 6和MB20~MB39存放被写入和接收到的数据的数据区清零。

7.OB35中的程序

为了观察SFB PUT和GET连续传输数据的动态效果,在通信双方执行周期为100ms的组织块OB35中,将DB1.DBW0和DB3.DBW0增加不同的增量(1~4)。在变量表中监控接收到的对应的DB2.DBW0和DB4.DBW0是否动态变化。

8.通信程序的运行与监控

将程序和系统数据分别下载到两台CPU后,用电缆连接两台CPU和计算机的MPI接口,同时打开两个站的变量表,可以看到变量表中动态变化的数据。

发送站用SFC“GET”读取接收站的DB 1、DB 3、ID0和MB40~MB59中的数据,并将它们保存在本站的DB 2、DB 4、QD0和MB20~MB39中。

发送站用SFC“PUT”将本机的DB 1、DB 3、IW0和MB40~MB59中的数据,写入接收站的DB 2、DB 4、QW0和MB20~MB39中。

发送站用USEND将DB5和IB2中的数据发送给接收站的DB 5和QB2,用BSEND将DB 6和IB3中的数据发送给接收站的DB6和QB3。用发送站的变量表(见图14-57)和接收站的变量表(见图14-58)监控接收到的DB 2、DB 4和MB20~MB39的起始字和结束字。此外通信双方的变量表还监控ID0和QD0。

978-7-111-28256-3-Chapter14-127.jpg

图14-57 发送站的变量表

978-7-111-28256-3-Chapter14-128.jpg

图14-58 接收站的变量表

因为发送站周期性地调用GET和PUT,在两个变量表中可以看到DB2.DBW0和DB4.DBW0的值不断增大。还可以看到DB2.DBW18、DB4.DBW18、MW20和MW38在对方的OB100中被预置的值。

发送站的M4.0和M14.0分别是USEND和BSEND的发送请求信号。需要用变量表将它们的值设置为1(true),在它们的上升沿发送数据。USEND和BSEND发送数据后,可以根据接收站的QB2和QB3是否与发送站的IB2和IB3相同,来检查数据传输是否成功。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈