1,如上圖所示,any指針指向的應(yīng)該是一段外部的地址(伺服軸的報(bào)文地址),通過(guò)這樣編程可以訪(fǎng)問(wèn)嗎?我記得這樣周期通信地址的讀取大于2個(gè)字應(yīng)該用sfc14??!
2,sfc20的使用,我記得看的資料顯示,sfc20只能拷貝映像區(qū)地址,不能考外部地址啊,難道報(bào)文地址不屬于外部地址嗎?
這個(gè)程序是老外提供給我們的模板程序,應(yīng)該不會(huì)錯(cuò)的,而且這個(gè)模板好多塊都是這樣做的,真是有點(diǎn)糊涂了,請(qǐng)各位大俠幫忙指點(diǎn)一下,謝謝了!
答:
老外的程序沒(méi)有問(wèn)題。為了幫助大家理解,給出了any指針的結(jié)構(gòu)圖。
老外程序中any的第一個(gè)字表示數(shù)據(jù)類(lèi)型為字節(jié),第2個(gè)字表示字節(jié)數(shù)為12,第3個(gè)字為0,表示不是db,第4個(gè)字表示i區(qū)。
因?yàn)槠鹗嫉刂罚╥drivebaseinaddress)是字節(jié)地址(上圖中用16個(gè)b表示),需要將它左移3位,相當(dāng)于乘以8(一個(gè)字節(jié)8位),作為間接尋址的指針的基礎(chǔ),再用od指令疊加上指針最高字節(jié)的地址區(qū)信息16#81。
any用的是i區(qū),不是pi區(qū)。
假設(shè)i區(qū)的起始地址(idrivebaseinaddress)為x,sfc20的輸入?yún)?shù)(any)的實(shí)際地址為p#ix.0 byte 12。
當(dāng)然也可以在調(diào)用sfc20時(shí)直接寫(xiě)p#ix.0 byte 12,不過(guò)老外這種模板的優(yōu)點(diǎn)是通用、靈活。但是要看懂程序的門(mén)檻比較高。













