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