用于循環程序處理的組織塊(OB1)
在可編程控制器上循環程序處理是程序執行的“普通”類型。操作系統循環調用OB1啟動用戶程序的循環執行。
循環程序執行的順序
下表所示為循環程序處理的各個階段:
1.操作系統啟動循環監控時間
2.CPU從輸出的過程映象表寫數值到輸出模板
3.CPU讀輸入模板的輸入狀態并刷新輸入的過程映象表
4.CPU處理用戶程序并執行程序中所包含的指令
5.在循環結束處,操作系統執行所有掛起的任務,如下載和刪除塊,接收和發送全局數據
6.最后,CPU 回到循環開始處并重新啟動循環監控時間.
OB1_EV_CLASS BYTE 事件等級和標識符:B#16#11:OB1激活
OB1_SCAN_1 BYTE B#16#01:完成暖重啟, B#16#04:完成冷重啟,B#16#03:完成主循環
B#16#02:完成熱重啟
B#16#02:完成熱重啟
OB1_PRIORITY BYTE 優先級1
OB1_OB_NUMBR BYTE OB編號(01)
OB1_PREV_CYCLE INT 上一次掃描的運行時間(ms)
OB1_MIN_CYCLE INT 自上次啟動后的最小周期(ms)
OB1_MAX_CYCLE INT 從上次啟動后的最大周期(ms)
OB1_DATE_TIME DATE_AND_TIME 調用OB時的DATE_AND_TIME
過程映象
所以在循環程序處理過程中,CPU的過程信號映象是一致的。CPU并不直接訪問I/O 模板上的輸入(I )和輸出(Q )地址區域,而是訪問一個CPU內部的存儲區域,該區域中包含輸入和輸出的映象。
編程循環程序處理
你可以通過使用STEP 7在OB1 中編寫你的用戶程序以及在OB1調用的塊中編寫程序來編程循環程序處理。
啟動程序無錯執行一結束,循環程序處理就立即開始。
中斷
循環程序處理可以被以下事件中斷:
? 一個中斷
? STOP命令(模式選擇開關,編程器上的菜單選項,SFC46 STP,SFB20 STOP )
? 電源掉電
? 出現故障或編程錯誤
掃描循環時間
掃描循環時間是操作系統運行循環程序和中斷循環的所有程序部分(例如,執行其它組織塊)以及系統操作(如,刷新過程映象)所需要的時間。這個時間可以被監控。
每個循環的循環掃描時間(TC)并不相同。下圖所示為已有的CPU和新CPU之間不同的掃描循環時間(TC1 ≠TC2 ):
循環監視時間
使用STEP 7,可以修改缺省的最大循環監視時間。如果這個時間溢出,CPU轉為STOP模式或調用OB80,在OB80中你可以指定CPU如何響應這個故障。
最小循環時間
使用STEP 7,可以為S7-400 CPU和CPU318 設置最小循環時間。在以下情形下這個功能是有用的:
? 當OB1(主程序掃描)執行程序的啟動時間間隔必須一致時,或者
? 如果循環時間太短,過程映象表的刷新沒必要過于頻繁。
下圖所示為已有的CPU和新CPU中程序處理過程中的循環監控時間的功能。
刷新過程映象
在CPU的循環程序處理過程中,過程映象區被自動刷新。
你也可以不刷新過程映象,如果你要:
? 直接訪問I/O 或者
? 用系統功能SFC26 UPDAT_PI 和SFC27 UPDAT_PO在程序的不同點刷新一個或多個過程映象的輸入或輸出部分。
通訊負載
你可以使用CPU參數“Scan Cycle Load from Communication(掃描通訊循環負載)”,在給定框架內控制通訊過程的持續時間,因為一般通訊過程會增加掃描循環時間。例如通訊過程包括以MPI方式將數據傳送至其它CPU,或使用編程設備加載的通訊功能塊。
該參數很少影響編程器測試功能。當然,你可以顯著增加掃描時間。在處理模式中,你可以限制測試功能的時間(只適用于S7-300)。
參數的工作原理
CPU操作系統可持續提供用戶組態的整個CPU處理能力的百分比(時間片技術)用于所組態的通訊。但如果不需要處理通訊時,可用于其它處理。
設置掃描循環時間
無需其它異步事件,OB1掃描循環時間可以根據以下公式乘以一個系數進行擴展:
---------------------------END-------------------------------
審核編輯 :李倩
-
plc
+關注
關注
5010文章
13271瀏覽量
463072 -
循環程序
+關注
關注
0文章
6瀏覽量
7222
原文標題:西門子PLC--用于循環程序處理的組織塊(OB1)
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論