当前位置: 主页 > PLC控制

怎么区分多个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.0BYTE37",这个数据的含义是:1.对于"DP_SEND"发送功能块的“Send“参数来讲,就是发送从数据块DB1的第3个字节的第0位开始,长度为37个字节的数据到CP342-5模块当中;2.对于"DP_RECV"接收功能块的“RECV“参数来讲,就是将从CP342-5接收来的数据存放在数据块DB1的第3个字节的第0位开始,长度为37个字节的一个数据区当中;虽然从规则上讲,指针类型参数也允许以其他数据类型定义长度(字类型,位类型等),如P#DB1.DBX3.0WORD37,但是"DP_SEND"和"DP_RECV"功能块的"SEND"和"RECV"参数必须是以字节定义长度的指针类型,即"P#DB1.DBX3.0BYTE37":
3、建议仔细看看下述文档就全明白了:
详见《CP342-5的使用与常见问题(更新版)》下载
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0139.zip

图片说明:

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

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

  • 关注微信

猜你喜欢

微信公众号