S7-300通过CP342-5与S7-400连接,其中S7-400为主站,CP342-5为从站。看了书上的例子,在从站调用FC1时,参数CPLADDR代表CP342-5的地址。
问题:这个地址是怎么确定的,和组态的通信区有无关系,如果没有关系,那当组态了多个通信区且长度都相同时,这些通信区如何与FC1进行匹配
最佳答案
如果你定义了两个相同的长度的输入或者输出通讯区的话,
例如
IB0 - IB15
IB16 - IB31
那么在从站中调用FC2时,对应第一个通讯地址的参数
CPLADDR:= 16#100 (这个是CP342-5的硬件组态地址)
RECV:=P#M10.0 BYTE 16
这个对应的就是IB0 - IB 15 对于从站来说存入M10.0开始的16个字节长度的区域。
那么对应于IB 16 - IB 32 就为
CPLADDR:= 16#100 (这个是CP342-5的硬件组态地址)
RECV:=P#M10.0 BYTE 32
注意这里的指针长度要填32
存入的是M10.0开始的32个字节长度的区域。你要找的IB16-IB32其实是在MB26-MB41这个区间内。.
CP342的读的过程是,调用FC1将数据发送到CP342的内部存储区,CP342的内部存储区可以达到2160字节。这个区域其实可以看做PROFIBUS上从站的IO地址映射区,也就是的地址是一一对应的。
这个对应过程是系统自动的,不需要你干预的。
你定义了通讯区IB1-16 及IB18-19,这个数据就直接对应到了CP342内部的存储区IB1-16 IB18-19 .而在从站上,你无法直接去读取,你只能用FC2来读取,读上来的都是是从0开始的CP342的地址,只能通过改变指针长度来读取你要的数据。所以一般都只设置1个输入或者1个输出,字节长度满足通讯要求就可以了,不会分开设置,那样只会带来麻烦。
你可以参考下载中心A0139这个文档,CP342-5的使用与常见问题 (更新版) 里面对CP342的读取有说明。
提问者对于答案的评价:
非常感谢各位大侠的帮助。谢谢你们。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc313317.html