施耐德Unity_Pro結(jié)構(gòu)化文本[ST]_第1頁(yè)
施耐德Unity_Pro結(jié)構(gòu)化文本[ST]_第2頁(yè)
施耐德Unity_Pro結(jié)構(gòu)化文本[ST]_第3頁(yè)
施耐德Unity_Pro結(jié)構(gòu)化文本[ST]_第4頁(yè)
施耐德Unity_Pro結(jié)構(gòu)化文本[ST]_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、word格式文檔結(jié)構(gòu)化文本(ST)目錄結(jié)構(gòu)化文本(ST)1概述2一結(jié)構(gòu)化文本 ST簡(jiǎn)介31.結(jié)構(gòu)化文本 ST簡(jiǎn)介32.操作數(shù)43.操作符5二指令101.指令102.賦值103.選擇指令I(lǐng)FTHENEND_IF114.選擇指令ELSE125.選擇指令ELSETHEN136.選擇指令CASEOFEND_CASE137.重復(fù)指令FORTOBYDOEND_FOR148.重復(fù)指令WHILEDOEND_WHILE159.重復(fù)指令REPEATUNTILEND_REPEAT1610.重復(fù)指令1611. 子程序調(diào)用1712. RETURN1713. 空指令1714. 標(biāo)簽和跳轉(zhuǎn)1815. 注釋18三調(diào)用基本功能

2、、基本功能塊、導(dǎo)出的功能塊和過程191. 調(diào)用基本功能192.調(diào)用基本功能塊和導(dǎo)出的功能塊 基本功能塊233.過程29概述 本章介紹符合 IEC 61131 的編程語言結(jié)構(gòu)化文本 ST。 本章包含了哪些內(nèi)容? 本章包含了以下部分: · 結(jié)構(gòu)化文本 ST 簡(jiǎn)介 · 指令 · 調(diào)用基本功能、基本功能塊、導(dǎo)出的功能塊和過程 一結(jié)構(gòu)化文本 ST簡(jiǎn)介概述 本節(jié)包含結(jié)構(gòu)化文本 ST 的概述。 本節(jié)包含了哪些內(nèi)容? 本節(jié)包含了以下主題: · 結(jié)構(gòu)化文本 ST 簡(jiǎn)介 · 操作數(shù) · 操作符 1.結(jié)構(gòu)化文本 ST簡(jiǎn)介簡(jiǎn)介使用結(jié)構(gòu)化文本 (ST) 的編程

3、語言,可以執(zhí)行多種操作,例如調(diào)用功能塊、執(zhí)行功能和賦值、有條件地執(zhí)行指令和重復(fù)任務(wù)。表達(dá)式ST 編程語言使用"表達(dá)式"。表達(dá)式是由操作符和操作數(shù)組成的結(jié)構(gòu),在執(zhí)行表達(dá)式時(shí)會(huì)返回值。操作符操作符是表示要執(zhí)行的操作的符號(hào)。操作數(shù)操作符供操作數(shù)使用。操作數(shù)為變量、數(shù)值、FFB 輸入/輸出等。說明指令用于將表達(dá)式返回的值賦給實(shí)際參數(shù),并構(gòu)造和控制表達(dá)式。ST 段的表示形式ST 段的表示形式:段大小指令行的長(zhǎng)度不應(yīng)超過 300 個(gè)字符。ST 段的長(zhǎng)度在編程環(huán)境中沒有限制。ST 段的長(zhǎng)度僅受 PLC 存儲(chǔ)器大小的限制。語法標(biāo)識(shí)符和關(guān)鍵字不區(qū)分大小寫。例外:不允許使用空格和制表符

4、3; 關(guān)鍵字· 數(shù)值· 值· 標(biāo)識(shí)符· 變量和 · 限制符組合 例如用于注釋的 (*執(zhí)行順序計(jì)算表達(dá)式時(shí)將根據(jù)操作符的優(yōu)先級(jí)所定義的順序?qū)⒉僮鞣麘?yīng)用于操作數(shù)(請(qǐng)參見操作符表)。首先執(zhí)行表達(dá)式中具有最高優(yōu)先級(jí)的操作符,接著執(zhí)行具有次優(yōu)先級(jí)的操作符,依此類推,直到完成整個(gè)計(jì)算過程。優(yōu)先級(jí)相同的操作符將根據(jù)它們?cè)诒磉_(dá)式中的書寫順序從左至右執(zhí)行??墒褂美ㄌ?hào)更改此順序。例如,如果 A、B、C 和D 的值分別為 1、2、3 和 4,并按以下方式計(jì)算:A+B-C*D結(jié)果則為 -9。在下面的計(jì)算中:(A+B-C)*D結(jié)果則為 0。如果操作符包含兩個(gè)操作數(shù),則先

5、執(zhí)行左邊的操作數(shù),例如在表達(dá)式SIN(A)*COS(B)中,先計(jì)算表達(dá)式 SIN(A),后計(jì)算 COS(B),然后計(jì)算它們的乘積。錯(cuò)誤行為下面的情況在執(zhí)行表達(dá)式時(shí)作為錯(cuò)誤處理:· 嘗試除以 0。· 操作數(shù)包含的數(shù)據(jù)類型不適合對(duì)應(yīng)的運(yùn)算。· 數(shù)字運(yùn)算的結(jié)果超出了其數(shù)據(jù)類型的值范圍。如果執(zhí)行運(yùn)算的過程中出現(xiàn)錯(cuò)誤,則會(huì)設(shè)置相應(yīng)的系統(tǒng)位 (%S)(如果使用的 PLC 支持這一設(shè)置)。IEC 遵從性有關(guān)針對(duì) ST 編程語言的 IEC 遵從性的描述,請(qǐng)參見 IEC 遵從性。2.操作數(shù)簡(jiǎn)介 操作數(shù)可以是: · 地址 · 數(shù)值 · 變量 ·

6、 多元素變量 · 多元素變量的元素 · 功能調(diào)用 · FFB 輸出 數(shù)據(jù)類型 處理操作數(shù)的指令中的數(shù)據(jù)類型必須相同。如果需要處理不同類型的操作數(shù),則必須預(yù)先執(zhí)行類型轉(zhuǎn)換。 在下面的示例中,整數(shù)變量 i1 在添加到實(shí)數(shù)變量 r4 中之前會(huì)先轉(zhuǎn)換為實(shí)數(shù)變量。 r3 := r4 + SIN(INT_TO_REAL(i1) ;此規(guī)則的例外情況是,數(shù)據(jù)類型為 TIME 的變量可乘以或除以數(shù)據(jù)類型為 INT、DINT、UINT 或 UDINT 的變量。 允許的運(yùn)算: · timeVar1 := timeVar2 / dintVar1; · timeVar1

7、 := timeVar2 * intVar1; · timeVar := 10 * time#10s; 此功能由 IEC 61131-3 作為"不希望"的服務(wù)列出。 直接使用地址 地址可直接使用(無需事先聲明)。在本例中,地址數(shù)據(jù)類型是直接分配的。該數(shù)據(jù)類型的分配通過使用"大前綴"進(jìn)行。 下表列出了不同的大前綴:大前綴/符號(hào)示例數(shù)據(jù)類型無前綴%I10、%CH203.MOD、%CH203.MOD.ERRBOOLX%MX20BOOLB%QB102.3BYTEW%KW43INTD%QD100DINTF%MF100REAL使用其他數(shù)據(jù)類型 要將其他數(shù)據(jù)

8、類型指定為地址的缺省數(shù)據(jù)類型,必須通過顯式聲明進(jìn)行。使用變量編輯器可方便地完成變量的聲明。地址的數(shù)據(jù)類型不能在 ST 段中直接聲明(例如,不允許聲明 AT %MW1:UINT)。 例如,在變量編輯器中聲明以下變量: UnlocV1: ARRAY 1.10 OF INT;LocV1: ARRAY 1.10 OF INT AT %MW100;LocV2: TIME AT %MW100;下面的調(diào)用具有正確的語法: %MW200 := 5;UnlocV12 := LocV1%MW200;LocV2 := t#3s;訪問字段變量 訪問字段變量 (ARRAY) 時(shí),只有數(shù)值和數(shù)據(jù)類型為 INT、UINT、

9、DINT 以及 UDINT 的變量才允許用于索引項(xiàng)。 如果范圍的閾值下限為負(fù)數(shù),則 ARRAY 元素的索引也可為負(fù)數(shù)。 示例:使用字段變量 var1i := 8 ;var2.otto4 := var3 ;var41+i+j*5 := 4 ;3.操作符簡(jiǎn)介 操作符是一種符號(hào),它表示: · 要執(zhí)行的算術(shù)運(yùn)算,或 · 要執(zhí)行的邏輯運(yùn)算 · 功能編輯(調(diào)用) 操作符是泛型的,即,它們自動(dòng)適應(yīng)操作數(shù)的數(shù)據(jù)類型。 操作符表 操作符根據(jù)優(yōu)先級(jí)按順序執(zhí)行,另請(qǐng)參見執(zhí)行順序。 ST 編程語言操作符表: 操作符含義優(yōu)先級(jí)適用的操作數(shù)描述()使用括號(hào):1(最高)表達(dá)式括號(hào)用于改變操作符

10、的執(zhí)行順序。示例:如果操作數(shù) A、B、C 和 D 的值分別為 1、2、3 和 4,A+B-C*D的結(jié)果則為 -9,而(A+B-C)*D的結(jié)果則為 0。FUNCNAME(實(shí)際參數(shù) -list)函數(shù)處理(調(diào)用)2表達(dá)式、數(shù)值、變量、地址(所有數(shù)據(jù)類型)函數(shù)處理用于執(zhí)行函數(shù)(請(qǐng)參見 調(diào)用基本功能)。-取反3數(shù)據(jù)類型為 INT、DINT 或 REAL 的表達(dá)式、數(shù)值、變量或地址取反 (-) 時(shí),操作數(shù)值的符號(hào)會(huì)反轉(zhuǎn)。示例:本示例中,如果 IN1 為 4,則 OUT 為 -4。OUT := - IN1 ;NOT反碼3數(shù)據(jù)類型為 BOOL、BYTE、WORD 或 DWORD 的表達(dá)式、數(shù)值、變量或地址進(jìn)行

11、 NOT 運(yùn)算時(shí),操作數(shù)將逐位反轉(zhuǎn)。示例:本示例中,如果 IN1 為 1100110011,則 OUT 為 0011001100。OUT := NOT IN1 ;*冪4數(shù)據(jù)類型為 REAL(底數(shù))和 INT、DINT、UINT、UDINT 或 REAL(指數(shù))的表達(dá)式、數(shù)值、變量或地址求冪 (*) 運(yùn)算時(shí),將以第一個(gè)操作數(shù)為底數(shù),第二個(gè)操作數(shù)為指數(shù)進(jìn)行求冪。示例:該示例中,如果 IN1 為 5.0,IN2 為 4.0,則 OUT 為 625.0。OUT := IN1 * IN2 ;*乘法5數(shù)據(jù)類型為 INT、DINT、UINT、UDINT 或 REAL 的表達(dá)式、數(shù)值、變量或地址乘法 (*)

12、運(yùn)算時(shí),將用第一個(gè)操作數(shù)的值乘以第二個(gè)操作數(shù)(指數(shù))的值。示例:該示例中,如果 IN1 為 5.0,IN2 為 4.0,則 OUT 為 20.0。OUT := IN1 * IN2 ;注:先期庫(kù)中的 MULTIME 函數(shù)可用于涉及數(shù)據(jù)類型 Time 的乘法。/除法5數(shù)據(jù)類型為 INT、DINT、UINT、UDINT 或 REAL 的表達(dá)式、數(shù)值、變量或地址除法 (/) 運(yùn)算時(shí),將用第一個(gè)操作數(shù)的值除以第二個(gè)操作數(shù)的值。示例:該示例中,如果 IN1 為 20.0,IN2 為 5.0,則 OUT 為 4.0。OUT := IN1 / IN2 ;注:先期庫(kù)中的 DIVTIME 函數(shù)可用于涉及數(shù)據(jù)類型

13、Time 的除法。MOD模數(shù)5數(shù)據(jù)類型為 INT、DINT、UINT 或 UDINT 的表達(dá)式、數(shù)值、變量或地址執(zhí)行 MOD 時(shí),將用第一個(gè)操作數(shù)的值除以第二個(gè)操作數(shù)的值,除法的余數(shù)(模數(shù))顯示為結(jié)果。示例:本示例中· 如果 IN1 為 7,IN2 為 2,則 OUT 為 1。· 如果 IN1 為 7,IN2 為 -2,則 OUT 為 1。· 如果 IN1 為 -7,IN2 為 2,則 OUT 為 -1。· 如果 IN1 為 -7,IN2 為 -2,則 OUT 為 -1。OUT := IN1 MOD IN2 ;+加法6數(shù)據(jù)類型為 INT、DINT、UIN

14、T、UDINT、REAL 或 TIME 的表達(dá)式、數(shù)值、變量或地址加法 (+) 運(yùn)算時(shí),將用第一個(gè)操作數(shù)的值加上第二個(gè)操作數(shù)的值。示例:本示例中如果 IN1 為 7,IN2 為 2,則 OUT 為 9OUT := IN1 + IN2 ;-減法6數(shù)據(jù)類型為 INT、DINT、UINT、UDINT、REAL 或 TIME 的表達(dá)式、數(shù)值、變量或地址減法 (-) 運(yùn)算時(shí),將用第一個(gè)操作數(shù)的值減去第二個(gè)操作數(shù)的值。示例:該示例中,如果 IN1 為 10,IN2 為 4,則 OUT 為 6。OUT := IN1 - IN2 ;<小于比較7數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、

15、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD 的表達(dá)式、數(shù)值、變量或地址使用 < 將第一個(gè)操作數(shù)的值與第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值小于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 1。如果第一個(gè)操作數(shù)的值大于或等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1 小于 10,則 OUT 為 1,否則為 0。OUT := IN1 < 10;>大于比較7數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD

16、的表達(dá)式、數(shù)值、變量或地址使用 > 將第一個(gè)操作數(shù)的值與第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值大于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 1。如果第一個(gè)操作數(shù)的值小于或等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1 大于 10,則 OUT 為 1,如果 IN1 小于 10 則為 0。OUT := IN1 > 10;<=小于或等于比較7數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD 的表達(dá)式、數(shù)值、變量或地址使用 <= 將第一個(gè)操作數(shù)的值與

17、第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值小于或等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 1。如果第一個(gè)操作數(shù)的值大于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1 小于或等于 10,則 OUT 為 1,否則為 0。OUT := IN1 <= 10;>=大于或等于比較7數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD 的表達(dá)式、數(shù)值、變量或地址使用 >= 將第一個(gè)操作數(shù)的值與第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值大于或等于第二個(gè)操作數(shù)的值,則結(jié)

18、果為布爾值 1。如果第一個(gè)操作數(shù)的值小于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1 大于或等于 10,則 OUT 為 1,否則為 0。OUT := IN1 >= 10;=等于8數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD 的表達(dá)式、數(shù)值、變量或地址使用 = 將第一個(gè)操作數(shù)的值與第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 1。如果第一個(gè)操作數(shù)的值不等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1

19、等于 10,則 OUT 為 1,否則為 0。OUT := IN1 = 10 ;<>不等于8數(shù)據(jù)類型為 BOOL、BYTE、INT、DINT、UINT、UDINT、REAL、TIME、WORD、DWORD、STRING、DT、DATE 或 TOD 的表達(dá)式、數(shù)值、變量或地址使用 <> 將第一個(gè)操作數(shù)的值與第二個(gè)操作數(shù)的值進(jìn)行比較。如果第一個(gè)操作數(shù)的值不等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 1。如果第一個(gè)操作數(shù)的值等于第二個(gè)操作數(shù)的值,則結(jié)果為布爾值 0。示例:本示例中,如果 IN1 不等于 10,則 OUT 為 1,否則為 0。OUT := IN1 <> 10

20、;&邏輯與9數(shù)據(jù)類型為 BOOL、BYTE、WORD 或 DWORD 的表達(dá)式、數(shù)值、變量或地址對(duì)于 &,操作數(shù)之間存在邏輯與關(guān)聯(lián)。對(duì)于 BYTE、WORD 和 DWORD 數(shù)據(jù)類型,此關(guān)聯(lián)是逐位進(jìn)行的。示例:本示例中,如果 IN1、IN2 和 IN3 均為 1,則 OUT 為 1。OUT := IN1 & IN2 & IN3;AND邏輯與9數(shù)據(jù)類型為 BOOL、BYTE、WORD 或 DWORD 的表達(dá)式、數(shù)值、變量或地址對(duì)于 AND,操作數(shù)之間存在邏輯與關(guān)聯(lián)。對(duì)于 BYTE、WORD 和 DWORD 數(shù)據(jù)類型,此關(guān)聯(lián)是逐位進(jìn)行的。示例:本示例中,如果 IN1

21、、IN2 和 IN3 均為 1,則 OUT 為 1。OUT := IN1 AND IN2 AND IN3 ;XOR邏輯異或10數(shù)據(jù)類型為 BOOL、BYTE、WORD 或 DWORD 的表達(dá)式、數(shù)值、變量或地址對(duì)于 XOR,操作數(shù)之間存在邏輯異或關(guān)聯(lián)。對(duì)于 BYTE、WORD 和 DWORD 數(shù)據(jù)類型,此關(guān)聯(lián)是逐位進(jìn)行的。示例:本示例中,如果 IN1 和 IN2 不相等,則 OUT 為 1。如果 A 和 B 的狀態(tài)相同(均為 0 或均為 1),則 D 為 0。OUT := IN1 XOR IN2 ;如果將兩個(gè)以上的操作數(shù)進(jìn)行關(guān)聯(lián),當(dāng)狀態(tài)為 1 的操作數(shù)個(gè)數(shù)不是偶數(shù)時(shí)結(jié)果為 1,而當(dāng)狀態(tài)為 1

22、的操作數(shù)個(gè)數(shù)是偶數(shù)時(shí)結(jié)果為 0。示例:本示例中,如果有 1 個(gè)或 3 個(gè)操作數(shù)為 1,則 OUT 為 1,如果有 0、2 或 4 個(gè)操作數(shù)為 1,則 OUT 為 0。OUT := IN1 XOR IN2 XOR IN3 XOR IN4 ;OR邏輯或11(最低)數(shù)據(jù)類型為 BOOL、BYTE、WORD 或 DWORD 的表達(dá)式、數(shù)值、變量或地址對(duì)于 OR,操作數(shù)之間存在邏輯或關(guān)聯(lián)。對(duì)于 BYTE、WORD 和 DWORD 數(shù)據(jù)類型,此關(guān)聯(lián)是逐位進(jìn)行的。示例:本示例中,如果 IN1、IN2 或 IN3 為 1,則 OUT 為 1。OUT := IN1 OR IN2 OR IN3 ;二指令概述 本節(jié)

23、描述結(jié)構(gòu)化文本ST 編程語言的指令。 本節(jié)包含了哪些內(nèi)容? 本節(jié)包含了以下主題: · 指令 · 賦值 · 選擇指令 IF.THEN.END_IF · 選擇指令 ELSE · 選擇指令 ELSIF.THEN · 選擇指令 CASE.OF.END_CASE · 重復(fù)指令 FOR.TO.BY.DO.END_FOR · 重復(fù)指令 WHILE.DO.END_WHILE · 重復(fù)指令 REPEAT.UNTIL.END_REPEAT · 重復(fù)指令 EXIT · 子程序調(diào)用 · RETURN

24、 · 空指令 · 標(biāo)簽和跳轉(zhuǎn) · 注釋 1.指令描述 指令是 ST 編程語言的"命令"。 指令必須以分號(hào)結(jié)尾。 一行中可以有多個(gè)指令(由分號(hào)分隔)。 單個(gè)分號(hào)表示空指令。 2.賦值簡(jiǎn)介 執(zhí)行賦值時(shí),單元素或多元素變量的當(dāng)前值會(huì)替換為表達(dá)式的計(jì)算結(jié)果。 賦值表達(dá)式的結(jié)構(gòu)為:左邊是變量名稱,之后是賦值操作符 :=,然后是要求值的表達(dá)式。 兩個(gè)變量(分別位于賦值操作符的左側(cè)和右側(cè))的數(shù)據(jù)類型必須相同。 數(shù)組是個(gè)特例。顯式啟用后,也可對(duì)長(zhǎng)度不同的兩個(gè)數(shù)組執(zhí)行賦值操作。 將一個(gè)變量的值賦給另一個(gè)變量 賦值用于將一個(gè)變量的值賦給另一個(gè)變量。 例如,指令 A

25、 := B ;用于將變量 A 的值替換為變量 B 的當(dāng)前值。如果 A 和 B 是基本數(shù)據(jù)類型,則 B 的單個(gè)值會(huì)傳遞給 A。如果 A 和 B 是導(dǎo)出的數(shù)據(jù)類型,則所有 B 元素的值都傳遞給 A。 將數(shù)值賦給變量 賦值用于將數(shù)值賦給變量。 指令 C := 25 ;用于將值 25 賦給變量 C。 將運(yùn)算值賦給變量 賦值用于將運(yùn)算結(jié)果賦給變量。 例如,指令 X := (A+B-C)*D ;用于將 (A+B-C)*D 的運(yùn)算結(jié)果賦給變量 X。 將 FFB 的值賦給變量 賦值用于將功能或功能塊返回的值賦給變量。 例如,指令 B := MOD(C,A) ;用于調(diào)用 MOD(模數(shù))功能并將計(jì)算結(jié)果賦給變量

26、B。 例如,指令 A := MY_TON.Q ;用于將 MY_TON 功能塊(TON 功能塊的實(shí)例)的 Q 輸出值賦給變量 A。(這不是功能塊調(diào)用) 多重賦值 多重賦值是對(duì) IEC 61131-3 的補(bǔ)充,必須顯式啟用。 即使已經(jīng)啟用,下列情況下也不能進(jìn)行多重賦值: · 在功能塊調(diào)用的參數(shù)列表中 · 在用于初始化結(jié)構(gòu)化變量的元素列表中 指令 X := Y := Z是允許的。 指令 FB(in1 := 1, In2 := In3 := 2) ;和 strucVar := (comp1 := 1, comp2 := comp3 := 2) ;是不允許的。 數(shù)組與 WORD-/D

27、WORD 變量之間的賦值 數(shù)組和 WORD-/DWORD 變量之間進(jìn)行賦值時(shí)必須先執(zhí)行類型轉(zhuǎn)換,例如: %Q3.0:16 := INT_TO_AR_BOOL(%MW20) ;提供了下面的轉(zhuǎn)換功能(常規(guī)庫(kù),Array 系列): · MOVE_BOOL_AREBOOL · MOVE_WORD_ARWORD · MOVE_DWORD_ARDWORD · MOVE_INT_ARINT · MOVE_DINT_ARDINT · MOVE_REAL_ARREAL 3.選擇指令I(lǐng)FTHENEND_IF描述 IF 指令只有確定其相關(guān)布爾表達(dá)式的值為

28、1(真)時(shí),才會(huì)執(zhí)行指令或一組指令。如果條件為 0(假),將不會(huì)執(zhí)行該指令或指令組。 THEN 指令標(biāo)識(shí)條件的結(jié)尾和指令的開頭。 END_IF 指令標(biāo)記指令的結(jié)尾。 注意: 可以嵌套任何數(shù)量的 IF.THEN.END_IF 指令,以生成復(fù)雜的選擇指令。 示例 IF.THEN.END_IF 該條件可以使用布爾變量表達(dá)。 如果 FLAG 為 1,將執(zhí)行指令;如果 FLAG 為 0,則不會(huì)執(zhí)行。 IF FLAG THEN C:=SIN(A) * COS(B) ; B:=C - A ;END_IF ;該條件可使用返回布爾結(jié)果的操作表達(dá)。 如果 A 大于 B,將會(huì)執(zhí)行指令;如果 A 小于或等于 B,則不

29、會(huì)執(zhí)行。 IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ;END_IF ;示例 IF NOT.THEN.END_IF 該條件可使用 NOT 反轉(zhuǎn)(為 0 時(shí)執(zhí)行這兩個(gè)指令)。 IF NOT FLAG THEN C:=SIN_REAL(A) * COS_REAL(B) ; B:=C - A ;END_IF ;另請(qǐng)參見 ELSE ELSIF 4.選擇指令ELSE描述 ELSE 指令始終出現(xiàn)在 IF.THEN、ELSIF.THEN 或 CASE 指令后面。 如果 ELSE 指令出現(xiàn)在 IF 或 ELSIF 指令后面,則僅當(dāng) IF 和 ELSIF 指令的關(guān)聯(lián)

30、布爾表達(dá)式為 0(假)時(shí),才會(huì)執(zhí)行該指令或指令組。如果 IF 或 ELSIF 指令的條件為 1(真),則不會(huì)執(zhí)行該指令或指令組。 如果 ELSE 指令出現(xiàn)在 CASE 后面,則僅當(dāng)所有標(biāo)簽都不包含選擇器的值時(shí),才會(huì)執(zhí)行該指令或指令組。如果某個(gè)標(biāo)識(shí)包含選擇器的值,則不會(huì)執(zhí)行該指令或指令組。 注意: 可以嵌套任何數(shù)量的 IF.THEN.ELSE.END_IF 指令,以生成復(fù)雜的選擇指令。 示例 ELSE IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ;ELSE C:=A + B ; B:=C * A ;END_IF ;另請(qǐng)參見 IF ELSIF CASE

31、 5.選擇指令ELSETHEN描述 ELSE 指令始終出現(xiàn)在 IF.THEN 指令后面。ELSIF 指令確定僅當(dāng) IF 指令的關(guān)聯(lián)布爾表達(dá)式的值為 0(假)并且 ELSIF 指令的關(guān)聯(lián)布爾表達(dá)式的值為 1(真)時(shí),才會(huì)執(zhí)行指令或指令組。如果 IF 指令的條件為 1(真)或者 ELSIF 指令的條件為 0(假),則不會(huì)執(zhí)行該命令或命令組。 THEN 指令標(biāo)識(shí) ELSIF 條件的結(jié)尾和指令的開頭。 注意: 可以嵌套任何數(shù)量的 IF.THEN.ELSIF.THEN.END_IF 指令,以生成復(fù)雜的選擇指令。 示例 ELSIF.THEN IF A>B THEN C:=SIN(A) * COS(B

32、) ; B:=SUB(C,A) ;ELSIF A=B THEN C:=ADD(A,B) ; B:=MUL(C,A) ;END_IF ;例如嵌套指令 IF A>B THEN IF B=C THEN C:=SIN(A) * COS(B) ; ELSE B:=SUB(C,A) ; END_IF ;ELSIF A=B THEN C:=ADD(A,B) ; B:=MUL(C,A) ;ELSE C:=DIV(A,B) ;END_IF ;另請(qǐng)參見 IF ELSE 6.選擇指令CASEOFEND_CASE描述 CASE 指令包含一個(gè) INT 數(shù)據(jù)類型的表達(dá)式(選擇器)和一個(gè)指令組列表。每組都具有一個(gè)包含

33、一個(gè)或多個(gè)整數(shù)(INT、DINT、UINT 或 UDINT)或整數(shù)值范圍的標(biāo)簽。將執(zhí)行的指令為其標(biāo)簽中包含選擇器計(jì)算出的值的第一組指令。否則,將不執(zhí)行任何標(biāo)簽對(duì)應(yīng)的指令。 OF 指令指示標(biāo)簽的開頭。 所有標(biāo)簽都不包含選擇器的值時(shí),才會(huì)在 CASE 指令內(nèi)執(zhí)行 ELSE 指令。 END_CASE 指令標(biāo)記指令的結(jié)尾。 示例 CASE.OF.END_CASE 示例 CASE.OF.END_CASE 另請(qǐng)參見 ELSE 7.重復(fù)指令FORTOBYDOEND_FOR描述 FOR 指令用于在發(fā)生次數(shù)可預(yù)先確定的情況下。否則可使用 WHILE 或 REPEAT。 FOR 指令會(huì)重復(fù)執(zhí)行指令序列,直到遇到

34、END_FOR 指令為止。發(fā)生次數(shù)由起始值、結(jié)束值和控制變量決定。 控制變量、起始值和結(jié)束值必須具有相同的數(shù)據(jù)類型(DINT 或INT)。 控制變量、起始值和結(jié)束值可由重復(fù)指令進(jìn)行更改。這是對(duì) IEC 61131-3 的補(bǔ)充。 FOR 指令以控制變量值為步幅遞增起始值,直到達(dá)到結(jié)束值。增量值的缺省值為 1。如果要使用其他值,則可以指定顯式增量值(變量或常量)。每個(gè)新的循環(huán)之前都要檢查控制變量值。如果它位于起始值和結(jié)束值的范圍之外,則將離開循環(huán)。 首次運(yùn)行循環(huán)之前,會(huì)進(jìn)行檢查以確定從初始值開始的控制變量遞增是否是朝著結(jié)束值的方向。如果不是(例如,起始值 結(jié)束值并且增量為負(fù)值),則不會(huì)對(duì)循環(huán)進(jìn)行處

35、理??刂谱兞恐挡皇窃谘h(huán)外定義的。 DO 指令標(biāo)識(shí)重復(fù)定義的結(jié)尾和指令的開頭。 可以使用 EXIT 提前終止循環(huán)。END_FOR 指令標(biāo)記指令的結(jié)尾。 示例:增量為 1 的 FOR 增量為 1 的 FOR 增量不為 1 的 FOR 如果要使用的增量不為 1,這可由 BY 定義。增量、初始值、結(jié)束值和控制變量必須具有相同的數(shù)據(jù)類型(DINT 或 INT)。處理方向(向前或向后)由 BY 表達(dá)式的符號(hào)決定。如果此表達(dá)式為正,則循環(huán)正向進(jìn)行;如果為負(fù),則循環(huán)反向進(jìn)行。 示例:步幅為 2 的正向計(jì)數(shù) 步幅為 2 的正向計(jì)數(shù) 示例:反向計(jì)數(shù) 反向計(jì)數(shù) FOR i:= 10 TO 1 BY -1 DO (

36、* BY < 0 : Backwards.loop *)C:= C * COS(B) ; (* Instruction is executed 10 x *)END_FOR ;示例:"唯一"循環(huán) 本示例中的循環(huán)正好執(zhí)行一次,原因是初始值 = 結(jié)束值。此種情況下,增量為正還是負(fù)沒有關(guān)系。 FOR i:= 10 TO 10 DO (* Unique Loop *)C:= C * COS(B) ;END_FOR ;或 FOR i:= 10 TO 10 BY -1 DO (* Unique Loop *)C:= C * COS(B) ;END_FOR ;示例:臨界循環(huán) 如果本

37、示例中增量 j > 0,將執(zhí)行指令。 如果 j < 0,將不會(huì)執(zhí)行指令,因?yàn)闂l件初始值 < 僅允許結(jié)束值的增量 0。 如果 j = 0,將執(zhí)行指令并且會(huì)創(chuàng)建一個(gè)無限循環(huán),因?yàn)樵隽繛?0 時(shí)永遠(yuǎn)都不會(huì)達(dá)到結(jié)束值。 FOR i:= 1 TO 10 BY j DOC:= C * COS(B) ; END_FOR ;8.重復(fù)指令WHILEDOEND_WHILE說明 WHILE 指令可使一個(gè)指令序列重復(fù)執(zhí)行,直到其相關(guān)布爾表達(dá)式為 0(假)。如果從一開始該表達(dá)式就為假,則根本不會(huì)執(zhí)行該指令組。 DO 指令標(biāo)識(shí)重復(fù)定義的結(jié)尾和指令的開頭。 可以使用 EXIT 提前終止循環(huán)。 END_WH

38、ILE 指令標(biāo)記指令的結(jié)尾。 下列情況下不應(yīng)使用 WHILE,因?yàn)樗赡軐?dǎo)致無限循環(huán),從而造成程序崩潰: · WHILE 不能用于過程之間的同步,例如,不能用作具有外部定義的結(jié)束條件的“等待循環(huán)”。 · WHILE 不能用在算法中,因?yàn)闊o法確保完成循環(huán)結(jié)束條件或執(zhí)行 EXIT 指令。 示例 WHILE.DO.END_WHILE x := 1; WHILE x <= 100 DO x := x + 4; END_WHILE ;另請(qǐng)參見 EXIT 9.重復(fù)指令REPEATUNTILEND_REPEAT描述 REPEAT 指令可使一個(gè)指令序列重復(fù)執(zhí)行(至少執(zhí)行一次),直到相

39、關(guān)布爾條件為 1(真)。 UNTIL 指令標(biāo)記結(jié)束條件。 可以使用 EXIT 提前終止循環(huán)。 END_REPEAT 指令標(biāo)記指令的結(jié)尾。 下列情況下不應(yīng)使用 REPEAT,因?yàn)樗赡軐?dǎo)致無限循環(huán),從而造成程序崩潰: · REPEAT 不能用于進(jìn)程之間的同步,例如,不能用作具有外部定義的結(jié)束條件的“等待循環(huán)”。 · REPEAT 不能用在算法中,例如無法確保完成循環(huán)結(jié)束條件或執(zhí)行 EXIT 指令。 示例 REPEAT.UNTIL.END_REPEAT x := -1; REPEAT x := x + 2; UNTIL x >= 101 END_REPEAT; 另請(qǐng)參見

40、EXIT 10.重復(fù)指令描述 EXIT 指令用于在滿足結(jié)束條件前終止重復(fù)指令(FOR、WHILE 或 REPEAT)。 如果 EXIT 指令位于嵌套的重復(fù)指令內(nèi),則會(huì)離開最里面的循環(huán)(EXIT 所在的循環(huán))。接下來,將執(zhí)行循環(huán)結(jié)尾(END_FOR、END_WHILE 或 END_REPEAT)后的第一個(gè)指令。 示例 EXIT 如果 FLAG 的值為 0,執(zhí)行指令后 SUM 將為 15。 如果 FLAG 的值為 1,執(zhí)行指令后 SUM 將為 6。 SUM : = 0 ;FOR I := 1 TO 3 DO FOR J := 1 TO 2 DO IF FLAG=1 THEN EXIT; END_I

41、F ; SUM := SUM + J ; END_FOR ; SUM := SUM + I ;END_FOR另請(qǐng)參見 CASE WHILE REPEAT 11. 子程序調(diào)用子程序調(diào)用 子程序調(diào)用由子程序段名稱后跟空參數(shù)列表組成。 子程序調(diào)用不返回值。 待調(diào)用的子程序必須與調(diào)用的 ST 段位于同一任務(wù)中。 也可以從子程序中調(diào)用子程序。 例如: SubroutineName () ;子程序調(diào)用是對(duì) IEC 61131-3 的補(bǔ)充,且必須顯式啟用。 在 SFC 動(dòng)作段中,僅當(dāng)啟用了多令牌操作時(shí)才允許子程序調(diào)用。12. RETURN描述 RETURN 指令可用于 DFB(導(dǎo)出功能塊)和 SR(子程序)

42、中。 RETURN 指令不可用于主程序中。 · 在 DFB 中,RETURN 指令強(qiáng)制返回稱為 DFB 的程序。 不執(zhí)行包含 RETURN 指令的剩余 DFB 段。 也不執(zhí)行 DFB 的下一段。 從 DFB 返回后,將執(zhí)行稱為 DFB 的程序 如果另一個(gè) DFB 調(diào)用了此 DFB,將在返回后執(zhí)行調(diào)用 DFB。 · 在 SR 中,RETURN 指令強(qiáng)制返回稱為 SR 的程序。 不執(zhí)行包含 RETURN 指令的剩余 SR。 從 SR 返回后,將執(zhí)行稱為 SR 的程序。 13. 空指令描述 單個(gè)分號(hào) ; 表示空指令。 例如: IF x THEN ; ELSE .在此示例中,THE

43、N 指令后面就跟著一個(gè)空指令。這意味著,只要 IF 條件為 1,程序就會(huì)立即退出 IF 指令。 14. 標(biāo)簽和跳轉(zhuǎn)簡(jiǎn)介 標(biāo)簽用作跳轉(zhuǎn)的目標(biāo)。 ST 中的跳轉(zhuǎn)和標(biāo)簽是對(duì) IEC 61131-3 的補(bǔ)充,且必須顯式啟用。 標(biāo)簽屬性 標(biāo)簽屬性: · 標(biāo)簽必須始終是行中的第一個(gè)元素。 · 標(biāo)簽只能出現(xiàn)在第一級(jí)指令前(不能在循環(huán)中)。 · 其名稱在整個(gè)目錄中都必須明確,并且不區(qū)分大小寫。 · 標(biāo)簽必須符合一般命名約定。 · 標(biāo)簽用冒號(hào) :與后面的指令分隔。 跳轉(zhuǎn)屬性 跳轉(zhuǎn)屬性 · 可在程序和 DFB 段中進(jìn)行跳轉(zhuǎn)。 · 只能在當(dāng)前段中

44、進(jìn)行跳轉(zhuǎn)。 示例 IF var1 THEN JMP START; :START: .15. 注釋描述 在 ST 編輯器中,注釋總是以字符串 (* 開始,以字符串 *) 結(jié)束。在這兩個(gè)字符串之間可以輸入任何注釋??稍?ST 編輯器的任何位置輸入注釋,但不能在關(guān)鍵字、數(shù)值、標(biāo)識(shí)符和變量中輸入注釋。 IEC 61131-3 不允許嵌套注釋。如果已經(jīng)嵌套了注釋,則必須顯式啟用。 三調(diào)用基本功能、基本功能塊、導(dǎo)出的功能塊和過程概述 使用 ST 編程語言調(diào)用基本功能、基本功能塊、導(dǎo)出的功能塊和過程。 本節(jié)包含了哪些內(nèi)容? 本節(jié)包含了以下主題: · 調(diào)用基本功能 · 調(diào)用基本功

45、能塊和導(dǎo)出的功能塊 · 過程 1. 調(diào)用基本功能 基本功能 基本功能以庫(kù)的形式提供。功能的邏輯是使用編程語言 C 創(chuàng)建的,不能在 ST 編輯器中進(jìn)行修改。 功能沒有內(nèi)部狀態(tài)。如果輸入值相同,則每次執(zhí)行該功能后輸出的值都相同。例如,每次執(zhí)行兩個(gè)值相加后都能得到相同的結(jié)果。 有些基本功能可擴(kuò)展為具有 2 個(gè)以上的輸入。 基本功能只具有一個(gè)返回值(輸出)。 參數(shù) 將值傳入或傳出功能需要“輸入”和一個(gè)“輸出”。這些輸入/輸出稱為形式參數(shù)。 當(dāng)前過程狀態(tài)傳遞給形式參數(shù)。這些參數(shù)稱為實(shí)際參數(shù)。 以下各項(xiàng)可用作功能輸入的實(shí)際參數(shù): · 變量 地址 數(shù)值 ST 表達(dá)式 以下各項(xiàng)可用作功能輸

46、出的實(shí)際參數(shù): · 變量 · 地址 實(shí)際參數(shù)的數(shù)據(jù)類型必須與形式參數(shù)的數(shù)據(jù)類型匹配。唯一的例外是泛型形式參數(shù),其數(shù)據(jù)類型由實(shí)際參數(shù)決定。 處理泛型ANY_BIT 形式參數(shù)時(shí),可使用數(shù)據(jù)類型為INT 或DINT (不是UINT 和UDINT)的實(shí)際參數(shù)。 這是對(duì) IEC 61131-3 的補(bǔ)充,且必須顯式啟用。 示例: 允許: AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2); 不允許: AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (在這種情況下,必

47、須使用AND_INT 。) AND_ARRAY_WORD (ArrayInt, .); (在這種情況下,必須使用INT_ARR_TO_WORD_ARR (.); 執(zhí)行顯式類型轉(zhuǎn)換。). 并非所有形式參數(shù)都必須賦值。必須賦值的形式參數(shù)類型可參見此表: 參數(shù)類型EDTSTRINGARRAYANY_ARRAYIODDTSTRUCTFBANYInput-+-+-VAR_IN_OUT+/+Output-/-+ 需要實(shí)際參數(shù)- 不需要實(shí)際參數(shù)/ 不適用如果沒有為形式參數(shù)賦值,則會(huì)使用初始值執(zhí)行功能塊。如果尚未定義初始值,則使用缺省值 (0)。 編程說明 請(qǐng)注意以下信息: · 所有通用功能都被過載

48、。這意味著調(diào)用功能時(shí)是否輸入數(shù)據(jù)類型無關(guān)緊要。 例如 i1 := ADD (i2, 3); 等同于 i1 := ADD_INT (i2, 3); · 功能可以嵌套(另請(qǐng)參見.). · 僅當(dāng)輸入EN = 1 或未使用EN 輸入時(shí),才會(huì)執(zhí)行功能(另請(qǐng)參見EN 和 ENO). · 有兩種調(diào)用功能的方式: 形式調(diào)用(使用形式參數(shù)名稱調(diào)用功能) 非形式調(diào)用(不使用形式參數(shù)名稱調(diào)用功能) 形式調(diào)用 對(duì)于形式調(diào)用(帶形式參數(shù)名稱的調(diào)用),調(diào)用所使用的指令序列為:實(shí)際輸出參數(shù),后跟賦值指令:=,然后是功能名稱,之后是用括號(hào)括起的列表(其中為實(shí)際參數(shù)對(duì)形式參數(shù)的賦值)。形式參數(shù)在功

49、能調(diào)用中的列出順序無關(guān)緊要. EN 和ENO 可用于此類型的調(diào)用。 使用形式參數(shù)名稱調(diào)用功能: 使用 FBD 調(diào)用相同的功能: 對(duì)于形式調(diào)用,沒有必要為所有形式參數(shù)賦值(另請(qǐng)參見參數(shù)). out:=LIMIT (MN:=0, IN:=var1) 使用 FBD 調(diào)用相同的功能: 非形式調(diào)用 對(duì)于非形式調(diào)用(不帶形式參數(shù)名稱的調(diào)用),調(diào)用所使用的指令序列為:實(shí)際輸出參數(shù),后跟賦值指令符號(hào):=,然后是功能名稱,之后是用括號(hào)括起的輸入實(shí)際參數(shù)的列表。實(shí)際參數(shù)在功能調(diào)用中的列出順序非常重要. EN 和ENO 不能 用于此類型的調(diào)用。 不使用形式參數(shù)名稱調(diào)用功能: 使用 FB

50、D 調(diào)用相同的功能: 對(duì)于非形式調(diào)用,沒有必要為所有形式參數(shù)賦值(另請(qǐng)參見參數(shù)). 這是對(duì) IEC 61131-3 的補(bǔ)充,且必須顯式啟用。 空參數(shù)字段用于跳過參數(shù)。 帶空參數(shù)字段的調(diào)用: out:=LIMIT ( ,var1, 5 + var) 使用 FBD 調(diào)用相同的功能: 如果忽略位于末尾的形式參數(shù),則無需使用空參數(shù)字段。 out:=LIMIT (0, var1) 使用 FBD 調(diào)用相同的功能: 嵌套功能 功能調(diào)用可包含進(jìn)一步的功能調(diào)用。嵌套深度不受限制。 嵌套調(diào)用數(shù)組功能: out:=LIMIT&

51、#160;(MN:=4, IN:=MUL(IN1:=var1, IN2:=var2), MX:=5) 使用 FBD 調(diào)用相同的功能: 返回值為ANY_ARRAY 數(shù)據(jù)類型的函數(shù)不能 在功能調(diào)用內(nèi) 使用。 未授權(quán) 嵌套,數(shù)據(jù)類型為ANY_ARRAY: ANY_ARRAY 允許用作調(diào)用的功能的返回值或嵌套功能的參數(shù)。 授權(quán) 嵌套,數(shù)據(jù)類型為ANY_ARRAY: EN 和 ENO 所有功能都可以配置一個(gè)EN 輸入和一個(gè)ENO 輸出。 如果調(diào)用功能時(shí)EN 的值為“0”,則不會(huì)執(zhí)行該功能所定義的算法,并且ENO 設(shè)置為“0”。 如果調(diào)用功能時(shí)EN 的值為“1”,則執(zhí)行該功能所定義的算法。成功執(zhí)

52、行這些算法之后,ENO 的值設(shè)置為“1”。如果在執(zhí)行這些算法的過程中出錯(cuò),則ENO 將設(shè)置為“0”。 如果EN 引腳未賦值,則在調(diào)用 FFB 時(shí),會(huì)執(zhí)行 FFB 所定義的算法(與EN 等于“1”時(shí)的情況相同)。 如果ENO 設(shè)置為“0”(由于EN=0 或執(zhí)行過程中出錯(cuò)),則功能的輸出設(shè)置為“0”。 功能的輸出行為不依賴于調(diào)用功能時(shí)是未使用EN/ENO 還是EN=1. 如果使用了EN/ENO ,則功能調(diào)用必須是形式調(diào)用。 out:=LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) 使用 FBD

53、 調(diào)用相同的功能: 2.調(diào)用基本功能塊和導(dǎo)出的功能塊 基本功能塊 基本功能塊具有內(nèi)部狀態(tài)。即使輸入值不變,每次操作的輸出值也可以不同。例如,計(jì)數(shù)器的輸出值是遞增的。 功能塊可有多個(gè)輸出值(輸出)。 導(dǎo)出的功能塊 導(dǎo)出的功能塊 (DFB) 具有與基本功能塊相同的特性。用戶可以采用編程語言 FBD、LD、IL 和/或 ST 創(chuàng)建這類功能塊。 參數(shù) 將值傳入或傳出功能塊需要“輸入和輸出”。這些輸入/輸出稱為形式參數(shù)。 當(dāng)前過程狀態(tài)傳遞給形式參數(shù)。它們稱為實(shí)際參數(shù)。 以下各項(xiàng)可用作功能塊輸入的實(shí)際參數(shù): · 變量 · 地址 · 數(shù)值 以下各項(xiàng)可用作功能塊輸出的實(shí)際參數(shù):

54、· 變量 · 地址 實(shí)際參數(shù)的數(shù)據(jù)類型必須與形式參數(shù)的數(shù)據(jù)類型匹配。唯一的例外是泛型形式參數(shù),其數(shù)據(jù)類型由實(shí)際參數(shù)決定。 處理泛型 ANY_BIT 形式參數(shù)時(shí),可使用數(shù)據(jù)類型為 INT 或 DINT(不是 UINT 和 UDINT)的實(shí)際參數(shù)。 這是對(duì) IEC 61131-3 的補(bǔ)充,且必須顯式啟用。 示例: 允許: AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2); 不允許: AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (在這種情況下,必須使用

55、AND_INT。) AND_ARRAY_WORD (ArrayInt, .); (在這種情況下,必須使用 INT_ARR_TO_WORD_ARR (.); 執(zhí)行顯式類型轉(zhuǎn)換。) 并非所有形式參數(shù)都必須賦值。必須賦值的形式參數(shù)類型可參見下表: 參數(shù)類型EDTSTRINGARRAYANY_ARRAYIODDTSTRUCTFBANYEFB:VAR_IN_OUT+/+EFB:Output-+-/+DFB:Input-/-/-DFB:VAR_IN_OUT+/+DFB:Output-+/-/+ 需要實(shí)際參數(shù)- 不需要實(shí)際參數(shù)/ 不適用如果沒有為形式參數(shù)賦值,則會(huì)使用初始值執(zhí)行功能塊。如果尚未定義初始值,則

56、使用缺省值 (0)。 如果形式參數(shù)未被賦值,并且功能塊/DFB 被多次實(shí)例化,則后續(xù)實(shí)例將以舊值運(yùn)行。 公共變量 除輸入和輸出外,某些功能塊還具有公共變量。 這些變量向功能塊傳輸統(tǒng)計(jì)值(不受過程影響的值)。這些值用于設(shè)置功能塊的參數(shù)。 公共變量是對(duì) IEC 61131-3 的補(bǔ)充。 對(duì)公共變量的賦值是通過設(shè)置初始值或使用賦值操作來進(jìn)行的。 示例: 公共變量是通過功能塊的實(shí)例名稱和公共變量的名稱來讀取的。 示例: 私有變量 除輸入、輸出和公共變量外,某些功能塊還提供了私有變量。 與公共變量類似,私有變量用于將統(tǒng)計(jì)值(不受過程影響的值)傳輸給功能塊。 用戶程序不能訪問私有變量。只有動(dòng)態(tài)數(shù)據(jù)表才能訪問此類型的這些

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論