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