EB500宏指令使用手冊(cè)_第1頁(yè)
EB500宏指令使用手冊(cè)_第2頁(yè)
EB500宏指令使用手冊(cè)_第3頁(yè)
EB500宏指令使用手冊(cè)_第4頁(yè)
EB500宏指令使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、EasyBuilder 500 Macro使用說(shuō)明一 :文檔說(shuō)明作 者 : 程志剛時(shí) 間 : 2003年 1月版權(quán)所有 : 臺(tái)灣威綸科技有限公司概 要 : 此文檔為宏指令功能模塊的使用文檔 , 說(shuō)明宏語(yǔ)言的語(yǔ)法 , 宏語(yǔ)言的使用 , 宏指令 源程序編寫(xiě)的操作方法與操作順序 ,使用文檔包含以下幾個(gè)部分 :宏語(yǔ)言文本說(shuō)明 :宏語(yǔ)言使用說(shuō)明宏指令程序與 PLC 的通信 (包括本地地址 LocalBit,LocalWord:宏指令操作說(shuō)明有關(guān)宏指令使用的若干說(shuō)明編譯錯(cuò)誤提示程序示例源程序二 :宏語(yǔ)言文本說(shuō)明 :1: 常數(shù)與變量a:常量(1十進(jìn)制常量(2十六進(jìn)常數(shù)(3單引號(hào)內(nèi)的 ASCII 常量 (字符

2、常量 (4 邏輯常量:True (非零 ,False(零 b:變量(a變量命名必須以字每開(kāi)頭 , 其它字符可以是字每或數(shù)字 , 不得超過(guò) 32個(gè)字符的長(zhǎng)度(b 數(shù)據(jù)類(lèi)型(char 字符類(lèi)型(int 整數(shù)類(lèi)型 32-bit(short 短整數(shù)類(lèi)型 16-bit(float 浮點(diǎn)數(shù)類(lèi)型(bool 邏輯類(lèi)型2: 運(yùn)算符(1賦值運(yùn)算賦值運(yùn)算: =(2算術(shù)運(yùn)算 :加 :+減 :-乘 :*除 :/余 :mod ,(3關(guān)系運(yùn)算 :小于 :<小于等于 :<=大于 :>大于等于: >=等于: =不等于: <>(4邏輯運(yùn)算 :邏輯于 :And邏輯或 :Or邏輯 Xor邏輯非 :

3、Not(5位運(yùn)算:(a移位運(yùn)算左移 : <<右移 : >>(b邏輯位運(yùn)算位與運(yùn)算 : &位或運(yùn)算 : |位異或運(yùn)算 : 位取反運(yùn)算 : 3: 運(yùn)算符的優(yōu)先級(jí) :表達(dá)式中執(zhí)行多個(gè)操作時(shí) , 每一部分都按規(guī)定的順序計(jì)算 , 這種運(yùn)算符間的計(jì)算次序 , 叫運(yùn)算符的優(yōu)先級(jí)(1同一種類(lèi)運(yùn)算符的優(yōu)先順序 (按左到右 , 依次從高到低 算術(shù)運(yùn)算符 : Æ( * , / Æ ( mod Æ ( + , - 移位運(yùn)算 : 其出現(xiàn)的優(yōu)先順序 , 按在表達(dá)式中出現(xiàn)的次序從左到右進(jìn)行處理關(guān)系運(yùn)算符 : 其出現(xiàn)的優(yōu)先順序 , 按在表達(dá)式中出現(xiàn)的次序從左到右進(jìn)

4、行處理 邏輯運(yùn)算符 : Not Æ And Æ Or Æ Xor,(2算術(shù)運(yùn)算 優(yōu)先于 位運(yùn)算位運(yùn)算 優(yōu)先于 關(guān)系運(yùn)算邏輯運(yùn)算 優(yōu)先于 賦值運(yùn)算4: 數(shù)組(1數(shù)組 :只支持靜態(tài)一維數(shù)組 , 形式為 :一維數(shù)組 : 數(shù)組名 數(shù)組的大小 數(shù)組的下標(biāo)為整數(shù)其可取值區(qū)間為 0 - 4294967295下標(biāo)最小值 :零下標(biāo)最小值 :數(shù)組的大小 1如 : ArrayMAX MAX =100下標(biāo)最小值 :0下標(biāo)最小值 :99 ( 100 15: 表達(dá)式(a 運(yùn)算對(duì)象(1常量(2變量(3數(shù)組元素(4函數(shù)調(diào)用(b 表達(dá)式組成表達(dá)式由運(yùn)算對(duì)象和運(yùn)算符按一定規(guī)則組合而成6: 語(yǔ)句(1:

5、說(shuō)明語(yǔ)句(a type name說(shuō)明 name 的類(lèi)型(b type nameconstant 說(shuō)明 name 類(lèi)型的一維數(shù)組(2: 賦值語(yǔ)句形式為 :變量 =表達(dá)式(3 邏輯判斷與分支(a 單行形式If Condition Then Statements Else elseStatements End If(b 塊形式If Condition Then Statements Else If Condition n Thenelseifstatements . Else elsestatements End If語(yǔ)法說(shuō)明 :Condition 必要 , 為一條件表達(dá)式 , 條件表達(dá)式值為零 ,

6、 則視為假 FALSE, 條件表達(dá)式值為非零 , 則視為真 TRUEStatements 在塊形式中是選參數(shù) , 在單行形式中 , 且沒(méi)有 Else 子句時(shí) , 為必要 參數(shù) , 該語(yǔ)句在 Condition 為真是時(shí)執(zhí)行Condition-n 可選 , 解釋同 Conditionelseifstatements 可選 , 一條或多條語(yǔ)句 , 在相對(duì)應(yīng)的 Condition n為 TRUE 時(shí)執(zhí) 行Elsestatements 可選 , 在上述 Condition 和 Conditionn 都不為 TRUE 時(shí)執(zhí)行(C 多重分支選擇 Select Case 語(yǔ)句Select Case Test

7、ExpressionCase expression nstarements-n Case Elseelsestatements End Select語(yǔ)法說(shuō)明:TestExpression 必要 , 任何數(shù)值或字符串表達(dá)式Expressionn 如果有 Case 出現(xiàn) 則為必要參數(shù) , 為字符串或整形數(shù)值常量Statementsn 可選 , 為一條或多條語(yǔ)句 , 當(dāng) TestExpression 和對(duì)應(yīng)的expressionn 相等時(shí) , 則執(zhí)行Elsestatements 可選 , 為一條或多條語(yǔ)句 , 當(dāng) TestExpression 不和任一expressionn 相等時(shí) , 則執(zhí)行(4循

8、環(huán)控制a For Next 語(yǔ)句 :常用于次數(shù)已確定的情況 , 當(dāng)為 To 時(shí) , 此時(shí)按步長(zhǎng)遞增 , 當(dāng)為 Down 時(shí) , 此時(shí)按步長(zhǎng) 遞減For counter = start To(Down end Step step Statements Next counter 語(yǔ)法說(shuō)明:Counter 必要 , 循環(huán)計(jì)數(shù)器的數(shù)值變量 , 該變量只能是整形或字符形變量 Start 必要 ,Counter 的初值End 必要, Counter 的終值Step 可選 ,Counter的步長(zhǎng) , 如果沒(méi)有指定 , 則缺省為 1, 只能是數(shù)值Statements 可選 ,For和 Next 之間的語(yǔ)句塊

9、, 該語(yǔ)句塊將執(zhí)行指定的次數(shù) b While Wend語(yǔ)句由條件控制的循環(huán) , 條件放置于循環(huán)頂部邏輯表達(dá)式值為 TRUE 或 FALSE, 當(dāng)指 定的條件為 TRUE 時(shí) , 執(zhí)行循環(huán)體中的語(yǔ)句塊While conditionstatementsWend語(yǔ)法說(shuō)明Condition 必要 , 邏輯表達(dá)式 , 其計(jì)算結(jié)果為 TRUE 或 FALSE,condition 為 TRUE 時(shí)執(zhí)行循環(huán)體Statements 可選 , 為一語(yǔ)句塊 , 當(dāng) condition 的值為 TRUE 時(shí)(5break ;用于循環(huán)和條件選擇語(yǔ)句中 , 執(zhí)行到此語(yǔ)句時(shí) , 退出循環(huán)或條件語(yǔ)句(6continue用于循

10、環(huán) , 執(zhí)行到此語(yǔ)句時(shí) , 中斷這一次循環(huán)的執(zhí)行 , 到下一次循環(huán)執(zhí)行(7return函數(shù)返回語(yǔ)句7: 關(guān)鍵字集 :宏語(yǔ)言規(guī)定的 , 用作特定的用途 , 不能作為函數(shù)名 , 數(shù)組名 , 變量名等的記號(hào)+ , - ,* , / , mod, >= ,>, < ,<=, <> ,= ,And,Or,Xor,Not,<<,>>,= ,& ,|,If ,Then,Else,EndIf,Select ,Case ,For, To, Down Step, Next, while, wend break ,continue,return三

11、:宏語(yǔ)言使用說(shuō)明1: 局部變量及全局變量(1:局部變量 : 在一個(gè)函數(shù)范圍內(nèi)有效 ,(2:全局變量 : 從定義或聲明的地方開(kāi)始到宏指令程序結(jié)束有效在一個(gè)函數(shù)內(nèi)當(dāng)有相同名稱(chēng)的全局變量與局部變量時(shí) , 是局部變量有效2: 變量賦初值及常量(1:變量賦初值(a在聲明語(yǔ)句中直接進(jìn)行賦值值 e.g: int h = 9(b 在聲明或定義后 , 用賦值語(yǔ)句進(jìn)行變量的賦初值(2:數(shù)組變量的賦初值形式如 : int g10 = 1,2,3, , 3 初值用花括號(hào)括起來(lái) , 各數(shù)組分量用分號(hào)隔開(kāi) , 從左到右賦按數(shù)組下標(biāo)從零開(kāi)始的順 序賦給各數(shù)組分量 ,(3:常量 :宏語(yǔ)言支持 :十進(jìn)制整形常量十六進(jìn)制整形常量

12、 以 0x 開(kāi)頭字符形常量 ,邏輯常量 : True 代表真 , False代表假 ,3: 邏輯變量及表達(dá)式(1:邏輯變量 :它有真 (True,假 (False兩種取值的情況 , 所有非零的值認(rèn)為是真 (True,零值認(rèn)為是假 (False(2:表達(dá)式 :條件表達(dá)式的值為零值即為假 , 代表?xiàng)l件不成立 ,條件表達(dá)式的值為非零值即為真 , 代表?xiàng)l件成立4: 聲明語(yǔ)句(1:聲明語(yǔ)句在函數(shù)外聲明或定義全局變量 ,(2:聲明語(yǔ)句在函數(shù)內(nèi)聲明或定義局部變量 , 同時(shí)局部變量聲明語(yǔ)句在函數(shù)內(nèi)的最前面 , 其 間不能有其它的語(yǔ)句 , 否則會(huì)給出編譯錯(cuò)的提示For example :Macro_Comman

13、d main( char i ,i = 9/在 聲明語(yǔ)句間的非聲明語(yǔ)句 , 將給出編譯錯(cuò)的提示int g10For g2 = 0To 2g3 = 4Next g2End Macro_Command5: 函數(shù)調(diào)用及參數(shù)傳遞方式(1:函數(shù)調(diào)用 :被調(diào)用的函數(shù)須在調(diào)用函數(shù)的前面定義 , 否則將給出函數(shù)沒(méi)有定義的編譯錯(cuò)提示 For example :Macro_Command main( int i ,i = Func( i /將給出函數(shù) Func 沒(méi)有定義的編譯錯(cuò)誤提示End Macro_CommandSub int Func( int i int h = 9i = 9 * hReturn iEnd

14、 Sub(2:參數(shù)傳遞方式 :(a通過(guò)局部變量傳值的方式傳遞參數(shù)(b通過(guò)函數(shù)間共享全局變量的方式傳遞參數(shù)6: 主函數(shù)宏指令源程序有且只能有一個(gè)主函數(shù) , 它是宏指令程序開(kāi)始執(zhí)行的入口 , 其形式為 : Macro_Command 函數(shù)名 ( End Macro_Command四 : 宏指令程序與 PLC 的通信 (包括本地地址 LocalBit,LocalWord: 功能 : 使用庫(kù)函數(shù)實(shí)現(xiàn)與 Plc 的溝通在宏指令程序的計(jì)算與控制中當(dāng) Plc 地址類(lèi)型的變量參與時(shí) , 就通過(guò)庫(kù)函數(shù) GetData( 從 EasyView 連接的 Plc 中取數(shù)據(jù) , 通過(guò)庫(kù)函數(shù) SetData( 把結(jié)果數(shù)據(jù)

15、送到 EasyView 連接的 Plc 中, 這樣就把處理 plc 信息的繁雜工作交給了 GetData( 與 SetData( 等庫(kù)函數(shù)1: GetData(各 種 支 持 的 數(shù) 據(jù) 類(lèi) 型 DestData, CString strAddr_Type, int iAddr_Off, int iDataCount 說(shuō)明 :實(shí)現(xiàn)從 Plc 中取數(shù)據(jù) , 通過(guò)對(duì)話(huà)框填表的形式輸入?yún)?shù)說(shuō)明 :DestData 得數(shù)據(jù)的首址CString strAddr_Type Plc地址類(lèi)型和編碼方式int iAddr_Off Plc 地址偏移int iDataCount 數(shù)據(jù)項(xiàng)數(shù)返回值 : 沒(méi)有2: Set

16、Data(各種支持的數(shù)據(jù)類(lèi)型 DestData ,CString strAddr_Type , int iAddr_Off , int iDataCount 參數(shù)說(shuō)明 :DestData 送出去數(shù)據(jù)的首址CString strAddr_Type Plc地址類(lèi)型和編碼方式int iAddr_Off Plc 地址偏移int iDataCount 數(shù)據(jù)項(xiàng)數(shù)返回值 : 沒(méi)有五 :宏指令操作說(shuō)明1: 宏指令程序的編寫(xiě)分三步進(jìn)行 , 第一步 :在 EB500主界面中啟動(dòng)宏指令功能 模塊的第一個(gè)對(duì)話(huà)框 (MacroControlDlg第二步 :在 MacroControlDlg 對(duì)話(huà)框中進(jìn)行宏 指令間的拷貝

17、 , 刪除 , 編輯 , 調(diào)用 MacroWorkSpaceDlg 對(duì)話(huà)框進(jìn)行宏指令源程 序的編輯 ,第三步 :宏指令源程序的編輯 , 確定一條宏指 令的名稱(chēng) , 編號(hào) , 編譯 , 及排除編譯錯(cuò)誤 2: 宏指令源程序通信函數(shù)的編輯方法(1:輸入 : (第一步 : 在宏指令源程序要輸入 庫(kù)函數(shù)的地方 , 輸入關(guān)鍵字:”Insert” 或者把光標(biāo)置于要輸入庫(kù)函數(shù) 的地方 , 后呼叫 PlcCom 按鈕 , (第二步 : 在庫(kù)函數(shù)編輯對(duì)話(huà)框 , 進(jìn) 行庫(kù)函數(shù)的選擇和庫(kù)函數(shù)參數(shù)的設(shè) 置 , 按 Ok 按鈕完成此次庫(kù)函數(shù)的輸 入 , 按 Cancel 按鈕取消此次輸入操作(2:修改 :將光標(biāo)置于要修改

18、的庫(kù)函數(shù)上對(duì)其進(jìn)行修改 , 按 (1:的第一步 , 第二步操作即可(3:刪除 :把要?jiǎng)h除的庫(kù)函數(shù)選定 , 在鍵盤(pán)上按 Delete 鍵即可將其刪除3:宏指令觸發(fā)條件的確定 . 見(jiàn)圖 ”Trigger(Macro.bmp” (第 一 步 : 在 PlcControl 物件屬性對(duì) 話(huà)框中選擇控制類(lèi)型 為 Program, (第 二 步 : 在 PlcControl 物件屬性對(duì) 話(huà) 框 中 選 擇 一 個(gè) MacroID 并確定一個(gè)觸 發(fā)位六 :有關(guān)宏指令使用的若干說(shuō)明(1:宏指令程序存儲(chǔ)空間的限制一個(gè) eob 檔中所有宏指令存儲(chǔ)空間受公共窗口 0空間 大小的限制, 同時(shí)一個(gè)宏指令程序 中的局部變量

19、存儲(chǔ)空間最大為 4k,(2:最多可能執(zhí)行的宏指令條數(shù)的限制一個(gè) eob 檔中最多可以使用 256條宏指令程序 .(3:宏指令可能出現(xiàn)的死機(jī)情況宏指令程序中有死循環(huán) , 且死循環(huán)中沒(méi)有通信時(shí) .宏指令程序中數(shù)組數(shù)據(jù)使用 , 存儲(chǔ)空間越界時(shí) .(4:宏指令程序通信時(shí)的速度 .宏指令程序在有通信時(shí) , 它的執(zhí)行可能會(huì)有點(diǎn)慢 . 這是由于通信占用太多的時(shí)間所造成 的 .七 :編譯錯(cuò)誤提示1:錯(cuò)誤提示形式 :宏指令名稱(chēng) (: 編譯錯(cuò)誤編號(hào) 錯(cuò)誤提示當(dāng)編譯沒(méi)有通過(guò)時(shí) , 可以通過(guò)編譯錯(cuò)誤編號(hào),查找對(duì)錯(cuò)誤的說(shuō)明2:錯(cuò)誤描述 :(1: "語(yǔ)法錯(cuò) :" “ 'identifier&#

20、39;很多種情況會(huì)給出這條編譯錯(cuò)誤的提示 ,For example :Macro_Command main( char i ,程 /這是一個(gè)不支持的記號(hào) ,” 錯(cuò)誤提示為 : “ 語(yǔ)法錯(cuò) : 程 ”int gi /定義錯(cuò)For g2 = 0To 2g3 = 4Next g2End Macro_Command出現(xiàn)這條錯(cuò)誤提示時(shí) , 一般都是多了 , 或少了一個(gè)符號(hào) , 很容易改正錯(cuò)誤(2: 'identifier' :" 數(shù)組沒(méi)有被指定大小 " ;只支持靜態(tài)數(shù)組 , 定義數(shù)組變量時(shí) , 必須指定數(shù)組的大小For example :Macro_Command m

21、ain( char iint gi/定義錯(cuò)For g2 = 0To 2g3 = 4Next g2End Macro_Command(3: strError = "重定義錯(cuò) : " 'identifier'函數(shù) , 變量名字在其作用域內(nèi)必須是唯一的 ,For example :Macro_Command main( int g10 , gFor g2 = 0To 2g3 = 4Next g2End Macro_Command(4: "函數(shù)名錯(cuò) :" 'identifier'關(guān)鍵字 , 常量等不能用作函數(shù)名For exampl

22、e :Macro_CommandIf ( int g10 , gFor g2 = 0To 2g3 = 4Next g2End Macro_Command(5: "括號(hào)不配對(duì) " ;左括號(hào) , 右括號(hào)不成對(duì)出現(xiàn)For example :Macro_Command main /少左括號(hào)int g10 , gFor g2 = 0To 2g3 = 4Next g2End Macro_Command(6: "If后沒(méi)有表達(dá)式 " ;(7: "If語(yǔ)句沒(méi)有 Then" ;(8: "沒(méi)有 EndIf 語(yǔ)句 " ;(9: End

23、If前面沒(méi)有出現(xiàn)配對(duì)的 If" ;(10: "非法的 Else 語(yǔ)句 " ;If 語(yǔ)法結(jié)構(gòu)為 :If 條件表達(dá)式 Then Else If 條件表達(dá)式 Then EndIf不服合這種表達(dá)形式的 If 選擇語(yǔ)句都是不合法的 , 將給出對(duì)應(yīng)的編譯錯(cuò)(11: "Case后面應(yīng)為常量 " ;(12:"Select后少 Case 關(guān)鍵字 " ;(13:"Select Case 后少表達(dá)式 " ;(14:"沒(méi)有 End Select語(yǔ)句(15: 非法的 Case 語(yǔ)句 " ;(16:"E

24、nd Select前面沒(méi)有出現(xiàn)配對(duì)的 Select" ;Select Case語(yǔ)法結(jié)構(gòu)為 :Select Case 表達(dá)式Case 數(shù)值常量Case 數(shù)值常量Case 數(shù)值常量Case ElseEnd Select不服合這種表達(dá)形式的 Select Case選擇語(yǔ)句都是不合法的 , 將給出對(duì)應(yīng)的編譯錯(cuò)(17:"For循環(huán)不配對(duì) ,Next 前應(yīng)有 For 關(guān)鍵字 " ;(18:"此處應(yīng)為整型或字符型變量 " ;(19: "此處應(yīng)為賦值號(hào) " ;(20:"此處應(yīng)為關(guān)鍵字 To" ;(21:"沒(méi)有

25、Next 語(yǔ)句 " ;For 循環(huán)語(yǔ)法結(jié)構(gòu)為 :For 變量 =初值 To 終值 Step 步長(zhǎng) Next 變量 不服合這種表達(dá)形式的 For 循環(huán)語(yǔ)句都是不合法的 , 將給出對(duì)應(yīng)的編譯錯(cuò)(22:"While循環(huán)不配對(duì) ,Wend 前應(yīng)有 While 關(guān)鍵字 " ;(23: 沒(méi)有 Wend 語(yǔ)句 " ;While 循環(huán)語(yǔ)法結(jié)構(gòu)為 :While 條件表達(dá)式Wend不服合這種表達(dá)形式的 While 循環(huán)語(yǔ)句都是不合法的 , 將給出對(duì)應(yīng)的編譯錯(cuò)(24: "break語(yǔ)句非法 " ;Break 語(yǔ)句只能在 For 循環(huán) ,While 循環(huán) ,

26、Select Case 選擇結(jié)構(gòu)中使用且 Break 單獨(dú)成一語(yǔ)句行(25:"Continue語(yǔ)句非法 " ;Continue 語(yǔ)句只能在 For 循環(huán) , While循環(huán)中使用且 Continue 單獨(dú)成一語(yǔ)句行(26:"表達(dá)式不正確 " ;(27: 運(yùn)算對(duì)象非法 " ;在表達(dá)式中出現(xiàn)與運(yùn)算符不匹配的運(yùn)算對(duì)象時(shí) , 將給出此編譯錯(cuò)For example :Macro_Command main( int g10 , gFor g2 = 0To 2g3 = 4 + 程N(yùn)ext g2End Macro_Command(28:"此處應(yīng)為 S

27、ub" ;(29: "此處應(yīng)為 Macro_Command " ;函數(shù)的定義形式為 :Sub(Macro_Command 數(shù)據(jù)類(lèi)型 函數(shù)名 ( End Sub(Macro_Command不服合這種形式的函數(shù)定義 , 將給出對(duì)應(yīng)的編譯錯(cuò)誤(30:"參數(shù)個(gè)數(shù)不對(duì) " ;(31:"實(shí)參數(shù)據(jù)類(lèi)型不匹配 " ;(32:"實(shí)參不對(duì) "函數(shù)調(diào)用時(shí) , 實(shí)參與形參必須在數(shù)據(jù)類(lèi)型 , 參數(shù)個(gè)數(shù)上一一對(duì)應(yīng)才能編譯通過(guò)否則將給出對(duì)應(yīng)的編譯錯(cuò)(33: "沒(méi)有定義的函數(shù) :" ;(34:數(shù)組分量表達(dá)形式非法(3

28、5:數(shù)組定義非法 "(36數(shù)組下標(biāo)非法的表示 , 將給出對(duì)應(yīng)的編譯錯(cuò)(37: "沒(méi)有定義 , 或聲名的變量 " ;只能使用已經(jīng)定義了的或聲名了的變量和函數(shù) , 否則將給出對(duì)應(yīng)的編譯錯(cuò)(38: "不支持的 plc 地址類(lèi)型 " ;庫(kù)函數(shù) GetData( , SetData( 的參數(shù)中有 plc 地址類(lèi)型信息 , 當(dāng) plc 地址類(lèi)型不 是此種 plc 支持的地址類(lèi)型時(shí) , 將給出對(duì)應(yīng)的編譯錯(cuò)(39: 應(yīng)為整型 , 字符形變量或常量 " ;數(shù)組的表達(dá)形式為 :定義時(shí) : 數(shù)組名 常量 (常量描述數(shù)組的大小 使用時(shí) : 數(shù)組名 整形 ,

29、字符形變量或常量 不服合這種表達(dá)形式(40: "變量定義或聲名語(yǔ)句的前面不能有執(zhí)行語(yǔ)句 "For example : int g10For g2g3 = 4int h , kNext g2End(41: "移位運(yùn)算中 , 操作數(shù)不能為浮點(diǎn)數(shù) "(42: "函數(shù)應(yīng)返回一個(gè)值 " ;(43 "函數(shù)不應(yīng)返回一個(gè)值 "(44: "運(yùn)算中不能有 Float 型數(shù)據(jù) " ;(45: "plc地址錯(cuò) " ;(46: "堆棧不能超過(guò) 4k" ;(47:" 宏指令

30、程序入口只能有一個(gè) " ;(48 "宏指令入口函數(shù)不唯一 : " 'identifier'宏指令的入口函數(shù)只能有一個(gè) , 形式為 :Macro_Command 函數(shù)名 ( End Macro_Command八 :程序示例源程序1: For循環(huán) , 各種表達(dá)式 (算術(shù) , 移位 , 邏輯 , 關(guān)系表達(dá)式 Macro_Command main( int a10int b10int ib0= (400 + 400 << 2 / 401b1= 22 *2 - 30 % 7b2= 111 >> 2b3= 403 > 9 + 3

31、>= 9 + 3 < 4 + 3 <= 8 + 8 = 8 b4= Not 8 + 1And 2 + 1Or 0 + 1Xor 2b5= 405And 3And Not 0b6= 8 & 4 + 4 & 4 + 8 | 4 + 8 4b7= 6 - 4b8= 0x11b9= 409For i = 0To 4Step 1If( a0 = 400 ThenGetData(a0 ,3x_Bin ,0, 9SetData(b0 ,3x_Bin ,11, 10End IfNextEnd Macro_Command2: while ,if , break , contin

32、ueMacro_Command main( int a10int b10int ib0= (400 + 400 << 2 - 401 + 99 b1= 100b2= 111b3= 403b4= 404b5= 405b6= 406b7= 407b8= 400 % 20 + 21b9= 409i = 5While i = 5 - 20 % 3SetData(b1 ,3x_Bin ,11, 1 If b1 = 100ThenBreakSetData(b0 ,3x_Bin ,12, 1 i = 4ContinueSetData(b0 ,3x_Bin ,13, 1 End IfWendEnd

33、 Macro_Command3: 全局變量 , 函數(shù)調(diào)用char gSub int sin(int j ,int kint ySetData(j ,3x_Bin ,14, 1GetData(y ,3x_Bin ,15, 1g = yReturn yEnd SubMacro_Command main( int a10int b10int ib0= (400 + 400 << 2 - 401 + 99 b1= 100b2= 111b3= 403b4= 404b5= 405b6= 406b7= 407b8= 400 % 20 + 21b9= 409i = 5While i = 5 - 2

34、0 % 3SetData(b1 ,3x_Bin ,11, 1If b1 = 100ThenSetData(b0 ,3x_Bin ,12, 1 i = sin(b2,b3 SetData(g ,3x_Bin ,17, 1 SetData(i ,3x_Bin ,16, 1 End IfWendEnd Macro_Command4: 控制自已char iint jSub ClientProgram(int flag End SubMacro_Command main( int i10int j2int wchar xFor w = 0To 9iw = 0NextGetData(i0 ,3x_Bin

35、,1, 4 w = i0 + i1 + i2 + i3 If w > 150ThenFor w = 0To 3iw = 0NextSetData(i0 ,3x_Bin ,1, 4 x = 0SetData(x ,1x_Bin ,3, 1GetData(i0 ,3x_Bin ,212, 2 x = 0SetData(x ,0x_Bin ,4, 1ElseFor w = 0To 3iw = iw + 2*wNextSetData(i0 ,3x_Bin ,1, 4 End IfEnd Macro_Command5: If結(jié)構(gòu)Macro_Command main( int K10int jFor

36、 j = 0To 10kj = jNextEB500 Macro 使用說(shuō)明 If k0 = 0ThenSetData(k4,3x_Bin ,0, 1End IfIf k0 = 0ThenSetData(k4,3x_Bin ,0, 1ElseSetData(k5,3x_Bin ,0, 1End IfIf k1 = 0ThenSetData(k3,3x_Bin ,1, 1Else If k1 = 1ThenSetData(k1,3x_Bin ,2, 1End IfIf k1 = 0ThenSetData(20, 3x_Bin ,3, 1Else If k1 = 2ThenSetData(k1,3x

37、_Bin ,4, 1ElseSetData(k2,3x_Bin ,5, 1End IfEnd Macro_Command6: Select結(jié)構(gòu)Macro_Command main( int K10int jFor j = 0To 10kj = jNextSelect Case k1Case 1j = 1BreakCase 2j = 2BreakEnd SelectSetData(j,3x_Bin ,0, 1End Macro_CommandMacro_Command main( int K10int jj = 90 * 1k4 = 8Select Case k4Case 1j = 1Break

38、Case 3j = 2EB500 Macro 使用說(shuō)明 End SelectSetData(j,3x_Bin ,0, 1End Macro_Command7: while結(jié)構(gòu)Macro_Command main( char Toggleflagint a13int b14int c = 4848char i = 0b0 = 13While b0ai = 20 + i * 10If ai = 120Thenc =200BreakEnd Ifi = i + 1WendSetData(c ,3x_Bin ,2, 1End Macro_CommandMacro_Command main( int a2

39、50int b250int i = 1a0 = 1b0 = 2While a0While b0bi = 10 + i * 10If bi = 210ThenSetData(i ,3x_Bin ,0, 2bi = 200BreakEnd Ifi = i + 1WendIf bi = 200ThenSetData(b0 ,3x_Bin ,0, 4BreakEnd IfSetData(b0 ,3x_Bin ,0, 3WendEnd Macro_CommandMacro_Command main( int K10int j ,ij = 0EB500 Macro 使用說(shuō)明 i = 0While kikj

40、 = j + 1j = j + 1If j = 5ThenBreakEnd IfSetData(k0,3x_Bin ,0, 5End Macro_Command8: Break ,Continue結(jié)構(gòu)(1Macro_Command main( int K10int jFor j = 0To 10If j % 2 = 0Thenkj = 5ElseBreakEnd IfNextSetData(k0,3x_Bin ,0, 10End Macro_Command(2Macro_Command main( char Toggleflagint a13int b14int c = 4848char i

41、= 0b0 = 13While b0ai = 20 + i * 10If ai = 120Thenc =200i = i + 1ContinueEnd Ifi = i + 1If c = 200ThenSetData(c ,3x_Bin ,2, 1BreakEnd IfWendEnd Macro_Command9: 數(shù)組結(jié)構(gòu)Macro_Command main( int a25int b25EB500 Macro 使用說(shuō)明 int i b0 = 13 For i = 0 To b0 Step 1 ai = 20 + i * 10 Next SetData(a0 ,3x_Bin ,0,13 En

42、d Macro_Command 10: 其它 int x = 0 int y float f Sub char func1( char Toggleflag int a14 int b14 int c = 4848 char i b0 = 13 Toggleflag = ( b0 Xor 0x89 + (100 /2 << 2 - 123 >> 2 If (b0 Xor 0x89 + (100 /2 << 2 - 123 >> 2 = 0 Then SetData(Toggleflag ,3x_Bin ,0,1 End If Toggleflag

43、 = 1 b0 = 13 For i = 0 To b0 Step 1 ai = 20 + i * 10 Next If i < b0 - 1 Then GetData(a0 ,0x_Bin ,0,1 If a0 <> 1 Then End If Else SetData(c ,3x_Bin ,2,1 End If While 1 If Toggleflag = 1 Then Break End If Wend Return Toggleflag End Sub Macro_Command main( int a250 int b250 int i GetData(a0 ,3x_Bin ,2,2 a0 = a0 + 5 a1 = a1 + 5 If a0

溫馨提示

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

評(píng)論

0/150

提交評(píng)論