很多從日系PLC或者200PLC過來的人,很不習(xí)慣于S7 1200 或者TIA PORTAL 里面的一些專業(yè)術(shù)語,比如OB,DB,FC,FB等等,其實(shí)這些術(shù)語也包含于S7 300,400 ,1500等,所以今天講解的內(nèi)容,理論上也適應(yīng)于這些PLC。雖然我沒有玩過這些東西,但是TIA PORTAL適合于西門子全系列PLC,很多概念性的東西都是一致的。S7 1200的功能強(qiáng)大正式基于擁有各種類型的block和多種變量類型。
S7 1200 由以下幾類基本元素組成:
OB:組織塊,英文名Organization block。組織塊是CPU系統(tǒng)和用戶程序之間的接口,可以在CPU上電啟動(dòng)時(shí)調(diào)用,也可以循環(huán)調(diào)用,也可以在PLC發(fā)生錯(cuò)誤時(shí)候調(diào)用。
DB:數(shù)據(jù)塊,英文名Data block。從字面含義便知主要用于儲(chǔ)存用戶數(shù)據(jù),比如模擬量轉(zhuǎn)換數(shù)據(jù),相當(dāng)于200里面的V區(qū),歐姆龍PLC的W區(qū)。
FC:函數(shù),英文名Function。我們常常在FC函數(shù)中寫一些需要重復(fù)執(zhí)行的代碼,可以在程序不同地方調(diào)用,可以被OB調(diào)用,也可以被FC調(diào)用。使用FC可以簡化我們需要重復(fù)執(zhí)行的任務(wù),提高代碼的運(yùn)行效率。FC類似于200的子程序。
FB:FC+DB組合,意思是含有DB塊的FC函數(shù),與FC的區(qū)別是當(dāng)函數(shù)調(diào)用結(jié)束后,通過Static變量仍然可以保留數(shù)值,經(jīng)常用于調(diào)用間的數(shù)據(jù)共享。
OB組織塊
當(dāng)我們新建一個(gè)程序時(shí),系統(tǒng)會(huì)自動(dòng)建立一個(gè)Main[OB1]程序,該程序會(huì)在PLC的每個(gè)掃描周期被調(diào)用。Main程序和200里面的主程序,是一個(gè)同樣的概念。也類似于C里面的Main ,即為函數(shù)入口點(diǎn),我們可以在Main程序里面調(diào)用各種函數(shù)和塊。下面的圖是在程序中調(diào)用一個(gè)FC和FB,然后在FC中調(diào)用另外一個(gè)FC,形成嵌套調(diào)用。
注:
圖1 Main程序
圖2 Main調(diào)用結(jié)構(gòu)
圖1顯示了Main程序具體內(nèi)容,圖2顯示了Main程序的調(diào)用結(jié)構(gòu)。圖中很多元素的概念,我們暫時(shí)不需要了解,但是可以看到一些整體概念,Mian程序包含程序段1(NW1)和程序段2(NW2),在Main的調(diào)用結(jié)構(gòu)中包含了3個(gè)元素test、調(diào)用FB和調(diào)用FC。其實(shí)應(yīng)該是4個(gè),還有一個(gè)嵌套在<調(diào)用FC>中,點(diǎn)擊<調(diào)用FC>左側(cè)箭頭,出現(xiàn)如下圖所示
圖3 FC嵌套調(diào)用
圖4 OB分類
我們來分析上圖中的OB類型。OB塊主要用于程序循環(huán)、啟動(dòng)、延時(shí)中斷、循環(huán)中斷、硬件中斷、HSC中斷、診斷錯(cuò)誤和時(shí)間錯(cuò)誤八大事件。OB塊還有兩個(gè)屬性是編號(hào)和優(yōu)先級(jí),優(yōu)先級(jí)越高,中斷級(jí)別越高。在同樣的優(yōu)先級(jí)別,OB編號(hào)越小,越優(yōu)先執(zhí)行。從圖1中,我們看到Main程序的地址在OB1,是一個(gè)循環(huán)運(yùn)行程序,優(yōu)先級(jí)為1較低。時(shí)間錯(cuò)誤事件的優(yōu)先級(jí)最高,當(dāng)發(fā)生該事件時(shí),會(huì)暫停執(zhí)行Main程序,優(yōu)先執(zhí)行時(shí)間錯(cuò)誤事件OB塊。程序循環(huán)OB類塊的編號(hào)屬性為"1;>=123",意為我們可以創(chuàng)建多個(gè)類似OB塊。因?yàn)樾陆ǔ绦蚰J(rèn)OB編號(hào)為1,假設(shè)我們要?jiǎng)?chuàng)立該事件類型OB塊,那么默認(rèn)編號(hào)為123起,同時(shí)OB1的執(zhí)行要優(yōu)先于OB123。診斷錯(cuò)誤事件OB塊和時(shí)間錯(cuò)誤OB塊只有一個(gè)。
圖5 添加OB新塊
圖6 手動(dòng)選擇創(chuàng)建編號(hào)
圖5 添加OB新塊界面,我們可以看到,在紅色矩形框處,OB編號(hào)數(shù)值為123,我們選擇的創(chuàng)建方式為自動(dòng)。如果你想起用別的編號(hào),可以選擇手動(dòng)方式,同時(shí)可以選擇創(chuàng)建OB塊采用的語言。大家不妨自己試一試哦。
這里講解幾個(gè)常用的OB類型塊使用,其他類型OB塊使用,大家可以翻閱系統(tǒng)編程手冊(cè)。
程序循環(huán)事件OB塊(program cycle):該塊主要用于執(zhí)行循環(huán)運(yùn)行的程序,一般一個(gè)程序中創(chuàng)建一個(gè)便可以,就是默認(rèn)的Main程序(OB1),我們可以通過調(diào)用FC和FB來實(shí)現(xiàn)其他功能。系統(tǒng)CPU每個(gè)掃描周期都會(huì)執(zhí)行該類型OB塊。
啟動(dòng)事件OB塊(Startup):該塊主要用于初始化變量,當(dāng)PLC斷電重啟或者CPU從STOP切換為RUN時(shí)候執(zhí)行,往后不再運(yùn)行,也就是只運(yùn)行一次。我們新建一個(gè)DB1塊,添加兩個(gè),設(shè)置初始值,如下圖所示:
圖7 添加DB塊變量
然后新建一個(gè)Startup事件OB塊,寫如下程序(SCL語言):
圖8 Startup事件OB塊程序
我們可以看到該類型OB塊編號(hào)為100,如果再建一個(gè)該類型OB塊,編號(hào)必須>=123。然后我們下載程序,這里順便提一下下載選項(xiàng),如下圖所示:
圖9 下載選項(xiàng)
如果是初次下載,選擇"硬件和軟件(僅更改)"。如果不是初次,可以選擇你修改的部分,這樣會(huì)提高下載速度。
圖10 程序運(yùn)行結(jié)果
循環(huán)中斷事件OB塊(Cyclic interrupt):常常用于需要定時(shí)執(zhí)行的任務(wù),比如我們需要1秒鐘采樣50個(gè)模擬值,我們可以把循環(huán)時(shí)間設(shè)置為20毫秒。可能會(huì)有人問,為什么不采用普通定時(shí)器每隔20毫秒采樣一次呢?因?yàn)槠胀ǘ〞r(shí)器會(huì)受到CPU掃描周期的影響。在PID程序中,我們需要采用循環(huán)中斷事件來調(diào)整計(jì)算PID輸出。
圖11 添加循環(huán)中斷事件OB塊
在實(shí)驗(yàn)程序里,通過INC指令把DB1塊里面的變量,每隔1秒加1,運(yùn)行效果如下:
圖12 循環(huán)中斷事件OB
我們會(huì)看到在OB30這個(gè)程序塊里面,"Data".Var2的值會(huì)每隔1秒變化,如果把INC指令放在Main[OB1]里面會(huì)是什么情況呢?
診斷錯(cuò)誤事件OB塊(Diagnostic error interrupt):當(dāng)PLC發(fā)生故障時(shí),會(huì)觸發(fā)該事件;解除故障時(shí),也會(huì)觸發(fā)該事件,在該模塊里面,我們可以讀到故障信息。
圖13 添加診斷錯(cuò)誤事件OB塊
在實(shí)驗(yàn)程序里,我們需要捕捉模擬量輸入的溢出錯(cuò)誤,所以需要對(duì)模擬量輸入進(jìn)行如下配置:
圖14 添加溢出診斷功能
圖15 AI通道硬件標(biāo)識(shí)符
在配置硬件組態(tài)時(shí),TIA PORTAL 將為每個(gè)硬件對(duì)象(如模塊、接口或模塊端口,甚至是智能設(shè)備的傳輸區(qū))自動(dòng)分配硬件標(biāo)識(shí)符,相當(dāng)于我們的身份證號(hào)碼,獨(dú)一無二。
圖16 診斷程序
在診斷程序中,我們可以獲取錯(cuò)誤IO狀態(tài),硬件標(biāo)識(shí)符和通道,并添加了STP指令。當(dāng)錯(cuò)誤發(fā)生時(shí)候,使PLC處于STOP狀態(tài),若不添加STP指令,PLC仍以RUN狀態(tài)運(yùn)行。
圖17 診斷運(yùn)行結(jié)果
通過讀取IO_State,LADDR和Channel三個(gè)變量,IO狀態(tài)以二進(jìn)制格式顯示,第4位為1,所以會(huì)出現(xiàn)錯(cuò)誤。具體每個(gè)變量含義請(qǐng)看下圖:
圖18 診斷錯(cuò)誤中斷 OB 的啟動(dòng)信息
結(jié)束語
這期我們主要講解TIA PORTAL 編程中一個(gè)非常重要的元素OB塊,該內(nèi)容不僅適合于1200,同樣也適用于1500,300,400。由于1200本身的功能限制,1200的知識(shí)點(diǎn)還是與其他型號(hào)有所區(qū)別。與200相比,則是程序結(jié)構(gòu)分類更為精細(xì)。希望我通俗易懂的講解,能讓大家快速領(lǐng)悟到OB塊的強(qiáng)大之處并且能快速上手。在本期的講解中,若有不明之處,歡迎留言哦,同時(shí)歡迎指出錯(cuò)誤。留言問題,我會(huì)定期做統(tǒng)一解答。
-
plc
+關(guān)注
關(guān)注
5010文章
13271瀏覽量
463068 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211585 -
西門子
+關(guān)注
關(guān)注
94文章
3034瀏覽量
115782
原文標(biāo)題:一文教你如何使用西門子S71200 OB組織塊(圖文并茂)
文章出處:【微信號(hào):plcfans,微信公眾號(hào):PLC發(fā)燒友】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論