S7-1200程序結構之在組織塊OB1中多次調用FC塊(結合實例講解)!

2020-12-23 工控小楊分享小知識

需要連續執行的程序應放在主程序OB1(程序循環組織塊)中,CPU在RUN模式下循環執行OB1,在OB1中調用FC和FB塊。若不在OB1中調用FC和FB塊,即使你創建了FC和FB塊,CPU也不會掃描FC和FB塊中的程序。

今天主要和大家結合實例分享:在組織塊OB1中多次調用FC塊

因為我們在寫FC塊的程序時,首先需要在「接口參數編輯區」創建局部變量,那麼某一變量是聲明為「INPUT"還是"OUTPUT"還是」INOUT「怎麼區分呢?先來看一個小案例:

變量o_run聲明為OUTPUT
變量o_run報「黃」
編譯報錯

"#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天內建成的」,看完之後我知道了「火神山醫院」的快速落成來源於千千萬萬對社會有用的人的不懈努力和傾心付出。感慨道:學好科學知識,做一個對社會有用的人!

相關焦點

  • 西門子S7 1200中OB塊講解
    OB組織塊當我們新建一個程序時,系統會自動建立一個Main[OB1]程序,該程序會在PLC的每個掃描周期被調用。Main程序和200裡面的主程序,是一個同樣的概念。也類似於C裡面的Main ,即為函數入口點,我們可以在Main程序裡面調用各種函數和塊。
  • 西門子PLC——用於循環程序處理的組織塊(OB1)
    本文轉載自【微信公眾號:機器人及PLC自動化應用,ID:ZS18943047820】,經微信公眾號授權轉載,如需轉載與原文作者聯繫在可編程控制器上循環程序處理是程序執行的「普通」類型。作業系統循環調用OB1啟動用戶程序的循環執行。
  • 新手教程:如何用S7-1200做TCP通訊?
    本人最近做了一個項目用S7-1200 控制刻碼機刻碼,刻碼機支持TCP/IP協議並提供了控制指令! 因為我以前用VB做過TCP/IP通訊軟體所以有一定的了解,首先需要IP位址、埠號、設置服務端和客戶端,有了這些就可以建立連接了。建立連接後就只需要調用發送和接受事件就可以了!
  • 博途TIA功能,如何創建一個S7-1200的項目及硬體組態?
    今天給大家講解一下博途軟體的基本使用,我們從最開始的開始講起,如何去創建一個S7-1200的項目,這其中就包括了幾個步驟,包括:創建項目及硬體組態、添加程序塊、建立變量表、程序的編寫。比如我們用的PLC是CPU1214C,要創建一個S7-1200項目,我們就選擇控制器,在裡面找到CPU1214C。注意:這裡有多個訂貨號,要選擇跟實際硬體訂貨號相同的CPU型號才行,如果不同的話,下載後CPU會報錯的哦。
  • 在程序中如何正確地創建和銷毀軟體應用系統中文件IO流對象實例
    (3)輸入流和輸出流在Java中的流是有方向的,其中的輸入流代表為數據的提供者,可以從輸入流中讀取數據——因此,如果在軟體應用系統程序中需要讀取目標數據,則需要在程序中創建出輸入流對象實例;而輸出流代表為數據的接收者,可以將數據寫入到輸出流中——因此,如果在軟體應用系統中需要將程序中所產生的數據保存到目標媒介中,則需要在程序中創建出輸出流對象實例
  • 程序演示:C語言第一個簡單實例
    int main(void) /*主函數*/ C程序規定一個程序中有一個或多個函數,他們是C程序的基本模塊。但必須有且只有一個main函數。因為C程序的執行將從main函數開始,到main函數結束而停止。
  • 課程設計指導——如何應用Java反射技術靈活地創建程序類對象實例
    下圖所示的程序代碼實例是示例項目銀行帳戶信息管理系統中的ClassNameConfig類的完整代碼示例截圖,其中利用static語句塊完成對屬性文件的一次性加載以提高效率——產生出單例設計模式的編程應用效果,然後再提供getProperty方法獲得指定屬性項目的內容。
  • 西門子S7-1200在線修改程序下載(圖文)
    在滿足以上硬體和軟體的條件下,S7-1200 可以實現在線修改並且下載。2.1.2檢查在線CPU的固件版本在項目中打開「在線和診斷」,顯示在線和診斷窗口,如下圖所示:圖2-8:修改程序前的程序及CPU的狀態修改程序後,程序及CPU狀態如下圖所示:
  • 實例講解如何使用GRAPH!
    西門子系列PLC包括300、400、1500系列(除S7-1200外)均支持GRAPH指令,而S7-200系列雖然沒有GRAPH語言,但是卻擁有GRAPH的縮減版,那就是步進命令,有過實際編程經驗的朋友都知道,在一些特定的場合需要使用循環反覆的步進指令,這個指令可以自己編寫,也可以直接使用PLC內部的步進指令。
  • 「原創」JVM系列02|Java虛擬機結構
    基本結構圖片來自:https://blog.csdn.net/aijiudu/article/details/72991993Java 虛擬機結構包括:類加載子系統、運行時數據區、垃圾回收系統、執行引擎。
  • 第二篇:C語言中程序設計的三大結構
    無論使用何種程式語言,都含有程序設計的三大經典結構。即:順序結構、條件結構和循環結構,C語言也是如此。該結構簡單,本文不重點講解。條件結構,也叫選擇結構,就像走到了一個岔路口,或超市裡購買不同品牌的同類商品。需要根據條件判斷選擇執行那一部分或那些代碼。
  • 西門子1200PLC通過EPOS方式控制V90伺服
    西門子1200PLC EPOS方式運動控制到底是什麼?其實是1200PLC通過PROFINET通信實現西門子V90 PN伺服驅動器的基本定位控制。從實際應用出發來說,以清晰易懂的運動控制功能描述、典型的應用實例,詳細、全面地進行介紹。課程中有大量的截圖和實際操作案列,非常適合現場工程技術人員自學。
  • 西門子PLC-功能塊(FB)
    傳遞給FB的參數和靜態變量都保存在背景數據塊中。臨時變量存在本地數據堆棧中。 當FB執行結束時,存在背景DB中的數據不會丟失。可是,當FB的執行結束時,存在本地數據堆棧中的數據將丟失。應用程式當FB被調用時,FB中所含的程序總被執行。
  • 如何應用GOF設計模式中的創建型模式實現鬆耦合地創建對象實例
    工廠模式主要是為創建對象提供一種接口,從而封裝了創建對象的細節過程,使得對象的使用方根本無需關心這個目標對象是如何產生和創建的——也即能夠達到將創建對象實例的職責與使用該對象實例的職責相互分開的目的。如下示例圖中的程序代碼片段為體現簡單工廠設計模式編程特性的程序代碼示例。
  • 數控車床編程:子程序
    一、子程序的概念。在程序中,當某一部分程序反覆出現時,可以把這類程序作為一個獨立程序,並事先存儲起來,使程序簡化。這個獨立程序稱為子程序。格式:M98 P □□□□××××;式中:□□□□ ——表示重複調用子程序的次數,若省略則調用次數為1 次。×××× ——表示要調用的子程序號。
  • 直觀講解一下 RPC 調用和 HTTP 調用的區別!
    OSI網絡七層模型在說RPC和HTTP的區別之前,我覺的有必要了解一下OSI的七層網絡結構模型(雖然實際應用中基本上都是五層),它可以分為以下幾層:(從上到下)第一層:應用層。定義了用於在網絡中進行通信和傳輸數據的接口;第二層:表示層。定義不同的系統中數據的傳輸格式,編碼和解碼規範等;第三層:會話層。管理用戶的會話,控制用戶間邏輯連接的建立和中斷;第四層:傳輸層。
  • 在word和excell兩個應用程式間的激活操作
    而且,從實際的表現看,AppActivate有點給人不靠譜的感覺,有時工作,有時不工作(會提示:引發錯誤5,無效的過程調用)。所以,我給大家講解下面的第二種方案就是調用API函數的方案。我們可以使用幾個簡單的Windows API函數完成同樣的任務。API是直接調用組成Windows的DLL庫文件的過程。可以使用API函數完成VBA本身無法執行的操作。