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