做自控技術,必會PLC編程,S7-300程式語言設計知識!

S7-300編程語言學習

西門子編程語言學習

做自控技術,必會PLC編程,S7-300編程語言設計知識!

1 STEP 7編程語言

STEP 7是S7-300/400系列PLC應用設計軟件包,所支持的PLC編程語言非常豐富。該軟件的標準版支持STL(語句表)、LAD(梯形圖)及FBD(功能塊圖)3種基本編程語言,並且在STEP 7中可以相互轉換。專業版附加對GRAPH(順序功能圖)、SCL(結構化控制語言)、HiGraph(圖形編程語言)、CFC(連續功能圖)等編程語言的支持。不同的編程語言可供不同知識背景的人員採用。

(1)STL(語句表)

STL(語句表)是一種類似於計算機彙編語言的一種文本編程語言,由多條語句組成一個程序段。語句表可供習慣彙編語言的用戶使用,在運行時間和要求的存儲空間方面最優。在設計通信、數學運算等高級應用程序時建議使用語句表。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)LAD(梯形圖)

LAD(梯形圖)是一種圖形語言,比較形象直觀,容易掌握,用得最多,堪稱用戶第一編程語言。梯形圖與繼電器控制電路圖的表達方式極為相似,適合於熟悉繼電器控制電路的用戶使用,特別適用於數字量邏輯控制。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)FBD(功能塊圖)

FBD(功能塊圖)使用類似於布爾代數的圖形邏輯符號來表示控制邏輯,一些複雜的功能用指令框表示。FBD比較適合於有數字電路基礎的編程人員使用。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)GRAPH(順序控制)

GRAPH類似於解決問題的流程圖,適用於順序控制的編程。利用S7-GRAPH編程語言,可以清楚快速地組織和編寫S7 PLC系統的順序控制程序。它根據功能將控制任務分解為若干步,其順序用圖形方式顯示出來並且可形成圖形和文本方式的文件。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(5)HiGraph(圖形編程語言)

S7-Higraph允許用狀態圖描述生產過程,將自動控制下的機器或系統分成若干個功能單元,併為每個單元生成狀態圖,然後利用信息通訊將功能單元組合在一起形成完整的系統。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(6)SCL(結構化控制語言)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

2 數據類型

數據類型決定數據的屬性,在STEP 7中,數據類型分為三大類:

2.1 基本數據類型

做自控技術,必會PLC編程,S7-300編程語言設計知識!

2.2 複雜數據類型

(1)數組(ARRAY)

數組是由一組同一類型的數據組合在一起而形成的複雜數據類型。數組的維數最大可以到6維;數組中的元素可以是基本數據類型或者複雜數據類型中的任一數據類型(Array類型除外,即數組類型不可以嵌套);數組中每一維的下標取值範圍是-32768~32767,要求下標的下限必須小於下標的上限。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)結構(STRUCT)

結構是由一組不同類型(結構的元素可以是基本的或複雜的數據類型)的數據組合在一起而形成的複雜數據類型。結構通常用來定義一組相關的數據,例如電機的一組數據可以按如下方式定義:

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)字符串(STRING)

字符串是最多有254個字符(CHAR)的一維數組,最大長度為256個字節(其中前兩個字節用來存儲字符串的長度信息)。字符串常量用單引號括起來,例如:

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)日期和時間(DATE_AND_TIME)

用於存儲年、月、日、時、分、秒、毫秒和星期,佔用8個字節,用BCD格式保存。星期天的代碼為1,1~6的代碼為2~7。例如:

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(5)用戶定義的數據類型(UDT)

用戶定義數據類型表示自定義的結構,存放在UDT塊中(UDT1~UDT65535),在另一個數據類型中作為一個數據類型“模板”。當輸入數據塊時,如果需要輸入幾個相同的結構,利用UDT可以節省輸入時間。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(6)功能塊類型(FB、SFB)

這種數據類型僅可以在FB的靜態變量區定義,用於實現多背景DB。

2.3 參數類型

參數類型是一種用於邏輯塊(FB、FC)之間傳遞參數的數據類型,主要有以下幾種:

(1)TIMER(定時器)和COUNTER(計數器)。

(2)BLOCK(塊):指定一個塊用作輸入和輸出,實參應為同類型的塊。

(3)POINTER(指針):6字節指針類型,用來傳遞DB的塊號和數據地址。

(4)ANY:10字節指針類型,用來傳遞DB塊號、數據地址、數據數量以及數據類型。

3 S7-300指令基礎

指令是程序的最小獨立單位,用戶程序是由若干條順序排列的指令構成。指令一般由操作碼和操作數組成,其中的操作碼代表指令所要完成的具體操作(功能),操作數則是該指令操作或運算的對象。

3.1 PLC用戶存儲區的分類及功能

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

3.2 指令操作數

指令操作數(又稱編程元件)一般在用戶存儲區中,操作數由操作標識符和參數組成。操作標識符由主標識符和輔助標識符組成,主標識符用來指定操作數所使用的存儲區類型,輔助標識符則用來指定操作數的單位(如:位、字節、字、雙字等)。

主標識符有:I(輸入過程映像寄存器、Q(輸出過程映像寄存器)、M(位存儲器)、PI(外部輸入寄存器)、PQ(外部輸出寄存器)、T(定時器)、C(計數器)、DB(數據塊寄存器)和L(本地數據寄存器);

輔助標識符有:X(位)、B(字節)、W(字或2B)、D(2DW或4B)。

3.3 尋址方式

所謂尋址方式就是指令執行時獲取操作數的方式,可以直接或間接方式給出操作數。S7-300有4種尋址方式:

(1)立即尋址

立即尋址是對常數或常量的尋址方式,其特點是操作數直接表示在指令中,或以惟一形式隱含在指令中。下面各條指令操作數均採用了立即尋址方式,其中“//”後面的內容為指令的註釋部分,對指令沒有任何影響。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)存儲器直接尋址

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

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)存儲器間接尋址

存儲器間接尋址,簡稱間接尋址。該尋址方式在指令中以存儲器的形式給出操作數所在存儲器單元的地址,也就是說該存儲器的內容是操作數所在存儲器單元的地址。該存儲器一般稱為地址指針,在指令中需寫在方括號“[]”內。地址指針可以是字或雙字,對於地址範圍小於65535的存儲器可以用字指針;對於其他存儲器則要使用雙字指針。

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

做自控技術,必會PLC編程,S7-300編程語言設計知識!

存儲器間接尋址的雙字指針的格式如圖所示。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

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

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)寄存器間接尋址

寄存器間接尋址,簡稱寄存器尋址。該尋址方式在指令中通過地址寄存器和偏移量間接獲取操作數,其中的地址寄存器及偏移量必須寫在方括號“[]”內。在S7-300中有兩個地址寄存器AR1和AR2,用地址寄存器的內容加上偏移量形成地址指針,並指向操作數所在的存儲器單元。地址寄存器的地址指針有兩種格式,其長度均為雙字,指針格式如圖所示。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

第一種地址指針格式適用於在確定的存儲區內尋址,即區內寄存器間接尋址。

【例3-3】 區內寄存器間接尋址。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

第二種地址指針格式適用於區域間寄存器間接尋址。

【例3-4】 區域間寄存器間接尋址。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

第一種地址指針格式包括被尋址數據所在存儲單元地址的字節編號和位編號,至於對哪個存儲區尋址,則必須在指令中明確給出。這種格式適用於在確定的存儲區內尋址,即區內寄存器間接尋址。

第二種地址指針格式包含了數據所在存儲區的說明位(存儲區域標識位),可通過改變標識位實現跨區域尋址,區域標識由位26~24確定。這種指針格式適用於區域間寄存器間接尋址。

4 位邏輯指令

位邏輯指令處理的對象為二進制位信號。位邏輯指令掃描信號狀態“1”和“0”位,並根據布爾邏輯對它們進行組合,所產生的結果(“1”或“0”)稱為邏輯運算結果,存儲在狀態字的“RLO”中。

4.1 觸點與線圈

在LAD(梯形圖)程序中,通常使用類似繼電器控制電路中的觸點符號及線圈符號來表示PLC的位元件,被掃描的操作數(用絕對地址或符號地址表示)則標註在觸點符號的上方,如圖所示。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(1)常開觸點

做自控技術,必會PLC編程,S7-300編程語言設計知識!

對於常開觸點(動合觸點),則對“1”掃描相應操作數。在PLC中規定:若操作數是“1”則常開觸點“動作”,即認為是“閉合”的;若操作數是“0”,則常開觸點“復位”,即觸點仍處於打開的狀態。常開觸點所使用的操作數是:I、Q、M、L、D、T、C。

(2)常閉觸點

做自控技術,必會PLC編程,S7-300編程語言設計知識!

常閉觸點(動斷觸點)則對“0”掃描相應操作數。在PLC中規定:若操作數是“1”則常閉觸點“動作”,即觸點“斷開”;若操作數是“0”,則常閉觸點“復位”,即觸點仍保持閉合。 常閉觸點所使用的操作數是:I、Q、M、L、D、T、C。

(3)輸出線圈(賦值指令)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

輸出線圈與繼電器控制電路中的線圈一樣,如果有電流(信號流)流過線圈(RLO=“1”),則被驅動的操作數置“1”;如果沒有電流流過線圈(RLO=“0”),則被驅動的操作數復位(置“0”)。輸出線圈只能出現在梯形圖邏輯串的最右邊。 輸出線圈等同於STL程序中的賦值指令(用等於號“=”表示),所使用的操作數可以是:Q、M、L、D。

(4)中間輸出

做自控技術,必會PLC編程,S7-300編程語言設計知識!

在梯形圖設計時,如果一個邏輯串很長不便於編輯時,可以將邏輯串分成幾個段,前一段的邏輯運算結果(RLO)可作為中間輸出,存儲在位存儲器(I、Q、M、L或D)中,該存儲位可以當作一個觸點出現在其他邏輯串中。中間輸出只能放在梯形圖邏輯串的中間,而不能出現在最左端或最右端。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

與下面程序等效

做自控技術,必會PLC編程,S7-300編程語言設計知識!

4.2 基本邏輯指令

基本邏輯指令包括:

Ø “與”指令

Ø “與非”指令

Ø “或”指令

Ø “或非”指令

Ø “異或”指令

Ø “異或非”指令

Ø 邏輯塊的操作

Ø 信號流取反指令

(1)邏輯“與” 指令

邏輯“與” 指令使用的操作數可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現邏輯“與” 運算。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)邏輯 “與非”指令

邏輯 “與非”指令使用的操作數可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現邏輯 “與非”運算。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)邏輯 “或”指令

邏輯 “或”指令使用的操作數可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現邏輯 “或”運算。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)邏輯 “或非”指令

邏輯 “或非”指令使用的操作數可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現邏輯 “或非”運算。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(5)邏輯 “異或”指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(6)邏輯 “異或非”指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(7)邏輯塊的操作

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(8)信號流取反指令

信號流取反指令的作用就是對邏輯串的RLO值進行取反。指令格式及示例見表4-13。當輸入位I0.0和I0.1同時動作時,Q4.0信號狀態為“0”;否則,Q4.0信號狀態為“1”。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

4.3 置位和復位指令

置位(S)和復位(R)指令根據RLO的值來決定操作數的信號狀態是否改變,對於置位指令,一旦RLO為“1”,則操作數的狀態置“1”,即使RLO又變為“0”,輸出仍保持為“1”;若RLO為“0”,則操作數的信號狀態保持不變。對於復位操作,一旦RLO為“1”,則操作數的狀態置“0”,即使RLO又變為“0”,輸出仍保持為“0”;若RLO為“0”,則操作數的信號狀態保持不變。這一特性又被稱為靜態的置位和復位,相應地,賦值指令被稱為動態賦值。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

4.4 RS和SR觸發器

RS觸發器為“置位優先”型觸發器(當R和S驅動信號同時為“1”時,觸發器最終為置位狀態);

做自控技術,必會PLC編程,S7-300編程語言設計知識!

SR觸發器為“復位優先”型觸發器(當R和S驅動信號同時為“1”時,觸發器最終為復位狀態)。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

RS觸發器和SR觸發器的“位地址”、置位(S)、復(S)及輸出(Q)所使用的操作數可以是:I、Q、M、L、D。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例梯形圖程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作時序

4.5 跳變沿檢測指令

STEP 7中有2類跳變沿檢測指令,一種是對RLO的跳變沿檢測的指令,另一種是對觸點的跳變沿直接檢測的梯形圖方塊指令。

Ø RLO上升沿檢測指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

RLO下降沿檢測指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作時序

Ø 觸點信號上升沿檢測指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

Ø 觸點信號下降沿檢測指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作時序

5 定時器與計數器指令

5.1 定時器指令

S_PULSE(脈衝S5定時器)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

脈衝定時器的梯形圖及功能塊圖指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

脈衝定時器的線圈指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作時序

S_PEXT(擴展脈衝S5定時器)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

擴據脈衝S5定時器LAD及FBD指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

擴據脈衝S5定時器線圈指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作波形

S_ODT(接通延時S5定時器)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作波形

S_ODTS(保持型接通延時S5定時器)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

保持型接通延時S5定時器LAD及FBD指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

保持型接通延時S5定時器線圈指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作波形

S_OFFDT(斷電延時S5定時器)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

斷電延時S5定時器LAD及FBD指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

斷電延時S5定時器線圈指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

示例程序

做自控技術,必會PLC編程,S7-300編程語言設計知識!

工作波形

5.2 計數器指令

S7-300的計數器都是16位的,因此每個計數器佔用該區域2個字節空間,用來存儲計數值。不同的CPU模板,用於計數器的存儲區域也不同,最多允許使用64~512個計數器。計數器的地址編號:C0~C511。

ü S_CUD(加/減計數器)

ü S_CU(加計數器)

ü S_CD(減計數器)

ü 計數器線圈指令

1. S_CUD(加/減計數器)塊圖指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

2. S_CU(加計數器)塊圖指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

3. S_CD(減計數器)塊圖指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

4. 計數器的線圈指令

除了前面介紹的塊圖形式的計數器指令以外,S7-300系統還為用戶準備了LAD環境下的線圈形式的計數器。這些指令有計數器初值預置指令SC、加計數器指令CU和減計數器指令CD。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

l 加計數器線圈指令應用示例

初值預置SC指令若與CU指令配合可實現S_CU指令的功能。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

l 減計數器線圈指令應用示例

SC指令若與CD指令配合可實現S_CD指令的功能。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

l 加/減計數器線圈指令應用示例

SC指令若與CU和CD配合可實現S_CUD的功能。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

5.3 CPU時鐘存儲器

要使用該功能,在硬件配置時需要設置CPU的屬性,其中有一個選項為Clock Memory,選中選擇框就可激活該功能。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

設置CPU的時鐘存儲器

在Memory Byte區域輸入想為該項功能設置的MB的地址,如需要使用MB10,則直接輸入10。Clock Memory的功能是對所定義的MB的各個位週期性地改變其二進制的值(佔空比為1:1)。Clock Memory的各位的週期及頻率見表。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

【例】 時鐘存儲器與計數器的應用。

當定時器不夠用時,可以將計數器擴展為定時器。圖中分別給出了用減計數器擴展定時器的控制程序,程序中使用了CPU的時鐘存儲器,設置MB10為時鐘存儲器,由表4-39可知M10.0的變化週期為0.1s。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

6 數字指令

6.1 裝入與傳送指令

裝入指令(L)和傳送指令(T),可以對輸入或輸出模塊與存儲區之間的信息交換進行編程。

(1)對累加器1的裝入指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)對累加器1的傳送指令

T指令可以將累加器1的內容複製到被尋址的操作數,所複製的字節數取決於目標地址的類型(字節、字或雙字),指令格式如下:T 操作數

其中的操作數可以為直接I/O區(存儲類型為PQ)、數據存儲區或過程映像輸出表的相應地址(存儲類型為Q)。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)狀態字與累加器1之間的裝入和傳送指令

L STW(將狀態字裝入累加器1)

將狀態字裝入累加器1中,指令的執行與狀態位無關,而且對狀態字沒有任何影響。指令格式如下:

L STW

T STW(將累加器1的內容傳送到狀態字)

使用T STW指令可以將累加器1的位0~8傳送到狀態字的相應位,指令的執行與狀態位無關,指令格式如下:

T STW

(4)與地址寄存器有關的裝入和傳送指令

LAR1(將操作數的內容裝入地址寄存器AR1)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

LAR2(將操作數的內容裝入地址寄存器2)

使用LAR2指令可以將操作數的內容(32位指針)裝入地址寄存器AR2,指令格式同LAR1,其中的操作數可以是累加器1、指針型常數(P#)、存儲雙字(MD)、本地數據雙字(LD)、數據雙字(DBD)或背景數據雙字(DID),但不能用AR1。

TAR1(將地址寄存器1的內容傳送到操作數)

做自控技術,必會PLC編程,S7-300編程語言設計知識!

TAR2(將地址寄存器2的內容傳送到操作數)

使用TAR2指令可以將地址寄存器AR1的內容(32位指針)傳送給被尋址的操作數,指令格式同TAR1。其中的操作數可以是累加器1、存儲雙字(MD)、本地數據雙字(LD)、數據雙字(DBD)、背景數據雙字(DID),但不能用AR1。CAR(交換地址寄存器1和地址寄存器2的內容)

使用CAR指令可以交換地址寄存器AR1和地址寄存器AR2的內容,指令不需要指定操作數。指令的執行與狀態位無關,而且對狀態字沒有任何影響。

(5)LC(定時器/計數器裝載指令)

使用LC指令可以在累加器1的內容保存到累加器2中之後,將指定定時器字中當前時間值和時基以BCD碼(0~999)格式裝入到累加器1中,或將指定計數器的當前計數值以BCD碼(0~999)格式裝入到累加器1中。指令格式如下:

LC

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(6)MOVE指令

MOVE指令為功能框形式的傳送指令,能夠複製字節、字或雙字數據對象。應用中IN和OUT端操作數可以是常數、I、Q、M、D、L等類型,但必須在寬度上匹配。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

6.2 轉換指令

轉換指令是將累加器1中的數據進行數據類型轉換,轉換結果仍放在累加器1中。在STEP 7中,可以實現BCD碼與整數、整數與長整數、長整數與實數、整數的反碼、整數的補碼、實數求反等數據轉換操作。

(1)BCD碼和整數到其他類型轉換指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

STL形式的指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

LAD和FBD形式的指令

(2)整數和實數的碼型變換指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

STL形式的指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

LAD和FBD形式的指令

(3)實數取整指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

STL形式的指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

LAD和FBD形式的指令

(4)累加器1調整指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

6.3 比較指令

比較指令可完成整數、長整數或32位浮點數(實數)的相等、不等、大於、小於、大於或等於、小於或等於等比較 。

(1)整數比較指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)長整數比較指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)實數比較指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

6.4 算數運算指令

算術運算指令可完成整數、長整數及實數的加、減、乘、除、求餘、求絕對值等基本算數運算;以及32位浮點數的平方、平方根、自然對數、基於e的指數運算及三角函數等擴展算數運算。

(1)基本算術運算指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

整數運算

做自控技術,必會PLC編程,S7-300編程語言設計知識!

長整數運算

做自控技術,必會PLC編程,S7-300編程語言設計知識!

實數運算

(2)擴展算術運算指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

6.5 字邏輯運算指令

字邏輯運算指令可對兩個16位(WORD)或32位(DWORD)的二進制數據,逐位進行邏輯與、邏輯或、邏輯異或運算。

對於STL形式的字邏輯運算指令,可對累加器1和累加器2中的字或雙字數據進行邏輯運算,結果保存在累加器1中,若結果不為0,則對狀態標誌位CC1置“1”,否則對CC1置“0”。

對於LAD和FBD形式的字邏輯運算指令,由參數IN1和IN2提供參與運算的兩個數據,運算結果保存在由OUT指定的存儲區中。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

字邏輯運算指令格式

6.6 移位指令

移位指令有2種類型:基本移位指令可對無符號整數、有符號長整數、字或雙字數據進行移位操作;循環移位指令可對雙字數據進行循環移位和累加器1帶CC1的循環移位操作。

(1)有符號右移指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)字移位指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)雙字移位指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)雙字循環移位指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(5)帶累加器循環移位指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

7 控制指令

控制指令可控制程序的執行順序,使得CPU能根據不同的情況執行不同的程序。控制指令有3類:

7.1 邏輯控制指令

邏輯控制指令是指邏輯塊內的跳轉和循環指令,這些指令可以中斷原有的線性程序掃描,並跳轉到目標地址處重新執行線性程序掃描。目標地址由跳轉指令後面的標號指定,該地址標號指出程序要跳往何處,可向前跳轉,也可以向後跳轉,最大跳轉距離為-32768或32767字。

(1)無條件跳轉指令

無條件跳轉指令JU執行時,將直接中斷當前的線性程序掃描,並跳轉到由指令後面的標號所指定的目標地址處重新執行線性程序掃描。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

【例7-1】 無條件跳轉指令的使用。

當程序執行到無條件跳轉指令時,將直接跳轉到L1處執行。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)多分支跳轉指令

多分支跳轉指令JL的指令格式如下:

JL

如果累加器1低字中低字節的內容小於JL指令和由JL指令所指定的標號之間的JU指令的數量,JL指令就會跳轉到其中一條JU處執行,並由JU指令進一步跳轉到目標地址;如果累加器1低字中低字節的內容為0,則直接執行JL指令下面的第一條JU指令;如果累加器1低字中低字節的內容為1,則直接執行JL指令下面的第二條JU指令;如果跳轉的目的地的數量太大,則JL指令跳轉到目的地列表中最後一個JU指令之後的第一個指令。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(3)條件跳轉指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

程序示例如圖所示。當I0.0與I0.1同時為“1”時,則跳轉到L2處執行;否則,到L1處執行(順序執行)。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(4)循環指令

循環指令的格式如下:

LOOP

使用循環指令(LOOP)可以多次重複執行特定的程序段,由累加器1確定重複執行的次數,即以累加器1的低字為循環計數器。LOOP指令執行時,將累加器1低字中的值減1,如果不為0,則繼續循環過程,否則執行LOOP指令後面的指令。循環體是指循環標號和LOOP指令間的程序段。

利用循環指令可以完成有規律的重複計算過程,下面是求階乘“8!”的示例程序:

做自控技術,必會PLC編程,S7-300編程語言設計知識!

7.2 程序控制指令

程序控制指令是指功能塊(FB、FC、SFB、SFC)調用指令和邏輯塊(OB,FB,FC)結束指令。調用塊或結束塊可以是有條件的或是無條件的。

(1)基本控制指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

(2)子程序調用指令

做自控技術,必會PLC編程,S7-300編程語言設計知識!

CALL指令可以調用用戶編寫的功能塊或操作系統提供的功能塊,CALL指令的操作數是功能塊類型及其編號,當調用的功能塊是FB塊時還要提供相應的背景數據塊DB。使用CALL指令可以為被調用功能塊中的形參賦以實際參數,調用時應保證實參與形參的數據類型一致。

7.3 主控繼電器指令

主控繼電器(MCR)是一種繼電器梯形圖邏輯的主開關,用於控制電流(能流)的通斷。

做自控技術,必會PLC編程,S7-300編程語言設計知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!

享受更多最新實用PLC乾貨知識!

做自控技術,必會PLC編程,S7-300編程語言設計知識!


分享到:


相關文章: