1.硬件组态
使用SFB BSEND/BRCV,可以进行快速的、可靠的数据传送。只有S7-400之间,才可以进行双向S7通信。本实训中通信的双方都要调用SFB BSEND/BRCV来发送数据和接收数据。
用STEP 7的“新建项目”向导创建一个名为“S7_MPI”的项目(见随书光盘中的同名例程),CPU为CPU 412-2DP。打开HW Config,将电源模块和信号模块插入机架。CPU的MPI地址和DP地址均为默认值2,将它连接到MPI网络上。单击工具栏上的按钮,编译并保存硬件组态信息。
在SIMATIC管理器中生成一个名为SIMATIC 400(2)的S7-400站点(见图6-28)。在HW Config中,将电源模块、CPU 412-2DP和信号模块插入机架,在CPU属性对话框的“常规”选项卡中,设置DP地址和MPI地址均为3,将它连接到MPI网络上。单击工具栏上的按钮,编译并保存组态信息。
图6-28 SIMATIC管理器
2.组态S7连接
组态好两个S7-400站后,单击工具栏上的按钮,打开NetPro,看到连接到MPI网络上的两个站(见图6-29)。选中“SIMATIC 400(1)”站点的CPU 412-2DP所在的小方框,在下面的窗口出现连接表,双击连接表第一行的空白处,建立一个新连接。
图6-29 网络与连接的组态
在出现的“插入新连接”对话框中,系统默认的通信伙伴为站点SIMATIC 400(2)的CPU 412-2DP,“类型”选择框中默认的连接类型为S7连接。
单击“确定”按钮,出现S7连接属性对话框(见图6-30的左图)。在“本地连接端点”区,复选框“单向”被禁止选中(该复选框为灰色),因此连接是双向的,在图6-29的连接表中,生成了相同的“本地ID”和“伙伴ID”。
复选框“建立主动的连接”是默认的设置(见图6-30中的左图),选中该复选框时,连接表的“激活的连接伙伴”列将显示“是”。在运行时,由本地节点建立连接。反之显示“否”,由通信伙伴建立连接。
图6-30 通信双方的S7连接属性对话框
选中NetPro中站点SIMATIC 400(2)的CPU 412-2DP所在的小方框,下面的窗口是自动生成的该站点一侧的连接表(见图6-31),双击连接表中的“S7连接”,出现该站点一侧的连接属性对话框(见图6-30中的右图)。
图6-31 站点SIMATIC 400(2)一侧的S7连接表
组态好连接后,单击工具栏上的按钮,网络组态信息被编译和保存在系统数据中。
对于双向通信,应将通信双方的连接表信息分别下载到各自的CPU。编译成功后,也可以通过SIMATIC的“块”文件夹中的“系统数据”下载硬件和连接的组态信息。(www.xing528.com)
3.通信程序设计
双方的通信程序基本上相同。首先生成DB1和DB2,在数据块中生成有200个字节元素的数组ARAY。然后生成OB35和OB100。
SFB BSEND/BRCV的输入参数ID为连接的标识符,R_ID用于区分同一连接中不同的SFB调用。对于同一数据包,发送方与接收方的R_ID应相同。站点SIMATIC 400(1)发送和接收的数据包的R_ID分别为1和2,站点SIMATIC 400(2)发送和接收的数据包的R_ID分别为2和1。
为了实现周期性的数据传输,用周期为100ms的时钟存储器位M8.0为BSEND提供发送请求信号REQ。在组态硬件时,在CPU属性对话框的“周期/时钟存储器”选项卡设置MB8为时钟存储器字节(见图3-15)。
打开SIMATIC 400(1)的OB1,用“视图”菜单中的命令设置编程语言为STL(语句表)。执行菜单命令“视图”→“总揽”,打开程序编辑器左边的指令列表窗口。打开文件夹“\库\Standard Library\System Function Blocks”,将其中的SFB12“BSEND”和SFB13“BRCV”指令拖放到程序区。下面是站点SIMATIC 400(1)的OB1中的程序。
BSEND的输入参数LEN是要发送的数据的字节数,数据类型为WORD(无符号的字)。因为不能使用常数,设置LEN的实参为MW14,在双方的初始化程序OB100中,用下面两条语句预置它的初始值为200:
在初始化程序OB100中,调用SFC21,将双方的数据发送区DB1的各个字分别预置为16#4001和16#4002,将DB2中的数据接收区的各个字清零。
通信双方的OB35中的程序每100ms将发送的第一个字DB1.DBW0加1。
4.通信的仿真实验
用实训三十八所述的方法,打开PLCSIM,生成两台仿真PLC,其中各生成一个视图对象,将它的地址改为DB2.DBW0(见图6-32)。分别将两个站的系统数据和程序块下载到各自的仿真PLC。将两台仿真PLC切换到RUN-P模式。
图6-32 用PLCSIM仿真两台PLC
在时钟脉冲M8.0的上升沿,通信的双方每100ms发送200B数据。运行时可以看到双方接收到的第一个字节DB2.DBW0的值在不断增大。
图6-33是在运行时复制的通信双方的变量表。可以看到双方接收到的DB2.DBW0在不断地变化,还可以看到数据接收区的第二个字DBW2和最后一个字DBW198的值与发送方预置的相同。
图6-33 两块CPU的变量表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。