1.实现PLC PROFIBUS主站之间的MS通信
通过图解,说明两个CPU之间通过PROFIBUS实现主从站之间的MS通信。
这个例子是结合现场实际情况来的,实际情况是在两套300系统之间进行数据通信,由于每个CPU300都带有ET200M从站,所以317的主DP口和315的DP口都只能是主站而不能配置为从站。并且两套系统之间距离较远,MPI不行,于是就利用了317的MPI/DP口配置成DP口来和315通信。
首先,在STEP 7中新建一个Project,分别插入两个S7-300站。这里我们插入的一个CPU315-2DP作为主站;另一个CUP317-2作为从站,并且使用317-2的第一个端口MPI/DP端口配置成DP口来实现和315-2DP的通信,如图2-10所示。
图2-10 STEP 7项目配置
首先,对从站CPU317-2进行组态:将317的第一个端口MPI/DP端口组态为PROFIBUS类型,并且创建一个不同于CPU自带DP口的PROFIBUS网络,设定地址如图2-11所示。
在操作模式页面中,将其设置为DP SLAVE模式,如图2-12所示,并且选择“Test,commissioning,routing”,是将此端口设置为可以通过PG/PC,在这个端口上对CPU进行监控,以便于我们在通信链路上进行程序监控。下面的地址用默认值即可。
然后,选择“Configuration”页面,创建数据交换映射区,如图2-13所示。
在这里我们创建了两个映射区,图中的红色框选区域在创建时是灰色的,包括上面的图中的“Partner”部分创建时也是空的,在主站组态完毕并编译后,才会出现图中所示的状态,如图2-14所示。
图2-11 网络配置
图2-12 DP从站设定
图2-13 创建数据映射区
图2-14 映射区数据
组态从站之后,再组态主站。插入CPU时,不需要创建新的PROFIBUS网络,选择从站建立的第二条(也就是准备用来进行通信的MPI/DP端口创建的那条)PROFIBUS网络即可。组态好其他硬件,确认CPU的DP口处于主站模式,从窗口右侧的硬件列表中的已组态的站点中选择CPU 31x,拖放到主站的PROFIBUS总线上,如图2-15所示。
图2-15 硬件配置
这时会弹出链接窗口,选择以组态的从站,单击“Connect”按钮,如图2-16所示。
图2-16 连接组态从站
然后,进入“Configuration”页面,可以看到前面在从站中设定的映射区域,逐条进行编辑(Edit…),确认主从站之间的对应关系。主站的输入对应从站的输出,主站的输出对应从站的输入。
至此,硬件的组态完成,将各个站的组态信息下载到各自的CPU中。通过NetPro可以看到整个网络的结构如图2-17所示。
图2-17 整体网络拓扑
硬件组态完毕,下载,PLC运行之后,数据并不会自动地交换,需要通过程序来执行。在组态中,input和output区域,也并不是实际硬件组态中的硬件地址,也就是说,input和output并不代表I/O模块的地址和数据。但是映射区域组态用到的input和output地址,同时也占用了I/O模块的组态地址,也就是说映射区的地址和I/O地址是并行的,不能重复使用。所以最好在硬件的I/O模块全部组态完毕之后再组态映射区。(www.xing528.com)
映射区的数据交换是通过系统功能块SFC14(DPRD_DAT——Read Consistent Data of a Standard DP Slave)和SFC15(DPWR_DAT——Write Consistent Data to a Standard DP Slave)实现的。
SFC14和SFC15是成对使用的,一个发送一个接收,缺一不可。数据的通信也是交互的,可以相互交换数据。在本例中,我们通过简单的数据来验证通信结果。
首先,我们在程序中插入数据区DB1,前面我们只建立了两个字(2 Word)的映射区,于是我们建立如下内容的DB1,为了查看方便,DB1的前半部分作为接收数据的存储区,后半部分用作发送数据的存储区,如图2-18所示。
图2-18 数据存储区
在317和315中我们插入同样的DB1,然后分别在OB1中编写通信程序。315(主站)中的程序如图2-19所示。
图2-19 cpu315程序
317中的程序如图2-20所示。
图2-20 cpu317程序
其中,程序的LADDR地址,对应的是硬件的映射区组态时本站的Local Addr中的地址,从站的Local Addr我们组态的是0,对应的Partner Addr也就是主站的地址是4。需要注意的是这里的地址是需要用16进制的格式来表示的,我们组态时是用10进制表示的。
完成之后,我们在各站中插入OB82、OB86、OB122等程序块,这些是为了保证当通信的一方掉电时,不会导致另一方的停机。完成之后,将所有的程序分别下载到各自的CPU中,各站切换到运行状态,通过PLC监控功能,设定数据之后,我们监控的结果如图2-21所示,上面的表格内容为主站315的数据,下面的是从站317的数据。
可以看到,两个站都分别将各自的DBB4~DBB7数据发送出去,并被另一方成功地接收后存储在各自的DBB0~DBB3中。
验证中,我们将一个站的CPU切换到STOP状态,可以看到另一个站的CPU硬件SF指示灯报警,但PLC正常运行不停机。待该站恢复之后,报警自动消失。
2.实现PLC与CP卡之间的通信
FDL(现场数据连接)PROFIBUS通信方式是十分方便的PLC—PLC之间的数据通信方式,最大为240B(而在broadcast/multicast方式中,最大为236B)。关于硬件组态/软件编程做一简述:
1)在S7-300机架或CP443-5、S7-400机架上,将硬件中插入CP342-5或CP343-5,组态PROFIBUS地址、传输速率及Profile,选“standard”,同样在另一个S7站在组态通信模块选择同一个PROFIBUS,并组态站号,并存盘,如图2-22所示。
图2-21 监控结果
2)在硬件组态画面中依次选菜单“Options”→“Configure network”,进入connection画面中,单击某一站的CPU,在底下会出现一列表格,双击第一栏,出现一个“Insert New Connection”画面。首先选择你所要进行通信的站,在“Connection Type”中选择“FDL”通信,激活“Display properties dialog”,单击“Apply”后进入FDL Connection属性画面。在这里,主要记住在“General”中“Block parameters”中ID及LADDR的值退出编译,存盘,并单击某一个站,下载到CPU中。同样,如果是多个站进行通信,必须在所通信的站之间建立不同的FDL连接,两个通信站中只在一个站中建立连接就行,如图2-23所示。
图2-22 网络创建
图2-23 FDL连接
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。