CPU原則上運行兩個不同的程序:
? 用戶程序。
操作系統(tǒng)
每個CPU都帶有集成的操作系統(tǒng),組織與特定控制任務(wù)無關(guān)的所有 CPU功能和順序。操作系統(tǒng)任務(wù)包括下列各項:
? 處理重啟(熱啟動)和熱重啟。
? 更新輸入的過程映像表,并輸出輸出過程映像表
? 調(diào)用用戶程序
? 采集中斷信息,調(diào)用中斷 OB。
? 識別錯誤并進(jìn)行錯誤處理
? 管理內(nèi)存區(qū)域
? 與編程設(shè)備和其它通訊伙伴進(jìn)行通訊
通過修改操作系統(tǒng)參數(shù)(操作系統(tǒng)默認(rèn)設(shè)置),可以在某些區(qū)域影響CPU響應(yīng)。
用戶程序
可以創(chuàng)建用戶程序,并將其下載到CPU中。它包含處理特定自動化任務(wù)所要求的所有功能。用戶程序任務(wù)包括:
? 確定CPU的重啟(熱啟動)和熱重啟條件(例如,用特定值初始化信號)
? 處理過程數(shù)據(jù)(例如,產(chǎn)生二進(jìn)制信號的邏輯鏈接,獲取并評估模擬量信號,指定用于輸出的二進(jìn)制信號,輸出模擬值)
? 響應(yīng)中斷
? 處理正常程序周期中的干擾。
用戶程序中的塊
可以應(yīng)用 STEP 7編程軟件構(gòu)建用戶程序,也就是說,可以將程序分成單個、獨立的程序段。這具有下列優(yōu)點:
? 大程序更易于理解。
? 可以標(biāo)準(zhǔn)化單個程序段。
? 簡化程序結(jié)構(gòu)。
? 更易于修改程序。
? 可測試單個程序段,因而簡化調(diào)試。
? 系統(tǒng)調(diào)試變得更簡單。
工業(yè)混合過程實例闡述了將一個自動化過程分成單個任務(wù)的優(yōu)點。結(jié)構(gòu)化用戶程序的程序段,即程序塊對應(yīng)于這些單個任務(wù)。
在S7用戶程序內(nèi)可使用多種類型的塊:
組織塊(OB) | OB 確定用戶程序的結(jié)構(gòu)。 |
系統(tǒng)功能塊(SFB) 和系統(tǒng)功能(SFC) | SFB 和SFC集成在S7 CPU 中,可以用來訪問一些重要的系統(tǒng)功能。 |
功能塊(FB) | FB 是帶有用戶可自行編程的“存儲器”的塊。 |
功能(FC) | FC 包含頻繁使用功能的例行程序。 |
實例數(shù)據(jù)塊 (背景DB) | 調(diào)用FB/SFB 時,實例DB與塊關(guān)聯(lián)。它們在編譯期間自動創(chuàng)建。 |
數(shù)據(jù)塊 (DB) | DB 是用于存儲用戶數(shù)據(jù)的數(shù)據(jù)區(qū)。除分配給功能塊的數(shù)據(jù)外,共享數(shù)據(jù)塊也可由任何一個塊來定義和使用。 |
組織塊和程序結(jié)構(gòu):
OB的啟動信息
每個組織塊都有20字節(jié)本地數(shù)據(jù)的啟動信息,在啟動OB時,由操作系統(tǒng)提供。啟動信息指定OB的啟動事件、OB啟動的日期和時間、所發(fā)生的錯誤以及診斷事件。例如,OB40是硬件中斷 OB,其啟動信息包含產(chǎn)生中斷的模塊地址。
取消選定中斷OB
如果將優(yōu)先級為 0 或少于20字節(jié)的本地數(shù)據(jù)分配給優(yōu)先級,則將取消選定相應(yīng)的中斷OB。處理取消中斷 OB的限制條件如下:
? 處于運行模式時,這些中斷 OB不能復(fù)制或鏈接到用戶程序。
? 處于停止模式時,可以將它們復(fù)制或鏈接到用戶程序,但CPU執(zhí)行重啟(熱啟動)時,它們停止啟動,并向診斷緩沖區(qū)輸入一個條目。
通過取消選定不需要的中斷 OB,可以增大可用的本地數(shù)據(jù)區(qū)容量,從而可以保存其它優(yōu)先級的臨時數(shù)據(jù)。
循環(huán)程序處理
循環(huán)程序處理是可編程邏輯控制器上“正常”執(zhí)行的程序類型,表示操作系統(tǒng)在程序循環(huán)(周期)中運行,在每次循環(huán)中,都會調(diào)用主程序中的組織塊 OB1 。即循環(huán)執(zhí)行OB1 中的用戶程序。
事件驅(qū)動的程序處理
可由特定的事件(中斷)中斷循環(huán)程序處理。如果發(fā)生該類事件,將在命令邊界中斷當(dāng)前執(zhí)行的塊,然后調(diào)用分配給該特定事件的其它組織塊。該組織塊一旦執(zhí)行,將在中斷點繼續(xù)執(zhí)行循環(huán)程序。
這表示可以處理部分用戶程序,這些用戶程序只有在需要時才循環(huán)處理。用戶程序可分成一些“子程序”,分布在不同的組織塊中。如果用戶程序要對相對較少發(fā)生的重要信號(例如,限制值傳感器,用于測量容器中的液位,并在到達(dá)最高液位時報告) 作出響應(yīng),則當(dāng)輸出該信號時需要處理的子程序可位于事件驅(qū)動處理型 OB上。
線性編程與結(jié)構(gòu)化編程
可以在OB1中寫入整個用戶程序(線性編程)。只有在給S7-300 CPU 編寫簡單程序、并要求極少內(nèi)存時才可行。
將復(fù)雜自動化任務(wù)分割成反映過程技術(shù)功能或可多次處理的小任務(wù),可以更易于控制復(fù)雜任務(wù)。這些任務(wù)以相應(yīng)的程序段表示,稱為塊(結(jié)構(gòu)化編程)。
用戶程序中的調(diào)用體系
要使用戶程序正常運行,必須調(diào)用構(gòu)成用戶程序的塊。這通過特殊的STEP 7 指令、塊調(diào)用來完成,而這些指令、塊調(diào)用只能在邏輯塊中編程和啟動。
次序和嵌套深度
塊調(diào)用的次序和嵌套稱為體系。可嵌套的塊數(shù)目(嵌套深度)取決于特定的 CPU。下圖闡述了一個掃描周期內(nèi)塊調(diào)用的次序和嵌套深度。
創(chuàng)建塊的固定次序如下:
? 從上到下創(chuàng)建塊,因此可以從塊的頂行開始。
? 調(diào)用的每個塊必須已經(jīng)存在,即在一行塊內(nèi),創(chuàng)建塊的次序為從右到左。
? 最后要創(chuàng)建的塊是 OB1 。
在圖中所示的實例中應(yīng)用這些規(guī)則,則可以按下列順序創(chuàng)建塊:
FC1 > FB1 + 實例DB1 > DB1 > SFC1 > FB2 + 實例DB2 > OB1
塊調(diào)用
下圖顯示了在用戶程序內(nèi)塊調(diào)用的順序。該程序調(diào)用第二個塊,然后完全執(zhí)行該塊的指令。一旦執(zhí)行第二個塊或調(diào)用塊后,在塊調(diào)用后的指令處繼續(xù)執(zhí)行發(fā)出調(diào)用命令的中斷塊。
當(dāng)執(zhí)行冷重啟時,操作系統(tǒng)將 SFB3“TP”實例復(fù)位。如果在冷重啟后,初始化該SFB 的實例,那么必須通過 OB100以PT = 0 ms 調(diào)用 SFB 的相關(guān)實例。例如,可通過在包含該 SFB 實例的塊中執(zhí)行初始化程序完成該操作。
責(zé)任編輯人:CC
-
西門子
+關(guān)注
關(guān)注
95文章
3063瀏覽量
116497 -
西門子PLC
+關(guān)注
關(guān)注
13文章
144瀏覽量
17089 -
PLC程序
+關(guān)注
關(guān)注
4文章
72瀏覽量
11339
原文標(biāo)題:西門子PLC程序結(jié)構(gòu)的基本原理
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
西門子plc數(shù)據(jù)類型_西門子plc通訊方式
![<b class='flag-5'>西門子</b><b class='flag-5'>plc</b>數(shù)據(jù)類型_<b class='flag-5'>西門子</b><b class='flag-5'>plc</b>通訊方式](https://file.elecfans.com/web1/M00/9E/49/o4YBAF05G46ARZwyAAAyrP5yWaE148.jpg)
讀取西門子PLC系統(tǒng)時間的程序資料概述
![讀取<b class='flag-5'>西門子</b><b class='flag-5'>PLC</b>系統(tǒng)時間的<b class='flag-5'>程序</b>資料概述](https://file.elecfans.com/web1/M00/C1/2D/o4YBAF8VXuOAK3-yAAGNhS1cXCI198.png)
評論