s7300之间的DP通讯.docx

上传人:苏美尔 文档编号:11653131 上传时间:2021-08-28 格式:DOCX 页数:21 大小:950.28KB
返回 下载 相关 举报
s7300之间的DP通讯.docx_第1页
第1页 / 共21页
s7300之间的DP通讯.docx_第2页
第2页 / 共21页
s7300之间的DP通讯.docx_第3页
第3页 / 共21页
s7300之间的DP通讯.docx_第4页
第4页 / 共21页
s7300之间的DP通讯.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《s7300之间的DP通讯.docx》由会员分享,可在线阅读,更多相关《s7300之间的DP通讯.docx(21页珍藏版)》请在三一文库上搜索。

1、+w实现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作为从站,并且使用3172的

2、第一个端口 MPI/DP端口配置成DP 口来实现和315-2DP的通讯。然后分别对每个站进行硬件组态:首先对从站CPU317-2进行组态:将317的第一个端口 MPI/DP端口组态为PROF旧US类型,并且创建一个不同于CPU自带DP 的PROFIBUS网络,设定地址。三i ipVEdit-lnsert : -PLCOpt Q %吕现血趣酣ui翟 7XI r MPI/DPPS 307 5APRDFIELlgD : DP master 那 tem(jSlot1j Properties MPI/DP -(R0/S2.1)5直T_ 8 F 10 uA7X2在操 作模式 页面 中,将 其设置 为DP

3、SLAVE 模式, 并且选 择J Modf FS 前 7General j Addresses | Operating Mode | Configiiation | Clock |Short Do3cnpbonMPI/DFNameInlwfaceAddre$:I PROFIBUS lypePropertes. INetworked:CommentDKCancelifcTest,commissioning,routing ” ,是将此端口设置为可以通过 PG/PC在这个端口上对CPU进行监控,以便于我们在通讯链路上进行程序监控。下面的地址用默认值即可。General | Addfesses Op

4、erating Mode Configuration ClockCancelHelp然后选择Con figuration页面,创建数据交换映射区。Properties - MPl/DP (R062.1)这里我们创建了 2个映射区,图中的红色框选区域在创建时是灰色的,包括上面的图中的Partner部分创建时也是空的,在主站组态完毕并编译后,才会出现图中所示的状态。由于我们这里只 是演示程序,所以创建的交换区域较小。组态从站之后,再组态主站。插入CPU时,不需要创建新的PROFIBUS网络,选择从站建立的第二条(也就是准备用来进行通讯的MPI/DP端口创建的那条)PROFIBUS网络即可。组态好其

5、它硬件,确认CPU的DP 口处于主站模式,,从窗口右侧的硬件列表中的已组态的站点中选择CPU 31X,拖放至I主站的PROFIBUS总线上,HW Config - Master_315 (Configuration) - S7_Pro1反|1三UR邮。Station Edit Insert PLC View Options Window Help_ 5 XPS 307 5A1011DI 必 DC24V DO32xDC241;14 口 S7-300 CP 342-5 口 SIMATICHMI S 而 X-BM147/CPU+ LJ DP VO slaves+DPZAS-i+DP/PA LrkPr

6、ess Fl to get Help.CPU 31 x intefface module lotCPU & the S7-X0 as DP slavehardware and dagno$tic interrupt enabled这时会弹出链接窗口,选择以组态的从站,点击 Connect按钮,然后进入Configuration页面,可以看到前面在从站中设定的映射区域,逐条进行编辑(Edt),确认主从站之间的对应关系。主站的输入对应从站的输出,主站的输出对应从站CPU中。通过NetPro可以看的输入。至此,硬件的组态完成,将各个站的组态信息下载到各自的 到整个网络的结构图。口叵Sire iI 脚

7、ml vAan jjJFL A15-2 DPStilcm comfijijrAricrt _PUPress Fl loget Help.inift!* |_po 1|-CiAPiuAitini Flb!jSleitieiKSltip7A7raJS7_Prol-I S7.FV1 稠Surrbolfc r am*A35ter_315 J CPU3152DP -囱 57PrcaranfilAcurccs fe Glockt 5lavel3l7Z gj CPU517 2DP 同 57 PrcaranfJI acMSources tn IRIftrkA2.编写程序。硬件组态完毕,下载,PLC运行之后,数

8、据并不会自动交换。需要通过程序来执行。在组态中,in put和output区域,也并不是实际硬件组态中的硬件地址,也就是说 in put和output并不代表I/O模块的地址和数据。但是映射区域组态用到的in put和output地址,同时也占用了 I/。模块的组态地址,就是说,映射区的地址和I/O地址是并行的,不能重复使用。所以最好在硬件的I/。模块全部组态完毕之后再组态映射区。映射区的数据交换是通过系统功能块SFC14( DPRD_DATRead Consistent Data of aStandard DP Slave)和 SFC15 ( DPWR_DAT Write Consisten

9、t Data to a Standard DP Slave)实现 的。SFC14和SFC15是成对使用的,一个发送一个接收,缺一不可。数据的通讯也是交互的,可以相互交换数据。本例中,我们通过简单的数据来验证通讯结果。首先,我们在程序中插入数据区DB1,前面我们只建立了 2个字(2 Word)的映射区,于是我们建立如下内容的DB1,为了查看的方便,DB1的前半部分作为接收数据的存储区,后半部分用作发送数据的存储 区。-DB1 - S7_Pra1 Sla!_31 7 2VZPU 317 2 DPAddxessHaseTypeIm t = a 1 v a.1 ue。川STRUCT-K).ODB.in

10、OBYTEB#16#0+1.0DB_inlBYTEB#16 蚪+2.0DB_in2BYTEB160+3.0DB_m3BYTEBftlSW十4.0DB_outOBYTEB#16#0+5.0DB-ovtlBYTEB#i6ro托,0DB_oul2BYTEB#16#0*7.0DB_out3BYTEB16W=8.0mSTRUCT在317和315中我们插入同样的DB1,然后分别在0B1中编写通讯程序。315 (主站)中的程序如下:OBI : Hjfain Progran Sweep (Cycle)oxk 1SFC14Read ConsistentData of a StandardDP SlaveDFRD

11、_DAT”EMENONetrork N * Tills :SFC15Wiite ConsistentData to a StajndardDF SlaveffDFVK_BATnEMENORET VAL -MV100317中的程序如下:SFC14Read ConsistentData of a Standsrd DP SlaveFFRD DAT”EMENO一LALdQret vjil-MVLOODE 肚 i.O-BYTE 4 JletTozk 2 : Title:其中,程序的LAD DR地址,对应的是硬件的映射区组态时本站的Local Addr中的地址,从站的Local Addr我们组态的是0,

12、对应的Partner Addr也就是主站的地址是4。需要注意的是这里 的地址是需要用16进制的格式来表示的,我们组态时是用10进制表示的。完成之后,我们在各站中插入OB82、OB86、OB122等程序块,这些是为了保证当通讯的一方掉电时,不会导致另一方的停机。完成之后,将所有的程序分别下载到各自的CPU中,个站切换到运行状态,通过 PLC监控功能,设定数据之后,我们监控的结果如下:上面的表格内容为主站315的数据,下面的是从站317的数据。可以看到,两个站都分别将各自的DBB4 - DBB7数据发送出去并被另一方成功接收后存储在各自的DBBO - DBB3中。验证中,我们将一个站的 CPU切换

13、到STOP状态,可以看到,另一个站的CPU硬件SF指示灯报警,但PLC正常运行不停机。待该站恢复之后,报警自动消失。扩展问题:在一个站的CPU掉站之后,另一个站的接收数据区显示的仍然是最后一次接收到的数据,并且,即 使在这种状态下,居然仍然无法修改该数据区内容。这样就存在一个问题,当前站需要知道当前接收 数据存储区的内容是否是实时的数据。如何判断。大概思路:+w方法1,用以前的方法,在每个数据接收周期开始前,将已接收数据清空。这样当接收周期内接收不到新的数据时,就可以察觉到。但是问题是,SFC14和SFC15没有接收是否完成、是否成功等标识位,并且,在接收不到新的数据时,原有数据不能修改。此方

14、法不通。方法2,通过别的方式方法检测两个站之间的通讯状态。心跳?在SIEMENS的官方文档中,有这样的描述:主站:主站掌握总线中数据流的控制权。只要它拥有访问总线权(令牌),主站就可在没有外部请求的情况下发送信息。在PROFIBUS协议中,主站也被称作主动节点。从站:从站是简单的输入、输出设备。典型的从站为传感器,执行器以及变频器。从站也可为智 能从站,入S7-300/400带集成口的CPU等。从站不会拥有总线的访问授权。从站只能确认收到的信 息或者在主站的请求下发送信息。从站也被称作被动节点。另外,SIEMENS对SFC14/15的描述也分别是:用于读取Profibus从站的数据/用于将数据

15、写入 Profibus 从站。根据这些描述,通过CPU集成口通讯这种方式下,作为从站的CPU应该属于“智能从站”,但是SIEMENS的描述中,却没有说智能从站和普通的从站之间有什么区别。那么根据上面的 主从站的描述,主站可以主动的获取到从站的数据,并可以自主的将数据写入从站;而从站必须在主站的指令下获取或者发送数据。而在本例中,这些说法似乎无法成立。本例中,SFC14、SFC15是成对使用的,不论在主站上还是从站上, 主从站之间的SFC14 和SFC15必然是需要成对出现的。也就是说,任何一方没有 SFC15运行的的话,另一方的 SFC14都读不到数据。而任何一方没有SFC14的话,另一方的S

16、FC15发送出来的数据也无人接收。至少从这点看来,看不出主从站有什么区别。不过,联想到以前曾经做过S7-300和MM430的Profibus通讯,该通讯方式中,显然MM440是作为从站出现的,所以在正确组态之后,只需要在主站(CPU)中写好SFC14/15即可,当然,MM440中我们也写不进去程序。那 么在这种方式中,可以说是完全的遵守了 SIEMENS官方文档中的说法。同时也说明,在“智能从 站”这种方式下,并不遵守SIEMENS官方文档中对从站的描述。再次研究SFC14/15的收发状态,发现,可能是因为数据的存在是过程映像中,所以只要 SFC15发送过一次,数据即存在于过程映射中,SFC1

17、4随时都从映像中读取数据,所以存在前面说的,SFC14运行过程中,是无法修改接收数据存储区的数据的。脱离SFC14/15,而使用MOVE方法的研究:不使用SFC14/15,而是利用组态的时候产生的I/O地址来传数据。根据创建过程映射区+W时的组态信息,我们写写出了如下的程序:在主站315-2DP中:就删Title;Netwoik 4 : Title:Cojoent:M10-3MOVE16Al4151817PELDED4 OUT16S141S16XY 7D4在从站317中:MIO. 216fl4151617IDO-Coiniie rdt:MOVEEN EMO 16114151617IN OUT -DBl.DBDOCoiment;11MOVEI7A/T11Brik-116*2425262?DB1.DED4 -INOUT16S24252627其中,M位的使用是测试程序的不同情况下使用的临时点,和本程序功能无关。由此可见,在这种方式下,因为组态时组态的地址是系统的I区和Q区所以是可以用MOVE来实现通讯的,但是同时也存在的问题是,这种方式下,通讯所用的I/Q区占用了S7-300的系统区,而S7-300的系统区可使用范围是有限的,所以在系统的实际多 I/O模块较 时,通讯的数据量将会变得更加有限。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1