西門子PLC用戶程序結(jié)構(gòu)的生成與使用
發(fā)布于2022-11-17 10:07
60
2
標(biāo)簽:西門子PLC
(1)結(jié)構(gòu)的生成
可以在數(shù)據(jù)塊中或邏輯塊的變量聲明表中定義結(jié)構(gòu),下面介紹在數(shù)據(jù)塊中定義的方法。在圖4-7的數(shù)據(jù)塊DB4中,同時(shí)定義了一個(gè)數(shù)組和一個(gè)結(jié)構(gòu)。名為STACK的結(jié)構(gòu)由3個(gè)不同數(shù)據(jù)類型的變量組成。
選中圖4-7“ARRAY”下面的“INT”,按回車鍵,在該單元的下面生成一個(gè)空白行。在“名稱”列輸入結(jié)構(gòu)的名稱“STACK”,用鼠標(biāo)右鍵點(diǎn)擊空白行的“類型”列單元,執(zhí)行彈出的快捷菜單中的“復(fù)雜類型”→“STRUCT”(也可以直接輸入STRUCT),連續(xù)按回車鍵后,在該行的下面出現(xiàn)新的行,新的行下面一行增加的“END_STRUCT”(結(jié)束結(jié)構(gòu))是自動(dòng)生成的,表示該結(jié)構(gòu)的結(jié)束。在新的行輸入結(jié)構(gòu)的第一個(gè)元素“AMOUNT”和它的數(shù)據(jù)類型。如果沒(méi)有輸入該元素的初值,將會(huì)自動(dòng)生成默認(rèn)的初值0。用同樣的方法生成結(jié)構(gòu)的其他元素。選中結(jié)構(gòu)的“END_STRUCT”單元后按回車鍵,在下面出現(xiàn)的新的行中定義一個(gè)名為Fault、長(zhǎng)度為20個(gè)字符的字符串。
圖4-7的STACK所在行的地址列中的 12.0表示結(jié)構(gòu)在數(shù)據(jù)塊中的起始地址為DBB12。結(jié)構(gòu)各元素的地址列中的“ 2.0”等表示結(jié)構(gòu)元素在結(jié)構(gòu)中的相對(duì)起始地址,“=8.0”表示該結(jié)構(gòu)一共占用8B。最后一行地址列中的“=42.0”表示DB4中的數(shù)組、結(jié)構(gòu)和字符串一共占用42B??梢詾榻Y(jié)構(gòu)中各個(gè)元素設(shè)置初始值和加上注釋。在圖4-7中輸入實(shí)數(shù)的初始值102.4后,被自動(dòng)轉(zhuǎn)換為1.024000e 002(1.024×102)。
用鼠標(biāo)點(diǎn)擊結(jié)構(gòu)的第一行或最后一行(即有關(guān)鍵字STRUCT或END_STRUCT的行)的地址列中的單元,將選中整個(gè)結(jié)構(gòu),結(jié)構(gòu)各行的背景變?yōu)楹谏?,字變?yōu)榘咨?稱為反色)。若要選中結(jié)構(gòu)中的某一參數(shù),用鼠標(biāo)點(diǎn)擊該行的地址單元,僅該行反色。
(2)訪問(wèn)結(jié)構(gòu)中的元素
可以用結(jié)構(gòu)中的元素的絕對(duì)地址或符號(hào)地址來(lái)訪問(wèn)結(jié)構(gòu)中的元素。訪問(wèn)結(jié)構(gòu)中的數(shù)據(jù)時(shí),需要指出結(jié)構(gòu)所在的數(shù)據(jù)塊的名稱、結(jié)構(gòu)的名稱,以及結(jié)構(gòu)元素的名稱,數(shù)據(jù)塊TANK 內(nèi)結(jié)構(gòu)STACK的元素AMOUNT應(yīng)表示為“TANK”.STACK.AMOUNT。因?yàn)锳MOUNT從數(shù)據(jù)塊TANK(DB4)的第12號(hào)字節(jié)開(kāi)始存放,它的絕對(duì)地址為DB4.DBW12。
(3)用結(jié)構(gòu)傳遞參數(shù)
如果在塊的變量聲明表中,聲明形參的類型為數(shù)組或結(jié)構(gòu),可以將整個(gè)數(shù)組或結(jié)構(gòu)而不是它們的某個(gè)元素作為參數(shù)來(lái)傳遞。調(diào)用塊時(shí)也可以將某個(gè)數(shù)組或結(jié)構(gòu)的元素賦值給同一類型的參數(shù)。
將復(fù)雜數(shù)據(jù)類型的變量作為參數(shù)傳遞時(shí),作為形參和實(shí)參的兩個(gè)變量必須具有相同的數(shù)據(jù)結(jié)構(gòu),例如兩個(gè)結(jié)構(gòu)應(yīng)具有相同數(shù)據(jù)類型的結(jié)構(gòu)元素和相同的排列順序。
用戶定義數(shù)據(jù)類型的生成與使用
選中SIMATIC管理器左邊窗口中的“塊”,執(zhí)行菜單命令“插人”→“S7塊”→“數(shù)據(jù)類型”,生成新的UDT。在生成UDT的元素時(shí),可以設(shè)置它的初始值和加上注釋。從表面上看,圖4-9的UDT1與圖4-7中定義的結(jié)構(gòu)STACK完全相同,但是它們有本質(zhì)的區(qū)別。
結(jié)構(gòu)(STRUCT)是在數(shù)據(jù)塊的聲明視圖方式或在邏輯塊的變量聲明表中與別的變量一起定義的,但是UDT必須在特殊的數(shù)據(jù)塊內(nèi)單獨(dú)定義,并單獨(dú)存放在一個(gè)數(shù)據(jù)塊內(nèi)。生成UDT后,在定義變量時(shí)將它作為一個(gè)數(shù)據(jù)類型來(lái)多次使用,例如在變量聲明表中定義一個(gè)變量,其數(shù)據(jù)類型為UDT1,名稱為ProData(見(jiàn)圖4-10)。由該例可以看出,UDT在數(shù)據(jù)塊中的使用方法與其他數(shù)據(jù)類型(例如INT)是一樣的。

UDT可以在邏輯塊(FC、FB和OB)的變量聲明表中作為基本數(shù)據(jù)類型或復(fù)雜數(shù)據(jù)類型來(lái)使用,或者在數(shù)據(jù)塊(DB)中作為變量的數(shù)據(jù)類型來(lái)使用。
要訪問(wèn)數(shù)據(jù)塊Heater中數(shù)據(jù)類型為UDT1的結(jié)構(gòu)ProData中的元素AMOUNT,其符號(hào)地址為“Heater”.ProData. AMOUNT。
可以將具有用戶定義數(shù)據(jù)類型的變量作為參數(shù)來(lái)傳遞。如果在塊的變量聲明表中,聲明形參的數(shù)據(jù)類型為UDT1,在調(diào)用塊時(shí)應(yīng)使用具有相同數(shù)據(jù)類型的變量來(lái)傳遞參數(shù)。在調(diào)用塊時(shí)也可以將用戶定義數(shù)據(jù)類型中的元素賦值給同一類型的形參。
用戶定義數(shù)據(jù)類型也可以用來(lái)作為生成具有相同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)塊的摸板。