OB塊和功能、功能塊里的TEMP變量絕對地址的困惑。
劉玉蓉
發(fā)布于2014-12-12 17:21
558
0
標簽:
在網(wǎng)上查看了很多關于臨時變量L的解釋和使用方法,眾說紛紜搞得我一頭霧水。有的說臨時變量隨調(diào)用它的塊關閉而被丟棄,又有人說是被復位,我覺得這是兩個決然不同的結果,“丟棄”不等同“復位”。
FC 和FB的臨時變量都是從L0.0開始往后指定的,所以多個FC和FB在OB里調(diào)用實際上就會出現(xiàn)絕對地址相互沖突的現(xiàn)象,所以就有了大家在使用臨時變量時必須先賦值后調(diào)用的要求。
再看OB塊里的臨時變量的絕對地址好像也是從L0.0開始的,那么這個L0.0和FB.FC里的L0.0是不是一個地址呢?不都是使用的L臨時存儲區(qū)嗎?實驗結果好像不是同個存儲區(qū),它們互不干涉。
在OB塊里先把常數(shù)0寫入LB30,接著調(diào)用FC1,在FC1里給L30.1置位,再在FC1后面把LB30寫入MB30,我以為結果MB30的值是2,其實MB30的值沒變是0,這該做如何理解?還有不同的OB塊里的臨時變量存儲區(qū)都是使用的同一L存儲區(qū)還是每一個分配不同的?為什么它們的絕對地址都是一樣的?
問題補充:
我知道如果我在OB塊里直接賦值L30.1=1那么MB30的值就會等于2,之所以要在FC里賦值,是想驗證FC的L30.1和OB的LB30會不會有沖突,也就是說他們是不是同屬一個字節(jié)。
佳答案
臨時變量不是全局變量,所以就不存在重疊的概念。臨時變量就相當于相對地址,全局變量就相當于絕對地址。在地理位置上你可以你的前后左右有什么,這就是相對地址,如果你說經(jīng)緯度就是絕對地址。你的前后左右和別人的前后左右是不同的,雖然都是前后左后,但如果你說經(jīng)緯度那就是唯一的地址,