首页 理论教育 基于以太网的双向S7通信实训优化

基于以太网的双向S7通信实训优化

时间:2023-06-26 理论教育 版权反馈
【摘要】:图6-31 组态以太网单击“确定”按钮,返回HW Config。在自动打开的以太网接口属性对话框的“参数”选项卡中,设置IP地址为192.168.0.2,子网掩码为默认的255.255.255.0,将它连接到以太网上。反之显示“否”,由通信伙伴建立连接。应将双向通信双方的连接表信息分别下载到各自的CPU。用M8.0为BSEND提供发送请求信号REQ。

基于以太网的双向S7通信实训优化

1.硬件组态

使用SFB BSEND/BRCV,可以进行快速的、可靠的数据传送。本实训中通信的双方都需要调用SFB BSEND/BRCV来发送数据和接收数据。

用STEP 7的“新建项目”向导创建一个名为“S7_IE”的项目(见随书光盘中的同名例程),CPU为CPU 315-2PN/DP,站点名称为SIMATIC 300(1)。打开HW Config,将电源模块信号模块插入机架,CPU的MPI地址为默认值2。双击机架中CPU内的PN-IO行,单击打开的PN-IO属性对话框中的“属性”按钮(见图6-31),打开以太网(Ethernet)接口属性对话框。单击“新建”按钮,生成以太网Ethernet(1),采用默认的IP地址192.168.0.1,子网掩码为默认的255.255.255.0,不使用路由器。

978-7-111-53804-2-Chapter06-64.jpg

图6-31 组态以太网

单击“确定”按钮,返回HW Config。单击工具栏上的 978-7-111-53804-2-Chapter06-65.jpg 按钮,编译并保存组态信息。

在SIMATIC管理器中生成一个名为SIMATIC 300(2)的S7-300站点(见图6-32)。选中它以后双击“硬件”图标,在HW Config中,将硬件目录的“\SIMATIC 300\RACK-300”中的导轨(Rail)拖放到组态工作区,将电源模块、CPU 315-2PN/DP插入机架。在自动打开的以太网接口属性对话框的“参数”选项卡中,设置IP地址为192.168.0.2,子网掩码为默认的255.255.255.0,将它连接到以太网上。双击机架中CPU内的MPI/DP行,单击打开的MPI/DP属性对话框中的“属性”按钮,打开MPI接口属性对话框。将MPI站地址改为3,将信号模块插入机架。

978-7-111-53804-2-Chapter06-66.jpg

图6-32 SIMATIC管理器

单击“确定”按钮,返回HW Config。单击工具栏上的 978-7-111-53804-2-Chapter06-67.jpg 按钮,编译并保存组态信息。

2.组态S7连接

组态好两个S7-300站后,单击工具栏上的 978-7-111-53804-2-Chapter06-68.jpg 按钮,打开网络组态工具NetPro,看到连接到以太网上的两个站(见图6-33)。选中“SIMATIC 300(1)”站的CPU 315-2PN/DP所在的小方框,在下面的窗口出现连接表,双击连接表第一行的空白处,建立一个新连接。

978-7-111-53804-2-Chapter06-69.jpg

图6-33 网络与连接组态

在出现的“插入新连接”对话框中,采用系统默认的通信伙伴(站点SIMATIC 300(2)的CPU 315-2PN),以及连接类型选择框中默认的S7连接。

单击“确定”按钮,出现S7连接属性对话框(见图6-34的左图)。在“本地连接端点”区,复选框“在一端配置”被禁止选中(该复选框为灰色),因此连接是双向的,在图6-33的连接表中,生成了相同的“本地ID”和“伙伴ID”。

复选框“建立主动的连接”被自动选中(见图6-34中的左图),连接表的“激活的连接伙伴”列显示“是”。在运行时,由本地节点(SIMATIC 300(1))建立连接。反之显示“否”,由通信伙伴建立连接。

选中NetPro中站点SIMATIC 300(2)的CPU 315-2PN/DP所在的小方框,下面的窗口是自动生成的该站点一侧的连接表(见图6-35),双击连接表中的“S7连接”,出现该站点一侧的连接属性对话框(见图6-34中的右图)。

978-7-111-53804-2-Chapter06-70.jpg

图6-34 通信双方的S7连接属性对话框

978-7-111-53804-2-Chapter06-71.jpg

图6-35 站点SIMATIC 400(2)一侧的S7连接表

组态好连接后,单击工具栏上的 978-7-111-53804-2-Chapter06-72.jpg 按钮,网络组态信息被编译和保存在系统数据中。 (www.xing528.com)

应将双向通信双方的连接表信息分别下载到各自的CPU。编译成功后,也可以通过SIMATIC的“块”文件夹中的“系统数据”下载硬件和连接的组态信息。

3.通信程序设计

双方的通信程序基本上相同。首先生成DB1和DB2,在数据块中生成有200个字节元素的数组ARAY。

为了实现周期性的数据传输,在组态硬件时,在CPU的属性对话框的“周期/时钟存储器”选项卡中将MB8组态为时钟存储器字节(见实训六和图3-15),MB8的第0位M8.0的周期为100ms。用M8.0为BSEND提供发送请求信号REQ。

因为PLCSIM只支持使用SFB的S7通信的仿真,所以本例程调用的是SFB12/SFB13。对于硬件CPU 31x-2PN/DP,应调用库文件夹“\库\Standard Library\Communication Blocks”中的FB12/FB13。

打开SIMATIC 300(1)的OB1,用“视图”菜单中的命令设置编程语言为STL(语句表)。执行菜单命令“视图”→“总览”,打开程序编辑器左边的指令列表窗口。打开文件夹“\库\Standard Library\System Function Blocks”,将其中的SFB12“BSEND”和SFB13“BRCV”指令拖放到程序区。

SFB BSEND/BRCV的输入参数ID为连接的标识符,R_ID用于区分同一连接中不同的SFB调用。对于同一个数据包,发送方与接收方的R_ID应相同。站点SIMATIC 300(1)发送和接收的数据包的R_ID分别为1和2,站点SIMATIC 300(2)发送和接收的数据包的R_ID分别为2和1(见图6-36)。下面是站点SIMATIC 300(1)的OB1中的程序。站点SIMATIC 300(2)的OB1的程序除了R_ID以外,其他参数的实参均相同。

978-7-111-53804-2-Chapter06-73.jpg

图6-36 数据包传送示意图

程序段1:发送数据

978-7-111-53804-2-Chapter06-74.jpg

程序段2:接收数据

978-7-111-53804-2-Chapter06-75.jpg

BSEND的IN_OUT参数LEN是要发送的数据的字节数,数据类型为WORD。因为不能使用常数,设置LEN的实参为MW14,在双方的初始化程序OB100中,用下面两条语句预置它的初始值为200:

978-7-111-53804-2-Chapter06-76.jpg

OB100和OB35的程序与实训四十一的类似。在OB100中,调用SFC21,将双方的数据发送区DB1的各个字分别预置为16#3001和16#3002,将DB2中的数据接收区的各个字清零。通信双方的OB35中的程序每100ms将发送的第一个字DB1.DBW0加1。

4.通信的仿真实验

用实训四十一所述的方法,打开PLCSIM,生成两个仿真PLC,其中各生成一个视图对象,将它的地址改为DB2.DBW0(见图6-29)。分别将两个站的系统数据和程序块下载到各自的仿真PLC。将两台仿真PLC切换到RUN-P模式。

在时钟脉冲M8.0的上升沿,通信双方每100ms发送200B数据。RUN模式时可以看到双方接收到的第一个字节DB2.DBW0的值在不断增大。

图6-37是在运行时复制的通信双方的变量表。RUN模式时可以看到双方接收到的DB2.DBW0在不断地变化,还可以看到数据接收区的第二个字DBW2和最后一个字DBW198的值与发送方预置的相同。

978-7-111-53804-2-Chapter06-77.jpg

图6-37 两块CPU的变量表

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

我要反馈