s7-300之间的DP通讯

上传人:cn****1 文档编号:430856042 上传时间:2023-11-30 格式:DOC 页数:19 大小:1.17MB
返回 下载 相关 举报
s7-300之间的DP通讯_第1页
第1页 / 共19页
s7-300之间的DP通讯_第2页
第2页 / 共19页
s7-300之间的DP通讯_第3页
第3页 / 共19页
s7-300之间的DP通讯_第4页
第4页 / 共19页
s7-300之间的DP通讯_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《s7-300之间的DP通讯》由会员分享,可在线阅读,更多相关《s7-300之间的DP通讯(19页珍藏版)》请在金锄头文库上搜索。

1、实现Profibus主从站之间的MS通讯通过图解,说明2个CPU之间通过Profibus实现主从站之间的 MS通讯。这个例子是结合某现场的实际情况来的,实际情况是在2套300系统之间进行数据通讯,由于每个CPU300都带有ET200M从站,所以317的主DP 口和315的DP 口都只能是主站 而不能配置为从站。并且 2套系统之间距离较远, MPI不行,于是就利用了 317的MPI/DP 口配置成DP 口来和315通讯。1首先,在STEP 7中新建一个 Project,分别插入2个S7-300站。这里我们插入的一个CPU315-2DP,作为主站;一个 CUP317-2作为从站,并且使用 317-

2、2的第一个端口 MPI/DP端口配置成DP 口来实现和315-2DP的通讯。然后分别对每个站进行硬件组态:匚SIMATJC Manager - $7_Prn1 - C:Program File5Siemen5Step7s7projS7_Pro1 首先对从站 CPU317-2进行组态:将 317的第一个端口 MPI/DP端口组态为 PROFIBUS类型,并且创建一个不同于CPU自带DP 口的PROFIBUS网络,设定地址。Slave 317-2 (Con(瞄 1, in 1 Jil In erf.k?PFiUFIBUSn): DP刘覇mm QPFiUFIBUSn): DP ma$ter 刘覇mm

3、 Q5eFinrT1011创刮(0) UR创刮(0) URSlotX!X2j ModP5血CPU 3 膺佃DP在操作模式页面中,将其设置为 DP SLAVE模式,并且选择“Test,commissioning,routing ”,是将此端口设置为可以通过PG/PC在这个端口上对 CPU进行监控,以便于我们在通讯链路上进行程序监控。下面的地址用默认值即可。Properties - WPI/DP (R0/S2.1)这里我们创建了 2个映射区,图中的红色框选区域在创建时是灰色的,包括上面的图中的Partner部分创建时也是空的,在主站组态完毕并编译后,才会出现图中所示的状态。由于我们这里只是演示程序

4、,所以创建的交换区域较小。组态从站之后,再组态主站。插入CPU时,不需要创建新的 PROFIBUS网络,选择从站建立的第二条(也就是准备用来进行通讯的MPI/DP端口创建的那条)PROFIBUS网络即可。组态好其它硬件,确认CPU的DP 口处于主站模式,从窗口右侧的硬件列表中的已组态的站 点中选择 CPU 31X,拖放到主站的 PROFIBUS总线上,醱 HW Config - Master_315 (Configuration) * S7_Pro1PtahlecCPU 31 x interface module for CPU of the S7-300 as DP slave, hardr

5、e and diagnostic interrupt enabledft Station Edit Insert PLC View Options Window Helpo n于(H劈冒卫 囁血趾口習农Press Fl to get Help.ET20apro/CPUET2C0S?CPUPFiOFlBUS(21: DP roarer system (1)T g(4)S7-300l f f ff什Standard |1= PHOFIBLirDP-+ _J Additional Field Device 3 CiFiObject矗- =Danfigived 乩沁恳 画 中 U 31* 一 S CF

6、Ll41xQ01IfPS 30? 5A2IFCPU 315 2 1X2dm134DI32DC24VlnDO32WDC24M678gia11+ 邑 PC station as DP + 口 S7-300tP 342-5( 王 _J SIMATICHMI-Stai百 XBM147/CPUI DPVO slavesT U DP/ASj | Cl DP/PA Link这时会弹出链接窗口,选择以组态的从站,点击Connect 按钮,然后进入 Configuration页面,可以看到前面在从站中设定的映射区域,逐条进行编辑(Edit),确认主从站之间的对应关系。主站的输入对应从站的输出,主站的输出对应从站

7、 的输入。CPU中。通过 NetPro可以看至此,硬件的组态完成,将各个站的组态信息下载到各自的 到整个网络的结构图。uTS注in圍| Symbcfc 门 jtiedlt inB S7_Prol叵 gj Ma$ieu315 -gj CPU 315-2 DP -st| S7 Progfam(4) 血 S ogress ,q Blocks-哪 Slave_317-2I- | CFU 3172 DP -sfl S7 Program(3) al Sources|pj BlocksObjgtriBme 叫 Haidwart HCPU 315*2 DPSlaticn conliguraliDn CPUPr

8、ess Fl to et Halp.NelPro S7_Pro1 (Network) - C:Program FileHXsFproj 匚|叵|区2.编写程序。硬件组态完毕,下载,PLC运行之后,数据并不会自动交换。需要通过程序来执行。在组态中,in put和output区域,也并不是实际硬件组态中的硬件地址,也就是说,in put和output并不代表I/O模块的地址和数据。但是映射区域组态用到的in put和output地址,同时也占用了 I/O模块的组态地址,就是说,映射区的地址和I/O地址是并行的,不能重复使用。所以最好在硬件的I/O模块全部组态完毕之后再组态映射区。映射区的数据交换是

9、通过系统功能块SFC14( DPRD_DATRead Consistent Data of aStandard DP Slave)和 SFC15 ( DPWR_DATWrite Consistent Data to a Standard DP Slave)实现的。SFC14和SFC15是成对使用的,一个发送一个接收,缺一不可。数据的通讯也是交互的,可以相互交换数据。本例中,我们通过简单的数据来验证通讯结果。首先,我们在程序中插入数据区DB1,前面我们只建立了 2个字(2 Word)的映射区,于是我们建立如下内容的DB1,为了查看的方便,DB1的前半部分作为接收数据的存储区,后半部分用作发送数据

10、的存储区。V.DB1 - S7_Pro1Slave_317 2KPU 317 2 DP|T|OxAddressNaa.eTypeInitial valueSTRUCT+0.0BTTEB#16S0+1.0BYTEB#16#0+2.-JDB in2BYTEE#16#0+3.0feB,in3BYTEB#16#0+40BYTEB#16#0pB out1BYTEB#16#0DB out2BYTEB#16#0+?.0DB out3BYTE=8.0END SIKUCT在317和315中我们插入同样的 DB1,然后分别在 0B1中编写通讯程序。315 (主站)中的程序如下:0B1 : Main Frogram

11、 Sweep (Cycle)Title:Netvork 2 : Title:LADDRSFC15Write ConsistentData to a StandardDF SlaveDPWR_DAT*RET 7AL-W100RECORDP#DB1.DEX4.0BYTE 4-317中的程序如下:0B1 : Hlain Prograni Sweep (Cycle):Title:SFC14Read ConsistentData of a Standard DF Slave DPRD DATENENO1650 -LADDK)KET VAL广P#DB1?XDBXO.O ) -BYTE 4 JNetvoTk

12、 2 : Title:其中,程序的LADDR地址,对应的是硬件的映射区组态时本站的Local Addr中的地址,从站的Local Addr我们组态的是0,对应的Partner Addr也就是主站的地址是 4。需要注意的 是这里的地址是需要用 16进制的格式来表示的,我们组态时是用10进制表示的。完成之后,我们在各站中插入OB82、OB86、OB122等程序块,这些是为了保证当通讯的一方掉电时,不会导致另一方的停机。完成之后,将所有的程序分别下载到各自的CPU 中,个站切换到运行状态,通过PLC监控功能,设定数据之后,我们监控的结果如下:上面的表格内容为主站 315的数据,下面的是从站 317的

13、数据。匿|Q阴週ISnn IfxTable Edit Insert PLC Variable View Options Window Helpo|E|q sj糾臨寵aX| S | K?| 创两歩|占RUN_ProlMaster_315Al可以看到,两个站都分别将各自的DBB4 DBB7数据发送出去并被另一方成功接收后存储在各自的 DBB0 DBB3中。验证中,我们将一个站的CPU切换到STOP状态,可以看到,另一个站的CPU硬件SF指示灯报警,但 PLC正常运行不停机。待该站恢复之后,报警自动消失。扩展问题:在一个站的CPU掉站之后,另一个站的接收数据区显示的仍然是最后一次接收到的数据, 并且,即使在这种状态下,居然仍然无法修改该数据区内容。这样就存在一个问题,当前站 需要知道当前接收数据存储区的内容是否是实时的数据。如何判断。大概思路:方法 1,用以前的方法,在每个数据接收周期开始前,将已接收数据清空。这样当接收周期内接收不到新的数据时,就可以察觉到。但是问题是, SFC14 和 SFC15 没有接收是否完 成、是否成功等标识位,并且,在接收不到新的数据时,原有数据不能修改。此方法不通。方法 2,通过别的方式方法检测两个站之间的通讯状态。心跳?在 SIEMENS 的官方文档中,有这样的描述:主站:主站掌握总线中数据流的控制权。只要它拥有访问总线权(令牌) ,主站就可在 没有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号