单位有一个 315-2DP 的 CPU 需要通过 EM 277 与一台国产的触摸屏建立通讯,大致的工作原理是首先让触摸屏与S7 200建立通讯,然后再让S7 200 与 S7 300 建立 DP通讯,将S7 200的数据传输到S7 300的CPU。小弟经过啃了几天相关资料后,对S7 300 与 S7 200 的 DP通讯 有了一定的了解,但是始终有一个问题没有搞明白。
资料上所举出的例子大多是单个数据的(1个W,或者1个B)传输,以8 Bytes Out / 8 Bytes In(即8字节输出 / 8字节输入)为例:S7 300侧的接收地址为PIB10~PIB17,发送地址为PQB10~PQB17,S7 200侧的接收地址为VB100~VB107,发送地址为VB108~VB115。则其数据传输的模式为:
VB100 ←← PQB10 VB108 →→ PIB0
VB101 ←← PQB11 VB109 →→ PIB1
VB102 ←← PQB12 VB110 →→ PIB2
VB103 ←← PQB13 VB111 →→ PIB3
VB104 ←← PQB14 VB112 →→ PIB4
VB105 ←← PQB15 VB113 →→ PIB5
VB106 ←← PQB16 VB114 →→ PIB6
VB107 ←← PQB17 VB115 →→ PIB7
这样就可以在S7 200中编写程序将数据赋值到S7 200的VB100~VB107区域,再将该区域的数据传输到S7 300侧。对于数据较少的程序来说,8 Bytes可以满足需要了,比方说:要把S7 200的MB18的值传送给S7 300的MB18,应在S7 200的程序中,用MOVB指令将MB18传送到VB108~VB115的某一个字节,例如VB112,通过通讯,VB112的值传送给了S7 300的 IB4,再在S7 300的程序中将 IB4 的值传送给MB18。
也就是说,S7 200中的数据必须与发送区域VB108~VB115的某一个字节(或是字)一一对应,才能保证准确地发送到S7 300的接收区域。假如S7 200中只有8个字节的数据需要传输,这样做当然可以,但是如果所需传输的数据很多,这时应该怎么办呢?
我们所用的触摸屏上面需要组态近50个输入框,输入的数据都是用字WORD来存储的,也就是说有50个W的数据需要传送到S7 300,且必须和S7 300里的DB数据相一一对应。可是EM 277的通讯方式里面最大的就是32W IN / 32W OUT的,即32个字的输入 / 32个字的输出。假如S7 200的发送区域是VW1032~VW1063,也只能保证32个W的数据一一对应的传输,剩余的数据应该怎么传输呢?像我们这样的情况应该如何处理呢?
最佳答案
1、你的理解是正确的。S7 300与S7 200(EM277)的DP通讯是通过地址映射来实现数据交换的。可以参考:
见《西门子S7-200与S7-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
提问者对于答案的评价:
非常感谢!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc165036.html