
①PLC程序的結構體系
無論PLC控制系統有多么復雜,歸根到底,PLC用戶程序都是由大量基本編程指令所組成的集合。在已經掌握SIEMENS S7 PLC程序基本指令使用與編程方法的基礎上,設計者就可以根據控制對象各部分的不同要求,通過對要求的分解,運用基本指令編制出相應的程序網絡(Network)或由幾個網絡組成的簡單"功能程序段"。在此基礎上,只要再將這些程序網絡或功能程序段,按照控制系統的動作要求,以S7程序規定的格式進行排列與組合,就可以組成完整的PLC程序。
所謂PLC的程序結構,就是組成PLC程序的各種網絡或“功能程序段”在PLC內部的組織、管理形式。
在PLC上,從CPU操作系統對程序執行管理的度看,PLC程序可以分為"線性化結構"與"分塊式結構"兩種不同的結構體系,每一體系又可以分為若干個不同的結構形式。
a.線性化結構體系。采用線性化結構體系的PLC用戶程序不分塊,全部指令都集中在同一個程序塊中。執行PLC程序時,CPU的每次循環掃描都是按照從上至下的次序,執行PLC用戶程序的所有指令。
線性化結構體系是一種控制對象相對較簡單的小型PLC系統常用的結構體系。b.分塊式結構體系。分塊式結構體系的PLC用戶程序由多個不同的"程序塊"所組成,執行PLC程序時,需要根據外部輸入條件與程序中規定的控制要求,由負責管理的主程序通過對不同程序塊的調用與選擇,決定每次循環掃描實際需要執行的程序塊。
對于控制復雜、程序容量大的大中型PLC控制系統,出于方便設計、檢查、調試等方面的考慮,通常采用分塊式結構。
PLC用戶程序的兩種結構體系各有其特點,實際使用時采用何種程序結構體系,一方面取決于PLC所具備的功能,另一方面取決于程序設計者的選擇。
②線性化結構
按照線性化結構體系設計時,程序常見的形式有"普通線性化結構"與“分時管理線性化結構”兩種。
a.普通線性化結構。普通的線性結構程序為簡單,設計者只需要將由基本指令組成的全部網絡與功能程序段,進行逐網絡、逐段排列即可。
只要程序中沒有特定的次序要求(如為了產生邊沿脈沖的需要等),組成程序的各網絡與功能程序段就可以在PLC程序中任意排列,其位置與程序的執行結果無關。
CPU執行普通的線性結構程序時,總是對全部程序指令按照輸入采樣、執行程序、輸出刷新三個階段不斷循環,全部輸入、輸出信號的采樣與刷新時間統一,每次處理的時間(循環掃描時間)固定。
在S7PLC中,如果將全部PLC用戶程序都編制在組織塊OB1中,即屬于此結構。
b.分時管理線性化結構。在部分PLC中,為了滿足控制系統中需要高速處理的信號特殊控制要求,線性結構的程序也可以采用"分時管理線性化結構"的結構形式(見圖5-50)。
圖5-50 分時管理線性化的程序結構
采用“分時管理線性化結構”時,設計者可以根據控制系統的需要,將線性化結構的PLC用戶程序劃分為“高速掃描循環”與“普通掃描循環”兩部分。
程序中的高速掃描部分可以由設計者定義掃描時間間隔,在執行過程中這一時間間隔保持固定不變。即:對于高速掃描程序段,設計者可以人為地規定程序的執行時間,CPU必須在規定的時間內完成高速掃描程序段的輸入采樣、執行程序、輸出刷新循環過程。因此,PLC對“高速掃描循環”程序中輸入/輸出信號的處理速度,可以遠遠**正常PLC循環程序中對輸入/輸出信號的處理速度。
程序中的其他部分為普通掃描部分,執行正常速度的掃描。在程序的執行過程中,如果普通掃描部分的程序執行時間已經到達高速掃描時時間間隔,CN立即中斷普通掃描,保存執行狀態,并轉人對高速程序段的掃描;等到高速段程序執行結束后,再繼續恢復對普通程序的掃描(見圖5-50)。這樣的過程在整個PLC程序執行個需要進行多次。由于高速掃描的多次中斷,普通PLC程序段的掃描時間將比正常執行的情況長。
采用這種方式的特點是:在線結構體系的程序可以處理PLC的高速輸入/輸出信號,以滿足特殊的控制要求。當然,根據實際系統的需要,程序中也可以沒有高速掃描的程序段,但是,不可以將全部程序都作為高速程序。
③分塊式結構
分塊式結構體系的PLC程序由多個程序塊組成,由統一的程序"組織塊"對各程序塊進行組織與調度,"組織塊"根據規定的條件與順序依次調用各程序塊。
采用了分塊式結構體系的PLC程序,在實際處理過程中可以根據不同的外部輸入條件與控制要求,每次循環掃描可以跳過某些程序塊,僅對需要處理的程序塊進行掃描,從而加快PLC程序的執行速度,縮短掃描時間。
根據PLC的不同,分塊式結構體系的PLC程序可以采用主、子程序結構,功能調用式結構與結構化編程等形式實現。
a.主、子程序結構。采用主、子程序結構的PLC用戶程序,一般可以由主程序、子程序、中斷程序等不同的程序塊所組成,并且按照規定的順序排列(如在S7-200中,程序塊按照主程序、子程序、中斷程序的順序依次排列)。
在主、子程序結構程序中,主程序為PLC每次掃描都必須執行的程序塊,必須重點予以編制;而子程序、中斷程序則可以根據實際需要進行編寫與調用。
主、子程序結構的PLC程序與線性化結構相類似,如果程序中沒有編制子程序、中斷程序,只有主程序,它便成了線性結構的程序。
b.功能調用式結構。功能調用式結構的PLC程序執行過程與主、子程序結構類似,但組成程序的各邏輯塊按照不同的功能進行編排,無主、子之分。組成功能調用式結構的每一程序塊都代表著控制對象的一組相對獨立動作,邏輯塊由特定的"塊"進行統一的管理與調用。
在S7-300/400系列PLC中,用于管理與調用的程序塊稱為組織塊(OB1),其余邏輯塊分別稱程序塊(FC)、功能塊(FB)、數據塊(DB)等。
一般而言,功能調用式PLC程序在CPU的一個掃描周期內,對同一程序塊的調用次數不會過一次;當過一次時則稱為“結構化編程”。
c.結構化編程。結構化編程的程序結構形式與調用式完全相同,程序同樣由多個程序塊組成,并通過"組織塊"對其進行組織與管理,但它采用了"參數化編程"的方法。
采用結構化編程的程序,在同一PLC掃描周期內可以多次重復調用程序中的同一程序塊,因此,對于動作相同或相似的程序,可以通過在PLC程序中編寫一個"公用程序塊"、利用重復調用來實現。
為了保證"公用程序塊"能控制不同的對象,必須將組成程序的各種操作數進行"參數化"。
(a)“公用程序塊”中的所有信號的地址必須是可以變化的,即“公用程序塊”中一般不能使用"**地址",而應采用"程序變量"(形式參數)進行編程。
(b) 調用“公用程序塊”前,為了使得程序中的所有信號有明確的含義,必須對“程序變量"(形式參數)進行賦值,即將"程序變量"定義成有明確含義的**地址。因此,CPU必須劃分一個專門的存儲器區域用于存儲這些賦值參數。S7-300/400中的"局部變量堆棧L"與"即時數據塊DI"就是為了實現這一目的而專門設定的存儲區域。
結構化編程的程序簡潔,所占用的內存容量小,但需要涉及程序塊、功能塊、數據塊、局部變量等概念,對編程人員的要求高。
有關結構化編程中的“程序變量”、“參數”等概念,將在下面具體介紹。
SIEMENS西門子四平授權代理商
6ES72111BE400XB0 CPU 1211C AC/DC/Rly,6輸入/4輸出,集成2AI 6ES72111AE400XB0 CPU 1211C DC/DC/DC,6輸入/4輸出,集成2AI 6ES72111HE400XB0 CPU 1211C DC/DC/Rly,6輸入/4輸出,集成2AI 6ES72121BE400XB0 CPU 1212C AC/DC/Rly,8輸入/6輸出,集成2AI 6ES72121AE400XB0 CPU 1212C DC/DC/DC,8輸入/6輸出,集成2AI 6ES72121HE400XB0 CPU 1212C DC/DC/Rly,8輸入/6輸出,集成2AI 6ES72141BG400XB0 CPU 1214C AC/DC/Rly,14輸入/10輸出,集成2AI 6ES72141AG400XB0 CPU 1214C DC/DC/DC,14輸入/10輸出,集成2AI 6ES72141HG400XB0 CPU 1214C DC/DC/Rly,14輸入/10輸出,集成2AI 6ES72151BG400XB0 CPU 1215C AC/DC/Rly,14輸入/10輸出,集成2AI/2AO 6ES72151AG400XB0 CPU 1215C DC/DC/DC,14輸入/10輸出,集成2AI/2AO 6ES72151HG400XB0 CPU 1215C DC/DC/Rly,14輸入/10輸出,集成2AI/2AO 6ES72171AG400XB0 CPU 1217C DC/DC/DC,14輸入/10輸出,集成2AI/2AO
SIEMENS西門子四平授權代理商
SIEMENS西門子四平授權代理商
(1)內部煽電器區(IR)
①IR區:分為1/O繼電器區與內部輔助繼電器區兩部分。
I/O繼電器區是供輸入/輸出用的輸入/輸出繼電器區,該區的通道號為000~019共20 個通道。其中,000~009是輸入維電器區,000、001是主機的輸入通道,其余為與主機連接的I/O擴展單元的輸入通道編號:輸出繼電器區有編號為010~019的10個通道,其中010、011通道用來對主機的輸出通道編號,012~019用于對主機連接的1/O擴展單元的輸出通道編號。
內部輔助繼電器區是供用戶編寫程序使用的,該區的通道不能直接輸出,編號為200—231的32個通道。每個通道有16位(點),故共有512點。
②繼電器編號的表示:在IR區,某一個繼電器的編號要用5位數表示。前3位是該繼電器所在的通道號,后2位數是該繼電器在通道中的位序號。例如某繼電器的編號是00105,其中的001是通道號,05表示該繼電器的位序號。
另外,輸入/輸出繼電器區中未被使用的通道也可作為內部輔助繼電器使用。(2)特殊輔助繼電器區(SR)
特殊輔助繼電器供系統使用,主要用于暫存CPMIA有關動作的標志,各種功能的設定值、現在值。SR區有24個通道(通道號為232-255),表2-6給出了該繼電器的功能。
①SR區的前半部分(232-251)一般以通道為單位使用。無縫電器號。
②232~249通道也有可作為內部輔助繼電器使用的功能(前提不作為既定功能使用時)。
③250和251只能作為既定功能使用,不可作為內部輔助繼電器使用。
④SR區后半部分(252~255)主要存儲PLC的工作狀態標志,發出工作啟動信號,產生時鐘脈沖等。除了25200,這些工作狀態只能使用,但不能改變。用戶程序只能用其觸點,不能將其作為輸出繼電器使用。
⑤25200屬于高速計數器的軟件復位標志位,狀態可控。狀態為ON時可復位。⑥25300~25307為故障碼存儲區。(3)暫存癥電器區(TR)
CPMIA有編號為TRO~7共8個暫存繼電器區。用于暫存復雜梯形圖中分支點之前的ON/OFF狀態:同一編號的暫存繼電器在同一程序段內不能重復使用,在不同的程序段可重復使用。
(4)保持繼電器區(HR)
該區有編號為HR00~HR19的20個通道,每個通道有16位,共有320個繼電器。保持續電器的使用方法同內部輔助繼電路一樣,但保持繼電器的通道編號必須冠以HR.保持繼電器具有斷電保持功能,其斷電保持功能通常有兩種用法,其一,當以通道為單位用作數強通道時,斷電后再恢復供電時數據不會丟失1其二,以位為單位與KEEP指令配合使用時、或作為自保持電路時,斷電后再恢復供電時,該位能保持掉電前的狀態。
(5)輔助記憶繼電器區(AR)
主要用來存儲PLC的工作狀態信息,具有斷電保持功能(如擴展單元的數目、斷電的次數等)。輔助記憶繼電器區共有AR00~15的16個通道,通道編號前要冠以AR字樣。
(6)鏈接電器區(LR)
鏈接繼電器區共有編號為LR00~15的16個通道,通道編號前要冠以LR字樣。當CPMIA與本系列PLC之間進行1/1連接時,要使用鏈接繼電器與對方交換數據,在不適行1(1連接時,鏈接繼電路可作內部輔助繼電器使用。
(7)定時器/計數器區(TC)
該區總共有128個定時器/計數器,編號范圍為000~127。定時器/計數器又各分為兩種,即普通定時器TIM和高速定時器TIMH,普通計數器CNT和可逆計數器CNTR(統一編號,TC號不可重復,當一個TC號恰了定時器,就不能給其他定時器或計數器)。定時器無斷電保持功能,電源斷電時定時器復位。計數器有新電保持功能。
(8)數據存儲區(DM)
數據存儲區用來存儲數據。該區共有1536個通道,每個通道16個位。通道編號用4位數且冠以DM字樣,其編號為DM0000~1023、DM6144~6655,數據存儲區只能以通道為單位使用,具有掉電保持功能。
①DM0000~0999、DM1022~1023為程序可讀寫區,用戶程序可自由讀寫內容。②DM1000~1021用作故障履歷存儲器,記錄有關故障信息,也可作為普通數據存儲器使用。是否作為故障履歷存儲器,由DM6655的00~03位設定。③DM6144~6599為只讀存儲區,可讀不可寫。數據必須提前寫人。
④DM6600~6655為系統設定區,用來設置各種系統參數。由編程器來寫入通道中的數據。DM6600~6614僅在編程模式被設定,DM6615~6655可在編程模式或監控模式的時純設定。