S7-300样图
实验五 基于UDP通信的组播和广播
1) 目的
掌握基于UDP通信的组播和广播
2) 实验内容
①通过NetPro建立基于CP卡的UDP组播连接,注意组播IP地址,发送和接收端口号;
②通过NetPro建立基于CP卡的UDP广播连接,接收端为带集成PN口的CPU注意组播IP地址,发送和接收端口号;
③通过OC_Wizard建立基于带集成PN口的CPU的UDP广播连接。
3) 实验流程
①组播
新建项目,插入S7-300站,组态CPU 315-2 PN/DP和CP 343-1,对方电脑组态CPU 314-2 PN/DP,新建Ethernet(1)网络,系统自动分配IP地址和Device name,可避免参数冲突。(互相建立组播)
在NetPro中,选中带CP卡的300(1)站点的CPU,插入新的连接,连接方式为UDP连接,伙伴选为组播,如下图所示。
点击OK后生成的UDP连接,注意其块参数,在后续编程中要使用,如下图所示。
在UDP连接的地址栏中,设置广播IP地址以及端口号参数,如下图所示。
编程
先建立DB块用于接发送数据存储如下:
在调用FC5/6编程,注意其调用:
建立变量表监控如下:
②广播
新建项目,插入S7-300站,组态CPU 315-2 PN/DP和CP 343-1,对方电脑组态CPU314-2 PN/DP,新建Ethernet(1)网络,系统自动分配IP地址和Device name,可避免参数冲突。如下图所示:
(注意:CPU+CP只能作为UDP广播发送方,其作为接收方时,CP会拦截住信息,所以只能用其作为发送方。所以只能用其发,然后用一个带集成PN的CPU接受)
在NetPro中,选中CPU,插入新的连接,连接方式为UDP连接,伙伴选为广播,如下图所示。
点击OK后生成的UDP连接,注意其块参数,在后续编程中要使用,如下图所示。
在UDP连接的地址栏中,设置组播IP地址以及端口号参数,注意本地端口为2000,远程端口为2002,如下图所示。
在另外一台电脑的NetPro中,选中300(1)站点CPU,然后使用OC Wizard建立一个普通的两CPU之间的UDT连接,对方IP地址顺便设置,只要在一个网段的UDT连接就行,最终都能够收到广播所发送信息。
发送站的编程
发送方编写FC5即可,作为广播方,其是接收不到被广播的信息的。
接收站编程
因为是用OC Wizard的方式,所以可编写FB65(建立连接)/FB67(发送)/FB68(接受)/FB66(断开连接),接收站亦可以有自己的连接,在他接受广播的同时。(所以至少要调用FB65和68用来接受广播)
分别选中发送站和接收站,编译保存,然后下载至相应CPU中,使CPU正确运行。
在发送站和接收站中分别新建变量表,将相关变量添加,进行程序运行的监控。
则在接收站能够接收到广播的信息
③带集成PN口的CPU的UDP广播连接
新建项目,插入S7-300站,组态CPU 315-2 PN/DP,新建Ethernet(1)网络,系统自动分配IP地址和Device name,可避免参数冲突。
在开始->SIMATIC打开OC Wizard,如上述实验所述,选择STEP 7项目及块文件,选择新建,单击下一步,选择连接方式为UDP,如下图所示。
UDP连接的伙伴为未指定,如下图所示。
连接参数设置,主要是设置为UDP广播连接,IP地址自动变为255,如下图所示。
UDP连接的本地和远程端口号如下图所示。
创建UDP连接的所用的包括连接和地址信息的DB165和DB165(可以放在同一个DB块,也可以放在不同的DB块),如下图所示。
编程
与前面编程一致相同,编程如下:
编译保存,然后下载至相应CPU中,使CPU正确运行。(互相广播)
在发送站和接收站中分别新建变量表,将相关变量添加,进行程序运行的监控。
广播接收成功!
4) 总结
1. 在调用FC5/6一定要注意是在CP下调用还是CPU下调用。同时需要注意:CPU+CP只能作为UDP广播发送方,其作为广播接收方时,CP会拦截住信息,所以只能用其作为发送方,然后用一个带集成PN的CPU接收。
2. 上述通信中发送完成信号的到来是最后一包数据的第一个字节进入堆栈缓冲区,接收完成信号的到来是接收缓冲区的数据全部进入接收DB中时。发送一次完成后,要触发两次接收的上升沿才能完成接收,第一次是建立接收缓冲区,第二次将接受缓冲区数据进入接收DB中。
敬请期待下一篇-S7协议篇—ISO通信
PS:友情提醒,所有文章属于一个系列,顺着看效果更好,欢迎大家翻阅我之前所写文章。欢迎大家关注工控谭俊豪,该系列会持续更新~
作者简介
谭俊豪:重庆大学机械工程学院学士,西门子中国公司培训生
本文为原创文章,于头条首发,欢迎关注转载,请注明出处和作者!