為了結構化程序設計,STEP 7將用戶程序分類歸并為不同的塊,根據程序要求,可選用組織塊(OB)、功能塊(FB)、或功能(FC)三種類型的邏輯塊,而數據塊(DB)或(DI)則用來存儲執行用戶程序時所需的數據。
三種編程方法:
(1)線性編程:將整個用戶程序寫在一個指令連續的塊中,處理器線性地或順序地掃描程序的每條指令。
(2)分部編程:將用戶程序分成相對獨立的指令塊、每個塊包含給定的部件組或作業組的控制邏輯。
(3)結構化編程:要求用戶程序提供一些通用的指令塊,以便控制一類相似或相同的部件,給通用指令提供的參數進一步說明各部件的控制差異。
一、數據塊及其數據結構
用戶程序運行所需的大量數據或變量存儲在數據塊中,數據塊也是實現各邏輯塊之間交換、傳遞和共享數據的重要途徑。對于CPU 314,用作數據塊的存儲器最多8KB,用戶定義的數據總量不能超過這個限制。對于數據塊必須遵循先定義后使用的原則。
1、定義數據塊
定義內容包括數據塊號及塊中的變量(包括:變量符號名,數據類型以及初始值等)。數據塊在使用前,必須作為用戶程序的一部分下載到CPU 中。
2、訪問數據塊
訪問時需要明確數據塊號和數據塊中的數據類型與位置。根據明確數據塊號的不同方法,可以用以多種方法訪問數據塊中的數據。
由于有兩個數據塊寄存器(DB和DI寄存器),所以,最多可以同時打開兩個數據塊。一個作為背景數據塊,數據塊的起始地址存儲在DI寄存 器中;另一個作為共享數據塊,數據塊的起始地址存儲在DB寄存器中。
打開背景數據塊,在調用FB時可以自動實現,由于調用FB時使用DI 寄存器,所以,一般不在FB程序中用OPN DI n指令打開數據塊。
3、背景數據塊和共享數據塊
任何FB、FC或OB均可讀寫存放在共享數據塊中的數據。背景數據塊是FB運行時的工作存儲區,它存放FB的部分運行變量。調用FB時, 必須指定一個相關的背景數據塊。
作為規則,只有FB塊才能訪問存放 在背景數據塊中的數據。一般情況下,每個FB都有一個對應的背景數 據塊,一個FB也可以使用不同的背景數據塊。如果幾個FB需要的背景數據完全相同,為節省存儲器,則可以定義成一個背景數據塊,供它們分別使用。
二、數據結構
1、用戶數據類型
STEP 7允許將基本或復式組合成“用戶”自已定義的數據類型,這種類型稱為用戶數據類型(UDT)。用戶數據類型必須首先單獨建立,并存放 在稱為UDT的特殊數據塊中。
建立用戶數據類型的目的,是為了將UDT作為一種數據類型使用,以方便定義多個結構相同的構造變量。
2、功能塊編程及調用
一個程序由許多部分(子程序)組成,STEP 7將這些部分稱為邏輯塊,并允許塊間相互調用。
功能塊由兩個主要部分組成:一部分是每個功能塊的變量聲明表,變量聲表聲明此塊的局部數據;另一部分是邏輯指令組成的程序,程序要用到變量聲明表中給出的局部數據。
當調用功能塊時,需要提供塊執行時要用到的數據或變量,也就是將外部數據傳遞給功能塊,這稱為參數傳遞。
3、變量聲明表(局部數據)
局部數據分為參數和局部變量兩大類,局部變量又包括靜態變量和臨時變量(暫態變量)兩種。參數是在調用塊和被調用塊間傳遞的數據。靜態變量和臨時變量是僅供邏輯塊本身使用的數據。
4、邏輯塊局部數據的數據類型
在變量聲明表中,要明確局部數據的數據類型,這樣操作系統才能給變量分配確定的存儲空間。局部數據可以是基本數據類型或是復式數據類型, 也可以是專門用于參數傳遞的所謂“參數類型”。
STEP 7對分配給塊局部數據(在變量聲明表中)的數據類型(基本、復式、參數)是有一定限制的。
STEP 7允許用物理地址(絕對地址)或符號地址或常數等形式作為實參給形參賦值,但對于不同的形參類型,STEP 7限制了賦值形式。
5、功能塊編程與調用舉例
對功能塊編程分兩步進行:第一步工作是定義局部變量(填寫局部變量表);第二步是編寫要執行的程序。寫功能塊程序時,可以兩種方式使用局部變量:
①使用變量名,此時變量名前綴“#”,以區別于在符號表中定義的符號地址,增量方式下,前綴 會自動產生;
②直接使用局部變量的地址,這種方式只對背景數據塊和L堆棧有效。
例一:二分頻器
二分頻器是一種具有一個輸入端和一個輸出端的功能單元,輸出頻率為輸入頻率的一半。
(1)FC1的變量聲明表
(2)FC1梯形圖程序
(3)OB1調用梯形圖程序
例二:時鐘脈沖發生器
使用定時器實現自由設定時鐘脈沖發生器功能脈沖占空系數1:1。
(1)FC1變量聲明表
(2)FC1梯形圖程序
(3)OB1調用梯形圖程序
三、可編程序控制器應用設計
PLC系統設計步驟:
審核編輯 :李倩
-
存儲器
+關注
關注
38文章
7649瀏覽量
167327 -
數據
+關注
關注
8文章
7255瀏覽量
91818 -
編程
+關注
關注
88文章
3689瀏覽量
95230
原文標題:西門子PLC|學會高效編程及定義程序結構
文章出處:【微信號:跟我學PLC,微信公眾號:跟我學PLC吧】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
FPGA的定義和基本結構

評論