百度
蘇州硫化機(jī) 油壓機(jī)維修
級別: 略有小成
![]() |
請教大家個問題,我用smart200給設(shè)備做計數(shù),配方有200多個。 我可以讀取到配方號0--255. 我如何做到生產(chǎn)配方1,配方1的計數(shù)器VD10加1 生產(chǎn)配方2 配方2的計數(shù)器VD14加1 一個 一個的寫太多了,大家有沒有好辦法。希望大家給點建議。 ![]() |
---|---|
|
gxtmdb82164
級別: 論壇先鋒
![]() |
比較基礎(chǔ)的問題了 使用數(shù)據(jù)結(jié)構(gòu)+偏移地址的寫法 舉個例子你的配方需要32個字節(jié)的空間來存放實際的數(shù)據(jù),那么直接定義好這32個字節(jié)的數(shù)據(jù)結(jié)構(gòu)就行了,完了以后把這32個字節(jié)全部使用指針進(jìn)行訪問,比如VD100~VD224,這32個雙字里面全是指針(實際上沒必要定義32個,看你需要什么數(shù)據(jù)類型,32個字節(jié)也可以是16個字或者8個雙字).接下來寫一個獨立的子函數(shù)專門用于處理VD100~VD224的數(shù)據(jù),邏輯也非常簡單,假設(shè)1號參數(shù)存在VB1000,那么輸入1號參數(shù)設(shè)置VD100取地址VB1000,后面根據(jù)數(shù)據(jù)類型依次加上去,設(shè)置2號參數(shù)則所有指針+32 這樣在使用的時候,編程用的入口實際上是同一套,比如定義了*VD108這個雙字是計數(shù)器,那么所有的寫入位置都是*VD108,但是實際上因為操作的是指針,這個指針映射到數(shù)據(jù)結(jié)構(gòu)上的第28個字節(jié),那么在實際操作的時候,設(shè)置1的時候?qū)嶋H寫入是VD1028,設(shè)置2的時候是VD1040 西門子這個按字節(jié)尋址同時提供指針的寫法,雖然最靈活,但是比日系的DxxZn寫法稍微復(fù)雜了一丟丟,操作上也會復(fù)雜一點要自己算偏移 |
---|---|
|