需要連續執行的程序應放在主程序OB1(程序循環組織塊)中,CPU在RUN模式下循環執行OB1,在OB1中調用FC和FB塊。若不在OB1中調用FC和FB塊,即使你創建了FC和FB塊,CPU也不會掃描FC和FB塊中的程序。
今天主要和大家結合實例分享:在組織塊OB1中多次調用FC塊
因為我們在寫FC塊的程序時,首先需要在「接口參數編輯區」創建局部變量,那麼某一變量是聲明為「INPUT"還是"OUTPUT"還是」INOUT「怎麼區分呢?先來看一個小案例:
"#o_run"變量聲明為輸出(OUTPUT)時,只能對該變量進行寫訪問
在程序掃描過程中,若僅讀取該變量的值則聲明為「INPUT",僅給該變量寫值則聲明為」OUTPUT",即給該變量寫值又讀取該變量的值則聲明為「INOUT"
程序中以「#」號開頭的變量為接口區定義的局部變量。
舉例說明:在FC塊中使用「掃描操作數的信號上升沿」指令時,我們不知道該指令的兩個操作數分別聲明為啥,怎麼辦?按F1看幫助唄,一看一目了然。
同樣的,如果在FC塊裡面使用了全局變量,那麼該FC塊不能多次調用。建議大家在FC塊裡還是全部使用局部變量,這樣方便多次調用。
S7-1200程序FC塊裡面能使用定時器嗎?答案是肯定的。但是注意,需要做一些操作:
當我們在FC塊裡往程序段裡拉一個TON定時器時,系統會自動為該定時器生成一個背景DB塊,如下圖中TON定時器的背景數據塊DB8:
但是我們不能使用該數據塊,我們需要把自己生成的背景數據塊刪掉,換成局部變量「#ton":
定時器、計數器用到子程序裡面,多次調用的話,一定要做上述處理。
做一個電機控制功能的FC塊,並在OB1中調用兩次,下載並監控能否正常控制。
在FC塊「接口參數編輯區」中聲明這些局部變量;其中有一個聲明為常數的變量「#防抖時間」數據類型為TIME,指定值為「t#3s」。
記得勾選「啟用時鐘存儲器字節MB0」
在FC塊中寫出程序如下:
在組織塊OB1中調用2次FC塊:
下載到仿真PLC中並監控:
調用的兩個FC塊互相不影響,而且博途比之前S7-300用的老款STEP7有一個優點:我們調用了兩次FC塊,但我們可以很容易的監控某一FC塊的運行情況:
通過打開並監視我們可以知道:各自是監視的各自的塊,第一次調用的FC塊和第二次調用的FC塊運行情況是不同的。
大家好,我是小楊,今天的內容就和大家分享到這裡,苦心整理,望不熟悉的小夥伴收藏聯繫!
最後我想在評論區和大家分享一篇我剛看到的文章「火神山醫院是怎樣在10天內建成的」,看完之後我知道了「火神山醫院」的快速落成來源於千千萬萬對社會有用的人的不懈努力和傾心付出。感慨道:學好科學知識,做一個對社會有用的人!