当前位置: 主页 > PLC控制

西门子S7 300与S7 200的DP通讯的疑问

单位有一个315-2DP的CPU需要通过EM277与一台国产的触摸屏建立通讯,大致的工作原理是首先让触摸屏与S7200建立通讯,然后再让S7200与S7300建立DP通讯,将S7200的数据传输到S7300的CPU。小弟经过啃了几天相关资料后,对S7300与S7200的DP通讯有了一定的了解,但是始终有一个问题没有搞明白。

资料上所举出的例子大多是单个数据的(1个W,或者1个B)传输,以8BytesOut/8BytesIn(即8字节输出/8字节输入)为例:S7300侧的接收地址为PIB10~PIB17,发送地址为PQB10~PQB17,S7200侧的接收地址为VB100~VB107,发送地址为VB108~VB115。则其数据传输的模式为:

VB100←←PQB10VB108→→PIB0
VB101←←PQB11VB109→→PIB1
VB102←←PQB12VB110→→PIB2
VB103←←PQB13VB111→→PIB3
VB104←←PQB14VB112→→PIB4
VB105←←PQB15VB113→→PIB5
VB106←←PQB16VB114→→PIB6
VB107←←PQB17VB115→→PIB7

这样就可以在S7200中编写程序将数据赋值到S7200的VB100~VB107区域,再将该区域的数据传输到S7300侧。对于数据较少的程序来说,8Bytes可以满足需要了,比方说:要把S7200的MB18的值传送给S7300的MB18,应在S7200的程序中,用MOVB指令将MB18传送到VB108~VB115的某一个字节,例如VB112,通过通讯,VB112的值传送给了S7300的IB4,再在S7300的程序中将IB4的值传送给MB18。

也就是说,S7200中的数据必须与发送区域VB108~VB115的某一个字节(或是字)一一对应,才能保证准确地发送到S7300的接收区域。假如S7200中只有8个字节的数据需要传输,这样做当然可以,但是如果所需传输的数据很多,这时应该怎么办呢?

我们所用的触摸屏上面需要组态近50个输入框,输入的数据都是用字WORD来存储的,也就是说有50个W的数据需要传送到S7300,且必须和S7300里的DB数据相一一对应。可是EM277的通讯方式里面最大的就是32WIN/32WOUT的,即32个字的输入/32个字的输出。假如S7200的发送区域是VW1032~VW1063,也只能保证32个W的数据一一对应的传输,剩余的数据应该怎么传输呢?像我们这样的情况应该如何处理呢?

最佳答案

1、你的理解是正确的。S7300与S7200(EM277)的DP通讯是通过地址映射来实现数据交换的。可以参考:
见《西门子S7-200S7-300进行PROFIBUS通信图解》连接:
htTP://www.gongkong001.com/News/4934.html
《西门子S7-200与S7-300之间的通讯》下载:
http://www.ad.siemens.com.cn/download/SearchResult.ASpx?searchText=A0148

http://space.cechina.cn/infosharedownload.aspx?id=366
2、如果所需传输的数据很多,这时应该怎么办呢?
这时要应用EM277的分时分批传送功能了,详见:
<EM277数据区中设置标志位,分时分批传送>
http://PLC.jdzj.com/article/2010-2-5/15555-1.htm

http://www.gongkong.com/webpage/solutions/200901/2009011614060900001.htm

提问者对于答案的评价:
非常感谢!

  • 关注微信

猜你喜欢

微信公众号