版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、www.PLC第三十章 宏指令說明230.1 宏指令的結(jié)構(gòu)230.2 宏指令的語法430.2.1 常量和變量430.2.2 運(yùn)算符7語句1030.3.1 定義語句1030.3.2 賦值語句1130.3.3 邏輯運(yùn)算語句1130.3.4 循環(huán)語句1330.3.4 其他控制命令15子函數(shù)16內(nèi)置函數(shù)功能1730.330.430.530.5.1 數(shù)算函數(shù)1830.5.2 數(shù)據(jù)轉(zhuǎn)換函數(shù)2430.5.3 數(shù)據(jù)操作函數(shù)2930.5.4 位狀態(tài)轉(zhuǎn)換3430.5.5 通訊有關(guān)的函數(shù)37怎樣建立和執(zhí)行宏指令5230.6.1 怎樣建立一個(gè)宏指令5230.6.2 執(zhí)行宏指令5730.630.7 使用
2、宏指令時(shí)的注意事項(xiàng)5830.8 使用自由協(xié)議去控制一個(gè)設(shè)備5930.9 編譯錯(cuò)誤提示信息6730.10 宏指令范例程序781www.PLC第三十章 宏指令說明宏指令提供了應(yīng)用程序之外附加的你所需要的功能。在 MT8000 人機(jī)界面運(yùn)行時(shí),宏指令可 以自動(dòng)的執(zhí)行這些命令。它可以擔(dān)負(fù)執(zhí)行譬如復(fù)雜的運(yùn)算、字符串處理,和使用者與工程之 間的交流等功能。本章主要介紹宏指令的語法、如何使用和編程方法等功能。希望通過本章 的說明,能夠使各位能夠快速的掌握 EB8000 軟件提供的強(qiáng)大的宏指令功能。30.1宏指令的結(jié)構(gòu)宏指令是由各種語句組成的。這些語句包含常數(shù)、變量和各種運(yùn)算符。這些語句放置在
3、特定 的順序位置以執(zhí)行后達(dá)到一個(gè)希望的執(zhí)行結(jié)果。宏指令的結(jié)構(gòu)一般為以下格式:2全局變量聲明可選 Sub Function Block Declarations(子函數(shù)聲明)可選 局部變量聲明 End Sub(結(jié)束子函數(shù))macro_command main()主函數(shù)必須 局部變量聲明 各式語句www.PLC一個(gè)宏指令必須有一個(gè)且只有一個(gè)主函數(shù),用來開始宏指令的執(zhí)行。格式為:macro_command 函數(shù)名稱()end macro_command變量聲明必須放在宏指令語句的前面,否則如果語句放置在變量聲明的前面,將會(huì)造成宏指 令無法編譯通過。局部變量一般用在宏指令主函數(shù)或者自定
4、義的子函數(shù)中。它的只在指定的函數(shù)中有 效。全局變量一般是定義在所有宏指令函數(shù)的前面,且它在整個(gè)宏指令中均具有有效性。部 變量和全局變量被定義為相同的名稱時(shí),只有局部變量有效。下面就是一個(gè)簡(jiǎn)單的宏指令,其中就包含了變量聲明和功能執(zhí)行。macro_command main()short pressure = 10/局部變量聲明SetData(pressure, Allen-Bradley DF1, N7, 0, 1)/功能執(zhí)行end macro_command3end macro_command結(jié)束主函數(shù)必須 www.PLC30.2宏指令的語法30.2.1 常量和變量30.2.1.
5、1 常量常量是一個(gè)可以被各式語句直接使用的固定的數(shù)據(jù)。有如下格式:下面即為一個(gè)簡(jiǎn)單的常量使用的范例。macro_command main()short A, B/聲明A和B為短整型變量A = 1234B = 0x12/1234 和 0x12 即為常量 end macro_command 變量4常量類型 使用說明 舉例 十進(jìn)制整型數(shù) 345, -234, 0, 23456十六進(jìn)制數(shù) 必須以 0x 開頭 0x3b, 0xffff, 0x237字符型 字符必須使用單引號(hào) a, data, 函數(shù)名稱布爾型 true, falsewww.PLC變量是一個(gè)代表著各種資料的名
6、稱。在宏指令中,這些資料可以隨著宏指令語句執(zhí)行的結(jié)果 改變而改變。變量的命名規(guī)則1.必須以英文字母開頭2.變量名成長(zhǎng)度不超過 32 個(gè)字符3.系統(tǒng)保留寄存器名稱不能作為變量名稱。下面為 5 種不同的變量類型:變量聲明變量必須在使用前聲明。所以,在宏指令,所有的變量都必須在語句使用前都被聲明完成。聲明變量時(shí),先定義變量的類型,后面再跟著變量名稱。如下范例:intashortb, switchfloatpressure5變量類型 描述 范圍 Bool 布爾型 1 bit (一個(gè)位)0, 1Char 字符型 8 bits (一個(gè)字節(jié))127Short 短整型 16 bits (一個(gè)字)32767In
7、t雙整型 32 bits (雙字)2147418112Float 浮點(diǎn)型 32 bits (雙字)www.PLC數(shù)組聲明宏指令支持一維數(shù)組(下標(biāo)從 0 開始)。聲明數(shù)組變量時(shí),先定義數(shù)組變量的類型,變量名稱, 接著就是該數(shù)組變量的個(gè)數(shù),變量個(gè)數(shù)必須放置在“”符號(hào)中。數(shù)組變量的長(zhǎng)度為 14096。 一個(gè)宏指令中只支持 4096 個(gè)變量。如下范例:inta10shortb20, switch30floatpressure15數(shù)組的下標(biāo)最小為 0,最大下標(biāo)為(數(shù)組的長(zhǎng)度-1)如下范例:char data 100/數(shù)組變量的長(zhǎng)度是 100所以: 最小的數(shù)組為“data0”,最大的數(shù)組為
8、“data99”,即 100-1=99。變量和數(shù)組初始化有兩種方法可以讓變量初始化:1. 使用語句中的賦值語句(=)如下范例:int afloat b36www.PLCa = 10b0 = 12. 聲明變量時(shí)直接賦值 char a = 5, b = 9數(shù)組變量的聲明是一個(gè)特殊的情況。一個(gè)完整的數(shù)組被初始化時(shí),可以在數(shù)組變量聲明時(shí),將數(shù)據(jù)放置在波形括號(hào)“”里面,各數(shù)據(jù)使用逗號(hào)分開。如下所示:float data4 = 11, 22, 33, 44/這樣 data0 = 11, data1 = 運(yùn)算符 運(yùn)算符通常被用來指定數(shù)據(jù)是如何作的。在任何一個(gè)語句中,運(yùn)算符
9、左邊的變量結(jié)果均 依據(jù)運(yùn)算符右邊的條件而獲得。7數(shù)算符 描述 舉例 +加 A = B + C-減 A = B C*乘 A = B * C運(yùn)算符 描述 舉例 =賦值運(yùn)算符 pressure = 10www.PLC移位和位運(yùn)算符通常被用來操作字符型變量、短整型變量和雙整型變量的位。在一個(gè)語句中, 這些運(yùn)算符的優(yōu)先權(quán)是在從該語句的左邊到右邊依此執(zhí)行的。即在語句中左邊位置的優(yōu)先執(zhí) 行,依次從左到右執(zhí)行。8移位運(yùn)算符 描述 舉例 往左移動(dòng)指定的位數(shù) A = B 往右移動(dòng)指定的位數(shù) A = B 8邏輯運(yùn)算符 描述 舉例 And與 if A 5 then C = 10Or或 if A = 1
10、0 or B 5 then C = 10Xor異或 if A xor 256 then B = 5Not非 if not A then B = 5比較運(yùn)算符 描述 舉例 小于 if A 10 then B = 5= 10 then B = 5大于 if A =大于或者等于 if A = 10 then B = 5=等于 if A = 10 then B = 5不等于 if A 10 then B = 5/除 A = B / C%求余 (返回剩余數(shù))A = B % 5www.PLC所有運(yùn)算符的優(yōu)先權(quán)上述所有運(yùn)算符的優(yōu)先權(quán)從高到低詳細(xì)如下所述:位于圓括號(hào)里面的運(yùn)算符最優(yōu)先數(shù)算符移位
11、和位運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符關(guān)鍵詞下面的關(guān)鍵詞為宏指令保留使用。這些均不能用來作為變量名稱、數(shù)組名稱或者函數(shù)名稱等。 +, -, *, /, %, =, , =, , , =, and, or, xor, not, ,=, &, |, , exit, macro_command, for, to, down, step, next, return, bool, short, int, char, float, void, if, then,else, break, continue, set, sub, end, while, wend, true, false9位運(yùn)算符 描述 舉
12、例 &位與運(yùn)算 A = B & 0xf|位或運(yùn)算 A = B | C位異或運(yùn)算 A = B C位取反運(yùn)算 A = Bwww.PLCSQRT, CUBERT, LOG, LOG10, SIN, COS, TAN, COT, SEC, CSC, ASIN, ACOS, ATAN,BIN2BCD, BCD2BIN, DEC2ASCII, FLOAT2ASCII, HEX2ASCII, ASCII2DEC, ASCII2FLOAT,ASCII2HEX, FILL, RAND, DELAY, SWAPB, SWAPW, LOBYTE, HIBYTE, LOWORD,HIWORD, GET
13、BIT, SETBITON, SETBITOFF, INVBIT, ADDSUM, XORSUM, CRC, INPORT,OUTPORT, POW, GetError, GetData, GetDataEx, SetData, SetDataEx30.3語句30.3.1 定義語句 這個(gè)定義語句包含了變量和數(shù)組的聲明。正式的格式如下:類型名稱當(dāng)定義一個(gè)名稱的類型時(shí)舉例:int A/定義了變量 A 為雙整型格式類型 數(shù)組名稱數(shù)組長(zhǎng)度 當(dāng)定義數(shù)組名稱的類型時(shí) 舉例:int B10定義了一維數(shù)組變量 B 的長(zhǎng)度為 10,類型為雙整型10www.PLC30.3.2 賦值語句 賦值語句使
14、用賦值運(yùn)算符將賦值運(yùn)算符右邊表達(dá)式運(yùn)算的結(jié)果放置到運(yùn)算符左邊的變量中。一個(gè)運(yùn)算表達(dá)式是由變量、常量和各種運(yùn)算符組成,執(zhí)行后產(chǎn)生一個(gè)新的數(shù)據(jù)。變量 = 表達(dá)式 舉例A = 2這樣變量 A 就被賦值為 230.3.3 邏輯運(yùn)算語句 邏輯運(yùn)算語句是根據(jù)邏輯(布爾)表達(dá)式的結(jié)果來執(zhí)行相應(yīng)的動(dòng)作。它的語句如下所示:?jiǎn)涡懈袷脚e例:if a = = 2 thenb = 1else11if thenStatementselseStatementsend ifwww.PLCb = 2end if區(qū)塊格式舉例:if a = = 2 thenb = 1else if a = = 3b = 2else
15、b = 3end if語法描述:12if必須用在該語句的開始部分 If thenStatementselse if thenStatementselseStatementsend ifwww.PLC30.3.4 循環(huán)語句循環(huán)語句依據(jù)循環(huán)條件來反復(fù)的執(zhí)行一個(gè)任務(wù)。循環(huán)語句有兩種表達(dá)方式。 for-next 語句 For-next 語句通常用來執(zhí)行次數(shù)固定的循環(huán)任務(wù)。一個(gè)變量用作為任務(wù)執(zhí)行次數(shù)的計(jì)數(shù)器和結(jié)束循環(huán)任務(wù)執(zhí)行的條件。這個(gè)變量為固定執(zhí)行的次數(shù)。語法結(jié)構(gòu)如下:或者13for Counter = to step Statementsnext Counter必要條
16、件。 這是一個(gè)控制語句。當(dāng)為 0 時(shí),即為“FALES”,(條件為假);當(dāng)為非 0 時(shí),即為“True”(條件為真)。 then當(dāng)執(zhí)行為“TRUE”(真)時(shí),必須放置在需要執(zhí)行的語句之前。Statements在區(qū)塊形式中是可選擇的參數(shù),在單行形式中,且沒有 else 子句時(shí),為必要參數(shù),該語句在為真時(shí)執(zhí)行。 else if可選,一條或多條語句,在相對(duì)應(yīng)的為 true 時(shí)執(zhí)行。 可選,解釋同 Conditionelse可選,在上述 Condition 和 Condition n 都不為 true 時(shí)執(zhí)行。 end if必須。在一個(gè) if-then 語句中使用這個(gè)來結(jié)束 if-then 語句。 w
17、ww.PLC舉例:for a = 0 to 10 step 2b = anext a語法描述:14for必須用在該語句的開始部分。 Counter必要,循環(huán)計(jì)數(shù)器的數(shù)值變量,該變量的結(jié)果用來計(jì)數(shù)循環(huán)的次數(shù)。 必要,Counter 的初值。 to/down必要。用來決定步長(zhǎng)是遞增還是遞減。 This determines if the increments or decrements the .“to” 遞增 by .“down” 遞減 by .必要,Counter 的終值。測(cè)試點(diǎn)。當(dāng)大于該值時(shí),宏指令將結(jié)束這個(gè)循環(huán)任務(wù)。 step可選,指定的步長(zhǎng),指定為 1 以外的數(shù)值。 St
18、epValue可選,Counter 的步長(zhǎng),只能是數(shù)值,如果沒有指定,則預(yù)設(shè)為 1。 Statements可選,for 和 next 之間的語句區(qū)塊,該語句區(qū)塊將執(zhí)行所指定的次數(shù)。 next必須的。 Counter可選。 for Counter = down step Statementsnext Counterwww.PLC while-wend 語句While-wend 語句是用來執(zhí)行不確定次數(shù)的循環(huán)任務(wù)。設(shè)置一個(gè)變量用來判斷結(jié)束循環(huán)的條 件。當(dāng)條件為“True”時(shí),該語句將一直循環(huán)執(zhí)行直到條件變?yōu)椤癋alse”。語法結(jié)構(gòu)如下:舉例:while a 10a
19、= a + 10wend語法描述:30.3.4 其他控制命令 15break用在 for-next 和 while-wend 語句中。當(dāng)遇到此語句時(shí),立即跳轉(zhuǎn)到語句的 結(jié)束部分。 while必須用在該語句的開始部分。 continue必要條件。 這是一個(gè)控制語句。當(dāng)為“True”時(shí),開始執(zhí)行循環(huán)命令, 當(dāng)為“False”時(shí),結(jié)束執(zhí)行循環(huán)命令。 return value當(dāng)判斷為“TRUE”時(shí),繼續(xù)執(zhí)行循環(huán)命令。 wendWhile-wend 語句的結(jié)束標(biāo)志。 while Statementswendwww.PLC30.4 子函數(shù)使用子函數(shù)可以有效的減少循環(huán)命令的代碼,子函數(shù)必須在
20、使用前被定義,且可以使用任何 變量和語句類型。在主函數(shù)中,將子函數(shù)的參數(shù)放置在子函數(shù)名稱后面的圓括號(hào)中,即可調(diào) 用子函數(shù)。子函數(shù)被執(zhí)行后,將執(zhí)行后的結(jié)果返回到主函數(shù)需要的賦值語句或者條件中。其 語法結(jié)構(gòu)如下:舉例:sub int Add(int x, int y)int resultresult = x +yreturn resultend submacro_command main()16sub type (parameters) Local variable declarations Statementsreturn valueend subcontinue用在 for-next 和 wh
21、ile-wend 語句中。當(dāng)遇到此語句時(shí),立即結(jié)束當(dāng)前循環(huán) 命令而開始執(zhí)行下一個(gè)循環(huán)命令。 www.PLCinta = 10, b = 20, sumsum = Add(a, b)end macro_command語法描述:30.5 內(nèi)置函數(shù)功能EasyBuilder8000 軟件宏指令中本身提供了一些內(nèi)建的函數(shù)用來從 PLC 獲取數(shù)據(jù)和傳輸數(shù)據(jù)到 PLC、數(shù)據(jù)處理和數(shù)算等。17sub必須用在該子函數(shù)的開始部分。 type必須的。用來定義子函數(shù)執(zhí)行后返回的數(shù)據(jù)類型。 (parameters)可選。這些參數(shù)保留了從主函數(shù)傳入的數(shù)值。這些被傳入的參數(shù)必須使用與在參數(shù)變量聲明的類型一
22、致。 舉例: sub int MyFunction(int x, int y). x 和 y 必須為從主函數(shù)中傳過來的雙整型數(shù)據(jù)格式的數(shù)據(jù)。調(diào)用此子函數(shù)的語句格式大致為這樣: ret = MyFunction(456, pressure)當(dāng)執(zhí)行這個(gè)子函數(shù)后,一個(gè)雙整型數(shù)據(jù)將會(huì)返回給變量“ret”。 Local variable declaration除了被傳遞的參數(shù)之外,子函數(shù)中使用的變量必須事先聲明。在上面的“舉例”中,X 和 Y 就是子函數(shù)可以使用的變量。全局變量也可以用在 子函數(shù)中。 Statements需要執(zhí)行的語句。 return value用來將執(zhí)行的結(jié)果返回給調(diào)用語句。這個(gè)結(jié)果可
23、以是一個(gè)常數(shù)或者變 量。返回后同時(shí)也結(jié)束了子函數(shù)的執(zhí)行。 end sub必須的。用來結(jié)束子函數(shù)。 www.PLC30.5.1數(shù)算函數(shù)18函數(shù)名稱 SIN語法 SIN(source, result)描述 三角函數(shù)的正弦計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié) 果的“result”必須為變量。 舉例 macro_command main() float source, result函數(shù)名稱 SQRT語法 SQRT(source, result)描述 開平方根。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié)果的“result” 必須為變量。數(shù)據(jù)來源必須為一
24、個(gè)正數(shù)。 舉例 macro_command main() float source, resultSQRT(15, result)source = 9.0SQRT(source, result)/執(zhí)行后result = 3.0end macro_commandwww.PLC19語法名稱 TAN函數(shù)名稱 COS語法 COS(source, result)描述 三角函數(shù)的余弦計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié) 果的“result”必須為變量。 舉例 macro_command main() float source, resultCOS(90, resul
25、t)/result is 0source = 60GetData(source, Local HMI, LW, 0, 1)COS(source, result)/result is 0.5end macro_commandSIN(90, result)/result is 1source = 30SIN(source, result)/result is 0.5end macro_commandwww.PLC20函數(shù)名稱 COT語法 COT(source, result)描述 三角函數(shù)的余切計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié) 果的“result”必須為
26、變量。 舉例 macro_command main() float source, resultCOT(45, result)/result is 1source = 60COT(source, result)/result is 0.5774語法 TAN(source, result)描述 三角函數(shù)的正切計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié) 果的“result”必須為變量。 舉例 macro_command main() float source, resultTAN(45, result)/result is 1source = 60TAN(source, resu
27、lt)/result is 1.732end macro_commandwww.PLC21函數(shù)名稱 CSC語法 CSC(source, result)描述 反三角函數(shù)中反余割計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存 放結(jié)果的“result”必須為變量。 舉例 macro_command main()float source, result函數(shù)名稱 SEC語法 SEC(source, result)描述 反三角函數(shù)中反正割計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存 放結(jié)果的“result”必須為變量。 舉例 macro_command main()
28、float source, resultSEC(45, result)/result is 1.414source = 60SEC(source, result)/if source is 60, result is 2end macro_commandend macro_commandwww.PLC22函數(shù)名稱 ACOS函數(shù)名稱 ASIN語法 ASIN(source, result)描述 反三角函數(shù)中反正弦計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存 放結(jié)果的“result”必須為變量。 舉例 macro_command main() float source,
29、resultASIN(0.8660, result)/result is 60source = 0.5ASIN(source, result)/result is 30end macro_commandCSC(45, result)/result is 1.414source = 30CSC(source, result)/result is 2end macro_commandwww.PLC23函數(shù)名稱 ATAN語法 ATAN(source, result)描述 反三角函數(shù)中反正切計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存 放結(jié)果的“result”必須為變量。
30、舉例 macro_command main() float source, resultATAN(1, result)/result is 45source = 1.732ATAN(source, result)/result is 60語法 ACOS(source, result)描述 反三角函數(shù)中反余弦計(jì)算。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存 放結(jié)果的“result”必須為變量。 舉例 macro_command main() float source, resultACOS(0.8660, result)/result is 30source = 0.5ACOS(sour
31、ce, result)/result is 60end macro_commandwww.PLC30.5.2 數(shù)據(jù)轉(zhuǎn)換函數(shù)24函數(shù)名稱 BIN2BCD語法 BIN2BCD(source, result)描述 將 BIN 格式的數(shù)據(jù)(source)轉(zhuǎn)換為 BCD 格式的數(shù)據(jù)(result)。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié)果的“result”必須為變量。 舉例 macro_command main()short source, result函數(shù)名稱 RAND語法 RAND(result)描述 產(chǎn)生一個(gè)隨即數(shù) 存放結(jié)果的“result”必須為變量。 舉例 ma
32、cro_command main() short resultRAND (result)/result is not a fixed value when executes macro every timeend macro_commandend macro_commandwww.PLC25函數(shù)名稱 BCD2BIN語法 BCD2BIN(source, result)描述 將 BCD 格式的數(shù)據(jù)(source)轉(zhuǎn)換為 BIN 格式的數(shù)據(jù)(result)。數(shù)據(jù)來源“source”可以是常數(shù)或者變量,但是存放結(jié)果的“result”必須為變量。 舉例 macro_command mai
33、n()short source, resultBCD2BIN(0x1234, result)/result is 1234source = 0x5678BCD2BIN(source, result)/result is 5678end macro_commandBIN2BCD(1234, result)/result is 0x1234source = 5678BIN2BCD(source, result)/result is 0x5678end macro_commandwww.PLC26函數(shù)名稱 DEC2ASCII語法 DEC2ASCII(source, resultsta
34、rt, len)描述 將十進(jìn)制的數(shù)據(jù)(source)轉(zhuǎn)換為 ASCII 格式的數(shù)據(jù),并存放在一個(gè)一維數(shù)組(result)中。len 表示這個(gè)轉(zhuǎn)換后的字符串的長(zhǎng)度,同時(shí)這個(gè)長(zhǎng)度也取決于存放結(jié)果的一維數(shù)組的數(shù)據(jù)格式。例如:如果 result 一維數(shù)組的格式為“char”, (字符型,長(zhǎng)度為一個(gè)字節(jié)),則長(zhǎng)度為“字節(jié)數(shù)*len”。如果 result 一維數(shù)組的格式為“short”(短整型數(shù)據(jù),2 個(gè)字節(jié)),則長(zhǎng)度為“word*len”。依此類推。 轉(zhuǎn)換后的第一個(gè)字符放在 resultstart中,第二個(gè)字符放在 resultstart+1中, 最后一個(gè)字符放在 resultstart+(len-1)
35、中。 source 和 len 可以是常量或者變量,單數(shù) result 必須為變量。start 也必須為常 數(shù)。 舉例 macro_command main() short sourcechar result14 short result24source = 5678DEC2ASCII(source, result10, 4)/result10 is 5, result11 is 6, result12 is 7, result13 is 8/the length of the string (result1) is 4 bytes( = 1 * 4)DEC2ASCII(source, res
36、ult20, 4)/result20 is 5, result21 is 6, result22 is 7, result23 is 8/the length of the string (result2) is 8 bytes( = 2 * 4)www.PLC27函數(shù)名稱 HEX2ASCII語法 HEX2ASCII(source, resultstart, len)描述 十六進(jìn)制格式數(shù)據(jù)(source)轉(zhuǎn)換為 ASCII 格式的數(shù)據(jù),并將結(jié)果存放在一個(gè)一維數(shù)組(result)中。len 表示這個(gè)轉(zhuǎn)換后的字符串的長(zhǎng)度,同時(shí)這個(gè)長(zhǎng)度也取決于存放結(jié)果的一維數(shù)組的數(shù)據(jù)格式。例如:如果
37、 result 一維數(shù)組的格式為“char”,(字符型,長(zhǎng)度為一個(gè)字節(jié)),則長(zhǎng)度為“字節(jié)數(shù)*len”。如果 result 一維數(shù)組的格式為“short”(短整型數(shù)據(jù),2 個(gè)字節(jié)),則長(zhǎng)度為“word*len”。依此類推。 source 和 len 可以是常量或者變量,單數(shù) result 必須為變量。start 也必須為常 數(shù)。 舉例 macro_command main() short sourcechar result4source = 0x5678 DEC2ASCII(source, result0, 4)/result0 is 5, result1 is 6, result2 is 7,
38、 result3 is 8end macro_commandend macro_commandwww.PLC28函數(shù)名稱 ASCII2HEX語法 ASCII2HEX (sourcestart, result, len)描述 將 ASCII 字符型數(shù)據(jù)(source)轉(zhuǎn)換為十六進(jìn)制的數(shù)據(jù),并存放在 result 變量中。 字符的長(zhǎng)度即為 len 的數(shù)據(jù)。第一個(gè)字符存放在 sourcestart中。 函數(shù)名稱 ASCII2DEC語法 ASCII2DEC(sourcestart, result, len)描述 將字符型 ASCII 數(shù)據(jù)(source)轉(zhuǎn)換為十進(jìn)制格式的數(shù)據(jù),并存放在
39、 result 變量中。ASCII 的長(zhǎng)度即為 len,第一個(gè)字符的位置即為 sourcestart的數(shù)據(jù)。source 和 len 可以是常量或者變量,單數(shù) result 必須為變量。start 也必須為常 數(shù)。 舉例 macro_command main() char source4short resultsource0 = 5source1 = 6source2 = 7source3 = 8ASCII2DEC(source0, result, 4) /result is 5678end macro_commandwww.PLC30.5.3數(shù)據(jù)操作函數(shù)29函數(shù)名稱 FILL
40、語法 FILL(sourcestart, preset, count)描述 依序?qū)㈩A(yù)設(shè)值(preset)放置到一維數(shù)組 sourcestart開始的數(shù)組中,放置的數(shù)據(jù)個(gè)數(shù)有 count 決定。 source 和 start 必須為變量,preset 可以為一個(gè)常量或者變量。 舉例 macro_command main() char result4char presetsource 和 len 可以是常量或者變量,單數(shù) result 必須為變量。start 也必須為常 數(shù)。 舉例 macro_command main() char source4short resultsource0 = 5so
41、urce1 = 6source2 = 7source3 = 8ASCII2DEC(source0, result, 4) /result is 0x5678end macro_commandwww.PLC30函數(shù)名稱 SWAPB語法 SWAPB(source, result)描述 將一個(gè) 16 位字的高低字節(jié)顛倒,并將結(jié)果存放在 result 變量中。 Source 可以是常量或者是變量,單數(shù) result 必須為變量。 舉例 macro_command main() short source, resultSWAPB(0x5678, result)/result is 0x7
42、856source = 0x123SWAPB(source, result)/result is 0x2301end macro_commandFILL(result0, 0x30, 4)/result0 is 0x30, result1 is 0x30, , result2 is 0x30, , result3 is 0x30preset = 0x31FILL(result0, preset, 2) /result0 is 0x31, result1 is 0x31end macro_commandwww.PLC31函數(shù)名稱 LOBYTE語OBYTE(source, resu
43、lt)描述 獲取一個(gè) 16 位數(shù)據(jù)的低字節(jié),并且放置在 result 變量中。 source 可以是常量或者變量,但是 result 必須為變量。 舉例 macro_command main() short source, resultLOBYTE(0x1234, result)/result is 0x34source = 0x123函數(shù)名稱 SWAPW語法 SWAPW(source, result)描述 將一個(gè) 32 位雙整型數(shù)據(jù)的高位字和地位字顛倒,并將結(jié)果存放在 result 變量中。 source 可以是常量或者變量,但是 result 必須為變量。 舉例 macro_command
44、 main() int source, resultSWAPB(0x12345678, result)/result is 0x78561234source = 0x12345SWAPB(source, result)/result is 0x23450001end macro_commandwww.PLC32函數(shù)名稱 LOWORD語OWORD(source, result)描述 獲取一個(gè) 32 位數(shù)據(jù)的低位字,并將結(jié)果放置在 result 變量中。 source 可以是常量或者變量,但是 result 必須為變量。 舉例 macro_command main()int sou
45、rce, result函數(shù)名稱 HIBYTE語法 HIBYTE(source, result)描述 獲取一個(gè) 16 位數(shù)據(jù)的高字節(jié),并且放置在 result 變量中。 source 可以是常量或者變量,但是 result 必須為變量。 舉例 macro_command main() short source, resultHIBYTE(0x1234, result)/result is 0x12source = 0x123HIBYTE(source, result)/result is 0x01end macro_commandLOBYTE(source, result)/result is
46、0x23end macro_commandwww.PLC33函數(shù)名稱 HIWORD語法 HIWORD(source, result)描述 獲取一個(gè) 32 位數(shù)據(jù)的高位字,并將結(jié)果放置在 result 變量中。 source 可以是常量或者變量,但是 result 必須為變量。 舉例 macro_command main() int source, resultHIWORD(0x12345678, result)/result is 0x1234source = 0x12345HIWORD(source, result)/result is 0x0001end macro_com
47、mandLOWORD(0x12345678, result)/result is 0x5678source = 0x12345LOWORD(source, result)/result is 0x2345end macro_commandwww.PLC30.5.4位狀態(tài)轉(zhuǎn)換34函數(shù)名稱 SETBITON語法 SETBITON(source, result, bit_pos)描述 將數(shù)據(jù)或者變量(source)指定的位地址設(shè)置為1,并將改變后的數(shù)據(jù)存放在 result變量中。 source和bit-pos可以是常量或者變量,但是result必須為變量。 函數(shù)名稱 GETBIT語法
48、 GETBIT(source, result, bit_pos)描述 獲取數(shù)據(jù)或者變量(source)指定的位的狀態(tài),并將結(jié)果放置在result變量中。 result的數(shù)據(jù)將為1或者0。 source和bit_pos可以是常量或者變量,但是result必須為變量。 舉例 macro_command main() int source, resultshort bit_posGETBIT(9, result, 3)/result is 1source = 4bit_pos = 2GETBIT(source, result, bit_pos)/result is 1end macro_commandwww.PLC35函數(shù)名稱 SETBITOFF語法 SETBITOFF(source, result, bit_pos)描述 將數(shù)據(jù)或者變量(source)指定的位地址設(shè)置為0,并將改變后的數(shù)據(jù)存放在 result變量中。 source和bit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026春季學(xué)期江西贛州市第二中學(xué)招聘頂崗教師考試備考題庫(kù)及答案解析
- 2026浙江溫州市平陽縣順溪鎮(zhèn)招聘編外人員1人筆試備考題庫(kù)及答案解析
- 蔬菜配送公司出納管理制度(3篇)
- 晚間烘焙活動(dòng)策劃方案(3篇)
- 沙雅餐飲活動(dòng)策劃方案(3篇)
- 贛州通天巖風(fēng)景名勝區(qū)開發(fā)管理有限責(zé)任公司公開招聘勞務(wù)外包制工作人員備考考試題庫(kù)及答案解析
- 2026山東事業(yè)單位統(tǒng)考棗莊市市直招聘初級(jí)綜合類崗位58人考試參考試題及答案解析
- 2026云南昆明高新區(qū)第二幼兒園招聘6人考試參考題庫(kù)及答案解析
- 2026年騰沖市綜合行政執(zhí)法局城市管理協(xié)管員招聘(16人)參考考試題庫(kù)及答案解析
- 2026上海楊浦區(qū)中意工程創(chuàng)新學(xué)院外聯(lián)崗位招聘1人筆試模擬試題及答案解析
- 蘇州高新區(qū)(虎丘區(qū))市場(chǎng)監(jiān)督管理局公益性崗位招聘1人考試參考題庫(kù)及答案解析
- 2026年度新疆兵團(tuán)草湖項(xiàng)目區(qū)公安局招聘警務(wù)輔助人員工作(100人)考試參考題庫(kù)及答案解析
- LNG氣化站安裝工程施工設(shè)計(jì)方案
- 湖南省張家界市永定區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 生物質(zhì)能燃料供應(yīng)合同
- 環(huán)境監(jiān)測(cè)崗位職業(yè)技能考試題庫(kù)含答案
- 路燈基礎(chǔ)現(xiàn)澆混凝土檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 化學(xué)品作業(yè)場(chǎng)所安全警示標(biāo)志大全
- 礦卡司機(jī)安全教育考試卷(帶答案)
- 中建淺圓倉(cāng)漏斗模板支撐架安全專項(xiàng)施工方案
- 新能源材料與器件PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論