1.组态硬件
在STEP 7中创建一个名为“S7_DP”的项目(见随书光盘的同名例程),CPU为CPU 412-2DP。选中SIMATIC管理器左边窗口出现的“SIMATIC 400站点”,双击右边窗口中的“硬件”图标,打开硬件组态工具HW Config。可以看到自动生成的机架和4号槽中的CPU模块。将电源模块和信号模块插入机架。
用鼠标双击机架中CPU 412-2DP下面“DP”所在的行,单击出现的DP属性对话框的“常规”选项卡中的“属性”按钮(见图6-5),在出现的“属性-PROFIBUS接口DP”对话框中,单击“新建”按钮,出现“属性–新建子网PROFIBUS”对话框,采用默认的传输速率1.5 Mbit/s,配置文件为“标准”(主从通信时配置文件为“DP”)。多次单击“确定”按钮,返回HW Config,可以看到生成的名为“PROFIBUS(1)”的网络。CPU集成的DP接口和MPI接口默认的地址均为2,默认的工作模式为DP主站。单击工具栏上的 按钮,编译并保存组态信息。
在SIMATIC管理器中生成一个S7-300站。在HW Config中,将CPU 313C-2DP插入机架,在自动打开的“属性-PROFIBUS接口DP”对话框的“参数”选项卡中(见图6-5),设置站地址为3,选中“子网”列表中的“PROFIBUS(1)”,将CPU 313C-2DP连接到DP网络上,默认的工作方式为DP主站。在CPU属性对话框的“常规”选项卡中,设置MPI站地址为3。将电源模块和信号模块插入机架。单击工具栏上的 按钮,编译并保存组态信息。
2.组态S7连接
单击SIMATIC管理器工具栏上的 按钮,打开网络组态工具NetPro,可以看到两个站已经连接到DP网络上。选中CPU 412-2DP所在的小方框,在NetPro下面的窗口出现连接表(见图6-26)。双击连接表的第1行,在出现的“插入新连接”对话框中(见图6-27的左图),默认的通信伙伴为同一项目中的CPU 313C-2DP,默认的连接类型为S7连接。
图6-26 网络与连接组态
单击“确定”按钮,确认默认的设置,出现S7连接属性对话框(见图6-27的右图),因为S7-300集成的DP接口不支持双向S7通信,“本地连接端点”区中的“在一端配置”复选框被自动选中,并且不能更改,因此默认的连接方式为“单向”。在调用S7通信的SFB时,将会使用“块参数”区的“本地ID”(本地标识符)的值。
因为是单向连接,连接表中没有通信伙伴的ID(见图6-26),选中CPU 313C-2DP所在的小方框,连接表中没有连接信息。
图6-27中的复选框“建立主动连接”被自动选中,连接表的“激活的连接伙伴”列显示“是”。在运行时,由本地站点SIMATIC 400建立连接。
组态好连接后,单击工具栏上的 按钮,编译并保存网络组态信息。在单向S7连接中,仅需将网络组态信息下载到S7通信的客户机(CPU 412-2DP)。
图6-27 插入新连接与S7连接属性对话框
3.生成数据块
选中SIMATIC管理器左边窗口中SIMATIC 400(1)站的“块”文件夹,用鼠标右键单击右边的窗口,执行出现的快捷菜单中的命令,生成数据块DB1。打开DB1,生成一个名为ARAY,有20个字节元素的数组(见图6-20)。用复制和修改名称的方法创建内部结构相同的数据块DB2。
4.S7通信编程
在S7单向连接中,CPU 412-2DP作为客户机,在它的OB1中调用单向通信功能块GET和PUT,读、写服务器的存储区。CPU 313C-2DP作为服务器,不需要调用通信功能块。
在通信请求信号REQ的上升沿时激活SFB GET、PUT的数据传输。为了实现周期性的数据传输,用时钟存储器位提供的时钟脉冲作REQ信号。
组态时双击HW Config的机架中的CPU 412-2DP,在出现的CPU属性对话框的“周期/时钟存储器”选项卡中,设置时钟存储器字节为MB8(见实训六和图3-15),MB8的第1 位M8.1的周期为200ms(0状态和1状态各100ms)。
OB1的程序段1中的两条指令使M10.0和M8.1的相位相反,它们的上升沿互差100ms。它们分别用来作SFB GET和PUT的通信请求信号REQ。
双击打开CPU 412-2DP的OB1,用“视图”菜单中的命令设置编程语言为STL(语句表)。执行菜单命令“视图”→“总览”,打开程序编辑器左边的指令列表窗口。打开文件夹“\库\Standard Library\System Function Blocks”,将其中的SFB14“GET”拖放到程序区,设置SFB14的背景数据块为DB14,按回车键出现询问是否生成背景数据块的对话框,按“是”按钮确认。下面是OB1中的程序。SFB GET/PUT最多可以读、写4个数据区,本例程只读、写了两个数据区。
程序段1:时钟脉冲信号反相
程序段2:读取通信伙伴的数据
程序段3:向通信伙伴的数据区写入数据
SFB的在线帮助给出了STATUS的警告或错误代码的意义(www.xing528.com)
下面是CPU 412-2DP的OB35中的程序:
程序段1:每100ms将DB1.DBW0加1
在CPU 412-2DP的初始化程序OB100中,调用SFC21,将数据发送区DB1和MB40~MB59中的各个字分别预置为16#4001和16#4002,将DB2和MB20~MB39中的数据接收区的各个字清零。程序中的LW20和LW22是OB100的局部变量字。
下面是CPU 412-2DP的OB100中的程序:
程序段1:初始化存放要发送的数据的地址区
程序段2:初始化存放要发送的数据的地址区
程序段3:将存放接收到的数据的地址区清零
CPU 313C-2DP和CPU 412-2DP的OB100中的程序基本上相同,其区别在于前者将数据发送区DB1和MB40~MB59中的各个字分别预置为16#3001和16#3002。CPU 313C-2DP的OB1中没有通信程序,OB35每100ms将DB1.DBW加2。
5.通信的仿真实验
图6-28是该项目组态和编程结束后的SIMATIC管理器。单击工具栏上的 按钮,打开PLCSIM,出现名为S7-PLCSIM1的窗口(见图6-29的左图),可以将它视为一台仿真PLC,用MPI接口下载程序。
选中SIMATIC管理器左边窗口CPU 412-2DP的“块”,单击工具栏上的 按钮,下载“块”文件夹中的系统数据和程序块。下载后S7-PLCSIM1的标题栏出现了下载的PLC站点的名称SIMATIC 400(1)和CPU的型号CPU 412-2DP。生成一个视图对象,将它的地址改为DB2.DBW0。
单击PLCSIM工具栏上的 按钮,生成一个名为S7-PLCSIM2的新的仿真PLC(见图6-29的右图)。选中SIMATIC管理器左边窗口CPU 313C-2DP的“块”,单击工具栏上的 按钮,下载“块”文件夹中的系统数据和程序块。下载后S7-PLCSIM2的标题栏出现了下载的PLC站点的名称SIMATIC 300(1)和CPU的型号CPU313C-2DP。生成一个视图对象,将它的地址改为DB2.DBW0。
图6-28 SIMATIC管理器
图6-29 用PLCSIM仿真两台PLC
在时钟脉冲M8.1的上升沿,CPU 412-2DP每200ms读取一次CPU 313C-2DP的数据;在时钟脉冲M10.0的上升沿,每200ms将数据写入CPU 313C-2DP的数据区。
运行时通信双方的OB35使DB1.DBW0的值不断增大,然后发送给对方的DB2.DBW0。下载后将两台仿真PLC切换到RUN-P模式,可以看到双方接收到的第一个字DB2.DBW0的值在不断增大。
选中SIMATIC管理器中的SIMATIC 400(1)站,执行菜单命令“插入”→“S7块”→“变量表”,生成一个变量表。双击打开生成的变量表,在地址列输入两个接收地址区的第一个字和最后一个字。
用同样的方法生成SIMATIC 300(1)站的变量表,两个变量表中被监控的变量相同。
打开通信双方的变量表,执行“窗口”菜单中的“排列”→“垂直”命令,同时显示两个变量表。单击工具栏上的 按钮,选中的变量表进入监控状态,“状态值”列显示的是PLC中变量的值,标题栏出现浅蓝色的横条。单击选中另一个变量表,单击工具栏上的 按钮,使它也进入监控状态。
图6-30是在运行时复制的通信双方的变量表。在变量表中可以看到双方接收到的DB2.DBW0的值在不断地增大,此外可以看到各数据接收区接收到的数据与对方OB100中设置的值相同。
图6-30 两块CPU的变量表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。