官术网_书友最值得收藏!

第3章 基本邏輯指令的應用

3.1 指令基礎

3.1.1 指令的基本知識

1.指令的組成

指令是組成程序的最小獨立單位,用戶程序由若干條順序排列的指令構(gòu)成。指令一般由操作碼和操作數(shù)組成,其中的操作碼表示指令要完成的具體功能,操作數(shù)則是該指令操作或運算的對象。例如,對于STL指令“A I0.0”,其中“A”是操作碼,表示該指令的功能是邏輯“與”操作;“I0.0”是操作數(shù),也就是數(shù)字量輸入模塊的第0字節(jié)的第0位;該指令的功能就是對I0.0進行“與”操作。

2.變量、常數(shù)及其數(shù)據(jù)類型

指令操作數(shù)既可以是變量,也可以是常量或常數(shù)。如果指令的操作數(shù)是變量,則該變量既可以用絕對地址表示,也可以用符號地址表示。絕對地址是數(shù)字地址;符號地址是用戶在符號表或聲明表中定義的與絕對地址相對應并具有一定意義的字符串。

(1)變量的絕對地址

二維碼3-1 變量的絕對地址

對于一個信號輸入模塊或輸出模塊而言,每個輸入/輸出點或輸入/輸出通道的絕對地址都是確定的,可以采用系統(tǒng)默認地址,也可以由用戶在硬件組態(tài)時為模塊指定起始地址。但對數(shù)字量信號和模擬量信號的表示是有區(qū)別的。

數(shù)字量信號包含二進制“位”信息,該“位”信息可以是一個限位開關、按鈕等操作機構(gòu)對數(shù)字量輸入模塊的輸入信號,也可以是數(shù)字量輸出模塊對指示燈、接觸器等執(zhí)行機構(gòu)的輸出信號。

模擬量信號包含16位信息,對應模擬量信號模塊的一個通道,在PLC中用1字(Word)或2 B(Byte)表示。

PLC中的數(shù)字量信號以布爾(BOOL)類型存儲,而模擬量信號則以整數(shù)(INT)或者實數(shù)(REAL)類型存儲。在STEP 7中有如下4種數(shù)據(jù)類型長度可以被變量的絕對地址引用。

1)1位(Bit)適用于布爾數(shù)據(jù)類型。布爾類型變量通過一個變量標識符、一個字節(jié)數(shù)字、一個間隔符(小數(shù)點)和一個位數(shù)字來引用一個絕對地址。字節(jié)數(shù)字的編號從每個存儲區(qū)域的0地址開始,其上限受CPU限制;位數(shù)字范圍是0~7。例如:I1.0表示數(shù)字量輸入?yún)^(qū)域的第1 B的第0位;Q16.4表示數(shù)字量輸出區(qū)域的第16 B的第4位。

2)8位適用于字節(jié)(BYTE)類型或其他長度為8位的布爾數(shù)據(jù)類型。字節(jié)類型變量通過一個地址標識符B和一個字節(jié)數(shù)字編號來引用一個絕對地址。例如:IB2表示數(shù)字量輸入?yún)^(qū)域的第2 B;QB18表示數(shù)字量輸出區(qū)域的第18 B。

3)16位適用于字(WORD)類型或其他長度為16位的數(shù)據(jù)類型。字類型變量通過一個地址標識符W和一個字數(shù)字編號來引用一個絕對地址。1字由2B組成,其中高地址字節(jié)位于字的低位,低地址字節(jié)位于字的高位。為了避免兩個字變量出現(xiàn)字節(jié)重疊,一般規(guī)定字的地址用偶數(shù)表示。例如:IW4表示數(shù)字量輸入?yún)^(qū)域地址是4的字,它包含IB4(高字節(jié))和IB5(低字節(jié));QW20表示數(shù)字量輸出區(qū)域地址是20的字,它包含QB20(高字節(jié))和QB21(低字節(jié))。

4)32位適用于雙字(DWORD)類型或其他長度為32位的數(shù)據(jù)類型。雙字類型變量通過一個地址標識符D和一個雙字數(shù)字編號來引用一個絕對地址。1雙字由4字節(jié)組成,其中最高地址字節(jié)位于雙字的最低位,最低地址字節(jié)位于雙字的最高位。為了避免兩個雙字變量出現(xiàn)字節(jié)重疊,一般規(guī)定雙字的地址用4的倍數(shù)表示。例如:ID8表示數(shù)字量輸入?yún)^(qū)域地址是8的雙字,它包含IB8(高字節(jié))、IB9(次高字節(jié))、IB10(次低字節(jié))和IB11(低字節(jié));QD24表示數(shù)字量輸出區(qū)域地址是24的雙字,它包含QB24(高字節(jié))、QB25(次高字節(jié))、QB26(次低字節(jié))和QB27(低字節(jié))。字節(jié)、字及雙字的關系如圖3-1所示。

圖3-1 字節(jié)、字及雙字的關系

(2)變量的符號地址

符號地址就是用戶給絕對地址所起的名字(字符串),可以用來代替對應的絕對地址。符號必須先定義再使用,定義的符號可以由大小寫字母、數(shù)字及下劃線構(gòu)成,且必須以字母開頭,長度不超過24個字符,所定義的符號不能是系統(tǒng)關鍵詞。根據(jù)使用場合不同,符號分為全局符號和局部符號。

● 全局符號:SIMATIC Manager的符號表中定義的符號,可以適用于所有的程序塊。

● 局部符號:在某個程序塊(OB、FC、FB等)的變量聲明表中定義的符號,只能應用于該程序塊。如果定義的局部符號與全局符號重名,該局部符號前會自動添加一個“#”。

(3)常數(shù)及其數(shù)據(jù)類型

常數(shù)是預先給定的數(shù)據(jù)。在STEP 7中,每個常數(shù)都有一個前綴來表示其數(shù)據(jù)類型。

數(shù)據(jù)類型決定數(shù)據(jù)的屬性。在STEP 7中,數(shù)據(jù)類型分為3大類:基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型和參數(shù)類型。

1)基本數(shù)據(jù)類型:用于定義不超過32位的數(shù)據(jù)(符合IEC1133-3的規(guī)定),可以裝入S7處理器的累加器中,利用STEP 7基本指令處理。基本數(shù)據(jù)有布爾型(BOOL)、整數(shù)型(INT)、實數(shù)型(REAL)和BCD碼4種類型,具體分為16種,每一個數(shù)據(jù)類型都具備關鍵詞、數(shù)據(jù)長度、取值范圍及常數(shù)表示形式等屬性,表3-1列出了S7-300 PLC支持的基本數(shù)據(jù)類型。

表3-1 S7-300 PLC支持的基本數(shù)據(jù)類型

在表3-1中,布爾數(shù)據(jù)為無符號數(shù)據(jù),可以是一個位(Bit)、一個字節(jié)(B)、一個字(W)和一個雙字(D),可以用二進制或十六進制表示。

整數(shù)數(shù)據(jù)為有符號數(shù)據(jù),其最高位為符號位,0為正數(shù),1為負數(shù),用二進制補碼表示,正數(shù)的補碼是它本身,負數(shù)的補碼是各位取反后再加1。有16位整數(shù)和32位雙整數(shù)兩種,取值范圍是-32768~+32767(16位)或-2147483648~+2147483647(32位)。

實數(shù)數(shù)據(jù)為32位有符號的浮點數(shù),其最高位為符號位,0為正數(shù),1為負數(shù)。浮點數(shù)的優(yōu)點是用有限的存儲空間可以表示一個非常大或非常小的數(shù)。浮點數(shù)的數(shù)據(jù)范圍為:±1.175 495 × 10-38~±3.402 823 × 10+38

2)復雜數(shù)據(jù)類型:用于定義超過32位或由其他數(shù)據(jù)類型組成的數(shù)據(jù)。復雜數(shù)據(jù)類型要預定義,其變量只能在全局數(shù)據(jù)塊中聲明,可以作為參數(shù)或邏輯塊的局部變量。STEP 7支持數(shù)組(ARRAY)、結(jié)構(gòu)(STRUCT)、字符串(STRING)、日期和時間(DATE_AND_TIME)、用戶定義的數(shù)據(jù)類型(UDT)、功能塊類型(FB、SFB)等6種復雜數(shù)據(jù)類型。STEP 7的指令不能一次處理一個復雜的數(shù)據(jù)類型(大于32位),但是一次可以處理一個元素。

3)參數(shù)類型:是一種用于邏輯塊(FB、FC)之間傳遞參數(shù)的數(shù)據(jù)類型,主要有定時器(TIMER)、計數(shù)器(COUNTER)、塊(BLOCK)、6B指針(POINTER)和10B指針(ANY)等類型。

3.S7-300系列PLC用戶存儲區(qū)的分類及功能

二維碼3-2 用戶存儲區(qū)的分類

PLC的用戶存儲區(qū)在使用時必須按功能區(qū)分使用,所以在學習指令之前必須熟悉存儲區(qū)的分類、表示方法、操作及功能。S7-300系列PLC的存儲區(qū)域的劃分、功能、訪問方式及標識符如表3-2所示。

表3-2 S7-300系列PLC的存儲區(qū)域的劃分、功能、訪問方式及標識符

3.1.2 尋址方式和累加器

1.操作數(shù)的尋址方式

所謂尋址方式就是指令執(zhí)行時獲取操作數(shù)的方式,可以用直接或間接方式給出操作數(shù)。STEP 7系統(tǒng)支持4種尋址方式:立即尋址、存儲器直接尋址、存儲器間接尋址和寄存器間接尋址。

(1)立即尋址

立即尋址是對常數(shù)或常量的尋址方式,其特點是操作數(shù)直接表示在指令中,或以唯一形式隱含在指令中。下面各條指令操作數(shù)均采用了立即尋址方式,其中“//”后面的內(nèi)容為指令的注釋部分,對指令的功能及執(zhí)行沒有任何影響。

(2)存儲器直接尋址

存儲器直接尋址簡稱為直接尋址。該尋址方式是在指令中直接給出操作數(shù)的存儲單元地址。存儲單元地址可用符號地址(如SB1、KM等)或絕對地址(如I0.0、Q4.1等)。下面各條指令操作數(shù)均采用了直接尋址方式。

(3)存儲器間接尋址

存儲器間接尋址簡稱為間接尋址。該尋址方式是在指令中以存儲器的形式給出操作數(shù)所在存儲器單元的地址,也就是說該存儲器的內(nèi)容是操作數(shù)所在存儲器單元的地址。該存儲器一般稱為地址指針,在指令中需寫在方括號“[ ]”內(nèi)。地址指針可以是字或雙字,對于地址范圍小于65 535的存儲器(如T、C、DB、FB、FC等)可以用字指針;對于其他存儲器(如I、Q、M等)則要使用雙字指針。如果要用雙字指針訪問字節(jié)、字或雙字存儲器,必須保證指針的位編號為0。存儲器間接尋址的雙字指針的格式如圖3-2所示。其中,位0~2的(xxx)為被尋址地址中位的編號(0~7),位3~18為被尋址地址的字節(jié)的編號(0~65 535)。

圖3-2 存儲器間接尋址的雙字指針的格式

【例3-1】 存儲器間接尋址單字格式的指針尋址實例。

【例3-2】 存儲器間接尋址雙字格式的指針尋址實例。

(4)寄存器間接尋址

寄存器間接尋址簡稱為寄存器尋址。該尋址方式是在指令中通過地址寄存器和偏移量間接獲取操作數(shù),其中的地址寄存器及偏移量必須寫在方括號“[ ]”內(nèi)。在S7-300 PLC中有兩個地址寄存器AR1和AR2,用地址寄存器的內(nèi)容加上偏移量形成地址指針,并指向操作數(shù)所在的存儲器單元。地址寄存器的地址指針有兩種格式,其長度均為雙字,寄存器間接尋址的雙字指針格式如圖3-3所示。其中,位0~2的(xxx)為被尋址地址中位的編號(0~7),位3~18為被尋址地址中字節(jié)的編號(0~65 535),位24~26的(rrr)為被尋址地址的區(qū)域標識號,位31的x=0為區(qū)域內(nèi)的間接尋址,x=1為區(qū)域外的間接尋址。

圖3-3 寄存器間接尋址的雙字指針格式

第1種地址指針格式包括被尋址數(shù)據(jù)所在存儲單元地址的字節(jié)編號和位編號,至于對哪個存儲區(qū)尋址,則必須在指令中明確給出。這種格式適用于在確定的存儲區(qū)內(nèi)尋址,即區(qū)域內(nèi)寄存器間接尋址。

第2種地址指針格式包含了數(shù)據(jù)所在存儲區(qū)的說明位(存儲區(qū)域標識位),可通過改變標識位實現(xiàn)跨區(qū)域?qū)ぶ罚瑓^(qū)域標識由位26~24確定,地址指針區(qū)域標識位的含義如表3-3所示。這種指針格式適用于區(qū)域間寄存器間接尋址。

表3-3 地址指針區(qū)域標識位的含義

2.累加器

累加器是用于處理字節(jié)、字或雙字的32位累加器。S7-300 PLC有兩個累加器(累加器ACCU1和累加器ACCU2),可以把操作數(shù)送入累加器,并在累加器中進行運算和處理。處理8位或16位數(shù)據(jù)時,數(shù)據(jù)放在累加器中的低位(右對齊),空出的高位用0填補。

主站蜘蛛池模板: 长沙市| 营口市| 龙里县| 探索| 准格尔旗| 广德县| 河津市| 皋兰县| 鄯善县| 玉溪市| 潜江市| 阿鲁科尔沁旗| 珲春市| 道真| 平果县| 二连浩特市| 旬阳县| 黔江区| 闸北区| 湟源县| 亚东县| 方正县| 临夏市| 新巴尔虎右旗| 凤庆县| 普陀区| 宁津县| 石狮市| 岗巴县| 大港区| 云和县| 象州县| 乌鲁木齐市| 张家港市| 梁河县| 钟山县| 全南县| 长汀县| 新巴尔虎右旗| 敦化市| 孝义市|