2.6 IL的編程實例本例是一個用指令表程序定義功能的實例,功能描述的計算平面上兩點的移動距離。 兩點X,Y的坐標(biāo)如下圖所示。 圖二用指令表編功能實例用結(jié)構(gòu)化文本描述的兩點間距離的計算公式為:Travel_distance:=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(YI-Y2)))。TMax是X,Y兩點見的最大距離,當(dāng)計算值小于TMax時,說明計算正確;當(dāng)計算值大于TMax時,說明X,Y兩點間的距離超出了最大距離,在這種情況下,功能是沒有輸出的。用指令表編寫的該功能的函數(shù)TRAVEL()如下: FUNCTION TRAVEL : REAL VAR_INPUT X1,X2,Y1,Y2 : REAL (*點X,Y坐標(biāo)*) TMax : REAL (*最大移動距離*) END_VAR VAR Temp : REAL; (*中間值*) END_VAR LD Y1 SUB Y2 (*計算Y2-Y1*) ST Temp (*將Y2-Y1值存入Temp *) MUL Temp (*計算(Y2-Y1)的平方*) ADD( X1 SUB X2 (*計算(X1-X2)*) ST Temp (*將(X1-X2)值存入Temp *) MUL Temp (*計算(X1-X2)的平方*) ) (*將兩平方值相加*) CAL SQRT (*調(diào)平方根函數(shù)*) ST TRAVEL (*設(shè)定計算結(jié)果*) GT TMax (*比TMax 大嗎?*) JMPC ERR (*是,轉(zhuǎn)到ERR 執(zhí)行*) S ENO (*設(shè)定ENO *) ERR: RET (*錯誤返回,ENO 不輸出*) END_FUNCTION功能塊圖(FBD)、梯形圖(LAD)和順序功能流程圖(SFC)。
一、功能塊圖(FBD - Function Block Diagram)功能塊圖用來描述功能、功能塊和程序的行為特征,還可以在順序功能流程圖中描述步、動作和轉(zhuǎn)變的行為特征。功能塊圖與電子線路圖中的信號流圖非常相似,在程序中,它可看作兩個過程元素之間的信息流。功能塊圖普遍地應(yīng)用在過程控制領(lǐng)域。功能塊用矩形塊來表示,每一功能塊的左側(cè)有不少于一個的輸入端,在右側(cè)有不少于一個的輸出端,功能塊的類型名稱通常寫在塊內(nèi),但功能塊實例的名稱通常寫在塊的上部,功能塊的輸入輸出名稱寫在塊內(nèi)的輸入輸出點的相應(yīng)地方。
1.1 功能塊圖的信號流在功能塊網(wǎng)路中,信號通常是從一個功能或功能塊的輸出傳遞到另一個功能或功能塊的輸入。信號經(jīng)由功能塊左端流入,并求值更新,在功能塊右端流輸出。 l 布爾信號的取反在使用布爾信號時,功能或功能塊的取反輸入或輸出可以在輸入端或輸出端用一個小圓點來表示,這種表示與在輸入端或輸出端加一個“取反”功能是一致的。如下圖是一功能塊圖取反的實例。 l 信號反饋功能塊圖允許功能塊的輸出反饋回網(wǎng)路左側(cè)的功能塊輸入,形成反饋路徑。下圖是一功能塊反饋路徑的實例,功能塊Load1的輸出端Level反饋回功能塊Loop1的輸入端ProcessValue。 1.2 功能塊網(wǎng)路設(shè)計 功能塊圖的設(shè)計首先應(yīng)該保證主信號流的線路清晰,避免過多的信號跨接和線路方向改變。
1.5 結(jié)構(gòu)化文本與功能塊圖之間的轉(zhuǎn)換特點 l 功能塊圖中的大部分程序能夠轉(zhuǎn)換為結(jié)構(gòu)化文本。 l 結(jié)構(gòu)化文本程序能夠容易地轉(zhuǎn)化為功能、功能塊及其相關(guān)的參數(shù)值。 l 結(jié)構(gòu)化文本直接轉(zhuǎn)化為功能塊網(wǎng)路是很困難的,IF…THEN, CASE,FOR, WHILE, REPEAT格式的語句還不能直接轉(zhuǎn)換為功能塊網(wǎng)路。
1.6 連續(xù)功能流程圖(CFC-Continuous Function Chart)連續(xù)功能流程圖是功能塊圖的一種特殊形式,它用于描述資源的頂層結(jié)構(gòu)以及程序和功能塊對任務(wù)的分配。連續(xù)功能流程圖和功能塊圖之間的主要區(qū)別是資源和任務(wù)分配的不同。每一功能用任務(wù)的名稱來描述,如圖所示。程序也是箱是的情況。如果一個程序內(nèi)的功能塊象它的父程序一樣在相同的任務(wù)下執(zhí)行,任務(wù)關(guān)聯(lián)是隱含的。在這種情況下,任務(wù)名稱就沒有必要顯示在功能塊中。連續(xù)功能流程圖如圖7所示。
2.4 ST、FBD及LD之間的可移植性 l 簡單的主要包含“與”和“或”邏輯梯形圖程序可以與結(jié)構(gòu)化文本程序轉(zhuǎn)換;在大部分的情況下,梯形圖程序可以與功能塊圖程序進(jìn)行轉(zhuǎn)換。 l 用結(jié)構(gòu)化文本描述的功能可以直接與梯形圖、功能塊轉(zhuǎn)換 l 除簡單的邏輯描述外,由結(jié)構(gòu)化文本程序到梯形圖程序的轉(zhuǎn)換常常是不可能的
3.1 順序功能流程圖的基本概念順序功能流程圖可以由步、有向連線和過渡的集合描述。如下圖反映了SFC的主要特征。 l 步步用矩形框表示,描述了被控系統(tǒng)的每一特殊狀態(tài)。MFC中的每一步的名字應(yīng)當(dāng)是唯一的并且應(yīng)當(dāng)在MFC中僅僅出現(xiàn)一次。一個步可以是激活的,也可以是休止的,只有當(dāng)步處于激活狀態(tài)時,與之相應(yīng)的動作才會被執(zhí)行,至于一個步是否處于激活狀態(tài),則取決于上一步及過渡。 l 有向連線有向連線表示功能圖的狀態(tài)轉(zhuǎn)化路線,每一步是通過有向連線連接的。 l 過渡過渡表示從一個步到另一個步的轉(zhuǎn)化,這種轉(zhuǎn)化并非任意的,只有當(dāng)滿足一定的轉(zhuǎn)換條件時,轉(zhuǎn)化才能發(fā)生。轉(zhuǎn)換條件可以用ST、LD或FBD來描述。轉(zhuǎn)換定義可以用ST、IL、LD或FBD來描述。過渡用一條橫線表示,可以對過渡進(jìn)行編號。 l 動作(action)每一步是用一個或多個動作(action)來描述的。動作包含了在步被執(zhí)行時應(yīng)當(dāng)發(fā)生的一些行為的描述,動作用一個附加在步上的矩形框來表示。每一動作可以用IEC的任一語言如ST、FBD、LD或IL來編寫。每一動作有一個限定器(Qulifier),用來確定動作什么時候執(zhí)行;標(biāo)準(zhǔn)還定義了一系列限定器(Qulifier),精確地定義了一個特定與步相關(guān)的動作什么時候執(zhí)行。每一動作還有一個指示器變量,該變量僅僅是用于注釋。動作的表示如下圖所示: l 轉(zhuǎn)化規(guī)則順序功能流程圖的任一步可能是激活的,也可能是休止的,與之相應(yīng)的動作(Action)只有在步處于激活狀態(tài)時,方能被執(zhí)行,所以,步被激活和被休止的過程編確定了系統(tǒng)的行為。初始狀態(tài)是指指令運行的開始即被激活的那個狀態(tài),這個步的標(biāo)志為S0。每個過程都可以是有效的,也可以是無效的,只有緊接其前的各個階段都處于激活狀態(tài)時,過渡才是有效的,只有同時滿足(1)過渡是有效的(2)過渡對應(yīng)的接受特性為真,與過渡相連的下一步方能處于激活狀態(tài),同時,緊接其前的各個步全部被休止。當(dāng)幾個過渡可以同時被超越時,他們將同時被超越。