官术网_书友最值得收藏!

1.4.1 功能

功能(FUN)可以指定參數(shù),但沒有靜態(tài)變量,也就是沒有存儲(chǔ)空間,在用相同的輸入?yún)?shù)調(diào)用函數(shù)時(shí)總是返回相同的結(jié)果。


1.功能聲明

文本方式下的功能聲明必須包含以下元素:

● 關(guān)鍵字FUNCTION,以及緊跟其后的用于表明功能名稱的標(biāo)示符,一個(gè)冒號(hào)(:)和函數(shù)返回值的數(shù)據(jù)類型。

● 一個(gè)VAR_INPUT ... END_VAR結(jié)構(gòu),用于定義功能的輸入變量的名字和數(shù)據(jù)類型。

● 如果需要的話,一個(gè)或多個(gè)VAR_IN_OUT ... END_VAR和VAR_OUTPUT ... END_VAR結(jié)構(gòu),用于定義功能輸入輸出(in-out)和輸出變量的名字和類型。

● 如果需要的話,一個(gè)VAR ... END_VAR結(jié)構(gòu),用于定義功能內(nèi)部變量的名字和數(shù)據(jù)類型。

● 一個(gè)功能體,用于指定針對(duì)變量所要執(zhí)行的操作。其中一個(gè)與功能名相同的變量會(huì)被賦值,以作為函數(shù)的返回值。

● 功能聲明的結(jié)束關(guān)鍵字END_FUNCTION。

功能聲明的例子如下所示。

        FUNCTION SIMPLE_FUN : REAL
            VAR_INPUT
                A, B : REAL ;
                  C : REAL := 1.0;
            END_VAR
            VAR_IN_OUT COUNT : INT ; END_VAR
            VAR COUNT1 : INT ; END_VAR
        COUNT1 := ADD(COUNT,1);  (*Function body specification   *)
        COUNT := COUNT1 ;
            SIMPLE_FUN := A*B/C;
        END_FUNCTION

圖形方式的功能聲明包含下列元素:

● 關(guān)鍵字對(duì)FUNCTION ... END_FUNCTION,或同等的圖形方式。

● 以圖形方式指定的函數(shù)名,功能結(jié)果,以及變量(輸入變量、輸出變量和輸入輸出變量)的名稱、數(shù)據(jù)類型及可能的初始化值。

● 對(duì)于功能內(nèi)部變量名稱、數(shù)據(jù)類型和可能的初始化聲明,如利用VAR ... END_VAR結(jié)構(gòu)。

● 功能體。

圖形方式的功能聲明如圖1-9所示。

圖1-9 功能圖形方式聲明


2.類型強(qiáng)制、重載和類型轉(zhuǎn)換

對(duì)于一個(gè)標(biāo)準(zhǔn)功能、功能塊類型、操作符或者指令而言,所謂的可重載(Overloading)指的是,能夠在一類基本數(shù)據(jù)內(nèi)操作不同類型的輸入變量。比如,一個(gè)在基本數(shù)據(jù)ANY_NUM上的可重載的加法功能可以操作所有LREAL、REAL、DINT、INT和SINT類型的輸入數(shù)據(jù)。

當(dāng)一個(gè)PLC系統(tǒng)支持可重載標(biāo)準(zhǔn)功能、功能塊類型、操作符或者指令時(shí),這個(gè)標(biāo)準(zhǔn)功能、功能塊類型、操作符或者指令必須能夠被應(yīng)用到該P(yáng)LC系統(tǒng)支持的基本數(shù)據(jù)內(nèi)的所有數(shù)據(jù)類型。例如,假如一個(gè)PLC系統(tǒng)支持可重載功能ADD以及數(shù)據(jù)類型SINT、INT和REAL,則該功能塊應(yīng)該支持所有的輸入數(shù)據(jù)類型SINT、INT和REAL(因?yàn)樗鼈兌紝儆谕换緮?shù)據(jù)類型ANY_NUM)。

類型強(qiáng)制(Typing)指的是當(dāng)一個(gè)可重載操作的功能被強(qiáng)制指定類型時(shí),它的輸入和輸出變量的類型就被限制在一個(gè)特定的基本或者派生數(shù)據(jù)類型上。這可以通過在功能名后加上一個(gè)下劃線和數(shù)據(jù)類型名稱來(lái)實(shí)現(xiàn),比如,基本ADD功能,其強(qiáng)制指定INT數(shù)據(jù)類型的表現(xiàn)形式為ADD_INT。

當(dāng)一個(gè)在下節(jié)中說(shuō)明的標(biāo)準(zhǔn)功能的輸出結(jié)果為基本數(shù)據(jù)類型時(shí),那么在一次功能調(diào)用中,所有輸入變量(具有相同的基本數(shù)據(jù)類型)的實(shí)際數(shù)據(jù)類型必須與功能結(jié)果的實(shí)際類型相一致。假如需要的話,類型轉(zhuǎn)換功能可以被用來(lái)滿足該要求。


3.標(biāo)準(zhǔn)功能

這一節(jié)描述了所有PLC編程語(yǔ)言通用的功能。當(dāng)一個(gè)標(biāo)準(zhǔn)功能為可擴(kuò)展時(shí),它允許擁有兩個(gè)或更多的輸入?yún)?shù),而功能指定的操作將被應(yīng)用到這些輸入?yún)?shù)上。例如,可擴(kuò)展加法功能,將其所有的輸入?yún)?shù)相加,并將結(jié)果作為它的輸出結(jié)果,如下所示。

        1:
        X := ADD(Y1, Y2, Y3);

        等價(jià)于:
        X := ADD(IN1 := Y1, IN2 := Y2, IN3 := Y3);
        2:
        I := MUX_INT(K:=3, IN0 := 1, IN2 := 2, IN4 := 3);
        等價(jià)于:
        I := 0;

(1)類型轉(zhuǎn)換功能(Type Conversion Function)

類型轉(zhuǎn)換功能必須具有*_TO_**的形式,其中*為輸入?yún)?shù)IN的數(shù)據(jù)類型,而**則為輸出變量OUT的數(shù)據(jù)類型,比如INT_TO_REAL。類型轉(zhuǎn)換功能的轉(zhuǎn)換精度、在轉(zhuǎn)換過程中可能出現(xiàn)的錯(cuò)誤類型都是與特定實(shí)現(xiàn)相關(guān)的參數(shù)。

(2)數(shù)值功能(Numeric Function)

數(shù)值功能實(shí)現(xiàn)針對(duì)一個(gè)或多個(gè)輸入?yún)?shù)的數(shù)值運(yùn)算,如一些常用的對(duì)數(shù)運(yùn)算、三角函數(shù)和基本的算術(shù)運(yùn)算。數(shù)值功能包括:ABS, SQRT, LN, LOG, EXP, SIN, COS, TAN, ASIN, ACOS, ATAN, ADD, MUL, SUB, DIV, MOD, EXPT和MOV。

(3)位串功能(Bit String Function)

位串功能實(shí)現(xiàn)的是針對(duì)位串(bit string)變量的移位。包括SHL、SHR、ROR和ROL。

位操作功能包括AND、OR、XOR和NOT。

(4)選擇和比較功能(Selection and Comparison Function)

選擇和比較功能都應(yīng)當(dāng)是可重載的。除了NE功能外,所有的比較功能都應(yīng)是可擴(kuò)展的。

位串?dāng)?shù)據(jù)類型的比較必須從most significant位到least significant位順序按位比較。當(dāng)較短的位串與較長(zhǎng)的位串比較時(shí),較短位串的左端必須以零補(bǔ)齊,也就是說(shuō),位串變量之間的比較結(jié)果應(yīng)當(dāng)與它們作為無(wú)符號(hào)整型變量比較的結(jié)果相同。

選擇功能包含SEL、MAX、MIN、LIMIT和MUX。

比較功能包含GT、GE、EQ、LE、LT和NE。

(5)字符串功能(Character String Function)

所有在上節(jié)選擇和比較功能中定義的功能都適用于字符串。當(dāng)比較兩個(gè)不同長(zhǎng)度的字符串時(shí),較短字符串右側(cè)應(yīng)當(dāng)被視為擴(kuò)展至較長(zhǎng)字符串的長(zhǎng)度,并且以零值填充。比較應(yīng)當(dāng)從左向右進(jìn)行,并且基于IEC 61131標(biāo)準(zhǔn)2.1.1中定義的字符集內(nèi)字符的數(shù)值。比如,字符串'Z'應(yīng)當(dāng)大于'AZ',而'AZ'應(yīng)當(dāng)大于'ABC'。

字符串功能包括LEN、LEFT、RIGT、MID、CONCAT、INSERT、DELETE、REPLACE和FIND。

(6)時(shí)間和日期相關(guān)功能(Functions of Time Date Type)

除了上述比較和選擇功能,不同時(shí)間和日期數(shù)據(jù)類型的輸入輸出組合在相關(guān)的功能中也是允許的。該類型包含ADD_TIME、SUB_TIME、MULTIME和DIVTIME。

(7)枚舉類型相關(guān)功能(Functions of Enumerated Data Type)

選擇和比較功能也可應(yīng)用于輸入為枚舉類型的情況,如SEL、MUX、EQ和NE。

主站蜘蛛池模板: 苍南县| 靖州| 开封市| 叶城县| 汉阴县| 普宁市| 五河县| 三原县| 石渠县| 沿河| 临澧县| 通辽市| 资源县| 兴隆县| 象山县| 肃南| 紫云| 吉林省| 赤峰市| 循化| 湖州市| 酒泉市| 石门县| 习水县| 公主岭市| 浦东新区| 万安县| 沙雅县| 万山特区| 钦州市| 静乐县| 揭西县| 西乌珠穆沁旗| 赫章县| 射阳县| 保定市| 沂源县| 三台县| 湛江市| 光泽县| 徐汇区|