首页 理论教育 基于以太网的S7-300双向通信实现

基于以太网的S7-300双向通信实现

时间:2023-06-28 理论教育 版权反馈
【摘要】:在STEP 7中创建一个名为“S7_IE”的项目,生成一个S7-300的站点,设置其名称为SIMATIC 300。用M8.0为BSEND提供发送请求信号REQ。通信双方的OB35中的程序每100ms将发送的第一个字DB1.DBW0加1。在时钟脉冲M8.0的上升沿,通信双方每100ms发送200B数据。图8-13是在运行时复制的通信双方的变量表。

基于以太网的S7-300双向通信实现

1.硬件组态

S7通信可以用于工业以太网、PROFIBUS-DP或MPI网络,这些网络的S7通信的组态和编程的方法基本上相同。

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

在STEP 7中创建一个名为“S7_IE”的项目(见随书光盘中的同名例程),生成一个S7-300的站点,设置其名称为SIMATIC 300(1)。打开硬件组态工具HW Config,双击硬件目录中的导轨(Rail),生成一个机架,将电源模块、CPU 315-2PN/DP插入机架。在自动打开的以太网接口属性对话框的“参数”选项卡中,采用默认的IP地址192.168.0.1和子网掩码255.255.255.0。网关默认的设置是不使用路由器。单击“新建”按钮,生成以太网Ethernet(1)。双击机架中CPU内的MPI/DP行,打开MPI/DP属性对话框,采用默认的协议MPI)和默认的站地址2。将信号模块插入机架。单击“确定”按钮,返回HW Config。单击工具栏上的 978-7-111-53570-6-Chapter08-14.jpg 按钮,编译并保存组态信息。

在SIMATIC管理器中生成另一个S7-300站点,设置其站点的名称为SIMATIC 300(2) 见图8-8)。选中它以后双击“硬件”图标,打开HW Config,生成机架,将电源模块、CPU 315-2PN/DP和信号模块插入机架。在自动打开的CP属性对话框中,将IP地址设置为192.168.0.2,子网掩码为默认的255.255.255.0,将它连接到以太网上。单击“确定”按钮,返回HW Config。双击机架中CPU内的MPI/DP行,打开MPI/DP属性对话框,设置MPI地址为3。组态好硬件后,单击工具栏上的 978-7-111-53570-6-Chapter08-15.jpg 按钮,编译并保存硬件组态信息。

978-7-111-53570-6-Chapter08-16.jpg

图8-8 SIMATIC管理器

2.组态S7连接

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

978-7-111-53570-6-Chapter08-18.jpg

图8-9 网络与连接组态

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

单击“确定”按钮,出现S7连接属性对话框(见图8-10的左图)。在“本地连接端点”区,复选框“在一端配置”被禁止选中(该复选框为灰色),因此该连接是双向连接,在图8-9的连接表中,生成了相同的“本地ID”和“伙伴ID”。因为两个站互为通信伙伴,它们在连接表中的连接ID相同。单击“地址详细信息”按钮,可以查看地址的详细信息。

图8-10左图中的复选框“建立主动的连接”被自动选中,图8-9中连接表的“激活的连接伙伴”列显示“是”。在运行时,由本地站点(SIMATIC 300(1))建立连接。

978-7-111-53570-6-Chapter08-19.jpg

图8-10 通信双方的S7连接属性对话框

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

978-7-111-53570-6-Chapter08-20.jpg

图8-11 站点SIMATIC 300(2)一侧的连接表

组态好连接后,单击工具栏上的 978-7-111-53570-6-Chapter08-21.jpg 按钮,编译和保存连接的组态信息。 (www.xing528.com)

3.通信程序设计

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

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

因为PLCSIM只支持使用SFB的S7通信的仿真,所以本例程中调用的是SFB12/SFB13。打开程序编辑器左边的指令列表窗口中的文件夹“\库\Standard Library\System Function Blocks”,将其中的SFB12“BSEND”和SFB13“BRCV”指令拖放到程序区。对于硬件CPU 31x-2PN/DP,应调用库文件夹“\库\Standard Library\Communication Blocks”中的FB12/FB13。

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

978-7-111-53570-6-Chapter08-22.jpg

图8-12 数据包传送示意图

程序段1:发送数据

978-7-111-53570-6-Chapter08-23.jpg

程序段2:接收数据

978-7-111-53570-6-Chapter08-24.jpg

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

978-7-111-53570-6-Chapter08-25.jpg

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

4.通信的仿真实验

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

在时钟脉冲M8.0的上升沿,通信双方每100ms发送200B数据。图8-13是在运行时复制的通信双方的变量表。RUN模式时可以看到双方接收到的DB2.DBW0在不断地变化,还可以看到数据接收区的第二个字DBW2和最后一个字DBW198的值与发送方预置的相同。

978-7-111-53570-6-Chapter08-26.jpg

图8-13 两台CPU的变量表

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

我要反馈