资料中是这么说的:
IND有16位,
12-15位,是PNU扩展,
11-8位,是保留位,=0
7-0位,下标
PNU扩展以2000个参数为单位,大于等于2000则加1。下标用来索引参数下标,没有值则取0.
所以如果如图中所示,修改参数P2200[1]的话,IND的12-15位就应=1,位(7-0)=1
所以IND=1001才对,可为什么 例 中IND=0180 ?
访问P2000时,就应是IND=1000,例中却是IND=8000
而且附件中的两个例子的值也不一样,为什么?是不是其中的一个是错误的?
问题补充:
遇到高手了,解决了8001和0180的问题,原以为都是IND,用法是一样的。
可还有一个问题,IND的15-12位权重依次是2^0 2^3 2^2 2^1,如果按你的算法,16进制的9应是如何的?难道不是1100么?13不是应13=1110么?8不是应8=0100么?而不是1000,如果这里的8=1000,它与常规的二进制有何区别?为什么要着重说明IND的15-12位权重依次是2^0 2^3 2^2 2^1?所以这个地方真的不明白。(按照常规二进制码的算法,16进制的9=1001,16进制的8=1000,16进制的11=1011)
图片说明:
最佳答案
楼主看的是《MM440使用大全》吧?
你上传的第一张图“看到的介绍例1”,是MM440使用大全第13-10页的内容,你上传的第三张图“相关的资料”,是MM440使用大全第13-5页的内容。
而“看到的介绍例2”的内容,不是MM440使用大全上的,是其它相关资料上的,对不对?
我当初学习MM440变频器通信的时候也同样遇到了你所述内容的困扰。这是因为一个是USS通信,一个是DP通讯,由于其使用的协议不一样,通信方式不一样,关于ind的定义也不一样。
1.我们先从《MM440使用大全》说起,第13章通信,13-5和13-6页的讲解。第一个字PKE15--12位为任务或应答识别标识ID,11位总为0,10--0位为PNU的基本参数号。第二个字是IND16位参数说明,15--12位为PUN扩展(PUN页号)并且15位是2^0,11--08位未使用,07--00位为下标。这样一个完整个的参数号是由任务或应答识别标识ID(位10--0)的基本参数号+PUN页号15--12位+下标组成。PUN页号15是2^0,所以当读写参数2000-3999时,15位是1。
再参考13-11页的例子见上传图片1(USS通信),P2010.1表示:第一个字PKE10--0位基本参数号010为十六进制A,第二个字是IND15--12位为十六进制8(二进制1000),11--08位未使用为0,07--00位为下标为十六进制01(二进制00000001)。所以8001就出来啦。
2.我们再回顾仔细看下《MM440使用大全》的标题,上面说讲的内容是13.3节全部是USS协议,而13.4和5节内容是PROFIBUS简单介绍,但并不详细,所以我们又查询S7300与MM440的DP通讯相关资料,发现讲的IND是0180。这是由于其使用的协议不一样,通信方式不一样,关于ind的定义也不一样,上传图片2(dp通信)。由于参数P2010,超出了0-1999的范围,因此必须借助IND的高低两个字节来指明参数页码、参数下标。
USS通信中,高字节指示页码,低字节指示下标,因此是8001。在DP通信中,高字节指示下标,低字节指示页码,因此是0180。
问题补充:
我上传的DP通信的图片里,有注释:8为参数2000-3999。
你所说的二制进什么的,那可不是我的算法,我可没有那个本事,嘻嘻。。。
那些定义都是书上讲解的,我又给你抓了一张图,请查看,有问题我们大家再交流。
图片说明:
提问者对于答案的评价:
非常感谢,我没法补充,所以在论坛里开了帖子,能再指教一下么?
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=47&a_id=1189791&s_id=110&num=2#anch
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc170529.html