您當前的位置:首頁 > 曲藝

西門子S7系列PLC的定址方式(2)

作者:由 北島李工 發表于 曲藝時間:2017-07-02

上一篇文章我們介紹了西門子S7系列PLC(300/400/1500)的定址方式,講解了直接定址(絕對定址和符號定址)及間接定址的一種——儲存器間接定址,今天這篇文章我們介紹下另一種間接定址方式:暫存器間接定址。

所謂暫存器間接定址,是指透過CPU的地址暫存器(Address Register)進行的定址方式。S7-300/400系列PLC有兩個地址暫存器,AR1和AR2,其長度均為32位,內部存放32位的地址指標,指標指向要定址的儲存單元。

我們先來看下暫存器間接定址的指標格式(32位):

西門子S7系列PLC的定址方式(2)

西門子S7系列PLC的定址方式(2)

其中,第0~2位是被定址地址的位(bit)編號;第3~18位是被定址地址的位元組(Byte)編號;第24~26位,是被定址地址的區域標識(編號);第31位是定址的型別,“0”表示區域內間接定址,“1”表示區域間間接定址。

暫存器間接定址可以分為兩種:區域內定址和區域間定址,根據第31位的值來確定。

所謂區域內定址,是指指標中僅包含定址的儲存區的位元組編號和位編號,儲存區的程式碼在指令中給出。暫存器區域內間接定址的指標的第24~26位的區域識別符號為0,第31位也為0;

所謂區域間定址,是指指標中不僅包含了定址的儲存區的位元組編號和位編號,還包含了儲存區的識別符號(第24~26)程式碼。儲存區識別符號用來指定定址區域,比如:I、M、Q等,具體編號如下圖:

西門子S7系列PLC的定址方式(2)

西門子S7系列PLC的定址方式(2)

暫存器區域內定址的表達方式:儲存器識別符號[ARx,地址偏移量];

比如下面這段程式碼:

西門子S7系列PLC的定址方式(2)

西門子S7系列PLC的定址方式(2)

前兩行將指標常數(P#5。0)載入到AR1中,第三行對M6。1進行與運算,結果存放到Q7。5中。指標常數P#5。0的二進位制數為:2#0000 0000 0000 0000 0000 0000 0010 1000,可見它的第24~26位及第31位均為0。由於指標中不包含儲存區識別符號資訊,所以必須在程式中指定。

再來看看暫存器區域間定址,其表達方式為:訪問寬度[ARx,地址偏移量];

比如下面這段程式碼:

西門子S7系列PLC的定址方式(2)

西門子S7系列PLC的定址方式(2)

P#M6。0對應的二進位制值為:1000 0011 0000 0000 0000 0000 0011 0000。

前兩行程式碼將位儲存器指標P#M6。0載入到AR1中,由於指標中包含了儲存區程式碼(011),因此程式中不用寫儲存區識別符號,只需要指定訪問的寬度即可。上例中的第三行的程式碼會將MW8的內容裝載到累加器1(ACCU1)中。

順便說一句,如果要使用暫存器指標訪問一個位元組、字或者雙字時,必須保證指標的位編號為0。暫存器間接定址相對來說有些難度,建議在實踐中使用以加深理解。

相關參考文章:

西門子S7系列PLC的定址方式(1)

官網方正智芯(founder chip)提供本文PDF版本下載。

標簽: 定址  0000  指標  暫存器  間接