《西門子PLC FC和FB用法講解》由會員分享,可在線閱讀,更多相關(guān)《西門子PLC FC和FB用法講解(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、本文格式為Word版,下載可任意編輯
西門子PLC FC和FB用法講解
許多新手都會問,F(xiàn)C和FB究竟什么區(qū)分呢?該怎么使用呢?其實很簡潔啦,認真閱讀下面內(nèi)容就能理解哦!
FC塊講解
首先,我們從兩者的名字就可以進行區(qū)分,可以用一個公式即FB=FC+DB來表示,F(xiàn)B是具有DB背景塊的特別FC,也就是說FB具有FC的功能,同時擁有一個DB塊。FC全稱是Function函數(shù)。
注:DB塊 全稱DataBlock 數(shù)據(jù)存儲區(qū)域,類似數(shù)據(jù)庫中關(guān)系表結(jié)構(gòu)。
那首先什么函數(shù)呢?
函數(shù)
函數(shù) f(x)就像機器或黑箱,賜予輸入值x便產(chǎn)生唯一輸出值f (x)。x是自變量,f(x)是因變量。舉一
2、個我們常見的公式,求圓的面積,s=π*r*r。輸入r值,便得到圓的面積s,這就是最簡潔的函數(shù),r是自變量,s是因變量。
圖一 變量聲明
圖2 FC函數(shù)內(nèi)容
Input:輸入型參數(shù),供應(yīng)外部輸入接口。類似于函數(shù)f(x)中的x,是一個自變量。Input類型參數(shù),是外部變量的拷貝副本,修改其值,外部變量無變化。假設(shè)在程序中修改R的值,從圖2編譯信息發(fā)覺,傳遞的并不是實際參數(shù),所以修改外部接口變量無變化。
Output:輸出型參數(shù),供應(yīng)外部輸出接口。該類型參數(shù)由于直接引用外部變量地址,可以修改其值。
InOut:輸入輸出型參數(shù),既做輸入又做輸出。同Output類型一樣,可
3、以修改外部接口變量的值。在適當(dāng)?shù)胤?,使用InOut類型變量,可以削減占用plc的變量聲明空間。
Temp:局部變量,在函數(shù)內(nèi)部使用,不供應(yīng)外部的接口。我們經(jīng)常把temp變量用于數(shù)據(jù)轉(zhuǎn)換的中間值,或者用于循環(huán)變量,比如用于For 或者While循環(huán)。由于Temp是局部變量,它的值是隨機,使用必需初始化,對其賦值。
Constant:常量,在函數(shù)內(nèi)部使用,意思是恒定不變的變量,只能在聲明處修改。比如我們這里的π圓周率是固定不變的,可能調(diào)用的地方有幾十處,若程序中直接引用3.1415,后期修改,需要把每個地方都修改過去,很麻煩。在聲明處修改π值,全部函數(shù)中的π變量都會修改。假設(shè)我們在程序中修改π
4、常量,從圖2中編譯信息可以發(fā)覺,常量不能在程序中修改。
Return:函數(shù)返回值,存儲計算結(jié)果。默認為無返回值,所以聲明為void。在我們的數(shù)學(xué)學(xué)問里面函數(shù)應(yīng)當(dāng)是要有返回值的,但是在TIA PORTAL可以沒有返回值,我們把這種無返回類型的函數(shù),稱為procedure(過程)。我們這里設(shè)置為Real類型,返回圓的面積。有讀者可能有疑問,return變量和Output類型都可以用來存儲計算結(jié)果,兩者的區(qū)分是什么呢?其中有一個顯著的區(qū)分是Output類型輸出參數(shù)可以聲明若干個,但是return類型的返回變量,只能聲明一個,且變量名字無法修改。其他區(qū)分,等講解SCL的時候,再做解答。
在main
5、[OB1]程序塊里面拖動FC1函數(shù),得到如下運行結(jié)果:
圖3 程序運行結(jié)果
圖4 DB塊值監(jiān)控
程序解讀:
由于PLC程序是從左到右執(zhí)行,所以"Func"函數(shù)塊的左側(cè)是輸入接口,右側(cè)是輸出接口。觀看函數(shù)塊的內(nèi)部變量名字,發(fā)覺和函數(shù)中的聲明一一對應(yīng),除了Ret_Val變量。Ret_Val是Return接口Func變量的別名,由于每個函數(shù)的名字都不一樣,所以統(tǒng)一用Ret_Val作為函數(shù)返回值變量的名稱。
程序一是對模擬量值進行轉(zhuǎn)換,采樣的辨別率下限是0,上限為27648,采樣的數(shù)字量值15000,通過調(diào)用指定函數(shù)把轉(zhuǎn)換出來的值放在變量"Data".電壓值,得到轉(zhuǎn)換值為
6、0.5425347.
把變量"Data".電壓值放在FC函數(shù)的Inout接口中,利用PLC的掃描周期,通過DataDB塊可以看到最終值5.425347。若不放在Inout,把其放在Input接口,我們必需在OutPut接口再聲明一個變量,用于存儲最終的轉(zhuǎn)換值。這樣聲明就可以節(jié)約PLC的內(nèi)存空間了,同樣使程序看起來更簡潔。
FC函數(shù)塊的代碼內(nèi)容比較簡潔,請自行閱讀理解,若有問題,可以留言。
FB塊講解
要了解FB和FC的區(qū)分,讓我們剖析一下這兩個模塊的變量聲明結(jié)構(gòu):
圖5 FB塊變量聲明
圖6 FB占用DB背景塊內(nèi)部變量
通過FB和FC的變量聲明,我們可以看
7、到三個明顯的區(qū)分:
1、FB塊增加了Static靜態(tài)區(qū)聲明
2、FB增加了保持性和可訪問性選擇
上述兩個區(qū)分正好說明白FB=FC+DB公式的成立,由于這兩個特性是DB塊才有的特性哦。我們在一般DB塊里面聲明的變量都在Static區(qū)聲明,不信的話,你可以打開來看看。我們可以通過訪問FB擁有的背景塊來訪問FB中變量的值。
當(dāng)FC調(diào)用結(jié)束后,各種接口中聲明的變量值無法保存,F(xiàn)B調(diào)用結(jié)束后,仍舊可以保留變量的值,你可以通過FB的背景DB塊進行訪問。FB的每次調(diào)用都會自動生成一個DB塊,想想我們編程當(dāng)中,進行哪類操作也會有類似行為?其實就是我們用的特別頻繁的定時器操作,每一次拖動TON定時器都會
8、自動建立一個DB塊。通過系統(tǒng)資源查看定時器擁有的DB塊,看看和圖6是否類似。
圖7 定時器DB背景塊結(jié)構(gòu)
由于定時器擁有背景塊,當(dāng)我們停止計時后,PLC無論經(jīng)過多少個掃描周期,還是可以讀取停止計時時刻的值,這就是擁有DB背景塊的好處,F(xiàn)B塊與此類似。
3、FB塊沒有Return接口
由于可以通過Output接口存儲返回值,所以沒有Return接口影響不大。
圖8 FB程序增加部分
由于程序類似,F(xiàn)B程序只列出增加部分。我們可以看到該程序,每次調(diào)用都會把最大電壓值放在MaxVol變量中,同時添加CheckTime變量,用于記錄轉(zhuǎn)變電壓的時間。在hmi程序上面,我們
9、可以很便利讀取這兩個變量,來實時獵取當(dāng)前的最大電壓值和修改時間,是不是很便利?
讀者可能會有疑問,假如我自己寫一個FC函數(shù),然后外部添加一個DB塊,不是一樣可以實現(xiàn)此功能嗎?看上去似乎講的很有道理呀,不過這個想法是錯誤的。
假如你在PLC程序中只調(diào)用FB塊一次,那么可以采納此方法。假如你在PLC程序里面,既要比較電壓,還要比較如電流、溫度和濕度等,假如用同一個FC怎么實現(xiàn)呢?用FB可以很好的解決此問題,不明白的,可要認真想想!
今日關(guān)于FC和FB的區(qū)分已經(jīng)講完,假如認真閱讀,應(yīng)當(dāng)能搞清晰這兩者的區(qū)分。若還有問題,歡迎留言,同時歡迎指出本文的錯誤。
第 5 頁 共 5 頁