點選 《福利來了!PLC的資料(免費),你要嗎?》
CPU 支援以下型別的程式碼塊,使用它們可以建立有效的使用者程式結構:
-
組織塊 (OB) 定義程式的結構。 有些 OB具有預定義的行為和啟動事件,但使用者也可以建立具有自定義啟動事件的 OB。
-
功能 (FC) 和功能塊 (FB) 包含與特定任務或引陣列合相對應的程式程式碼。 每個 FC 或FB 都提供一組輸入和輸出引數,用於與呼叫塊共享資料。 FB還使用相關聯的資料塊(稱為背景資料塊)來儲存該 FB 呼叫實體的資料值。
可多次呼叫 FB,每次呼叫都採用唯一的背景資料塊。
呼叫帶有不同背景資料塊的同一 FB 不會對其它任何背景資料塊的資料值產生影響。 -
資料塊 (DB) 儲存程式塊可以使用的資料。
使用者程式的執行順序是:從一個或多個在進入 RUN 樣式時執行一次的可選啟動組織塊(OB) 開始,然後執行一個或多個迴圈執行的程式迴圈 OB。 還可以將OB與中斷事件關聯,該事件可以是標準事件或錯誤事件。
當發生相應的標準或錯誤事件時,即會執行這些 OB。
功能 (FC) 或功能塊 (FB) 是指可從 OB 或其它 FC/FB呼叫的程式程式碼塊,可下至以下巢狀深度:
-
16(從程式迴圈 OB 或啟動 OB 開始)
-
6(從任意中斷事件 OB 開始)
FC 不與任何特定資料塊 (DB) 相關聯。 FB 與 DB 直接相關並使用該 DB傳遞引數及儲存中間值和結果。
使用者程式、資料及組態的大小受 CPU 中可用裝載儲存器和工作儲存器的限制。 對各個OB、FC、FB 和 DB 塊的數目沒有特殊限制。 但是塊的總數限制在1024 之內。
每個週期都包括寫入輸出、讀取輸入、執行使用者程式指令以及執行後臺處理。該週期稱為掃描週期或掃描。
S7-1200 自動化解決方案可由配備 S7-1200 CPU 和附加模組的中央機架組成。
中央機架:表示 CPU 和關聯模組採用導軌或面板式安裝。
只有在通電時才會對模組(SM、SB、BB、CB、CM 或 CP)進行檢測和記錄。
-
不支援通電時在中央機架中插入或拔出模組(熱插拔)。 切勿在 CPU通電時在中央機架中插入或拔出模組。
-
可在 CPU 通電時插入或拔出 SIMATIC 儲存卡。 但在 CPU 處於 RUN樣式時插入或拔出儲存卡會使 CPU 進入 STOP 樣式。
-
如果在 CPU 處於 RUN 樣式時在分散式 I/O 機架(AS-i、PROFINET 或PROFIBUS)中插入或拔出模組,CPU將在診斷緩衝區中生成一個條目,若存在拔出或插入模組 OB 則執行該OB,並且預設保持在 RUN 樣式。
過程映像更新與過程映像分割槽
CPU 伴隨掃描週期使用內部儲存區(即過程映像)對本地數字量和模擬量 I/O點進行同步更新。 過程映像包含物理輸入和輸出(CPU、訊號板和訊號模組上的物理 I/O點)的快照。
可組態在每個掃描週期或發生特定事件中斷時在過程映像中對 I/O 點進行更新。也可對I/O 點進行組態使其排除在過程映像的更新之外。
例如,當發生如硬體中斷這類事件時,過程可能只需要特定的資料值。 透過為這些 I/O點組態映像過程更新,使其與分配給硬體中斷 OB的分割槽相關聯,就可避免在過程不需要持續更新時,CPU於每個掃描週期中執行不必要的資料值更新。
對於需要在每個掃描週期進行更新的 I/O,CPU 將在每個掃描週期期間執行以下任務:
-
CPU 將過程映像輸出區中的輸出值寫入到物理輸出。
-
CPU 僅在使用者程式執行前讀取物理輸入,並將輸入值儲存在過程映像輸入區。這樣一來,這些值便將在整個使用者指令執行過程中保持一致。
-
CPU執行使用者指令邏輯,並更新過程映像輸出區中的輸出值,而不是寫入實際的物理輸出。
這一過程透過在給定週期內執行使用者指令而提供一致的邏輯,並防止物理輸出點可能在過程映像輸出區中多次改變狀態而出現抖動。
為控制在每個掃描週期或在事件觸發時是否自動更新 I/O 點,S7-1200提供了五個過程映像分割槽。 第一個過程映像分割槽 PIP0指定用於每個掃描週期都自動更新的 I/O,此為預設分配。 其餘四個分割槽PIP1、PIP2、PIP3 和 PIP4 可用於將 I/O 過程映像更新分配給不同的中斷事件。
在裝置組態中將 I/O 分配給過程映像分割槽,併在建立中斷 OB 或編輯OB 屬性時將過程映像分割槽分配給中斷事件。
預設情況下,在裝置檢視中插入 模組時,STEP 7 會將其 I/O過程映像更新為“自動更新”(Automatic update)。 對於組態為“自動更新”(Automatic update) 的I/O,CPU 將在每個掃描週期自動處理模組和過程映像之間的資料交換。
要將數字量或模擬量點分配給過程映像分割槽,或將 I/O點排除在過程映像更新之外,請按照以下步驟操作:
-
在裝置組態中檢視相應裝置的“屬性”(Properties) 選項卡。
-
根據需要在“常規 (General)”下展開選項,找出所需的 I/O 點。
-
選擇“I/O 地址”(I/O addresses)。
-
也可以從“組織塊”(Organization block) 下拉串列中選擇一個特定的 OB。
-
在“過程映像”(Process image) 下拉串列中將“自動更新”(Automatic update更改為“PIP1”、“PIP2”、“PIP3”、“PIP4”或“無”(None)。 選擇“無”(None)表示只能透過立即指令對此 I/O 進行讀寫。
要將這些點重新新增到過程映像自動更新中,請將該選項再次更改為“自動更新”(Auto matic update)。
可以在指令執行時立即讀取物理輸入值和立即寫入物理輸出值。 無論 I/O點是否被組態為儲存到過程映像中,立即讀取功能都將訪問物理輸入的當前狀態而不更新過程映像輸入區。 立即寫入物理輸出功能將同時更新過程映像輸出區(如果相應 I/O點組態為儲存到過程映像中)和物理輸出點。
如果想要程式不使用過程映像,直接從物理點立即訪問 I/O 資料,則在 I/O地址後加字尾“:P”。
CPU 支援 PROFINET 和 PROFIBUS 網路上的分散式 I/O。
CPU 的工作樣式
CPU 有以下三種工作樣式: STOP 樣式、STARTUP 樣式和 RUN 樣式。 CPU前面的狀態 LED 指示當前工作樣式。
-
在 STOP 樣式下,CPU 不執行程式。 您可以下載專案。
-
在 STARTUP 樣式下,執行一次啟動 OB(如果存在)。 在啟動樣式下,CPU不會處理中斷事件。
-
在 RUN 樣式,程式迴圈 OB 重覆執行。 可能發生中斷事件,併在 RUN樣式中的任意點執行相應的中斷事件 OB。 可在 RUN 樣式下下載專案的某些部分.
CPU 支援透過暖啟動進入 RUN 樣式。 暖啟動不包括儲存器複位。 執行暖啟動時,CPU會初始化所有的非保持性系統和使用者資料,並保留所有保持性使用者資料值。
儲存器複位將清除所有工作儲存器、保持性及非保持性儲存區、將裝載儲存器複製到工作儲存器並將輸出設定為組態的“對 CPU STOP 的響應”(Reaction to CPU STOP)。儲存器複位不會清除診斷緩衝區,也不會清除永久儲存的 IP 地址值。
可組態 CPU 中“上電後啟動”(startup after POWER ON) 設定。 該組態項出現在CPU“裝置組態”(Device Configuration) 的“啟動”(Startup) 下。 通電後,CPU將執行一系列上電診斷檢查和系統初始化操作。 在系統初始化過程中,CPU將刪除所有非保持性位 (M) 儲存器,並將所有非保持性 DB的內容複位為裝載儲存器的初始值。 CPU 將保留保持性位 (M) 儲存器和保持性 DB的內容,然後進入相應的工作樣式。 檢測到的某些錯誤會阻止 CPU 進入 RUN 樣式。
CPU 支援以下組態選項:
-
不重新啟動(保持為 STOP 樣式)
-
暖啟動 – RUN 樣式
-
暖啟動 – 斷電前的樣式
可以使用程式設計軟體線上工具中的“STOP”或“RUN”命令 更改當前工作樣式。也可在程式中包含 STP 指令,以使 CPU 切換到 STOP 樣式。這樣就可以根據程式邏輯停止程式的執行。
-
在 STOP 樣式下,CPU 處理所有通訊請求(如果適用)並執行自診斷。 CPU不執行使用者程式,過程映像也不會自動更新。
-
在 STARTUP 和 RUN 樣式下,CPU 執行下圖所示的任務。
啟動過程
只要工作樣式從 STOP 切換到 RUN,CPU就會清除過程映像輸入、初始化過程映像輸出並處理啟動 OB。 透過“啟動OB”中的指令對過程映像輸入進行任何的讀訪問,都只會讀取零值,而不是讀取當前物理輸入值。 因此,要在啟動樣式下讀取物理輸入的當前狀態,必須執行立即讀取操作。
接著再執行啟動 OB 以及任何相關的 FC 和 FB。 如果存在多個啟動 OB,則按照 OB編號依次執行各啟動 OB,OB 編號最小的先執行。
每個啟動 OB 都包含幫助您確定保持性資料和時鐘有效性的啟動資訊。 可以在啟動 OB中編寫指令,以檢查這些啟動值,從而採取適當的措施。 啟動 OB 支援以下啟動位置:
在啟動過程中,CPU 還會執行以下任務.
-
在啟動階段,對中斷進行排隊但不加以處理
-
在啟動階段,不執行任何迴圈時間監視
-
在啟動樣式下,可以更改 HSC(High-Speed Counter,高速計數器)、PWM(Pulse-Width Modulation,脈衝寬度調製)以及PtP(Point-to-Point communication,點對點通訊)模組的組態
-
只有在 RUN 樣式下才會真正執行 HSC、PWM 和點對點通訊模組
執行完啟動 OB 後,CPU 將進入 RUN 樣式併在連續的掃描週期內處理控制任務。
在 RUN 樣式下處理掃描週期
在每個掃描週期中,CPU都會寫入輸出、讀取輸入、執行使用者程式、更新通訊模組以及響應使用者中斷事件和通訊請求。 在掃描期間會定期處理通訊請求。
以上操作(使用者中斷事件除外)按先後順序定期進行處理。
對於已啟用的使用者中斷事件,將根據優先順序按其發生順序進行處理。
對於中斷事件,如果適用的話,CPU 將讀取輸入、執行OB,然後使用關聯的過程映像分割槽 (PIP) 寫入輸出。
系統要保證掃描週期在一定的時間段內(即最大迴圈時間)完成;否則將生成時間錯誤事件。
-
在每個掃描週期的開始,從過程映像重新獲取數字量及模擬量輸出的當前值,然後將其寫入到 CPU、SB 和 SM 模組上組態為自動 I/O 更新(預設組態)的物理輸出。透過指令訪問物理輸出時,輸出過程映像和物理輸出本身都將被更新。
-
隨後在該掃描週期中,將讀取 CPU、SB 和 SM 模組上組態為自動 I/O更新(預設組態)的數字量及模擬量輸入的當前值,然後將這些值寫入過程映像。透過指令訪問物理輸入時,指令將訪問物理輸入的值,但輸入過程映像不會更新。
-
讀取輸入後,系統將從第一條指令開始執行使用者程式,一直執行到最後一條指令。其中包括所有的程式迴圈 OB 及其所有關聯的 FC 和 FB。 程式迴圈 OB 根據 OB編號依次執行,OB 編號最小的先執行。
在掃描期間會定期處理通訊請求,這可能會中斷使用者程式的執行。自診斷檢查包括定期檢查系統和檢查 I/O 模組的狀態。中斷可能發生在掃描週期的任何階段,並且由事件驅動。 事件發生時,CPU將中斷掃描迴圈,並呼叫被組態用於處理該事件的 OB。 OB 處理完該事件後,CPU從中斷點繼續執行使用者程式。
組織塊 (OB)
OB 控制使用者程式的執行。 CPU 中的特定事件將觸發組織塊的執行。 OB無法互相呼叫或透過 FC 或 FB 呼叫。 只有診斷中斷或時間間隔這類事件可以啟動 OB的執行。CPU 按優先等級處理 OB,即先執行優先順序較高的 OB 然後執行優先順序較低的OB。最低優先等級為 1(對應主程式迴圈),最高優先等級為 26。
-
程式迴圈 OB
程式迴圈 OB 在 CPU 處於 RUN 樣式時迴圈執行。 主程式塊是程式迴圈OB。使用者在其中放置控製程式的指令以及呼叫其它使用者塊。 您可以擁有多個程式迴圈OB,CPU 將按編號順序執行這些 OB。 預設為 Main (OB1)。
程式迴圈事件
程式迴圈事件在每個程式迴圈(掃描)期間發生一次 在程式迴圈期間,CPU寫入輸出、讀取輸入和執行程式迴圈 OB。 程式迴圈事件是必需的,並且一直啟用。可以不為程式迴圈事件選擇任何程式迴圈 OB,也可以選擇多個 OB。
程式迴圈事件發生後,CPU 將執行編號最小的程式迴圈 OB(通常為“Main”OB 1)。在程式迴圈中,CPU 會依次(按編號順序)執行其它程式迴圈 OB。
程式迴圈執行,因此將在以下時刻發生程式迴圈事件:
● 上一個啟動 OB 執行結束
● 上一個程式迴圈 OB 執行結束
-
啟動 OB
啟動 OB 在 CPU 的操作樣式從 STOP 切換到 RUN 時執行一次,包括處於RUN樣式時和執行 STOP 到 RUN 切換命令時上電。 之後將開始執行主“程式迴圈”OB。
啟動事件
啟動事件在從 STOP 切換到 RUN 樣式時發生一次,並觸發 CPU 執行啟動OB。可為啟動事件組態多個 OB。 啟動 OB 按編號順序執行。
-
延時中斷 OB
延時中斷 OB 在組態的時延後執行。
延時中斷事件
將延時中斷事件組態為在經過一個指定的延時後發生。 延遲時間可透過SRT_DINT指令分配。 延時事件將中斷程式迴圈以執行相應的延時中斷 OB。只能將一個延時中斷OB 連線到一個延時事件。 CPU 支援四個延時事件。
-
迴圈中斷 OB
迴圈中斷 OB 以指定的時間間隔執行。最多可組態四個迴圈中斷事件,每個迴圈中斷事件對應一個 OB。
迴圈中斷事件
使用者可透過迴圈中斷事件組態中斷 OB 在組態的週期時間執行。 建立迴圈中斷OB時即可組態初始週期時間。迴圈事件負責中斷程式迴圈並執行相應的迴圈中斷OB。請註意,迴圈中斷事件的優先順序比程式迴圈事件更高。
一個迴圈事件只可連線一個迴圈中斷 OB。可為每一個迴圈中斷分配一個相移,從而使迴圈中斷彼此錯開一定的相移量執行。
例如,如果有 1 ms 的迴圈事件和 2 ms 的迴圈事件,並且這兩個事件每 2 ms同時發生一次。 如果將 1 ms 的事件相移 500 μs,將 2 ms 的事件相移0μs,則這兩個事件不再會同時發生。
預設相移為0。要更改初始相移,或更改迴圈事件的初始迴圈時間,請單擊專案樹中的迴圈中斷OB,在背景關係選單中選擇“屬性”(Properties),然後單擊“迴圈中斷”(Cyclic interrupt)並輸入新的初始值。 還可以用 Query 迴圈中斷(QRY_CINT) 和 Set 迴圈中斷(SET_CINT) 指令在程式中查詢並更改掃描時間和相移。 SET_CINT指令設定的掃描時間和相移不會在上電迴圈或切換到 STOP樣式的過程中保持不變;掃描時間和相移值會在上電迴圈或切換到 STOP樣式後重新變為初始值。 CPU 共支援四個迴圈中斷事件。
-
硬體中斷 OB
硬體中斷 OB 在發生相關硬體事件時執行。 硬體中斷 OB將中斷正常的迴圈程式執行來響應硬體事件訊號。
硬體中斷事件
硬體發生變化時將觸發硬體中斷事件,例如輸入點上的上升沿/下降沿事件或者HSC(High Speed Counter,高速計數器)事件。 S7-1200支援為每個硬體中斷事件使用一個中斷 OB。可在裝置組態中啟用硬體事件,併在裝置組態中為事件分配 OB,也可在使用者程式中透過ATTACH 指令進行分配。 CPU 支援多個硬體中斷事件。 具體的可用事件由 CPU型號和輸入點數決定。
硬體中斷事件數具有以下限制:
-
時間錯誤中斷 OB
如已組態,那麼當掃描週期超過最大週期時間或發生時間錯誤事件時,將執行時間錯誤中斷 OB (OB 80)。 如已觸發,錯誤中斷將中斷正常的迴圈程式執行或其它任何事件 OB。
發生任何上述事件都將生成一個描述相應事件的診斷緩衝區條目。無論是否存在時間錯誤中斷 OB,都將生成診斷緩衝區條目。
時間錯誤中斷事件
出現幾種不同時間錯誤情況中的任何一種都會引起時間錯誤事件:
● 掃描週期超過最大週期時間
如果程式迴圈在指定的最大掃描週期時間內未完成,就會出現“超出最大週期時間”這種情況。 有關最大週期時間情況、如何在 CPU屬性中組態最大掃描週期時間以及如何複位迴圈定時器的更多資訊。
● 由於在 CPU 結束執行第一次中斷 OB 前又啟動了第二次中斷(迴圈或延時),因此CPU 無法啟動所請求的 OB。
● 發生佇列上限溢位
如果中斷的出現頻率超過 CPU 的處理頻率,就會出現“發生佇列上限溢位”這種情況。 CPU透過不同的佇列對各種事件型別的未決(排隊的)事件數量加以限制。如果相應佇列已滿時發生某一事件,那麼 CPU 將生成一個時間錯誤事件。
所有時間錯誤事件都會觸發時間錯誤中斷 OB(如果存在)的執行。 如果時間錯誤中斷OB 不存在,那麼 CPU 的裝置組態將決定 CPU 對時間錯誤做出何種反應:
● 預設時間錯誤(如在 CPU 完成第一個迴圈中斷前開始第二個迴圈中斷)組態是 CPU保持 RUN 樣式。
● 針對超出最大時間的預設組態是 CPU 切換為 STOP 樣式。
透過執行 RE_TRIGR 指令重啟週期時間監視,使用者程式可將程式迴圈執行時間最多延長為所組態最大週期時間的十倍。
但是,如果在同一程式迴圈中出現兩次“超出最大週期時間”情況且沒有複位迴圈定時器,則無論時間錯誤中斷 OB 是否存在,CPU 都將切換到 STOP 樣式。
時間錯誤中斷 OB 包含的啟動資訊可幫助您確定生成時間錯誤的事件和 OB。 可以在 OB中編寫指令,以檢查這些啟動值並採取適當的措施。
要在專案中包括時間錯誤中斷 OB,請在樹形結構的“程式塊”(Program blocks)下雙擊“新增新塊”(Add new block),然後依次選擇“組織塊”(Organization block)、“時間錯誤中斷”(Time error interrupt),將時間錯誤中斷新增到專案中。
-
診斷錯誤中斷 OB
當 CPU檢測到診斷錯誤,或者具有診斷功能的模組發現錯誤且為該模組啟用了診斷錯誤中斷時,將執行診斷錯誤中斷 OB。 診斷錯誤中斷 OB 將中斷正常的迴圈程式執行。 如果希望CPU 在收到診斷錯誤後進入 STOP 樣式,可在診斷錯誤中斷 OB 中包含一個 STP指令,以使 CPU 進入 STOP 樣式。
如果未在程式中包含診斷錯誤中斷 OB,CPU 將忽略此類錯誤並保持 RUN 樣式。
診斷錯誤事件
模擬(本地)、PROFINET、PROFIBUS和其它一些數字(本地)裝置都能夠檢測並報告診斷錯誤。
發生或清除幾種不同診斷錯誤情況中的任何一種都會引起診斷錯誤事件。
所支援的診斷錯誤有以下幾種:
● 無使用者電源
● 超出上限
● 超出下限
● 斷路
● 短路
如果存在診斷錯誤中斷 OB (OB 82),那麼診斷錯誤事件將觸發中斷執行。
如果不存在,CPU 將忽略該錯誤。
要在專案中包括診斷錯誤中斷 OB,請在樹形結構的“程式塊”(Program blocks)下雙擊“新增新塊”(Add new block),然後依次選擇“組織塊”(Organization block)、“診斷錯誤中斷”(Diagnostic error interrupt),將診斷錯誤中斷新增到專案中。
診斷錯誤中斷 OB包含的啟動資訊可幫助您確定事件發生原因是錯誤的出現還是清除所致,以及確定報告錯誤的裝置和通道。 可以在診斷錯誤中斷 OB中編寫指令,以檢查這些啟動值並採取適當的措施。
-
拔出或插入模組 OB
當已組態和非禁用分散式 I/O 模組或子模組(PROFIBUS、PROFINET、ASi)生成插入或拔出模組相關事件時,系統將執行“拔出或插入模組”OB。
拔出或插入模組事件
以下情況將產生拔出或插入模組事件:
● 有人拔出或插入一個已組態的模組
● 擴充套件機架中實際並沒有所組態的模組
● 擴充套件機架中的不相容模組與所組態的模組不相符
● 擴充套件機架中插入了與所組態模組相容的模組,但組態不允許替換值
● 模組或子模組發生引數化錯誤
如果尚未對該 OB 進行程式設計,那麼當已組態且未禁用的分散式 I/O模組以上任意情況時,CPU 都將保持在 RUN 樣式。
無論是否已對該 OB 進行程式設計,當中央機架中的模組以上任意情況時,CPU 都將切換到STOP 樣式。
-
機架或站故障 OB
當 CPU 檢測到分散式機架或站出現故障或發生通訊丟失時,將執行“機架或站故障”OB。
機架或站故障事件
檢測到以下任一情況時,CPU 將生成機架或站故障事件:
● DP 主站系統故障或 PROFINET IO 系統故障(進入或離開事件)
● DP 從站系統故障或 IO 裝置故障(進入或離開事件)
● PROFINET I 裝置的某些子模組發生故障
如果尚未對該 OB 進行程式設計,那麼發生以上任意情況時,CPU 將保持在 RUN樣式。
-
時鐘 OB
時鐘 OB 根據所組態的時鐘時間條件執行。 CPU 支援兩個時鐘 OB。
時鐘事件
可將時鐘中斷事件組態為在某個指定的日期或時間發生一次,或者按照以下週期之一迴圈發生:
● 每分鐘: 每分鐘發生中斷。
● 每小時: 每小時發生中斷。
● 每天: 在每天的指定時間(小時和分鐘)發生中斷。
● 每週: 在每週指定日期的指定時間(例如,每週二下午 4:30)發生中斷。
● 每月: 在每月指定日期的指定時間發生中斷。 日期編號必須介於 1 和 28 之間(包括1 和 28)。
● 每個月末: 在每個月最後一天的指定時間發生中斷。
● 每年: 在每年的指定日期(月和日)發生中斷。 不能指定 2 月 29 日。
-
狀態 OB
如果 DPV1 或 PNIO 從站觸髮狀態中斷,則執行狀態 OB。 如果 DPV1 或PNIO從站的元件(模組或機架)更改了其工作樣式(例如由 RUN 變為STOP),則可能發生這種情況。
狀態事件
有關可觸髮狀態中斷的事件的詳細資訊,請參見 DPV1 或 PNIO 從站的製造商檔案。
-
更新 OB
如果 DPV1 或 PNIO 從站觸發更新中斷,則執行更新 OB。
更新事件
有關可觸發更新中斷的事件的詳細資訊,請參見 DPV1 或 PNIO 從站的製造商檔案。
-
配置檔案 OB
如果 DPV1 或 PNIO 從站觸發配置檔案特定的中斷,則執行配置檔案 OB。
配置檔案事件
有關可觸發配置檔案中斷的事件的詳細資訊,請參見 DPV1 或 PNIO從站的製造商檔案。
-
事件執行的優先順序與排隊
CPU 處理操作受事件控制。 事件會觸發要執行的中斷 OB。
可以在塊的建立期間、裝置配置期間或使用 ATTACH 或 DETACH 指令指定事件的中斷OB。 有些事件定期發生,例如,程式迴圈或迴圈事件。而其它事件只發生一次,例如,啟動事件和延時事件。
還有一些事件則在硬體觸發事件時發生,例如,輸入點上的沿事件或高速計數器事件。診斷錯誤和時間錯誤等事件只在出現錯誤時發生。 事件優先順序和佇列用於確定事件中斷OB 的處理順序。
CPU 按照優先順序順序處理事件,1 為最低優先順序,26 為最高優先順序。 在 S7-1200 CPUV4.0 之前的版本中,每種 OB 型別都有固定的優先順序(1 到 26)。 從 V4.0開始,可為每個組態的 OB 分配優先順序。 優先順序編號在 OB 屬性的特性中進行配置。
可中斷與不可中斷執行樣式
OB 按照其觸發事件的優先順序順序執行。 從 V4.0 開始,可以將 OB執行組態為可中斷或不可中斷。 請註意,程式迴圈 OB 始終為可中斷,但可將其它所有OB 組態為可中斷或不可中斷。
如果設定了可中斷樣式,則在執行 OB 並且 OB執行結束前發生了更高優先順序的事件時,將中斷正在執行的OB,以允許更高優先順序的事件 OB 執行。
執行更高階別的事件直至結束後,才會繼續執行之前中斷的 OB。 如果執行可中斷 OB時發生多個事件,CPU 將按照優先順序順序處理這些事件。
如果未設定可中斷樣式,則無論觸發的 OB在執行期間是否觸發了其它任何事件,都將繼續執行直至結束。
考慮以下兩種情況,其中中斷事件可觸發迴圈 OB 和延時 OB。在這兩種情況中,延時OB (OB201) 沒有過程映像分割槽分配並且以優先順序 4 執行。迴圈 OB (OB200)分配了 PIP1 過程映像分割槽並且以優先順序 2執行。下圖顯示了在不可中斷與可中斷執行樣式中執行 OB 的區別:
瞭解事件執行的優先順序與排隊
CPU 透過各種事件型別的不同佇列限制單一來源的未決(排隊的)事件數量。達到給定事件型別的未決事件限值後,下一個事件將丟失。 可以使用時間錯誤中斷 OB響應佇列上限溢位。
每個 CPU 事件都具有相關優先順序。 通常,CPU按優先順序順序處理事件(優先順序最高的最先進行處理)。 對於優先順序相同的事件,CPU按照“先到先得”的原則進行處理。
另外,CPU 可識別出無關聯 OB 的其它事件。 下表介紹了這些事件和相應的CPU操作:
監視和組態迴圈時間
迴圈時間是指 CPU 作業系統在 RUN 樣式下執行迴圈階段所需的時間。 CPU提供了兩種監視迴圈時間的方法:
● 最大掃描週期時間
● 最小掃描週期時間
掃描週期監視在啟動事件完成後開始。 此功能的組態出現在 CPU“裝置配置”(Device Configuration) 的“迴圈時間”(Cycle time) 下。
CPU 始終監視掃描週期,併在超出最大掃描週期時間時做出響應。
如果超出組態的最大掃描週期時間,將生成錯誤,並按以下兩種方法之一對該錯誤進行處理:
● 如果使用者程式不包括時間錯誤中斷OB,則時間錯誤事件將產生一個診斷緩衝區條目,但 CPU 仍保持 RUN 樣式。(可透過更改 CPU 的組態使其在檢測到時間錯誤時進入 STOP樣式,但預設組態為保持 RUN 樣式。)
● 如果使用者程式中包含時間錯誤中斷 OB,則 CPU 將執行該中斷。
通常,掃描週期會儘快執行,當前掃描週期一完成,下一個掃描週期就會開始。視使用者程式和通訊任務而定,掃描週期的時間段在各次掃描中有所不同。
為了消除這種差異,CPU 支援一種可選的最小掃描週期時間。
如果啟用此可選功能並提供以 ms 為單位的最小掃描週期時間,則在執行完程式迴圈 OB後 CPU 會延時,直至經過最小掃描週期時間後才重覆程式迴圈。
如果 CPU 完成正常掃描週期的時間小於指定的最小迴圈時間,則 CPU將用額外的掃描週期時間執行執行診斷和/或處理通訊請求。
如果 CPU 在指定的最小迴圈時間內未完成掃描週期,CPU將正常完成掃描(包括通訊處理),並且不會因超出最小掃描時間而引起任何系統響應。
下表定義了迴圈時間監視功能的值範圍和預設值。
組態迴圈時間和通訊負載
CPU 儲存器
-
儲存器管理
CPU 提供了以下用於儲存使用者程式、資料和組態的儲存區:
● 裝載儲存器,用於非易失性地儲存使用者程式、資料和組態。 將專案下載到CPU後,CPU 會先將程式儲存在裝載儲存區中。 該儲存區位於儲存卡(如存在)或 CPU中。 CPU 能夠在斷電後繼續保持該非易失性儲存區。 儲存卡支援的儲存空間比 CPU內建的儲存空間更大。
● 工作儲存器是易失性儲存器,用於在執行使用者程式時儲存使用者專案的某些內容。 CPU會將一些專案內容從裝載儲存器複製到工作儲存器中。該易失性儲存區將在斷電後丟失,而在恢復供電時由 CPU 恢復。
● 保持性儲存器,用於非易失性地儲存限量的工作儲存器值。 斷電過程中,CPU使用保持性儲存區儲存所選使用者儲存單元的值。 如果發生斷電或掉電,CPU將在上電時恢復這些保持性值。要顯示編譯程式塊的儲存器使用情況,請右鍵單擊 STEP 7 專案樹中“程式塊”(Program blocks) 檔案夾中的塊,然後從背景關係選單中選擇“資源”(Resources)。
“編譯屬性”(Compiliation properties) 顯示了編譯塊的裝載儲存器和工作儲存器。要顯示線上 CPU 的儲存器使用情況,請雙擊 STEP 7 中的“線上和診斷”(Online and diagnostics),展開“診斷”(Diagnostics),然後選擇“儲存器”(Memory)。
-
保持性儲存器
將某些資料標記為保持性資料可以避免發生電源故障後造成資料丟失。 該 CPU允許您將以下資料配置為保持性資料:
● 位儲存器 (M): 可以在 PLC變數表或分配串列中定義位儲存器的保持性儲存器的大小。 保持性位儲存器總是從MB0 開始向上連續貫穿指定的位元組數。 透過 PLC變數表或在分配串列中透過單擊“保持性”(Retain) 工具欄圖示指定該值。輸入從 MB0開始保留的 M 位元組個數。
註意: 對於任何塊,都可透過在“程式塊”(Program blocks)檔案夾中選擇塊,然後選擇“工具 > 分配串列”(Tools > Assignment list)選單命令來顯示分配串列。
● 函式塊 (FB) 的變數: 如果建立 FB 時選擇了“最佳化”(Optimized),則該 FB
的介面編輯器將包含“保持性”(Retain) 列。
在該列中,可以為每個變數分別選擇“保持性”(Retentive)、“非保持性”(Non-Retentive)或“在 IDB 中設定”(Set in IDB)。 在程式編輯器中放置該 FB 時建立的背景 DB中也將顯示該保持性列。 在最佳化的 FB 中,如果在變數的“保持性”(Retain)選項中選擇“在 IDB 中設定”(Set in IDB)(在背景資料塊中設定),那麼只能更改背景DB 介面編輯器中某個變數的保持性狀態。
● 全域性資料塊的變數: 在保持性狀態分配方面,全域性 DB 與 FB 類似。
根據塊訪問設定情況,使用者可以定義全域性資料塊的單個變數或所有變數的保持性狀態。
– 如果在 DB建立時選擇“最佳化”(Optimized),則可以設定每個單獨變數的保持性狀態。
– 如果在建立 DB 時選擇“標準 – 與 S7-300/400 相容”(Standard – compatible with S7-300/400),則該保持性狀態的設定將適用於該 DB的所有變數;即變數要麼都具有保持性,要麼都沒有。
該 CPU 最多支援 10240 位元組的保持性資料。 要瞭解可用保持性位元組數,請在PLC變數表或分配串列中單擊“保持性”(Retain) 工具欄圖示。 儘管這裡是為 M儲存器指定保持性範圍的地方,但第二個箭頭會指示可用於 M 和 DB的總剩餘儲存空間。
請註意,要保證該值的準確性,必須編譯帶有保持性變數的所有資料塊。
診斷緩衝區
CPU 支援的診斷緩衝區包含有與診斷事件一一對應的條目。每個條目都包含了事件發生的日期和時間、事件類別及事件描述。條目按時間順序顯示,最新發生的事件位於最上面。 此日誌最多可提供 50個最近發生的事件。 日誌填滿後,新事件將替換日誌中最早的事件。掉電時,將儲存事件。
診斷緩衝區中記錄以下事件型別:
● 所有系統診斷事件;例如,CPU 錯誤和模組錯誤
● CPU 的每次狀態切換(每次上電、每次切換到 STOP 樣式、每次切換到RUN 樣式)必須線上訪問診斷緩衝區 (頁 1190)。 從“線上和診斷”(Online & diagnostics)檢視中,在“診斷 > 診斷緩衝區”(Diagnostics > Diagnostics buffer) 下查詢診斷緩衝區。
日時鐘
CPU 支援日時鐘。 在 CPU 斷電期間,超級電容器提供時鐘繼續執行所需的電能。超級電容器在 CPU 通電時充電。 在 CPU 通電至少 24小時之後,超級電容器所具有的電量通常足以維持時鐘執行 20 天。STEP 7 將時鐘設定為系統時間,它有一個初始的預設值或者遵循出廠值。若要使用日時鐘,必須進行設定。諸如用於診斷緩衝區條目、資料日誌檔案和資料日誌條目的時間戳都是基於系統時間。
從線上 CPU 的“線上和診斷”(Online & diagnostics) 檢視中的“設定日時鐘”功能
下設定日時鐘。 然後,STEP 7 從您設定的時間中加上或者減去 Windows作業系統與 UTC(世界協調時間)的偏差來計算系統時間。 如果您的 Windows作業系統的時區和夏令時的設定與您所處的區域相一致,則將日時鐘設定為當前的本地時間會產生 UTC 的系統時間。
STEP 7 中包含讀寫系統時間(RD_SYS_T 和 WR_SYS_T)、讀取本地時間(RD_LOC_T) 和設定時區 (SET_TIMEZONE) 的指令。 RD_LOC_T指令使用您在 CPU 的一般屬性的“日時鐘”(Time of day)組態中所設定的時區和夏令時偏移量來計算本地時間。
這些設定可以設定您本地時間的時區、選擇性地設定夏令時並指定夏令時的開始時間和結束時間。 您也可以透過使用 SET_TIMEZONE 指令來設定這些設定。
組態從 RUN 切換到 STOP 時的輸出
可以組態 CPU 處於 STOP 樣式時數字量輸出和模擬量輸出的特性。 可以將CPU、SB或 SM 的任何輸出設定為凍結值或使用替換值:
● 替換特定的輸出值(預設): 為 CPU、SB 或 SM裝置的每個輸出(通道)分別輸入替換值。數字輸出通道的預設替換值為 OFF,而模擬輸出通道的預設替換值為 0。
● 凍結輸出以保持上一個狀態: 工作樣式從 RUN 切換到 STOP時,輸出將保留當前值。 上電後,輸出被設定為預設的替換值。
可以在“裝置配置”(Device Configuration) 中組態輸出的行為。選擇相應的裝置,然後使用“屬性”(Properties) 選項卡組態每個裝置的輸出。
CPU 從 RUN 切換到 STOP 後,CPU將保留過程映像,並根據組態寫入相應的數字和模擬輸出值。
尋找同路人
可透過選單查詢自己喜歡的文章彙總:
【現場儀錶】【DCS部分】【PLC部分】【SIS部分】【通訊】【標準】【數字化】【問題解答】此處列出部分連結,更多文章透過選單獲取。