wingwf2000
級(jí)別: 探索解密
|
間接訪問(wèn)就是用指定存儲(chǔ)器的地址或索引或ID來(lái)讀寫(xiě)存儲(chǔ)器的內(nèi)容,這里是使用索引的方式,因?yàn)檩斎氲臄?shù)據(jù)不是存儲(chǔ)器的實(shí)際地址,西門(mén)子的存儲(chǔ)器地址比較復(fù)雜,按類(lèi)區(qū)別,一般得不到存儲(chǔ)器的地址,但存儲(chǔ)器的索引也就是存儲(chǔ)器的號(hào)則經(jīng)常使用,一般情況下在S7-300、400中需要用STL指令寫(xiě),梯形圖是不支持的,但STL不容易學(xué),也容易出錯(cuò),所以用SCL寫(xiě)了這個(gè)庫(kù),然后在梯形圖中使用,方便了程序的編寫(xiě)。 其中S7-300_1中是編譯過(guò)的庫(kù),S7-300_4中的是SCL源代碼,由于高級(jí)語(yǔ)言的結(jié)構(gòu)性太強(qiáng),所以編譯后的代碼肯定沒(méi)STL直接寫(xiě)的那么高效,但高級(jí)語(yǔ)言出錯(cuò)機(jī)會(huì)小,另外就是編譯后的庫(kù)不太好監(jiān)控,因?yàn)榫幾g后變成了STL格式。 注意:字MW0的索引是0,字MW1的索引是1,雖然一般不會(huì)這樣用,因?yàn)樽值倪吔缁蚱瘘c(diǎn)一般定在偶數(shù),所以參數(shù)里的索引事實(shí)上指字的起點(diǎn)地址,對(duì)于雙字也是一樣的;對(duì)于Q、DB、I區(qū)的字和雙字也是這樣的;所以若是循環(huán)使用連續(xù)的字或雙字時(shí),要注意字的索引和雙字的索引的增量分別是2和4,如果增量是1的話,就會(huì)導(dǎo)致前后的操作發(fā)生數(shù)據(jù)重疊。 [ 此帖被wingwf2000在2019-07-26 00:19重新編輯 ] |
---|---|
|
wingwf2000
級(jí)別: 探索解密
|
在編譯SCL時(shí)可以關(guān)閉地址溢出的檢查選項(xiàng),會(huì)減小編譯后的STL代碼量,但可能傳入的參數(shù)超范圍時(shí)導(dǎo)致錯(cuò)誤,建議還是打開(kāi)地址檢查選項(xiàng),使程序更健壯 |
---|---|
|
wingwf2000
級(jí)別: 探索解密
|
程序分為對(duì)I區(qū)、Q區(qū)、M區(qū)和DB區(qū)的位、字節(jié)、字、雙字的讀、寫(xiě),其中對(duì)位的讀寫(xiě)又分兩種,一種是給出位所在字節(jié)的地址和位的位號(hào),另一種是直接給出位的編號(hào),也就是字節(jié)地址*8+位號(hào),這樣便于在循環(huán)時(shí)自動(dòng)修改位地址 |
---|---|
|
wingwf2000
級(jí)別: 探索解密
|
呵呵,西門(mén)子的I區(qū)也是可以寫(xiě)的哦,只是下個(gè)周期時(shí)新數(shù)據(jù)會(huì)覆蓋上次修改的數(shù)據(jù),但有時(shí)可能會(huì)用到修改I區(qū)數(shù)據(jù)的功能 |
---|---|
|
fzq0425
感謝遇到工控人家園
級(jí)別: 略有小成
|
樓主霸氣 英明 果敢啊佩服 |
|
---|---|---|
|