版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
西門子PLC教程從入門到精通精簡第1頁/共285頁第4章S7-300編程語言學習§4.1STEP7編程語言§4.2數(shù)據(jù)類型§4.3S7-300指令基礎(chǔ)§4.4位邏輯指令§4.5定時器與計數(shù)器指令§4.6數(shù)字指令§4.7控制指令第2頁/共285頁§4.1STEP7編程語言STEP7是S7-300/400系列PLC應(yīng)用設(shè)計軟件包,所支持的PLC編程語言非常豐富。該軟件的標準版支持STL(語句表)、LAD(梯形圖)及FBD(功能塊圖)3種基本編程語言,并且在STEP7中可以相互轉(zhuǎn)換。專業(yè)版附加對GRAPH(順序功能圖)、SCL(結(jié)構(gòu)化控制語言)、HiGraph(圖形編程語言)、CFC(連續(xù)功能圖)等編程語言的支持。不同的編程語言可供不同知識背景的人員采用。第3頁/共285頁STL(語句表)STL(語句表)是一種類似于計算機匯編語言的一種文本編程語言,由多條語句組成一個程序段。語句表可供習慣匯編語言的用戶使用,在運行時間和要求的存儲空間方面最優(yōu)。在設(shè)計通信、數(shù)學運算等高級應(yīng)用程序時建議使用語句表。第4頁/共285頁LAD(梯形圖)LAD(梯形圖)是一種圖形語言,比較形象直觀,容易掌握,用得最多,堪稱用戶第一編程語言。梯形圖與繼電器控制電路圖的表達方式極為相似,適合于熟悉繼電器控制電路的用戶使用,特別適用于數(shù)字量邏輯控制。第5頁/共285頁FBD(功能塊圖)FBD(功能塊圖)使用類似于布爾代數(shù)的圖形邏輯符號來表示控制邏輯,一些復(fù)雜的功能用指令框表示。FBD比較適合于有數(shù)字電路基礎(chǔ)的編程人員使用。第6頁/共285頁GRAPH(順序控制)GRAPH類似于解決問題的流程圖,適用于順序控制的編程。利用S7-GRAPH編程語言,可以清楚快速地組織和編寫S7PLC系統(tǒng)的順序控制程序。它根據(jù)功能將控制任務(wù)分解為若干步,其順序用圖形方式顯示出來并且可形成圖形和文本方式的文件。第7頁/共285頁HiGraph(圖形編程語言)S7-Higraph允許用狀態(tài)圖描述生產(chǎn)過程,將自動控制下的機器或系統(tǒng)分成若干個功能單元,并為每個單元生成狀態(tài)圖,然后利用信息通訊將功能單元組合在一起形成完整的系統(tǒng)。第8頁/共285頁SCL(結(jié)構(gòu)化控制語言)S7-SCL(StructuredControlLanguage:結(jié)構(gòu)控制語言)是一種類似于PASCAL的高級文本編輯語言,用于S7-300/400和C7的編程,可以簡化數(shù)學計算、數(shù)據(jù)管理和組織工作。S7-SCL具有PLC公開的基本標準認證,符合IEC1131-3(結(jié)構(gòu)化文本)標準。第9頁/共285頁§4.2數(shù)據(jù)類型
數(shù)據(jù)類型決定數(shù)據(jù)的屬性,在STEP7中,數(shù)據(jù)類型分為三大類:§4.2.1基本數(shù)據(jù)類型§4.2.2復(fù)雜數(shù)據(jù)類型§4.2.3參數(shù)類型第10頁/共285頁§4.2.1基本數(shù)據(jù)類型第11頁/共285頁§4.2.2復(fù)雜數(shù)據(jù)類型數(shù)組(ARRAY)結(jié)構(gòu)(STRUCT)字符串(STRING)日期和時間(DATE_AND_TIME)用戶定義的數(shù)據(jù)類型(UDT)功能塊類型(FB、SFB)第12頁/共285頁1.數(shù)組(ARRAY)
數(shù)組是由一組同一類型的數(shù)據(jù)組合在一起而形成的復(fù)雜數(shù)據(jù)類型。數(shù)組的維數(shù)最大可以到6維;數(shù)組中的元素可以是基本數(shù)據(jù)類型或者復(fù)雜數(shù)據(jù)類型中的任一數(shù)據(jù)類型(Array類型除外,即數(shù)組類型不可以嵌套);數(shù)組中每一維的下標取值范圍是-32768~32767,要求下標的下限必須小于下標的上限。第13頁/共285頁2.結(jié)構(gòu)(STRUCT)
結(jié)構(gòu)是由一組不同類型(結(jié)構(gòu)的元素可以是基本的或復(fù)雜的數(shù)據(jù)類型)的數(shù)據(jù)組合在一起而形成的復(fù)雜數(shù)據(jù)類型。結(jié)構(gòu)通常用來定義一組相關(guān)的數(shù)據(jù),例如電機的一組數(shù)據(jù)可以按如下方式定義:第14頁/共285頁3.字符串(STRING)字符串是最多有254個字符(CHAR)的一維數(shù)組,最大長度為256個字節(jié)(其中前兩個字節(jié)用來存儲字符串的長度信息)。字符串常量用單引號括起來,例如:第15頁/共285頁4.日期和時間(DATE_AND_TIME)用于存儲年、月、日、時、分、秒、毫秒和星期,占用8個字節(jié),用BCD格式保存。星期天的代碼為1,1~6的代碼為2~7。例如:第16頁/共285頁5.用戶定義的數(shù)據(jù)類型(UDT)
用戶定義數(shù)據(jù)類型表示自定義的結(jié)構(gòu),存放在UDT塊中(UDT1~UDT65535),在另一個數(shù)據(jù)類型中作為一個數(shù)據(jù)類型“模板”。當輸入數(shù)據(jù)塊時,如果需要輸入幾個相同的結(jié)構(gòu),利用UDT可以節(jié)省輸入時間。6.功能塊類型(FB、SFB)這種數(shù)據(jù)類型僅可以在FB的靜態(tài)變量區(qū)定義,用于實現(xiàn)多背景DB。第17頁/共285頁§4.2.3參數(shù)數(shù)據(jù)類型
參數(shù)類型是一種用于邏輯塊(FB、FC)之間傳遞參數(shù)的數(shù)據(jù)類型,主要有以下幾種:
(1)TIMER(定時器)和COUNTER(計數(shù)器)。
(2)BLOCK(塊):指定一個塊用作輸入和輸出,實參應(yīng)為同類型的塊。
(3)POINTER(指針):6字節(jié)指針類型,用來傳遞DB的塊號和數(shù)據(jù)地址。
(3)ANY:10字節(jié)指針類型,用來傳遞DB塊號、數(shù)據(jù)地址、數(shù)據(jù)數(shù)量以及數(shù)據(jù)類型。第18頁/共285頁§4.3S7-300指令基礎(chǔ)
指令是程序的最小獨立單位,用戶程序是由若干條順序排列的指令構(gòu)成。指令一般由操作碼和操作數(shù)組成,其中的操作碼代表指令所要完成的具體操作(功能),操作數(shù)則是該指令操作或運算的對象?!?.3.1PLC用戶存儲區(qū)的分類及功能§4.3.2指令操作數(shù)§4.3.3尋址方式
§4.3.4狀態(tài)字第19頁/共285頁§4.3.1PLC用戶存儲區(qū)的分類及功能(1/2)
第20頁/共285頁§4.3.1PLC用戶存儲區(qū)的分類及功能(2/2)
第21頁/共285頁§4.3.2指令操作數(shù)
指令操作數(shù)(又稱編程元件)一般在用戶存儲區(qū)中,操作數(shù)由操作標識符和參數(shù)組成。操作標識符由主標識符和輔助標識符組成,主標識符用來指定操作數(shù)所使用的存儲區(qū)類型,輔助標識符則用來指定操作數(shù)的單位(如:位、字節(jié)、字、雙字等)。
主標識符有:I(輸入過程映像寄存器、Q(輸出過程映像寄存器)、M(位存儲器)、PI(外部輸入寄存器)、PQ(外部輸出寄存器)、T(定時器)、C(計數(shù)器)、DB(數(shù)據(jù)塊寄存器)和L(本地數(shù)據(jù)寄存器);
輔助標識符有:X(位)、B(字節(jié))、W(字或2B)、D(2DW或4B)。第22頁/共285頁§4.3.3尋址方式
所謂尋址方式就是指令執(zhí)行時獲取操作數(shù)的方式,可以直接或間接方式給出操作數(shù)。S7-300有4種尋址方式:立即尋址存儲器直接尋址存儲器間接尋址寄存器間接尋址第23頁/共285頁1.立即尋址
立即尋址是對常數(shù)或常量的尋址方式,其特點是操作數(shù)直接表示在指令中,或以惟一形式隱含在指令中。下面各條指令操作數(shù)均采用了立即尋址方式,其中“//”后面的內(nèi)容為指令的注釋部分,對指令沒有任何影響。第24頁/共285頁2.存儲器直接尋址
存儲器直接尋址,簡稱直接尋址。該尋址方式在指令中直接給出操作數(shù)的存儲單元地址。存儲單元地址可用符號地址(如SB1、KM等)或絕對地址(如I0.0、Q4.1等)。下面各條指令操作數(shù)均采用了直接尋址方式。第25頁/共285頁3.存儲器間接尋址(1/3)
存儲器間接尋址,簡稱間接尋址。該尋址方式在指令中以存儲器的形式給出操作數(shù)所在存儲器單元的地址,也就是說該存儲器的內(nèi)容是操作數(shù)所在存儲器單元的地址。該存儲器一般稱為地址指針,在指令中需寫在方括號“[]”內(nèi)。地址指針可以是字或雙字,對于地址范圍小于65535的存儲器可以用字指針;對于其他存儲器則要使用雙字指針。第26頁/共285頁4.存儲器間接尋址(2/3)【例4-3-1】
存儲器間接尋址的單字格式的指針尋址。第27頁/共285頁4.存儲器間接尋址(3/3)
存儲器間接尋址的雙字指針的格式如圖所示?!纠?-3-2】
存儲器間接尋址的雙字格式的指針尋址。第28頁/共285頁5.寄存器間接尋址(1/4)
寄存器間接尋址,簡稱寄存器尋址。該尋址方式在指令中通過地址寄存器和偏移量間接獲取操作數(shù),其中的地址寄存器及偏移量必須寫在方括號“[]”內(nèi)。在S7-300中有兩個地址寄存器AR1和AR2,用地址寄存器的內(nèi)容加上偏移量形成地址指針,并指向操作數(shù)所在的存儲器單元。地址寄存器的地址指針有兩種格式,其長度均為雙字,指針格式如圖所示。第29頁/共285頁5.寄存器間接尋址(2/4)
第一種地址指針格式適用于在確定的存儲區(qū)內(nèi)尋址,即區(qū)內(nèi)寄存器間接尋址。
【例4-3-3】區(qū)內(nèi)寄存器間接尋址。第30頁/共285頁5.寄存器間接尋址(3/4)
第二種地址指針格式適用于區(qū)域間寄存器間接尋址。
【例4-3-4】區(qū)域間寄存器間接尋址。第31頁/共285頁5.寄存器間接尋址(4/4)
第一種地址指針格式包括被尋址數(shù)據(jù)所在存儲單元地址的字節(jié)編號和位編號,至于對哪個存儲區(qū)尋址,則必須在指令中明確給出。這種格式適用于在確定的存儲區(qū)內(nèi)尋址,即區(qū)內(nèi)寄存器間接尋址。第二種地址指針格式包含了數(shù)據(jù)所在存儲區(qū)的說明位(存儲區(qū)域標識位),可通過改變標識位實現(xiàn)跨區(qū)域?qū)ぶ?,區(qū)域標識由位26~24確定。這種指針格式適用于區(qū)域間寄存器間接尋址。第32頁/共285頁§4.4位邏輯指令
位邏輯指令處理的對象為二進制位信號。位邏輯指令掃描信號狀態(tài)“1”和“0”位,并根據(jù)布爾邏輯對它們進行組合,所產(chǎn)生的結(jié)果(“1”或“0”)稱為邏輯運算結(jié)果,存儲在狀態(tài)字的“RLO”中?!?.4.1觸點與線圈§4.4.2基本邏輯指令§4.4.3置位和復(fù)位指令§4.4.4RS和SR觸發(fā)器§4.4.5跳變沿檢測指令第33頁/共285頁§4.4.1觸點與線圈
在LAD(梯形圖)程序中,通常使用類似繼電器控制電路中的觸點符號及線圈符號來表示PLC的位元件,被掃描的操作數(shù)(用絕對地址或符號地址表示)則標注在觸點符號的上方,如圖所示。第34頁/共285頁1.常開觸點
對于常開觸點(動合觸點),則對“1”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”則常開觸點“動作”,即認為是“閉合”的;若操作數(shù)是“0”,則常開觸點“復(fù)位”,即觸點仍處于打開的狀態(tài)。常開觸點所使用的操作數(shù)是:I、Q、M、L、D、T、C。第35頁/共285頁2.常閉觸點
常閉觸點(動斷觸點)則對“0”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”則常閉觸點“動作”,即觸點“斷開”;若操作數(shù)是“0”,則常閉觸點“復(fù)位”,即觸點仍保持閉合。常閉觸點所使用的操作數(shù)是:I、Q、M、L、D、T、C。第36頁/共285頁3.輸出線圈(賦值指令)
輸出線圈與繼電器控制電路中的線圈一樣,如果有電流(信號流)流過線圈(RLO=“1”),則被驅(qū)動的操作數(shù)置“1”;如果沒有電流流過線圈(RLO=“0”),則被驅(qū)動的操作數(shù)復(fù)位(置“0”)。輸出線圈只能出現(xiàn)在梯形圖邏輯串的最右邊。輸出線圈等同于STL程序中的賦值指令(用等于號“=”表示),所使用的操作數(shù)可以是:Q、M、L、D。第37頁/共285頁4.中間輸出
在梯形圖設(shè)計時,如果一個邏輯串很長不便于編輯時,可以將邏輯串分成幾個段,前一段的邏輯運算結(jié)果(RLO)可作為中間輸出,存儲在位存儲器(I、Q、M、L或D)中,該存儲位可以當作一個觸點出現(xiàn)在其他邏輯串中。中間輸出只能放在梯形圖邏輯串的中間,而不能出現(xiàn)在最左端或最右端。與下面程序等效第38頁/共285頁§4.4.2基本邏輯指令
基本邏輯指令包括:“與”指令“與非”指令“或”指令“或非”指令“異或”指令“異或非”指令邏輯塊的操作信號流取反指令第39頁/共285頁1.邏輯“與”指令
邏輯“與”指令使用的操作數(shù)可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現(xiàn)邏輯“與”運算。第40頁/共285頁2.邏輯“與非”指令
邏輯“與非”指令使用的操作數(shù)可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現(xiàn)邏輯“與非”運算。第41頁/共285頁3.邏輯“或”指令
邏輯“或”指令使用的操作數(shù)可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現(xiàn)邏輯“或”運算。第42頁/共285頁4.邏輯“或非”指令
邏輯“或非”指令使用的操作數(shù)可以是:I、Q、M、L、D、T、C。有2種指令形式(STL和FBD),用LAD也可以實現(xiàn)邏輯“或非”運算。第43頁/共285頁5.邏輯“異或”指令
第44頁/共285頁6.邏輯“異或非”指令
第45頁/共285頁7.邏輯塊的操作
第46頁/共285頁8.信號流取反指令
信號流取反指令的作用就是對邏輯串的RLO值進行取反。指令格式及示例見表4-13。當輸入位I0.0和I0.1同時動作時,Q4.0信號狀態(tài)為“0”;否則,Q4.0信號狀態(tài)為“1”。第47頁/共285頁§4.4.3置位和復(fù)位指令
置位(S)和復(fù)位(R)指令根據(jù)RLO的值來決定操作數(shù)的信號狀態(tài)是否改變,對于置位指令,一旦RLO為“1”,則操作數(shù)的狀態(tài)置“1”,即使RLO又變?yōu)椤?”,輸出仍保持為“1”;若RLO為“0”,則操作數(shù)的信號狀態(tài)保持不變。對于復(fù)位操作,一旦RLO為“1”,則操作數(shù)的狀態(tài)置“0”,即使RLO又變?yōu)椤?”,輸出仍保持為“0”;若RLO為“0”,則操作數(shù)的信號狀態(tài)保持不變。這一特性又被稱為靜態(tài)的置位和復(fù)位,相應(yīng)地,賦值指令被稱為動態(tài)賦值。第48頁/共285頁第49頁/共285頁§4.4.4RS和SR觸發(fā)器RS觸發(fā)器為“置位優(yōu)先”型觸發(fā)器(當R和S驅(qū)動信號同時為“1”時,觸發(fā)器最終為置位狀態(tài));SR觸發(fā)器為“復(fù)位優(yōu)先”型觸發(fā)器(當R和S驅(qū)動信號同時為“1”時,觸發(fā)器最終為復(fù)位狀態(tài))。
RS觸發(fā)器和SR觸發(fā)器的“位地址”、置位(S)、復(fù)(S)及輸出(Q)所使用的操作數(shù)可以是:I、Q、M、L、D。第50頁/共285頁1.RS觸發(fā)器第51頁/共285頁2.SR觸發(fā)器第52頁/共285頁3.RS觸發(fā)器和SR觸發(fā)器的工作時序示例梯形圖程序工作時序
第53頁/共285頁§4.4.5跳變沿檢測指令STEP7中有2類跳變沿檢測指令,一種是對RLO的跳變沿檢測的指令,另一種是對觸點的跳變沿直接檢測的梯形圖方塊指令。RLO上升沿檢測指令RLO下降沿檢測指令觸點信號上升沿檢測指令觸點信號下降沿檢測指令【例4-4-2】
邊沿檢測指令的應(yīng)用第54頁/共285頁1.RLO上升沿檢測指令第55頁/共285頁2.RLO下降沿檢測指令第56頁/共285頁3.RLO邊沿檢測指令的工作時序工作時序
示例程序
第57頁/共285頁4.觸點信號上升沿檢測指令第58頁/共285頁5.觸點信號下降沿檢測指令第59頁/共285頁6.觸點信號邊沿檢測指令的工作時序工作時序
示例程序
第60頁/共285頁§4.5定時器與計數(shù)器指令§4.5.1定時器指令§4.5.2計數(shù)器指令§4.5.3CPU時鐘存儲器
第61頁/共285頁§4.5.1定時器指令S_PULSE(脈沖S5定時器)S_PEXT(擴展脈沖S5定時器)S_ODT(接通延時S5定時器)S_ODTS(保持型接通延時S5定時器)S_OFFDT(斷電延時S5定時器)第62頁/共285頁1.S_PULSE(脈沖S5定時器)(1/3)
脈沖定時器的梯形圖及功能塊圖指令第63頁/共285頁1.S_PULSE(脈沖S5定時器)(2/3)
脈沖定時器的線圈指令第64頁/共285頁1.S_PULSE(脈沖S5定時器)(3/3)
工作時序示例程序第65頁/共285頁
【例4-5-1】
脈沖定時器應(yīng)用:優(yōu)先搶答器設(shè)計。第66頁/共285頁
【例4-5-1】
設(shè)計說明:參賽者要搶答主持人所提問題時,需搶先按下桌上的按鈕;指示燈亮后需待主持人按下“復(fù)位”鍵R后才熄燈;對初中班學生照顧,只要按下SB11和SB12中任一個按鈕燈HL1都亮;對高三班學生限制,只有SB31和SB32都按下時燈HL3才亮;若在主持人按下“開始”按鈕S后10s內(nèi)有搶答按鈕壓下,則電磁鐵YC得電,使彩球搖動,以示競賽者得到一次幸運的機會;如果定時到仍未有搶答,則禁止繼續(xù)搶答。第67頁/共285頁端子接線圖
【例4-5-1】第68頁/共285頁I/O地址分配表【例4-5-1】第69頁/共285頁控制程序:建立允許搶答和禁止搶答標志【例4-5-1】第70頁/共285頁設(shè)置搶答定時器
【例4-5-1】初中組搶答控制
第71頁/共285頁【例4-5-1】高一組搶答控制
高三組搶答控制
第72頁/共285頁2.S_PEXT(擴展脈沖S5定時器)(1/3)
擴據(jù)脈沖S5定時器LAD及FBD指令第73頁/共285頁2.S_PEXT(擴展脈沖S5定時器)(2/3)
擴據(jù)脈沖S5定時器線圈指令第74頁/共285頁2.S_PEXT(擴展脈沖S5定時器)(3/3)
示例程序工作波形第75頁/共285頁
【例4-5-2】
擴展脈沖定時器應(yīng)用——電動機延時自動關(guān)閉控制??刂埔螅喊磩悠饎影粹oS1(I0.0),電動機M(Q4.0)立即起動,延時5分鐘以后自動關(guān)閉。起動后按動停止按鈕S2(I0.1),電動機立即停機。第76頁/共285頁【例4-5-2】控制程序(LAD)
控制程序(STL)
第77頁/共285頁3.S_ODT(接通延時S5定時器)(1/3)
接通延時S5定時器LAD及FBD指令第78頁/共285頁3.S_ODT(接通延時S5定時器)(2/3)
接通延時S5定時器線圈指令第79頁/共285頁3.S_ODT(接通延時S5定時器)(3/3)
示例程序工作波形第80頁/共285頁
【例4-5-3】
接通延時定時器和脈沖定時器應(yīng)用——用定時器構(gòu)成一脈沖發(fā)生器,當滿足一定條件時,能夠輸出一定頻率和一定占空比的脈沖信號。
工藝要求:當按鈕S1(I0.0)按下時,輸出指示燈H1(Q4.0)以滅2s,亮1s規(guī)律交替進行。第81頁/共285頁【例4-5-3】控制程序(使用接通延時定時器)
控制程序(使用脈沖定時器)
第82頁/共285頁4.S_ODTS(保持型接通延時S5定時器)(1/3)
保持型接通延時S5定時器LAD及FBD指令第83頁/共285頁4.S_ODTS(保持型接通延時S5定時器)(2/3)
保持型接通延時S5定時器線圈指令第84頁/共285頁4.S_ODTS(保持型接通延時S5定時器)(3/3)
示例程序工作波形第85頁/共285頁5.S_OFFDT(斷電延時S5定時器)(1/3)
斷電延時S5定時器LAD及FBD指令第86頁/共285頁5.S_OFFDT(斷電延時S5定時器)(2/3)
斷電延時S5定時器線圈指令第87頁/共285頁5.S_OFFDT(斷電延時S5定時器)(3/3)
示例程序工作波形第88頁/共285頁§4.5.2計數(shù)器指令S7-300的計數(shù)器都是16位的,因此每個計數(shù)器占用該區(qū)域2個字節(jié)空間,用來存儲計數(shù)值。不同的CPU模板,用于計數(shù)器的存儲區(qū)域也不同,最多允許使用64~512個計數(shù)器。計數(shù)器的地址編號:C0~C511。S_CUD(加/減計數(shù)器)S_CU(加計數(shù)器)S_CD(減計數(shù)器)計數(shù)器線圈指令第89頁/共285頁1.S_CUD(加/減計數(shù)器)塊圖指令第90頁/共285頁2.S_CU(加計數(shù)器)塊圖指令第91頁/共285頁3.S_CD(減計數(shù)器)塊圖指令第92頁/共285頁4.計數(shù)器的線圈指令
除了前面介紹的塊圖形式的計數(shù)器指令以外,S7-300系統(tǒng)還為用戶準備了LAD環(huán)境下的線圈形式的計數(shù)器。這些指令有計數(shù)器初值預(yù)置指令SC、加計數(shù)器指令CU和減計數(shù)器指令CD。第93頁/共285頁加計數(shù)器線圈指令應(yīng)用示例
初值預(yù)置SC指令若與CU指令配合可實現(xiàn)S_CU指令的功能。第94頁/共285頁減計數(shù)器線圈指令應(yīng)用示例SC指令若與CD指令配合可實現(xiàn)S_CD指令的功能。第95頁/共285頁加/減計數(shù)器線圈指令應(yīng)用示例SC指令若與CU和CD配合可實現(xiàn)S_CUD的功能。第96頁/共285頁§4.5.3訪問CPU的時鐘存儲器
要使用該功能,在硬件配置時需要設(shè)置CPU的屬性,其中有一個選項為ClockMemory,選中選擇框就可激活該功能。第97頁/共285頁設(shè)置CPU的時鐘存儲器
在MemoryByte區(qū)域輸入想為該項功能設(shè)置的MB的地址,如需要使用MB10,則直接輸入10。ClockMemory的功能是對所定義的MB的各個位周期性地改變其二進制的值(占空比為1:1)。ClockMemory的各位的周期及頻率見表。第98頁/共285頁
【例4-5-5】
時鐘存儲器與計數(shù)器的應(yīng)用。當定時器不夠用時,可以將計數(shù)器擴展為定時器。圖中分別給出了用減計數(shù)器擴展定時器的控制程序,程序中使用了CPU的時鐘存儲器,設(shè)置MB10為時鐘存儲器,由表4-39可知M10.0的變化周期為0.1s。第99頁/共285頁§4.6數(shù)字指令§4.6.1裝入與傳送指令§4.6.2轉(zhuǎn)換指令§4.6.3比較指令§4.6.4算數(shù)運算指令§4.6.5字邏輯運算指令§4.6.6移位指令§4.6.7數(shù)字指令綜合應(yīng)用
第100頁/共285頁§4.6.1裝入和傳送指令
裝入指令(L)和傳送指令(T),可以對輸入或輸出模塊與存儲區(qū)之間的信息交換進行編程。對累加器1的裝入指令對累加器1的傳送指令狀態(tài)字與累加器1之間的裝入和傳送指令與地址寄存器有關(guān)的裝入和傳送指令LC(定時器/計數(shù)器裝載指令)MOVE指令第101頁/共285頁1.對累加器1的裝入指令第102頁/共285頁2.對累加器1的傳送指令T指令可以將累加器1的內(nèi)容復(fù)制到被尋址的操作數(shù),所復(fù)制的字節(jié)數(shù)取決于目標地址的類型(字節(jié)、字或雙字),指令格式如下:T 操作數(shù)其中的操作數(shù)可以為直接I/O區(qū)(存儲類型為PQ)、數(shù)據(jù)存儲區(qū)或過程映像輸出表的相應(yīng)地址(存儲類型為Q)。第103頁/共285頁3.狀態(tài)字與累加器1之間的裝入和傳送指令LSTW(將狀態(tài)字裝入累加器1)將狀態(tài)字裝入累加器1中,指令的執(zhí)行與狀態(tài)位無關(guān),而且對狀態(tài)字沒有任何影響。指令格式如下:L STWTSTW(將累加器1的內(nèi)容傳送到狀態(tài)字)使用TSTW指令可以將累加器1的位0~8傳送到狀態(tài)字的相應(yīng)位,指令的執(zhí)行與狀態(tài)位無關(guān),指令格式如下:T STW第104頁/共285頁4.與地址寄存器有關(guān)的裝入和傳送指令(1/4)
LAR1(將操作數(shù)的內(nèi)容裝入地址寄存器AR1)第105頁/共285頁4.與地址寄存器有關(guān)的裝入和傳送指令(2/4)
LAR2(將操作數(shù)的內(nèi)容裝入地址寄存器2)使用LAR2指令可以將操作數(shù)的內(nèi)容(32位指針)裝入地址寄存器AR2,指令格式同LAR1,其中的操作數(shù)可以是累加器1、指針型常數(shù)(P#)、存儲雙字(MD)、本地數(shù)據(jù)雙字(LD)、數(shù)據(jù)雙字(DBD)或背景數(shù)據(jù)雙字(DID),但不能用AR1。第106頁/共285頁4.與地址寄存器有關(guān)的裝入和傳送指令(3/4)
TAR1(將地址寄存器1的內(nèi)容傳送到操作數(shù))第107頁/共285頁4.與地址寄存器有關(guān)的裝入和傳送指令(4/4)
TAR2(將地址寄存器2的內(nèi)容傳送到操作數(shù))使用TAR2指令可以將地址寄存器AR1的內(nèi)容(32位指針)傳送給被尋址的操作數(shù),指令格式同TAR1。其中的操作數(shù)可以是累加器1、存儲雙字(MD)、本地數(shù)據(jù)雙字(LD)、數(shù)據(jù)雙字(DBD)、背景數(shù)據(jù)雙字(DID),但不能用AR1。CAR(交換地址寄存器1和地址寄存器2的內(nèi)容)使用CAR指令可以交換地址寄存器AR1和地址寄存器AR2的內(nèi)容,指令不需要指定操作數(shù)。指令的執(zhí)行與狀態(tài)位無關(guān),而且對狀態(tài)字沒有任何影響。第108頁/共285頁5.LC(定時器/計數(shù)器裝載指令
使用LC指令可以在累加器1的內(nèi)容保存到累加器2中之后,將指定定時器字中當前時間值和時基以BCD碼(0~999)格式裝入到累加器1中,或?qū)⒅付ㄓ嫈?shù)器的當前計數(shù)值以BCD碼(0~999)格式裝入到累加器1中。指令格式如下:LC <定時器/計數(shù)器>第109頁/共285頁6.MOVE指令MOVE指令為功能框形式的傳送指令,能夠復(fù)制字節(jié)、字或雙字數(shù)據(jù)對象。應(yīng)用中IN和OUT端操作數(shù)可以是常數(shù)、I、Q、M、D、L等類型,但必須在寬度上匹配。第110頁/共285頁§4.6.2轉(zhuǎn)換指令
轉(zhuǎn)換指令是將累加器1中的數(shù)據(jù)進行數(shù)據(jù)類型轉(zhuǎn)換,轉(zhuǎn)換結(jié)果仍放在累加器1中。在STEP7中,可以實現(xiàn)BCD碼與整數(shù)、整數(shù)與長整數(shù)、長整數(shù)與實數(shù)、整數(shù)的反碼、整數(shù)的補碼、實數(shù)求反等數(shù)據(jù)轉(zhuǎn)換操作。BCD碼和整數(shù)到其他類型轉(zhuǎn)換指令整數(shù)和實數(shù)的碼型變換指令實數(shù)取整指令累加器1調(diào)整指令第111頁/共285頁1.BCD碼和整數(shù)到其他類型轉(zhuǎn)換指令(1/3)
STL形式的指令(1)第112頁/共285頁1.BCD碼和整數(shù)到其他類型轉(zhuǎn)換指令(2/3)STL形式的指令(2)第113頁/共285頁1.BCD碼和整數(shù)到其他類型轉(zhuǎn)換指令(3/3)LAD和FBD形式的指令第114頁/共285頁2.整數(shù)和實數(shù)的碼型變換指令(1/2)
STL形式的指令第115頁/共285頁2.整數(shù)和實數(shù)的碼型變換指令(2/2)
LAD和FBD形式的指令第116頁/共285頁3.實數(shù)取整指令(1/2)
STL形式的指令第117頁/共285頁3.實數(shù)取整指令(2/2)
LAD和FBD形式的指令第118頁/共285頁4.累加器1調(diào)整指令第119頁/共285頁§4.6.3比較指令
比較指令可完成整數(shù)、長整數(shù)或32位浮點數(shù)(實數(shù))的相等、不等、大于、小于、大于或等于、小于或等于等比較。整數(shù)比較指令長整數(shù)比較指令實數(shù)比較指令第120頁/共285頁1.整數(shù)比較指令第121頁/共285頁1.整數(shù)比較指令(示例)第122頁/共285頁2.長整數(shù)比較指令第123頁/共285頁2.長整數(shù)比較指令(示例)第124頁/共285頁3.實數(shù)比較指令第125頁/共285頁3.實數(shù)比較指令(示例)
第126頁/共285頁§4.6.4算數(shù)運算指令
算術(shù)運算指令可完成整數(shù)、長整數(shù)及實數(shù)的加、減、乘、除、求余、求絕對值等基本算數(shù)運算;以及32位浮點數(shù)的平方、平方根、自然對數(shù)、基于e的指數(shù)運算及三角函數(shù)等擴展算數(shù)運算?;舅阈g(shù)運算指令擴展算術(shù)運算指令第127頁/共285頁1.基本算數(shù)運算指令(整數(shù)運算)
第128頁/共285頁1.基本算數(shù)運算指令(長整數(shù)運算)
第129頁/共285頁1.基本算數(shù)運算指令(實數(shù)運算)
第130頁/共285頁【例4-6-1】16位整數(shù)的算術(shù)運算指令應(yīng)用。第131頁/共285頁【例4-6-1】16位整數(shù)的算術(shù)運算指令應(yīng)用?!纠?-6-2】求輸入雙字ID10的內(nèi)容與常數(shù)32相除的余數(shù),結(jié)果保存到MD20中。第132頁/共285頁2.擴展算數(shù)運算指令第133頁/共285頁§4.6.5字邏輯運算指令
字邏輯運算指令可對兩個16位(WORD)或32位(DWORD)的二進制數(shù)據(jù),逐位進行邏輯與、邏輯或、邏輯異或運算。對于STL形式的字邏輯運算指令,可對累加器1和累加器2中的字或雙字數(shù)據(jù)進行邏輯運算,結(jié)果保存在累加器1中,若結(jié)果不為0,則對狀態(tài)標志位CC1置“1”,否則對CC1置“0”。對于LAD和FBD形式的字邏輯運算指令,由參數(shù)IN1和IN2提供參與運算的兩個數(shù)據(jù),運算結(jié)果保存在由OUT指定的存儲區(qū)中。第134頁/共285頁字邏輯運算指令格式第135頁/共285頁§4.6.6移位指令
移位指令有2種類型:基本移位指令可對無符號整數(shù)、有符號長整數(shù)、字或雙字數(shù)據(jù)進行移位操作;循環(huán)移位指令可對雙字數(shù)據(jù)進行循環(huán)移位和累加器1帶CC1的循環(huán)移位操作。有符號右移指令字移位指令雙字移位指令雙字循環(huán)移位指令帶累加器循環(huán)移位指令第136頁/共285頁1.有符號右移指令格式第137頁/共285頁2.字移位指令格式第138頁/共285頁3.雙字移位指令格式第139頁/共285頁4.雙字循環(huán)移位指令格式第140頁/共285頁5.帶累加器循環(huán)移位指令格式第141頁/共285頁§4.7控制指令
控制指令可控制程序的執(zhí)行順序,使得CPU能根據(jù)不同的情況執(zhí)行不同的程序??刂浦噶钣?類:§4.7.1邏輯控制指令§4.7.2程序控制指令§4.7.3主控繼電器指令第142頁/共285頁§4.7.1邏輯控制指令
邏輯控制指令是指邏輯塊內(nèi)的跳轉(zhuǎn)和循環(huán)指令,這些指令可以中斷原有的線性程序掃描,并跳轉(zhuǎn)到目標地址處重新執(zhí)行線性程序掃描。目標地址由跳轉(zhuǎn)指令后面的標號指定,該地址標號指出程序要跳往何處,可向前跳轉(zhuǎn),也可以向后跳轉(zhuǎn),最大跳轉(zhuǎn)距離為-32768或32767字。無條件跳轉(zhuǎn)指令多分支跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令循環(huán)指令第143頁/共285頁1.無條件跳轉(zhuǎn)指令
無條件跳轉(zhuǎn)指令JU執(zhí)行時,將直接中斷當前的線性程序掃描,并跳轉(zhuǎn)到由指令后面的標號所指定的目標地址處重新執(zhí)行線性程序掃描。第144頁/共285頁【例4-7-1】
無條件跳轉(zhuǎn)指令的使用。當程序執(zhí)行到無條件跳轉(zhuǎn)指令時,將直接跳轉(zhuǎn)到L1處執(zhí)行。第145頁/共285頁2.多分支跳轉(zhuǎn)指令
多分支跳轉(zhuǎn)指令JL的指令格式如下:JL<標號>
如果累加器1低字中低字節(jié)的內(nèi)容小于JL指令和由JL指令所指定的標號之間的JU指令的數(shù)量,JL指令就會跳轉(zhuǎn)到其中一條JU處執(zhí)行,并由JU指令進一步跳轉(zhuǎn)到目標地址;如果累加器1低字中低字節(jié)的內(nèi)容為0,則直接執(zhí)行JL指令下面的第一條JU指令;如果累加器1低字中低字節(jié)的內(nèi)容為1,則直接執(zhí)行JL指令下面的第二條JU指令;如果跳轉(zhuǎn)的目的地的數(shù)量太大,則JL指令跳轉(zhuǎn)到目的地列表中最后一個JU指令之后的第一個指令。第146頁/共285頁【例4-7-2】
多分支跳轉(zhuǎn)指令的使用。第147頁/共285頁3.條件跳轉(zhuǎn)指令第148頁/共285頁【例4-7-3】
條件跳轉(zhuǎn)指令的使用。
程序示例如圖4-44所示。當I0.0與I0.1同時為“1”時,則跳轉(zhuǎn)到L2處執(zhí)行;否則,到L1處執(zhí)行(順序執(zhí)行)。第149頁/共285頁4.循環(huán)指令
循環(huán)指令的格式如下:LOOP<標號>
使用循環(huán)指令(LOOP)可以多次重復(fù)執(zhí)行特定的程序段,由累加器1確定重復(fù)執(zhí)行的次數(shù),即以累加器1的低字為循環(huán)計數(shù)器。LOOP指令執(zhí)行時,將累加器1低字中的值減1,如果不為0,則繼續(xù)循環(huán)過程,否則執(zhí)行LOOP指令后面的指令。循環(huán)體是指循環(huán)標號和LOOP指令間的程序段。第150頁/共285頁【例4-7-4】
循環(huán)指令的使用。利用循環(huán)指令可以完成有規(guī)律的重復(fù)計算過程,下面是求階乘“8!”的示例程序:第151頁/共285頁§4.7.2程序控制指令
程序控制指令是指功能塊(FB、FC、SFB、SFC)調(diào)用指令和邏輯塊(OB,F(xiàn)B,F(xiàn)C)結(jié)束指令。調(diào)用塊或結(jié)束塊可以是有條件的或是無條件的?;究刂浦噶钭映绦蛘{(diào)用指令
CALL指令可以調(diào)用用戶編寫的功能塊或操作系統(tǒng)提供的功能塊,CALL指令的操作數(shù)是功能塊類型及其編號,當調(diào)用的功能塊是FB塊時還要提供相應(yīng)的背景數(shù)據(jù)塊DB。使用CALL指令可以為被調(diào)用功能塊中的形參賦以實際參數(shù),調(diào)用時應(yīng)保證實參與形參的數(shù)據(jù)類型一致。第152頁/共285頁1.基本控制指令第153頁/共285頁2.子程序調(diào)用指令第154頁/共285頁§4.7.3主控繼電器指令
主控繼電器(MCR)是一種繼電器梯形圖邏輯的主開關(guān),用于控制電流(能流)的通斷。第155頁/共285頁第156頁/共285頁第5章S7程序結(jié)構(gòu)與程序設(shè)計§5.1S7CPU中的程序§5.2
數(shù)據(jù)塊中的數(shù)據(jù)存儲§5.3
邏輯塊(FC和FB)的結(jié)構(gòu)及編程§5.4
編輯并調(diào)用無參功能(FC)——分部程序設(shè)計§5.5
編輯并調(diào)用有參功能(FC)——結(jié)構(gòu)化程序設(shè)計§5.6
編輯并調(diào)用無靜態(tài)參數(shù)的功能塊(FB)§5.7
編輯并調(diào)用有靜態(tài)參數(shù)的功能塊(FB)§5.8
使用多重背景——結(jié)構(gòu)化程序設(shè)計第157頁/共285頁§5.1S7CPU中的程序§5.1.1用戶程序中的塊結(jié)構(gòu)§5.1.2用戶程序結(jié)構(gòu)§5.1.3I/O過程映像§5.1.4程序循環(huán)執(zhí)行第158頁/共285頁§5.1.1用戶程序中的塊結(jié)構(gòu)第159頁/共285頁§5.1.2用戶程序結(jié)構(gòu)線性程序(線性編程)分部式程序(分部編程、分塊編程)結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)第160頁/共285頁1.線性程序(線性編程)
所謂線性程序結(jié)構(gòu),就是將整個用戶程序連續(xù)放置在一個循環(huán)程序塊(OB1)中,塊中的程序按順序執(zhí)行,CPU通過反復(fù)執(zhí)行OB1來實現(xiàn)自動化控制任務(wù)。這種結(jié)構(gòu)和PLC所代替的硬接線繼電器控制類似,CPU逐條地處理指令。事實上所有的程序都可以用線性結(jié)構(gòu)實現(xiàn),不過,線性結(jié)構(gòu)一般適用于相對簡單的程序編寫。第161頁/共285頁2.分部式程序(分部編程、分塊編程)
所謂分部程序,就是將整個程序按任務(wù)分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中,在一個塊中可以進一步分解成段。在組織塊OB1中包含按順序調(diào)用其他塊的指令,并控制程序執(zhí)行。在分部程序中,既無數(shù)據(jù)交換,也不存在重復(fù)利用的程序代碼。功能(FC)和功能塊(FB)不傳遞也不接收參數(shù),分部程序結(jié)構(gòu)的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復(fù)雜的控制程序可考慮采用這種程序結(jié)構(gòu)。第162頁/共285頁3.結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)
所謂結(jié)構(gòu)化程序,就是處理復(fù)雜自動化控制任務(wù)的過程中,為了使任務(wù)更易于控制,常把過程要求類似或相關(guān)的功能進行分類,分割為可用于幾個任務(wù)的通用解決方案的小任務(wù),這些小任務(wù)以相應(yīng)的程序段表示,稱為塊(FC或FB)。OB1通過調(diào)用這些程序塊來完成整個自動化控制任務(wù)。結(jié)構(gòu)化程序的特點是每個塊(FC或FB)在OB1中可能會被多次調(diào)用,以完成具有相同過程工藝要求的不同控制對象。這種結(jié)構(gòu)可簡化程序設(shè)計過程、減小代碼長度、提高編程效率,比較適合于較復(fù)雜自動化控制任務(wù)的設(shè)計。第163頁/共285頁§5.1.3I/O過程映像第164頁/共285頁§5.1.4程序循環(huán)執(zhí)行第165頁/共285頁§5.2數(shù)據(jù)塊中的數(shù)據(jù)存儲§5.2.1數(shù)據(jù)存儲區(qū)§5.2.2數(shù)據(jù)塊§5.2.3數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)§5.2.4建立數(shù)據(jù)塊§5.2.5訪問數(shù)據(jù)塊第166頁/共285頁§5.2.1數(shù)據(jù)存儲區(qū)
數(shù)據(jù)以用戶程序變量的形式存儲,且具有唯一性。數(shù)據(jù)可以存儲在輸入過程映像存儲器(PII)、輸出過程映像存儲器(PIQ)、位存儲器(M)、局部數(shù)據(jù)堆棧(L堆棧)及數(shù)據(jù)塊(DB)中。可以采用基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或參數(shù)類型。根據(jù)訪問方式的不同,這些數(shù)據(jù)可以在全局符號表或共享數(shù)據(jù)塊中聲明,稱為全局變量;也可以在OB、FC和FB的變量聲明表中聲明,稱為局部變量。當塊被執(zhí)行時,變量將固定地存儲在過程映像區(qū)(PII或PIQ)、位存儲器區(qū)(M)、數(shù)據(jù)塊(DB)或局部堆棧(L)中。第167頁/共285頁§5.2.2數(shù)據(jù)塊
數(shù)據(jù)塊定義在S7CPU的存儲器中,用戶可在存儲器中建立一個或多個數(shù)據(jù)塊。每個數(shù)據(jù)塊可大可小,但CPU對數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制。數(shù)據(jù)塊(DB)可用來存儲用戶程序中邏輯塊的變量數(shù)據(jù)(如:數(shù)值)。與臨時數(shù)據(jù)不同,當邏輯塊執(zhí)行結(jié)束或數(shù)據(jù)塊關(guān)閉時,數(shù)據(jù)塊中的數(shù)據(jù)保持不變。用戶程序可以位、字節(jié)、字或雙字操作訪問數(shù)據(jù)塊中的數(shù)據(jù),可以使用符號或絕對地址。第168頁/共285頁1.數(shù)據(jù)塊的分類
共享數(shù)據(jù)塊又稱全局數(shù)據(jù)塊。用于存儲全局數(shù)據(jù),所有邏輯塊(OB、FC、FB)都可以訪問共享數(shù)據(jù)塊存儲的信。
背景數(shù)據(jù)塊用作“私有存儲器區(qū)”,即用作功能塊(FB)的“存儲器”。FB的參數(shù)和靜態(tài)變量安排在它的背景數(shù)據(jù)塊中。背景數(shù)據(jù)塊不是由用戶編輯的,而是由編輯器生成的。
用戶定義數(shù)據(jù)塊(DBofType)是以UDT為模板所生成的數(shù)據(jù)塊。創(chuàng)建用戶定義數(shù)據(jù)塊(DBofType)之前,必須先創(chuàng)建一個用戶定義數(shù)據(jù)類型,如UDT1,并在LAD/STL/FBDS7程序編輯器內(nèi)定義。第169頁/共285頁2.數(shù)據(jù)塊寄存器CPU有兩個數(shù)據(jù)塊寄存器:DB和DI寄存器。這樣,可以同時打開兩個數(shù)據(jù)塊。
第170頁/共285頁§5.2.3數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)
在STEP7中數(shù)據(jù)塊的數(shù)據(jù)類型可以采用基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或用戶定義數(shù)據(jù)類型(UDT)?;緮?shù)據(jù)類型復(fù)雜數(shù)據(jù)類型用戶定義數(shù)據(jù)類型第171頁/共285頁基本數(shù)據(jù)類型根據(jù)IEC1131-3定義,長度不超過32位,可利用STEP7基本指令處理,能完全裝入S7處理器的累加器中?;緮?shù)據(jù)類型包括:位數(shù)據(jù)類型:BOOL、BYTE、WORD、DWORD、CHAR數(shù)字數(shù)據(jù)類型:INT、DINT、REAL定時器類型:S5TIME、TIME、DATE、TIME_OF_DAY第172頁/共285頁復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型只能結(jié)合共享數(shù)據(jù)塊的變量聲明使用。復(fù)雜數(shù)據(jù)類型可大于32位,用裝入指令不能把復(fù)雜數(shù)據(jù)類型完全裝入累加器,一般利用庫中的標準塊(“IEC”S7程序)處理復(fù)雜數(shù)據(jù)類型。復(fù)雜數(shù)據(jù)類型包括:時間(DATE_AND_TIME)類型矩陣(ARRAY)類型結(jié)構(gòu)(STRUCT)類型字符串(STRING)類型第173頁/共285頁用戶定義數(shù)據(jù)類型(UDT)
STEP7允許利用數(shù)據(jù)塊編輯器,將基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型組合成長度大于32位用戶定義數(shù)據(jù)類型(UDT:User-DefineddataType)。用戶定義數(shù)據(jù)類型不能存儲在PLC中,只能存放在硬盤上的UDT塊中??梢杂糜脩舳x數(shù)據(jù)類型作“模板”建立數(shù)據(jù)塊,以節(jié)省錄入時間??捎糜诮⒔Y(jié)構(gòu)化數(shù)據(jù)塊、建立包含幾個相同單元的矩陣、在帶有給定結(jié)構(gòu)的FC和FB中建立局部變量。第174頁/共285頁【5-2-1】
創(chuàng)建用戶定義數(shù)據(jù)類型:UDT1。
創(chuàng)建一個名稱為UDT1的用戶定義數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu)如下,則可按以下幾個步驟完成。第175頁/共285頁【5-2-1】創(chuàng)建用戶定義數(shù)據(jù)類型第176頁/共285頁【5-2-1】編輯UDT1第177頁/共285頁§5.2.4建立數(shù)據(jù)塊
在STEP7中,為了避免出現(xiàn)系統(tǒng)錯誤,在使用數(shù)據(jù)塊之前,必須先建立數(shù)據(jù)塊,并在塊中定義變量(包括變量符號名、數(shù)據(jù)類型以及初始值等)。數(shù)據(jù)塊中變量的順序及類型決定了數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu),變量的數(shù)量決定了數(shù)據(jù)塊的大小。數(shù)據(jù)塊建立后,還必須同程序塊一起下載到CPU中,才能被程序塊訪問。建立數(shù)據(jù)塊定義變量并下載數(shù)據(jù)塊第178頁/共285頁方法1:用SIMATICManager創(chuàng)建數(shù)據(jù)塊。
第179頁/共285頁方法2:用LAD/STL/FBDS7程序編輯器創(chuàng)建數(shù)據(jù)塊。
第180頁/共285頁新DB類型選擇窗口第181頁/共285頁編輯數(shù)據(jù)塊(變量定義)
變量定義完成后,應(yīng)單擊保存按鈕保存并編譯(測試)。如果沒有錯誤則需要單擊下載按鈕,像邏輯塊一樣,將數(shù)據(jù)塊下載到CPU。第182頁/共285頁§5.2.5訪問數(shù)據(jù)塊
在用戶程序中可能存在多個數(shù)據(jù)塊,而每個數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)并不完全相同,因此在訪問數(shù)據(jù)塊時,必須指明數(shù)據(jù)塊的編號、數(shù)據(jù)類型與位置。如果訪問不存在的數(shù)據(jù)單元或數(shù)據(jù)塊,而且沒有編寫錯誤處理OB塊,CPU將進入STOP模式。尋址數(shù)據(jù)塊訪問數(shù)據(jù)塊直接訪問數(shù)據(jù)塊第183頁/共285頁尋址數(shù)據(jù)塊第184頁/共285頁訪問數(shù)據(jù)塊
在STEP7中可以采用傳統(tǒng)訪問方式,即先打開后訪問;也可以采用完全表示的直接訪問方式?!纠?-2-2】
打開并訪問共享數(shù)據(jù)塊。第185頁/共285頁訪問數(shù)據(jù)塊
用指令“OPNDB...”打開共享數(shù)據(jù)塊(自動關(guān)閉之前打開的共享數(shù)據(jù)塊),如果DB已經(jīng)打開,則可用裝入(L)或傳送(T)指令訪問數(shù)據(jù)塊?!纠?-2-3】
打開并訪問背景數(shù)據(jù)塊。第186頁/共285頁直接訪問數(shù)據(jù)塊所謂直接訪問數(shù)據(jù)塊,就是在指令中同時給出數(shù)據(jù)塊的編號和數(shù)據(jù)在數(shù)據(jù)塊中的地址。可以用絕對地址,也可以用符號地址直接訪問數(shù)據(jù)塊。用絕對地址直接訪問數(shù)據(jù)塊,如:
用符號地址直接訪問數(shù)據(jù)塊,如:第187頁/共285頁
功能(FC)、功能塊(FB)和組織塊(OB)統(tǒng)稱為邏輯塊(或程序塊)。功能塊(FB)有一個數(shù)據(jù)結(jié)構(gòu)與該功能塊的參數(shù)完全相同的數(shù)據(jù)塊,稱為背景數(shù)據(jù)塊,背景數(shù)據(jù)塊依附于功能塊,它隨著功能塊的調(diào)用而打開,隨著功能塊的結(jié)束而關(guān)閉。存放在背景數(shù)據(jù)塊中的數(shù)據(jù)在功能塊結(jié)束時繼續(xù)保持。而功能(FC)則不需要背景數(shù)據(jù)塊,功能調(diào)用結(jié)束后數(shù)據(jù)不能保持。組織塊(OB)是由操作系統(tǒng)直接調(diào)用的邏輯塊。§5.3.1邏輯塊(FC和FB)的結(jié)構(gòu)§5.3.1邏輯塊(FC和FB)的編程§5.3邏輯塊(FC和FB)的結(jié)構(gòu)及編程第188頁/共285頁
邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬性等幾部分組成。局部變量聲明表(局部數(shù)據(jù))邏輯塊局部變量的數(shù)據(jù)類型邏輯塊的調(diào)用過程及內(nèi)存分配§5.3.1邏輯塊(FC和FB)的結(jié)構(gòu)第189頁/共285頁
每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表。1.局部變量聲明表
局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。第190頁/共285頁
對于功能塊(FB),操作系統(tǒng)為參數(shù)及靜態(tài)變量分配的存儲空間是背景數(shù)據(jù)塊。這樣參數(shù)變量在背景數(shù)據(jù)塊中留有運行結(jié)果備份。在調(diào)用FB時,若沒有提供實參,則功能塊使用背景數(shù)據(jù)塊中的數(shù)值。操作系統(tǒng)在L堆棧中給FB的臨時變量分配存儲空間。對于功能(FC),操作系統(tǒng)在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數(shù)據(jù)塊,因而FC不能使用靜態(tài)變量。輸入、輸出、I/O參數(shù)以指向?qū)崊⒌闹羔樞问酱鎯υ诓僮飨到y(tǒng)為參數(shù)傳遞而保留的額外空間中。對于組織塊(OB)來說,其調(diào)用是由操作系統(tǒng)管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。第191頁/共285頁
局部變量可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,也可以是專門用于參數(shù)傳遞的所謂的“參數(shù)類型”。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等。2.邏輯塊局部變量的數(shù)據(jù)類型第192頁/共285頁CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關(guān)信息。3.邏輯塊的調(diào)用過程及內(nèi)存分配第193頁/共285頁
局部數(shù)據(jù)堆棧簡稱L堆棧,是CPU中單獨的存儲器區(qū),可用來存儲邏輯塊的局部變量(包括OB的起始信息)、調(diào)用功能(FC)時要傳遞的實際參數(shù)、梯形圖程序中的中間邏輯結(jié)果等??梢园次?、字節(jié)、字和雙字來存取。
塊堆棧簡稱B堆棧,是CPU系統(tǒng)內(nèi)存中的一部分,用來存儲被中斷的塊的類型、編號、優(yōu)先級和返回地址;中斷時打開的共享數(shù)據(jù)塊和背景數(shù)據(jù)塊的編號;臨時變量的指針(被中斷塊的L堆棧地址)。
中斷堆棧簡稱I堆棧,用來存儲當前累加器和地址寄存器的內(nèi)容、數(shù)據(jù)塊寄存器DB和DI的內(nèi)容、局域數(shù)據(jù)的指針、狀態(tài)字、MCR(主控繼電器)寄存器和B堆棧的指針。用戶程序使用的堆棧第194頁/共285頁
當調(diào)用功能塊(FB)時,會有以下事件發(fā)生:①調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入L堆棧;②數(shù)據(jù)塊DB寄存器內(nèi)容與DI寄存器內(nèi)容交換;③新的數(shù)據(jù)塊地址裝入DI寄存器;④被調(diào)用塊的實參裝入DB和L堆棧上部;⑤當功能塊FB結(jié)束時,先前塊的現(xiàn)場信息從塊堆棧中彈出,臨時變量彈出L堆棧;⑥D(zhuǎn)B和DI寄存器內(nèi)容交換。當調(diào)用功能塊(FB)時,STEP7并不一定要求給FB形參賦予實參,除非參數(shù)是復(fù)式數(shù)據(jù)類型的I/O形參或參數(shù)類型形參。如果沒有給FB的形參賦予實參,則功能塊(FB)就調(diào)用背景數(shù)據(jù)塊內(nèi)的數(shù)值,該數(shù)值是在功能塊(FB)的變量聲明表或背景數(shù)據(jù)塊內(nèi)為形參所設(shè)置初始數(shù)值。調(diào)用功能塊(FB)時的堆棧操作第195頁/共285頁
當調(diào)用功能(FC)時會有以下事件發(fā)生:功能(FC)實參的指針存到調(diào)用塊的L堆棧;調(diào)用塊的地址和返回位置存儲在塊堆棧,調(diào)用塊的局部數(shù)據(jù)壓入L堆棧;功能(FC)存儲臨時變量的L堆棧區(qū)被推入L堆棧上部;當被調(diào)用功能(FC)結(jié)束時,先前塊的信息存儲在塊堆棧中,臨時變量彈出L堆棧。因為功能(FC)不用背景數(shù)據(jù)塊,不能分配初始數(shù)值給功能(FC)的局部數(shù)據(jù),所以必須給功能(FC)提供實參。調(diào)用功能(FC)時的堆棧操作
第196頁/共285頁
以功能(FC)調(diào)用為例,L堆棧操作示意如圖所示。調(diào)用功能(FC)時的堆棧操作
第197頁/共285頁
對邏輯塊編程時必須編輯下列三個部分:
變量聲明:分別定義形參、靜態(tài)變量和臨時變量(FC塊中不包括靜態(tài)變量);確定各變量的聲明類型(Decl.)、變量名(Name)和數(shù)據(jù)類型(DataType),還要為變量設(shè)置初始值(InitialValue)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP7將自動產(chǎn)生局部變量地址(Address)。代碼段:對將要由PLC進行處理的塊代碼進行編程。
塊屬性:塊屬性包含了其它附加的信息,例如由系統(tǒng)輸入的時間標志或路徑。此外,也可輸入相關(guān)詳細資料?!?.3.2邏輯塊(FC和FB)的編程第198頁/共285頁1.臨時變量的定義和使用第199頁/共285頁2.查看局部數(shù)據(jù)堆棧的占用第200頁/共285頁3.查看塊所需字節(jié)數(shù)第201頁/共285頁4.定義形式參數(shù)第202頁/共285頁
編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使用局部變量:①使用變量名,此時變量名前加前綴“#”,以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。②直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應(yīng)在調(diào)用前生成,其順序格式與變量聲明表必須保持一致。5.編寫控制程序第203頁/共285頁
所謂無參功能(FC),是指在編輯功能(FC)時,在局部變量聲明表不進行形式參數(shù)的定義,在功能(FC)中直接使用絕對地址完成控制程序的編程。這種方式一般應(yīng)用于分部式結(jié)構(gòu)的程序編寫,每個功能(FC)實現(xiàn)整個控制任務(wù)的一部分,不重復(fù)調(diào)用?!?.4.1編輯無參功能(FC)§5.4.2在OB1中調(diào)用無參功能(FC)§5.4編輯并調(diào)用無參功能(FC)——分部程序設(shè)計第204頁/共285頁【例5-4-1】
攪拌控制系統(tǒng)程序設(shè)計——使用開關(guān)量。第205頁/共285頁控制說明如圖所示為一攪拌控制系統(tǒng),由3個開關(guān)量液位傳感器,分別檢測液位的高、中和低。現(xiàn)要求對A、B兩種液體原料按等比例混合,請編寫控制程序。要求:按起動按鈕后系統(tǒng)自動運行,首先打開進料泵1,開始加入液料A→中液位傳感器動作后,則關(guān)閉進料泵1,打開進料泵2,開始加入液料B→高液位傳感器動作后,關(guān)閉進料泵2,起動攪拌器→攪拌10s后,關(guān)閉攪拌器,開啟放料泵→當?shù)鸵何粋鞲衅鲃幼骱?,延時5s后關(guān)閉放料泵。按停止按鈕,系統(tǒng)應(yīng)立即停止運行。第206頁/共285頁1.創(chuàng)建S7項目按照第3章所介紹的方法,創(chuàng)建S7項目,并命名為“無參FC”,項目包含組織塊OB1和OB100。2.硬件配置在“無參FC”項目內(nèi)打開“SIMATIC300Station”文件夾,打開硬件配置窗口,并完成硬件配置。§5.4.1編輯無參功能(FC)第207頁/共285頁3.編輯符號表第208頁/共285頁4.規(guī)劃程序結(jié)構(gòu)第209頁/共285頁5.編輯功能(FC)
在“無參FC”項目內(nèi)選擇“Blocks”文件夾,然后反復(fù)執(zhí)行菜單命令【Insert】→【S7Block】→【Function】,分別創(chuàng)建4個功能(FC):FC1、FC2、FC3和FC4。由于在符號表內(nèi)已經(jīng)為FC1~FC4定義了符號名,因此在創(chuàng)建FC的屬性對話框內(nèi)系統(tǒng)會自動添加符號名。FC1控制程序FC2控制程序FC3控制程序FC4控制程序OB100控制程序第210頁/共285頁FC1的控制程序FC2的控制程序第211頁/共285頁FC3的控制程序第212頁/共285頁FC4的控制程序第213頁/共285頁OB100的控制程序第214頁/共285頁§5.4.2在OB1中調(diào)用無參功能(FC)第215頁/共285頁OB1的控制程序第216頁/共285頁
所謂有參功能(FC),是指編輯功能(FC)時,在局部變量聲明表內(nèi)定義了形式參數(shù),在功能(FC)中使用了虛擬的符號地址完成控制程序的編程,以便在其他塊中能重復(fù)調(diào)用有參功能(FC)。這種方式一般應(yīng)用于結(jié)構(gòu)化程序編寫?!?.5.1編輯有參功能(FC)§5.5.2在OB1中調(diào)用有參功能(FC)§5.5編輯并調(diào)用有參功能(FC)——結(jié)構(gòu)化程序設(shè)計第217頁/共285頁【例5-5-1】
多級分頻器控制程序設(shè)計。本例擬在功能FC1中編寫二分頻器控制程序,然后在OB1中通過調(diào)用FC1實現(xiàn)多級分頻器的功能。多級分頻器的時序關(guān)系如圖所示。其中I0.0為多級分頻器的脈沖輸入端;Q4.0~Q4.3分別為2、4、8、16分頻的脈沖輸出端;Q4.4~Q4.7分別為2、4、8、16分頻指示燈驅(qū)動輸出端。第218頁/共285頁§5.5.1編輯有參功能(FC)創(chuàng)建多級分頻器的S7項目硬件配置編寫符號表規(guī)劃程序結(jié)構(gòu)創(chuàng)建有參功能FC1第219頁/共285頁1.創(chuàng)建多級分頻器的S7項目使用菜單【File】→【“NewProject”Wizard】創(chuàng)建多級分頻器的S7項目,并命名為“有參FC”。2.硬件配置打開“SIMATIC300Station”文件夾,雙擊硬件配置圖標打開硬件配置窗口,并按圖所示完成硬件配置。第220頁/共285頁3.編寫符號表第221頁/共285頁4.規(guī)劃程序結(jié)構(gòu)第222頁/共285頁5.創(chuàng)建有參FC1
選擇“有參FC”項目的“Blocks”文件夾,然后執(zhí)行菜單命令【Insert】→【S7Block】→【Function】,在塊文件夾內(nèi)創(chuàng)建一個功能,并命名為“FC1”。編輯FC1的變量聲明表在FC1的變量聲明表內(nèi),聲明4個參數(shù),見下表。第223頁/共285頁編輯FC1的控制程序
二分頻器的時序如圖所示。分析二分頻器的時序圖可以看到,輸入信號每出現(xiàn)一個上升沿,輸出便改變一次狀態(tài),據(jù)此可采用上跳沿檢測指令實現(xiàn)。
如果輸入信號S_IN出現(xiàn)上升沿,則對S_OUT取反,然后將S_OUT的信號狀態(tài)送LED顯示;否則,程序直接跳轉(zhuǎn)到LP1,將S_OUT的信號狀態(tài)送LED顯示。第224頁/共285頁FC1的控制程序第225頁/共285頁§5.5.2在OB1中調(diào)用有參功能(FC)使用絕對地址使用符號地址第226頁/共285頁
功能塊(FB)在程序的體系結(jié)構(gòu)中位于組織塊之下。它包含程序的一部分,這部分程序在OB1中可以多次調(diào)用。功能塊的所有形參和靜態(tài)數(shù)據(jù)都存儲在一個單獨的、被指定給該功能塊的數(shù)據(jù)塊(DB)中,該數(shù)據(jù)塊被稱為背景數(shù)據(jù)塊。當調(diào)用FB時,該背景數(shù)據(jù)塊會自動打開,實際參數(shù)的值被存儲在背景數(shù)據(jù)塊中;當塊退出時,背景數(shù)據(jù)塊中的數(shù)據(jù)仍然保持?!?.6.1編輯無靜態(tài)參數(shù)的功能塊(FB)§5.6.2在OB1中調(diào)用無靜態(tài)參數(shù)的功能塊(FB)
§5.6編輯無靜參的功能塊(FB)第227頁/共285頁【例5-6-1】
水箱水位控制系統(tǒng)程序設(shè)計。第228頁/共285頁【例5-6-1】
系統(tǒng)有3個貯水箱,每個水箱有2個液位傳感器,UH1,UH2,UH3為高液位傳感器,“1”有效;UL1,UL2,UL3為低液位傳感器,“0”有效。Y1、Y3、Y5分別為3個貯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行行內(nèi)培訓課程
- 培訓師自我評價
- 陜西省扶風縣扶風高中2024-2025學年度高二物理上學期期中檢測試題
- 河南省鄭州市登封市2024-2025學年二年級上學期期中數(shù)學試題
- 2024--2025學年江蘇省宿遷市沭陽縣南湖初級中學八年級(上)第一次月考數(shù)學試卷(含答案)
- T-YNRZ 024-2024 黑老虎種植技術(shù)規(guī)程
- 內(nèi)蒙古自治區(qū)通遼市科爾沁左翼中旗聯(lián)盟校2024-2025學年三年級上學期期中考試英語試題
- 市場營銷學-企業(yè)管理出版社
- Windows Server網(wǎng)絡(luò)管理項目教程(Windows Server 2022)(微課版)4.4 任務(wù)3 資源記錄
- 語法填空專題復(fù)習練習及答案
- 粉塵爆炸風險評估記錄-危險源辨識與評價表
- 中國歷史文化名城之-天津
- 余華讀書分享+名著導(dǎo)讀《我們生活在巨大的差距里》
- 煙花爆竹行業(yè)職業(yè)病危害因素識別與防控培訓
- 《讀書的重要性》課件
- 天津市南開區(qū)2023-2024學年七年級上學期期中生物試卷
- 混凝土采購組織供應(yīng)、運輸、售后服務(wù)方案
- 《心房顫動診斷和治療中國指南2023》解讀
- KROHNE 質(zhì)量流量計產(chǎn)品介紹2022
- 親屬稱謂語社交稱謂語文化差異
- 立法學 第五版 課件 第1-8章 緒論-立法準備
評論
0/150
提交評論