tft每日頭條

 > 生活

 > 西門子1500plc面闆指示燈圖解

西門子1500plc面闆指示燈圖解

生活 更新时间:2024-10-19 04:38:59

很多從日系PLC或者200PLC過來的人,很不習慣于S7 1200 或者TIA PORTAL 裡面的一些專業術語,比如OB,DB,FC,FB等等,其實這些術語也包含于S7 300,400 ,1500等,所以今天講解的内容,理論上也适應于這些PLC。雖然我沒有玩過這些東西,但是TIA PORTAL适合于西門子全系列PLC,很多概念性的東西都是一緻的。S7 1200的功能強大正式基于擁有各種類型的block和多種變量類型。

S7 1200 由以下幾類基本元素組成:

OB:組織塊,英文名OrganizatIOn block。組織塊是CPU系統和用戶程序之間的接口,可以在CPU上電啟動時調用,也可以循環調用,也可以在PLC發生錯誤時候調用。

DB:數據塊,英文名Data block。從字面含義便知主要用于儲存用戶數據,比如模拟量轉換數據,相當于200裡面的V區,歐姆龍PLC的W區。

FC:函數,英文名Function。我們常常在FC函數中寫一些需要重複執行的代碼,可以在程序不同地方調用,可以被OB調用,也可以被FC調用。使用FC可以簡化我們需要重複執行的任務,提高代碼的運行效率。FC類似于200的子程序。

FB:FC DB組合,意思是含有DB塊的FC函數,與FC的區别是當函數調用結束後,通過Static變量仍然可以保留數值,經常用于調用間的數據共享。

OB組織塊

當我們新建一個程序時,系統會自動建立一個Main[OB1]程序,該程序會在PLC的每個掃描周期被調用。Main程序和200裡面的主程序,是一個同樣的概念。也類似于C裡面的Main ,即為函數入口點,我們可以在Main程序裡面調用各種函數和塊。下面的圖是在程序中調用一個FC和FB,然後在FC中調用另外一個FC,形成嵌套調用。

注:<Main>、<SumFC>、<調用FC>、<調用FB>是别名,方便我們記憶和理解,真正的地址在[.....]中,如OB1,FC2,FC1,FB1等等。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)1

圖1 Main程序

西門子1500plc面闆指示燈圖解(西門子PLC1200的)2

圖2 Main調用結構

圖1顯示了Main程序具體内容,圖2顯示了Main程序的調用結構。圖中很多元素的概念,我們暫時不需要了解,但是可以看到一些整體概念,Mian程序包含程序段1(NW1)和程序段2(NW2),在Main的調用結構中包含了3個元素test、調用FB和調用FC。其實應該是4個,還有一個嵌套在<調用FC>中,點擊<調用FC>左側箭頭,出現如下圖所示:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)3

圖3 FC嵌套調用

西門子1500plc面闆指示燈圖解(西門子PLC1200的)4

圖4 OB分類

我們來分析上圖中的OB類型。OB塊主要用于程序循環、啟動、延時中斷、循環中斷、硬件中斷、HSC中斷、診斷錯誤和時間錯誤八大事件。OB塊還有兩個屬性是編号和優先級,優先級越高,中斷級别越高。在同樣的優先級别,OB編号越小,越優先執行。從圖1中,我們看到Main程序的地址在OB1,是一個循環運行程序,優先級為1較低。時間錯誤事件的優先級最高,當發生該事件時,會暫停執行Main程序,優先執行時間錯誤事件OB塊。程序循環OB類塊的編号屬性為"1;>=123",意為我們可以創建多個類似OB塊。因為新建程序默認OB編号為1,假設我們要創立該事件類型OB塊,那麼默認編号為123起,同時OB1的執行要優先于OB123。診斷錯誤事件OB塊和時間錯誤OB塊隻有一個。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)5

圖5 添加OB新塊

西門子1500plc面闆指示燈圖解(西門子PLC1200的)6

圖6 手動選擇創建編号

圖5 添加OB新塊界面,我們可以看到,在紅色矩形框處,OB編号數值為123,我們選擇的創建方式為自動。如果你想起用别的編号,可以選擇手動方式,同時可以選擇創建OB塊采用的語言。大家不妨自己試一試哦。

這裡講解幾個常用的OB類型塊使用,其他類型OB塊使用,大家可以翻閱系統編程手冊。

程序循環事件OB塊(program cycle):該塊主要用于執行循環運行的程序,一般一個程序中創建一個便可以,就是默認的Main程序(OB1),我們可以通過調用FC和FB來實現其他功能。系統CPU每個掃描周期都會執行該類型OB塊。

啟動事件OB塊(Startup):該塊主要用于初始化變量,當PLC斷電重啟或者CPU從STOP切換為RUN時候執行,往後不再運行,也就是隻運行一次。我們新建一個DB1塊,添加兩個,設置初始值,如下圖所示:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)7

圖7 添加DB塊變量

然後新建一個Startup事件OB塊,寫如下程序(SCL語言):

西門子1500plc面闆指示燈圖解(西門子PLC1200的)8

圖8 Startup事件OB塊程序

我們可以看到該類型OB塊編号為100,如果再建一個該類型OB塊,編号必須>=123。然後我們下載程序,這裡順便提一下下載選項,如下圖所示:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)9

圖9 下載選項

如果是初次下載,選擇"硬件和軟件(僅更改)"。如果不是初次,可以選擇你修改的部分,這樣會提高下載速度。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)10

圖10 程序運行結果

循環中斷事件OB塊(Cyclic interrupt):常常用于需要定時執行的任務,比如我們需要1秒鐘采樣50個模拟值,我們可以把循環時間設置為20毫秒。可能會有人問,為什麼不采用普通定時器每隔20毫秒采樣一次呢?因為普通定時器會受到CPU掃描周期的影響。在PID程序中,我們需要采用循環中斷事件來調整計算PID輸出。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)11

圖11 添加循環中斷事件OB塊

在實驗程序裡,通過INC指令把DB1塊裡面的變量,每隔1秒加1,運行效果如下:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)12

圖12 循環中斷事件OB

我們會看到在OB30這個程序塊裡面,"Data".Var2的值會每隔1秒變化,如果把INC指令放在Main[OB1]裡面會是什麼情況呢?

診斷錯誤事件OB塊(Diagnostic error interrupt):當PLC發生故障時,會觸發該事件;解除故障時,也會觸發該事件,在該模塊裡面,我們可以讀到故障信息。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)13

圖13 添加診斷錯誤事件OB塊

在實驗程序裡,我們需要捕捉模拟量輸入的溢出錯誤,所以需要對模拟量輸入進行如下配置:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)14

圖14 添加溢出診斷功能

西門子1500plc面闆指示燈圖解(西門子PLC1200的)15

圖15 AI通道硬件标識符

在配置硬件組态時,TIA PORTAL 将為每個硬件對象(如模塊、接口或模塊端口,甚至是智能設備的傳輸區)自動分配硬件标識符,相當于我們的身份證号碼,獨一無二。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)16

圖16 診斷程序

在診斷程序中,我們可以獲取錯誤IO狀态,硬件标識符和通道,并添加了STP指令。當錯誤發生時候,使PLC處于STOP狀态,若不添加STP指令,PLC仍以RUN狀态運行。

西門子1500plc面闆指示燈圖解(西門子PLC1200的)17

圖17 診斷運行結果

通過讀取IO_State,LADDR和Channel三個變量,IO狀态以二進制格式顯示,第4位為1,所以會出現錯誤。具體每個變量含義請看下圖:

西門子1500plc面闆指示燈圖解(西門子PLC1200的)18

圖18 診斷錯誤中斷 OB 的啟動信息

結束語

這期我們主要講解TIA PORTAL 編程中一個非常重要的元素OB塊,該内容不僅适合于1200,同樣也适用于1500,300,400。由于1200本身的功能限制,1200的知識點還是與其他型号有所區别。與200相比,則是程序結構分類更為精細。希望我通俗易懂的講解,能讓大家快速領悟到OB塊的強大之處并且能快速上手。在本期的講解中,若有不明之處,歡迎留言哦,同時歡迎指出錯誤。留言問題,我會定期做統一解答。


,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved