調(diào)用塊前面加個(gè)條件行么?
劉玉蓉
發(fā)布于2014-11-03 17:17
100
0
標(biāo)簽:
假如在OB1里調(diào)用一個(gè)功能FC1,功能塊FB1,我在用call的時(shí)候在前面加了一個(gè)常開觸點(diǎn),也就是PLC的輸入I0.0,I0.1作為調(diào)用條件,這樣設(shè)計(jì)可以控制FC1、FB1的調(diào)用,請問這樣做有什么壞處?別人說這樣調(diào)用當(dāng)條件滿足時(shí)會運(yùn)行功能及功能塊里的內(nèi)容,如果不滿足了就會停止,當(dāng)再次滿足這個(gè)條件時(shí),程序會接著原來的狀態(tài)運(yùn)行,比如上次定時(shí)器定時(shí)的值會記憶,然后再次滿足條件時(shí)這個(gè)定時(shí)器會接著上次的值繼續(xù)運(yùn)行?這樣操作是不是很危險(xiǎn)?
佳答案
首先說明一點(diǎn):你這樣做是可行的,不過不建議這樣做。一般,我們把一個(gè)大的系統(tǒng),分成若干個(gè)耦合度小的功能模塊(例如,自動倉庫系統(tǒng),可以分為調(diào)度模塊,查詢模塊,入庫模塊,出庫模塊),每一個(gè)模塊是一個(gè)fb,由各個(gè)fb來根據(jù)條件調(diào)用哪個(gè)具體的功能模塊(比如定位動作功能、裝載卸載貨物功能、出入倉功能等等),功能模塊有具體的fc、fb組成。這樣可以分模塊,分功能的來設(shè)計(jì)、修改,互相之間依賴少,容易實(shí)現(xiàn),邏輯清楚,方便理解,今后系統(tǒng)的增加、變更也會容易的多。
其次:“比如上次定時(shí)器定時(shí)的值會記憶”這個(gè)說法是錯誤的。我認(rèn)為定時(shí)器和字符串是2個(gè)難點(diǎn),你對定時(shí)器的理解不完全。定時(shí)器,可以理解為一個(gè)單獨(dú)的設(shè)備。也許你會有疑問,你可以這樣測試一下,在模擬器中,給一個(gè)定時(shí)器賦值,你會發(fā)現(xiàn)定時(shí)器里面就開始運(yùn)行。調(diào)用fc中,在fc中使用定時(shí)器定義一個(gè)比較大的s5t,斷開fc的運(yùn)行條件,你會發(fā)現(xiàn)定時(shí)器還在運(yùn)行。定時(shí)器與你調(diào)用他的條件無關(guān),只要你啟動了,他就會“一如既往”的運(yùn)行下去,就好比打印機(jī),我們用word打印了,即使關(guān)掉word,打印機(jī)也會繼續(xù)打印,知道完成。所以,你在把定時(shí)器使用在fc中,一定要注意這個(gè)特性,另外還需要注意的一點(diǎn)是:用于啟動定時(shí)器的變量,一定要放在in_out中,因?yàn)槎〞r(shí)器需要一個(gè)上升沿判斷。還有后一點(diǎn),對于時(shí)間精度要求特別高的工藝要求,連續(xù)使用定時(shí)器要考慮誤差——定時(shí)器是由上升沿判斷,會有一個(gè)周期的誤差。