西門子請(qǐng)教西門子200系列modbus的DataPtr的設(shè)定首地址問題
西門子請(qǐng)教西門子200系列modbus的DataPtr的設(shè)定首地址問題
主站指定了一個(gè)接收數(shù)據(jù)的首地址,在編譯過后看交叉引用的字節(jié)使用,首地址會(huì)被使用,請(qǐng)問是什么原因呢?還是默認(rèn)是這樣?就是第二張圖里面看交叉引用,按理說40001地址對(duì)應(yīng)的讀取到的內(nèi)容就存放入VW600中是嗎?請(qǐng)問
剛才也測(cè)試了一下,確實(shí)是這樣,看樣子就是這樣的。
40001 VW100
40002 VW102
40003 VW104
如果讀來的是浮點(diǎn)數(shù),則是兩個(gè)字
比如 40001、40002 合起來是 VD600
S7-200 SMART Modbus RTU通信常見問題
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
&VB600里面是VW600,換個(gè)地址試試看下
這個(gè)是西門子200(smart)指針調(diào)用的規(guī)約,只能編輯指針的首字節(jié)地址,至于具體到底是位?字節(jié)?字?還是雙字(浮點(diǎn)數(shù)),看MSG指令其它管腳的定義。
具體有Addr及Count管腳數(shù)據(jù)定義,最后被分配到DataPtr管腳。
你理解的沒有錯(cuò),當(dāng)Addr定義到40001地址后,DataPtr管腳的數(shù)據(jù)對(duì)應(yīng)為字,首字節(jié)VB600,實(shí)際為VW600的地址中。
整體MSG指令含義:
讀取從站10#的40001數(shù)據(jù),將讀取到的數(shù)據(jù)存放在VW600的地址中。
按照你說的,剛才做了下測(cè)試,確實(shí)是你說的這樣,之前還真沒注意這么回事,個(gè)人理解:
1.在西門子定義里面,你程序是采集1個(gè)對(duì)方地址,西門子默認(rèn)就是以D方式來指針偏移
2.比如你采集的real、那么交叉里面的D,你全部占有
3.如果你采集的W,按照高低位來判斷位置 的話,你也是VW600,而VW602一直處于0的狀態(tài)