你這個問題問的不夠嚴謹。
說一點我個人關於定址的看法吧,PLC中的定址應該說可以分為直接定址和間接定址。
直接定址就是對最長見的變數儲存區中的位,位元組,字等變數的直接讀取和引用,此時這個地址是一個非常明確準確的地址。而間接定址,就像是一個儲存空間中裝著一個指示牌,這個指示牌是指向CPU知道的一個明確準確的地址的,或者說指示牌是指向一個直接定址時候的地址的。
說起來是有點繞的,還是看一個圖片吧:
這個圖片是西門子200PLC程式設計時候,使用到直接定址和間接定址的情況,西門子300PLC中間接定址還存在16位/32位儲存器的間接定址以及64位指標的定址,更加不好說清楚,所以這裡還是以西門子200的來說,說起來比較簡單一點!
這個圖片中把MB0的內容傳送到VB0,這MB0和VB0都是PLC中具體的儲存區域,對這些預設的儲存區域地址的直接讀寫,就可以稱為直接定址!
而&MB0其實就相當於建立了一個間接定址用的指標,並且把這個指標裝在VD4中,這樣VD4中的內容不是MB0中的值,而是MB0在CPU定址時候的機器碼地址,監控的時候是一串16進位制的資料,我之前寫過一些關於西門子200指標的文章和問答,有興趣可以去看一下。
VD4中不是裝著MB0中的值,而是裝著一個指向某個地址的指標,如果想知道指標指向的地址中的值到底是多少,那麼就可以用*VD4去把MB0中的值給取出來。--這兩段話就是間接定址的大概意思了,間接定址就引入一個指標的概念,存放的是指標指向的地址而非內容!
以上簡單的說了直接定址和間接定址的不同,那麼引入間接定址在什麼時候會用到呢?
也簡單的說一下,間接定址其實主要是利用了指標,如果程式中想辦法將指標的值+1,那麼指向的地址也就自動增加了,這樣如果和迴圈指令配合使用,迴圈多少次就可以將一段連續的地址透過指標的變化,而將對應的地址全部快速的讀取出來。--這應該是使用指標的一個最明顯且常用的優點。
需要定義變數時,幾乎所有的程式設計都是可以用上的,因為這樣可以簡化程式,同時提高可讀性。至於理解,多看例項就好。
你這個問題問的不夠嚴謹。
說一點我個人關於定址的看法吧,PLC中的定址應該說可以分為直接定址和間接定址。
直接定址就是對最長見的變數儲存區中的位,位元組,字等變數的直接讀取和引用,此時這個地址是一個非常明確準確的地址。而間接定址,就像是一個儲存空間中裝著一個指示牌,這個指示牌是指向CPU知道的一個明確準確的地址的,或者說指示牌是指向一個直接定址時候的地址的。
說起來是有點繞的,還是看一個圖片吧:
這個圖片是西門子200PLC程式設計時候,使用到直接定址和間接定址的情況,西門子300PLC中間接定址還存在16位/32位儲存器的間接定址以及64位指標的定址,更加不好說清楚,所以這裡還是以西門子200的來說,說起來比較簡單一點!
這個圖片中把MB0的內容傳送到VB0,這MB0和VB0都是PLC中具體的儲存區域,對這些預設的儲存區域地址的直接讀寫,就可以稱為直接定址!
而&MB0其實就相當於建立了一個間接定址用的指標,並且把這個指標裝在VD4中,這樣VD4中的內容不是MB0中的值,而是MB0在CPU定址時候的機器碼地址,監控的時候是一串16進位制的資料,我之前寫過一些關於西門子200指標的文章和問答,有興趣可以去看一下。
VD4中不是裝著MB0中的值,而是裝著一個指向某個地址的指標,如果想知道指標指向的地址中的值到底是多少,那麼就可以用*VD4去把MB0中的值給取出來。--這兩段話就是間接定址的大概意思了,間接定址就引入一個指標的概念,存放的是指標指向的地址而非內容!
以上簡單的說了直接定址和間接定址的不同,那麼引入間接定址在什麼時候會用到呢?
也簡單的說一下,間接定址其實主要是利用了指標,如果程式中想辦法將指標的值+1,那麼指向的地址也就自動增加了,這樣如果和迴圈指令配合使用,迴圈多少次就可以將一段連續的地址透過指標的變化,而將對應的地址全部快速的讀取出來。--這應該是使用指標的一個最明顯且常用的優點。