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