怎么区分多个dp从站的数据?
郑志武
发布于2012-12-16 22:33
1
0
标签:
用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的使用与常见问题(更新版)》下载:
https://www2.ad.siemens.com.cn/download/upload/as/application/a0139.zip