怎么区分多个DP从站的数据?

我现在用cp342-5做主站,下挂92个带profibus接口的马达保护器,在程序里我怎么区分读写对应电机的状态?

问题补充:
在硬件组态中,每个马达保护器有4个AI,3个字节的输入,1个字节的输出,共计368个AI,276个字节输入,92个字节输出,即:92个DP从站,站号从3~94,输入字节1012个,输出字节92个;但是再用FC1和FC2读写数据时,CP342-5中的输入地址只是从256~271,要读写每个马达保护器的寄存器位,用FC1和FC2编程时,该是怎么样的对应?

最佳答案

1、CP342-5中的输入地址只是从256~271.....要读写每个马达保护器的寄存器位,用FC1和FC2编程时,该是怎么样的对应?
CP342-5中的地址256~271与每个马达保护器地址不是一回事。每个马达保护器地址应用有自己的地址,即从站地址(可设定)。具体地讲:
这个16字节长度的地址是CPU分配给CP342-5的硬件地址,是CPU和CP342-5之间进行数据交换的缓存,CPU就是通过这个硬件地址进行寻址访问到CP342-5模块,所以这16字节的地址数据区与CP342-5所连接的PROFIBUS从站没有任何关系,而CP342-5与PROFIBUS从站进行数据交换使用的是另外一个独立的数据存储区,Input区为2160个字节,Output区为2160个字节。
2、用FC1和FC2编程时,该是怎么样的对应?
在组态时进行参数设定,例如参见这个两设备的例子:
详见上传的图片。
参数化"DP_SEND"(FC1) 和 "DP_RECV"(FC2)的参数: 
DP_SEND(FC1)功能块的"SEND"参数是您需要定义的一个数据区,该数据区是主站发送给从站output区的数据源。同样,DP_RECV(FC2)功能块的"RECV"参数定义的是主站将读到从站Input区的数据存放在CPU的某个数据地址区。
"SEND" 和 "RECV"参数需要填写一个指针类型的数据,如:"P#DB1.DBX3.0 BYTE 37",这个数据的含义是:1.对于"DP_SEND" 发送功能块的“Send“参数来讲,就是发送从数据块DB1的第3个字节的第0位开始,长度为37个字节的数据到CP342-5模块当中;2. 对于"DP_RECV" 接收功能块的“RECV“参数来讲,就是将从CP342-5接收来的数据存放在数据块DB1的第3个字节的第0位开始,长度为37个字节的一个数据区当中;虽然从规则上讲,指针类型参数也允许以其他数据类型定义长度(字类型,位类型等),如P#DB1.DBX3.0 WORD 37,但是"DP_SEND" 和 "DP_RECV"功能块的"SEND" 和 "RECV"参数必须是以字节定义长度的指针类型,即"P#DB1.DBX3.0 BYTE 37": 
3、建议仔细看看下述文档就全明白了:
详见《CP342-5的使用与常见问题 (更新版)》下载:
http://www2.ad.siemens.com.cn/Download/Upload/AS/application/A0139.zip

图片说明:

怎么区分多个DP从站的数据?  

提问者对于答案的评价:
xiexie

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc160642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月8日 下午6:19
下一篇 2017年6月8日 下午6:19

相关推荐