s7-200PLC編程及應用第3章200_第1頁
s7-200PLC編程及應用第3章200_第2頁
s7-200PLC編程及應用第3章200_第3頁
s7-200PLC編程及應用第3章200_第4頁
s7-200PLC編程及應用第3章200_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第3章 S7-200 編程基礎 3.1 PLC的編程語言與程序結構的編程語言與程序結構3.1.1 PLC編程語言的國際標準編程語言的國際標準 IEC 61131-3標準的5種編程語言: 1. 順序功能圖(Sequential Function Chart),第5章將詳細介紹。 2. 梯形圖(Ladder Diagram,LAD) 梯形圖程序被劃分為若干個網絡,一個網絡只能有一塊獨立電路。觸點接通時有“能流”(Power Flow)流過線圈。“能流”只能從左向右流動。梯形圖和語句表用得最多。 3. 指令表(Instruction List),西門子叫語句表(STL) 語句表程序由指令組成,適合程

2、序設計經驗豐富的程序員使用。 4. 功能塊圖(Function Block Diagram,FBD) 是類似于數字邏輯電路的編程語言,國內很少使用。 5. 結構文本(Structured Text) 為IEC 61131-3標準創建的一種專用的高級編程語言。 6編程語言的相互轉換和選用 在編程軟件中,可以選用梯形圖、功能塊圖和語句表。 梯形圖中輸入信號(觸點)與輸出信號(線圈)之間的邏輯關系一目了然,易于理解。設計復雜的數字量控制程序時建議使用梯形圖語言。 語句表程序輸入方便快捷,還可以為每一條語句加上注釋,便于復雜程序的閱讀。 7. SIMATIC指令集與IEC 61131-3指令集 用“選

3、項”對話框切換,一般使用SIMATIC指令集。3.1.2 S7-200的程序結構的程序結構 1主程序OB1:每次掃描都要執行主程序。每個項目都必須有且只能有一個主程序。主程序可以調用子程序。 2子程序:同一個子程序可以被多次調用,使用子程序可簡化程序代碼、減少掃描時間。 3中斷程序:在中斷事件發生時由PLC的操作系統調用中斷程序。3.2 數據類型與尋址方式數據類型與尋址方式3.2.1 數制數制 1二進制數 (1)用1位二進制數表示數字量 二進制數的1位只能為0和1。用1位二進制數來表示開關量的兩種不同的狀態,線圈通電、常開觸點接通、常閉觸點斷開為1狀態(ON),反之為0狀態(OFF)。二進制位

4、的數據類型為BOOL(布爾)型。 (2)多位二進制數 多位二進制數用來表示大于1的數字。從右往左的第n位(最低位為第0位)的權值為2n。2#0000 0100 1000 0110對應的十進制數為1158222212710 (3)有符號數的表示方法 用二進制補碼來表示有符號數,最高位為符號位,最高位為0時為正數,反之為負數。正數的補碼是它本身,最大的16位二進制正數為2#0111 1111 1111 1111(32767)。 將正數的補碼逐位取反(0變為1,1變為0)后加 1,得到絕對值與它相同的負數的補碼。例如將1158的補碼2#0000 0100 1000 0110逐位取反后加1,得到115

5、8的補碼1111 1011 0111 1010。 2十六進制數 十六進制數用于簡化二進制數的表示方法,16個數為09和AF(1015),4位二進制數對應于1位十六進制數,例如2#1010 1110 0111 0101可以轉換為16#AE75(或AE75H)。 十六進制數“逢16進1”,第n位的權值為16n。16#2F對應的十進制數為21611516047。 3BCD碼(Binary Coded Decimal)是各位按二進制編碼的十進制數,“逢10進1”。用4位二進制數來表示1位十進制數,每一位只能是2#00002#1001。 用16#表示BCD碼,4位BCD碼對應于16位二進制數,允許范圍為

6、16#9999 16# 0000。 BCD碼用于PLC的輸入和輸出。 撥碼開關用來設置多位十進制參數值,PLC用輸入點讀取的多位撥碼開關的輸出值就是BCD碼,圖3-5的撥碼開關輸出的BCD碼為16#829。 電梯的樓層數轉換為BCD碼后,分別送給譯碼驅動芯片4547。3.2.2 數據類型數據類型 1位 二進制位(bit)的數據類型為BOOL(布爾)。 I3.2 中的I表示輸入,3是字節地址,2是字節中的位地址(0 7)。 2字節 一個字節(Byte)由8個位數據組成,IB3由I3.0I3.7這8位組成。 3字和雙字 相鄰的兩個字節組成一個字(Word),相鄰的兩個字或4個字節組成一個雙字(Do

7、uble Word)。以起始字節的地址作為字和雙字的地址。起始字節為最高位的字節。 字節、字和雙字都是無符號數,它們的數值用16#表示。用VB100的地址編號作為VW100和VD100的地址編號。 組成字和雙字的編號最小的字節VB100為VW100和VD100的最高位字節。 I、Q、V、M、S、SM、L均可以按位、字節、字和雙字來存取。 416位整數INT和32位雙整數DINT都是有符號數。最高位為符號位。 532位浮點數(REAL,實數)可以表示為1.m 2E,標準格式的浮點數的最高位為符號位,指數e = E +127為8位正整數。第022位是尾數的小數部分m,第2330位是指數部分e 。

8、在編程軟件中,用小數表示浮點數。浮點數的精度相當于7位十進制數。 6ASCII碼字符:美國信息交換標準代碼。用單引號表示,例如AB12 。 7字符串的數據類型為STRING,由若干個ASCII碼字符組成,第一個字節是字符串的長度(0254),后面的每個字符占一個字節。字符串用雙引號表示,例如”LINE2”。3.2.3 CPU的存儲區的存儲區 1過程映像輸入寄存器(I):外部輸入電路接通時對應的過程映像輸入寄存器為ON(1狀態),反之為OFF(0狀態)。 2過程映像輸出寄存器(Q):梯形圖中Q0.0的線圈“通電”時,輸出模塊中對應的硬件繼電器的常開觸點閉合。 3變量存儲區(V):用來存放中間結果

9、和有關數據。 4位存儲區(M):類似于繼電器控制系統的中間繼電器,32個字節。 5定時器存儲區(T):定時器、計數器的當前值為16位有符號整數,定時器位用來描述定時器的延時動作的觸點的狀態。 6計數器存儲區(C):計數器用來累計其計數脈沖上升沿的次數。計數器位用來描述計數器的觸點的狀態。 7高速計數器(HC):用來累計比CPU的掃描速率更快的事件。當前值為32位有符號整數。 8累加器(AC0AC3):32位,可以按字節、字和雙字來訪問累加器中的數據。按字節、字只能訪問累加器的低8位或低16位。 9特殊存儲器(SM) 特殊存儲器用于CPU與用戶程序之間交換信息。 SM0.0一直為ON; SM0.

10、1僅在執行用戶程序的第一個掃描周期為ON。 SM0.4和SM0.5分別提供周期為1分鐘和1秒的時鐘脈沖。 SM1.0、SM1.1和SM1.2分別為零標志、溢出標志和負數標志。 10局部存儲區域(L):各POU都有自己的64字節的局部存儲器,僅僅在它被創建的POU中有效。作為暫時存儲器,或給子程序傳遞參數。 變量存儲器(V)是全局存儲器,可以被所有的POU訪問。 11模擬量輸入(AI):AI模塊將模擬量轉換為一個字的數字量。AI地址應從偶數字節開始(例如AIW2),為只讀數據。 12模擬量輸出(AQ):AQ模塊將一個字的數字值按比例轉換為電流或電壓。AQ地址應從偶數字節開始(例如AQW2),用戶

11、不能讀取。 13順序控制繼電器(S):用于順序控制編程(見5.5節),32字節。 14常數的表示方法舉例 十進制整數:20047;十六進制數:16#3A8D;二進制數:2#1001 1011;浮點數:50.0;ASCII碼:AB12;字符串:”LINE2”。 I、Q、V、M、S、SM和L存儲器區均可以按位、字節、字和雙字來訪問。3.2.4 直接尋址與間接尋址直接尋址與間接尋址 直接尋址指定了存儲器的區域、長度和位置,例如VB200。 間接尋址給出一個被稱為地址指針的存儲單元的地址,32位地址指針里存放的是真正的操作數的地址。只能用V、L或累加器作指針。 間接尋址可用于訪問 I、Q、V、M、S、

12、AI、AQ、SM,以及T和C的當前值。不能訪問單個位(bit)地址、HC、L存儲區和累加器。 指令“MOVD &VB200, AC1”將VB200的地址&VB200傳送給AC1。 指令“MOVW *AC1, AC0”將指針AC1所指的VW200中的數據( *AC1)傳送給AC0。 用指針訪問相鄰的下一個字節時,指針值加1;訪問字時,指針值加2;訪問雙字時,指針值加4。 【例3-1】 用于非線性校正的表格存放在VW100開始的10個字中,表格的偏移量(表格中字的序號,第1個字的序號為0)在VD20中,在I0.0的上升沿,用間接尋址將表格中相對于偏移量的數據值傳送到VW24中去。用

13、AC1作地址指針。下面是語句表程序。LD I0.0EU/在I0.0的上升沿MOVD &VB100, AC1/表格的起始地址送AC1+D VD20, AC1+D VD20, AC1/起始地址加偏移量MOVW *AC1, VW24/讀取表格中的數據 一個字由兩個字節組成,地址相鄰的兩個字的地址增量為2(兩個字節),所以用了兩條雙整數加法指令。3.3 位邏輯指令位邏輯指令3.3.1 觸點指令與堆棧指令觸點指令與堆棧指令 1標準觸點指令 常開觸點對應的位地址為ON時,該觸點閉合。 常閉觸點對應的位地址為OFF時,該觸點閉合。 2輸出指令 輸出指令(=)對應于梯形圖中的線圈。梯形圖中兩個并聯的線

14、圈用兩條相鄰的輸出指令來表示。 圖3-13 觸點與輸出指令 圖3-14 上升沿檢測 【例3-2】 已知圖3-14中I0.1的波形,畫出M0.0的波形。 在I0.1上升沿之前,I0.1的常開觸點斷開,M0.0和M0.1均為OFF,其波形用低電平表示。 在I0.1的上升沿,I0.1和M0.1的觸點同時閉合,M0.0變為ON。 從上升沿之后的第二個掃描周期開始,M0.1為ON,其常閉觸點斷開,使M0.0為OFF。M0.0只是在I0.1的上升沿ON一個掃描周期。 交換上下兩行電路,M0.0的線圈不會通電。 3邏輯堆棧的基本概念 S7-200有一個9位的堆棧,最上面的第一層稱為棧頂。堆棧中的數據一般按“

15、先進后出”的原則訪問。 執行LD指令時,將指令指定的位地址中的二進制數裝載入棧頂。 執行A(與)指令時,指令指定的位地址中的二進制數和棧頂中的二進制數作“與”運算,運算結果存入棧頂。棧頂之外其他各層的值不變。 執行O(或)指令時,指令指定的位地址中的二進制數和棧頂中的二進制數作“或”運算,運算結果存入棧頂。 4或裝載指令OLD 圖3-15中前兩條指令執行完后,“與”運算的結果S0 存放在堆棧的棧頂,第3、4條指令執行完后,“與”運算的結果S1 壓入棧頂(見圖3-16),原來在棧頂的S0被推到堆棧的第2層,下面各層的數據依次下移一層。 OLD指令對堆棧第一、二層的二進制數作“或”運算,運算結果S

16、2 = S0 + S1存入堆棧的棧頂,第39層中的數據依次向上移動一層。 5與裝載指令ALD 圖3-15中OLD下面的兩條指令并聯運算的果 S3被壓入棧頂,堆棧中原來的數據依次向下一層推移。 ALD指令對堆棧第一、二層的數據作“與”運算,運算結果S4 = S2 S3存入堆棧的棧頂,第39層中的數據依次向上移動一層。 【例3-3】 已知圖3-17中的語句表程序,畫出對應的梯形圖。 首先將電路劃分為若干塊,各電路塊從含有LD的指令(例如LD、LDI和LDP等)開始,在下一條含有LD的指令(包括ALD和OLD)之前結束;然后分析各塊電路之間的串并聯關系。 OLD或ALD指令并、串聯的是它上面靠近它的

17、已經連接好的電路。 6其他堆棧操作指令 邏輯進棧LPS指令復制棧頂的值并將其壓入堆棧的第2層,堆棧中原來的數據依次向下一層推移。 邏輯讀棧LRD指令將堆棧第2層的數據復制到棧頂,原來的棧頂值被復制值替代。第2層第9層的數據不變。 邏輯出棧LPP指令將棧頂值彈出,堆棧各層的數據向上移動1層,第2層的數據成為新的棧頂值。 裝載堆棧指令LDS很少使用。 圖3-20中的第1條LPS指令將棧頂的A點邏輯運算結果保存到堆棧的第2層,第2條LPS指令將B點的邏輯運算結果保存到堆棧的第2層,A點的邏輯運算結果被“壓”到堆棧的第3層。第1條LPP指令將堆棧第2層B點的邏輯運算結果上移到棧頂,第3層中A點的邏輯運

18、算結果上移到堆棧的第2層。最后一條LPP指令將堆棧第二層的A點的邏輯運算結果上移到棧頂。 7立即觸點 立即觸點指令只能用于輸入位I,立即讀入物理輸入點的值,但是并不更新該物理輸入點對應的過程映像輸入寄存器。3.3.2 輸出類指令與其他指令輸出類指令與其他指令 1立即輸出 圖3-18中的立即輸出將棧頂值立即寫入指定的物理輸出點和對應的過程映像輸出寄存器。該指令只能用于輸出位Q。 2置位與復位 置位與復位指令分別將指定的位地址開始的N個連續的位地址置位(變為ON)和復位(變為OFF),N = 1255。兩條指令有記憶和保持功能。 可用復位指令清除定時器/計數器的當前值,同時將它們的位復位為OFF。

19、 3立即置位與立即復位 這兩條指令分別將指定的位地址開始的N個連續的物理輸出點立即置位或復位,N = 1255。它們只能用于輸出位Q,新值被同時寫入對應的物理輸出點和過程映像輸出寄存器。 4RS、SR雙穩態觸發器指令 SR是置位優先雙穩態觸發器,RS是復位優先雙穩態觸發器。它們用置位輸入和復位輸入來控制方框上面的位地址,可選的OUT連接反映了方框上面位地址的信號狀態。 置位信號S1和復位信號R同時為ON時,M0.5被置位為ON。 置位信號S和復位信號R1同時為ON時,M0.6被復位為OFF。 5其他位邏輯指令 正向轉換觸點(P)檢測到一次正跳變或負向轉換觸點(N)檢測到一次負跳變時,觸點接通一

20、個掃描周期。 取反(NOT)觸點將存放在堆棧頂部的它左邊電路的邏輯運算結果取反。取反觸點左、右兩邊能流的狀態相反。 空操作指令(NOP N)不影響程序的執行。 6程序的優化設計 在設計并聯電路時,應將單個觸點的支路放在下面;設計串聯電路時,應將單個觸點放在右邊。在有線圈的并聯電路中,應將單個線圈放在上面。3.4 3.4 定時器與計數器指令定時器與計數器指令3.4.1 3.4.1 定時器指令定時器指令 1定時器的分辨率 2接通延時定時器和有記憶接通延時定時器 定時器和計數器的當前值的數據類型均為整數(INT),允許的最大值為32767。接通延時定時器TON和保持型接通延時定時器TONR的使能(I

21、N)輸入電路接通后開始定時,當前值不斷增大。當前值大于等于PT端指定的預設值時,定時器位變為ON。達到預設值后,當前值仍繼續增加,直到最大值32767。定時器的預設時間等于預設值PT與分辨率的乘積。 接通延時定時器的使能輸入電路斷開時,定時器被復位,其當前值被清零,定時器位變為OFF。還可以用復位(R)指令復位定時器和計數器。 有記憶接通延時定時器TONR的使能(IN)輸入電路斷開時,當前值保持不變。使能輸入電路再次接通時,繼續定時。累計的時間間隔等于預設值時,定時器位變為ON。只能用復位指令來復位TONR。 圖3-28是用接通延時定時器編程實現的脈沖定時器程序,在I0.3的上升沿,Q0.2輸出一個寬度為3s的脈沖,I0.3的脈沖寬度可以大于3s,也可以小于3s。 3斷開延時定時器 使能輸入電路接通時,定時器位立即變為ON,當前值被清零。 使能輸入電路斷開時,開始定時,當前值等于預設值時,輸出位變為OFF,當前值保持不變,直到使能輸入電路接通。 斷開延時定時器用于設備停機后的延時,例如變頻電機的冷卻風扇的延時。 4分辨率對定時器的影響 執行1ms分辨率的定時器指令時開始計時,其定時器位和當前值每1ms更新一次。掃描周期大于1ms時,在一個掃描周期內

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論