2024ABB ROBOTICS RAPID語(yǔ)言概覽手冊(cè)_第1頁(yè)
2024ABB ROBOTICS RAPID語(yǔ)言概覽手冊(cè)_第2頁(yè)
2024ABB ROBOTICS RAPID語(yǔ)言概覽手冊(cè)_第3頁(yè)
2024ABB ROBOTICS RAPID語(yǔ)言概覽手冊(cè)_第4頁(yè)
2024ABB ROBOTICS RAPID語(yǔ)言概覽手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩148頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ROBOTICS技術(shù)參考手冊(cè)RAPID語(yǔ)言概覽Tracebackinformation:Workspace24AversionCheckedin2024-03-01Skribentaversion5.5.019RAPIDRobotWare6.15.06文檔編號(hào):3HAC050947-010S。 規(guī)格如有更改,恕不另行知。技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽3HAC050947-010修訂:S5。技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽3HAC050947-010修訂:S5。目錄目錄手冊(cè)概述 7如何查閱本手冊(cè) 9基本RAPID編程 11程序結(jié)構(gòu) 111.1.1簡(jiǎn)介 111.1.2基本元素 131.1.3模塊 171.1.4系統(tǒng)模塊User 201.1.5程序 21程序數(shù)據(jù) 27數(shù)據(jù)類型 27數(shù)據(jù)聲明 29表達(dá)式 35表達(dá)式類型 35運(yùn)用表達(dá)式中的數(shù)據(jù) 37運(yùn)用表達(dá)式中的聚合體 38運(yùn)用表達(dá)式中的函數(shù)調(diào)用 39運(yùn)算符之間的優(yōu)先級(jí) 411.3.6語(yǔ)法 421.4 指令 44控制程序流程 45各種指令 47運(yùn)動(dòng)設(shè)置 491.8 運(yùn)動(dòng) 531.9 輸入輸出信號(hào) 611.10通信 641.11中斷 68錯(cuò)誤恢復(fù) 72UNDO 75系統(tǒng)&時(shí)間 781.15數(shù)學(xué) 79文件操作函數(shù) 82RAPID配套指令 83校準(zhǔn)&服務(wù) 86字符串函數(shù) 87多任務(wù) 89步退執(zhí)行 94運(yùn)動(dòng)編程和I/O編程 97坐標(biāo)系 97機(jī)械臂的工具中心接觸點(diǎn)(TCP) 97用于確定工具中心接觸點(diǎn)(TCP)位置的坐標(biāo)系 98用于定義工具方向的坐標(biāo)系 1042.2 程序執(zhí)行期間定位..............................................................................................2.2.1簡(jiǎn)介......................................................................................................2.2.2工具位置和姿態(tài)的插補(bǔ)..............................................................................2.2.3拐角路徑插補(bǔ)..........................................................................................2.2.4獨(dú)立軸...................................................................................................2.2.5軟伺服...................................................................................................2.2.6停止和重啟.............................................................................................2.3 與邏輯指令同步.................................................................................................2.4 機(jī)械臂配置.......................................................................................................2.5 機(jī)械臂運(yùn)動(dòng)模型.................................................................................................2.6 運(yùn)動(dòng)監(jiān)控/碰撞檢測(cè).............................................................................................2.7 奇異點(diǎn).............................................................................................................

107107108111115117118119122125129132。。目錄2.8 優(yōu)化加速度限制.................................................................................................2.9 全局區(qū)域..........................................................................................................2.10I/O原理............................................................................................................索引

1341351401431456 RAPID語(yǔ)言概覽3HAC050947-010S手冊(cè)概述手冊(cè)概述關(guān)于本手冊(cè)

FlexPendantIRC5入手。本手冊(cè)描述了RobotWare6。手冊(cè)用法本手冊(cè)應(yīng)在編程過(guò)程中使用。本手冊(cè)的閱讀對(duì)象本手冊(cè)適用于有一些編程經(jīng)驗(yàn)的人員,例如,機(jī)械臂程序員。各章結(jié)構(gòu)本手冊(cè)由以下各章組成:章節(jié)目錄基本RAPID編程本章將簡(jiǎn)單介紹按編程用指令選擇清單分類的所有指令、有返回值程序和數(shù)據(jù)類型。另外,還包含語(yǔ)法概述,對(duì)離線編程尤為有用,以及對(duì)語(yǔ)言內(nèi)部細(xì)節(jié)的說(shuō)明。運(yùn)動(dòng)編程和I/O編程本章介紹了機(jī)械臂的坐標(biāo)系、速率及執(zhí)行期間的其他運(yùn)動(dòng)特征。術(shù)語(yǔ)表術(shù)語(yǔ)表能幫助理解。參考信息參考文檔文檔編號(hào)操作手冊(cè)-帶FlexPendant的IRC53HAC050941-010技術(shù)參考手冊(cè)-RAPID指令、函數(shù)和數(shù)據(jù)類型3HAC050917-010技術(shù)參考手冊(cè)-RAPID語(yǔ)言內(nèi)核3HAC050946-010技術(shù)參考手冊(cè)-系統(tǒng)參數(shù)3HAC050948-010應(yīng)用手冊(cè)-控制器軟件IRC53HAC050798-010修訂版版本號(hào)描述-隨RobotWare6.0發(fā)布。A隨RobotWare6.01發(fā)布。TriggJIOs,參見(jiàn)第54頁(yè)的特定位置處啟用輸出或中斷。B隨RobotWare6.02一同發(fā)布。為數(shù)據(jù)類型添加的三角函數(shù)dnum,參見(jiàn)第79頁(yè)的算術(shù)函數(shù)。有關(guān)添加的TriggDataCopy、TriggDataReset和TriggDataValid,參見(jiàn)第54頁(yè)的特定位置處啟用輸出或中斷。有關(guān)增設(shè)的指令SaveCfgData,參見(jiàn)第84頁(yè)的保存配置數(shù)據(jù)。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 73HAC050947-010修訂:S手冊(cè)概述續(xù)前頁(yè)版本號(hào)描述C隨RobotWare6.03發(fā)布。第61頁(yè)的輸入輸出信號(hào)。D隨RobotWare6.04發(fā)布。。細(xì)微糾正。E隨RobotWare6.05一起發(fā)布。撤銷指令DitherAct和DitherDeact。更新了第81頁(yè)的矩陣函數(shù)細(xì)微糾正。F隨RobotWare6.06發(fā)布。第83頁(yè)的RAPID配套指令第95頁(yè)的步退執(zhí)行的行為更新了第132頁(yè)的奇異點(diǎn)細(xì)微糾正。G隨RobotWare6.07發(fā)布。添加了CrossProd、Max和Min至第79頁(yè)的算術(shù)函數(shù)。H隨RobotWare6.08發(fā)布。細(xì)微糾正。更新了第111頁(yè)的拐角路徑插補(bǔ)一節(jié)。J隨RobotWare6.09發(fā)布。I/OK隨RobotWare6.11發(fā)布。添加StrFormat至第87頁(yè)的字符串函數(shù)。L隨RobotWare6.12發(fā)布。添加了關(guān)于無(wú)制動(dòng)閘獨(dú)立碰撞停止的信息。M隨RobotWare6.13發(fā)布。pos第35頁(yè)的算術(shù)表達(dá)式。PPMainPProutine息。N隨RobotWare6.13.02發(fā)布。澄清了向后執(zhí)行和執(zhí)行錯(cuò)誤的限制。P隨RobotWare6.14發(fā)布。pos第35頁(yè)的算術(shù)表達(dá)式。Q隨RobotWare6.15.03發(fā)布。GetNextOption。TriggAbsJ。R隨RobotWare6.15.04發(fā)布。添加了新的矩陣指令。S隨RobotWare6.15.06發(fā)布。新增了新的Fit指令。8 RAPID語(yǔ)言概覽3HAC050947-010S如何查閱本手冊(cè)如何查閱本手冊(cè)書(shū)面約定

示教器上的程序:FlexPendant示教器中隱藏的特定控制字碼,如表明程序開(kāi)始和結(jié)束的字碼;以標(biāo)準(zhǔn)格式打印出來(lái)的數(shù)據(jù)聲明和程序聲明,如VARnumreg1。在本手冊(cè)說(shuō)明中,所有指令、函數(shù)和數(shù)據(jù)類型的名稱都要用等寬字體表示,如TPWrite。變量、系統(tǒng)參數(shù)和功能的名稱用斜體表示。所列事件號(hào)示例中的注釋不譯(即使翻譯本手冊(cè)時(shí)也一樣不譯)。語(yǔ)法規(guī)則

用簡(jiǎn)化語(yǔ)法和形式語(yǔ)法對(duì)指令和函數(shù)進(jìn)行說(shuō)明。若您是用FlexPendant示教器編程,則由于機(jī)械臂自身能保證所用語(yǔ)法的正確性,因此通常只需了解簡(jiǎn)化語(yǔ)法。如下為一種含指令TPWrite的簡(jiǎn)化語(yǔ)法示例。TPWriteString[\Num]|[\Bool]|[\Pos]|[\Orient][\Dnum]括號(hào)中不含強(qiáng)制性參數(shù)。用方括號(hào)[]將可選參數(shù)括起來(lái),但可忽略這些參數(shù)?;ハ嗯懦獾膮?shù)不能同時(shí)存在于同一指令中,在同一指令中就要用豎線|隔開(kāi)。上述示例采用了如下參數(shù):String為強(qiáng)制性參數(shù)。Num、Bool、Pos、Orient和Dnum為可選參數(shù)。Num、Bool、Pos、Orient和Dnum互相排斥。TPWrite[String':=']<expression(IN)ofstring>['\'Num':='<expression(IN)ofnum>]|['\'Bool':='<expression(IN)ofbool>]|['\'Pos':='<expression(IN)ofpos>]|['\'Orient':='<expression(IN)oforient>]['\'Dnum':='<expression(IN)ofdnum]';'互相排斥的參數(shù)不能同時(shí)存在于同一指令中,在同一指令中就要用豎線|隔開(kāi)。用單引號(hào)(')將為獲得正確語(yǔ)法而寫(xiě)出的符號(hào)括起來(lái)。數(shù)說(shuō)明。用特殊語(yǔ)法EBNF編寫(xiě)語(yǔ)言和特定指令的基本元素。規(guī)則不變,而且還有所增加。符號(hào)::=等同于被定義為。至于尖角括號(hào)<>中的文字,將另起一行單獨(dú)說(shuō)明。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 93HAC050947-010修訂:S如何查閱本手冊(cè)續(xù)前頁(yè)示例GOTO<identifier>';'<identifier>::=<ident>|<ID><ident>::=<letter>{<letter>|<digit>|'_'}10 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.1.1基本RAPID編程程序結(jié)構(gòu)簡(jiǎn)介指令本程序由多個(gè)對(duì)機(jī)械臂工作加以說(shuō)明的指令構(gòu)成。因此,不同操作對(duì)應(yīng)的是不同的指令,如,移動(dòng)機(jī)械臂對(duì)應(yīng)一個(gè)指令,設(shè)置輸出對(duì)應(yīng)一個(gè)指令。指令通常包含多個(gè)相關(guān)參數(shù),這些參數(shù)可定義按特定指令會(huì)出現(xiàn)的情況。如,重置輸出的指令包括一個(gè)明確要重置哪個(gè)輸出的參數(shù),如Resetdo5。確定這些參數(shù)的方式如下:數(shù)值,如5或4.6;數(shù)據(jù)索引,如reg1;表達(dá)式,如5+reg1*2;函數(shù)調(diào)用,如Abs(reg1);串值,如"ProducingpartA"。程序程序分為三類—無(wú)返回值程序、有返回值程序和軟中斷程序。無(wú)返回值程序用作子程序。有返回值程序會(huì)返回一個(gè)特定類型的數(shù)值。此程序用作指令的參數(shù)。設(shè)置一個(gè)輸入,若發(fā)生對(duì)應(yīng)中斷,則自動(dòng)執(zhí)行該輸入。數(shù)據(jù)可按數(shù)據(jù)形式保存信息,如工具數(shù)據(jù),包含對(duì)應(yīng)工具的所有相關(guān)信息,如工具的工具中心接觸點(diǎn)及其重量等;數(shù)值數(shù)據(jù),也有多種用途,如計(jì)算待處理的零件量等。數(shù)據(jù)分為多種類型,不同類型所含的信息也各有不同,如工具、位置和負(fù)載等。由于此類數(shù)據(jù)是可創(chuàng)建的,且可賦予任意名稱,因此其數(shù)量不受限(除來(lái)自內(nèi)存的限制外)。既可遍布于整個(gè)程序中,也可能只在某一程序的局部。數(shù)據(jù)分為三類—常量、變量和永久數(shù)據(jù)對(duì)象。常量表示的是靜態(tài)值,只能通過(guò)人為方式賦予新值。另外,在程序執(zhí)行期間,也可賦予變量一個(gè)新值。據(jù)對(duì)象的當(dāng)前值。其他特征

語(yǔ)言中還有其他特征,如下所示:程序參數(shù)算術(shù)表達(dá)式和邏輯表達(dá)式自動(dòng)錯(cuò)誤處理器模塊化程序

下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 113HAC050947-010修訂:S1基本RAPID編程簡(jiǎn)介續(xù)前頁(yè)多任務(wù)處理這種語(yǔ)言不區(qū)分大小寫(xiě),如同一字母的大小寫(xiě)形式無(wú)區(qū)別。12 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程基本元素1.1.2基本元素標(biāo)識(shí)符保留字空格和換行符

用標(biāo)識(shí)符對(duì)模塊、程序、數(shù)據(jù)和標(biāo)簽命名,如:MODULEmodule_namePROCroutine_name()VARposdata_name;label_name:標(biāo)識(shí)符中的首個(gè)字符必須為字母,其余部分可采用字母、數(shù)字或下劃線(_)組成。任一標(biāo)識(shí)符最長(zhǎng)不超過(guò)32個(gè)字符,每個(gè)字符都很重要。字符相同的標(biāo)識(shí)符相同,除非字符是大寫(xiě)形式。下列字為保留字。它們?cè)赗APID語(yǔ)言中都有特殊意義,因此不能用作標(biāo)識(shí)符。此外,還有許多預(yù)定義數(shù)據(jù)類型名稱、系統(tǒng)數(shù)據(jù)、指令和有返回值程序也不能用作標(biāo)識(shí)符。ALIASANDBACKWARDCASECONNECTCONSTDEFAULTDIVDOELSEELSEIFENDFORENDFUNCENDIFENDMODULEENDPROCENDRECORDENDTESTENDTRAPENDWHILEERROREXITFALSEFORFROMFUNCGOTOIFINOUTLOCALMODMODULENOSTEPINNOTNOVIEWORPERSPROCRAISEREADONLYRECORDRETRYRETURNSTEPSYSMODULETESTTHENTOTRAPTRUETRYNEXTUNDOVARVIEWONLYWHILEWITHXORRAPID編程語(yǔ)言是一種自由格式語(yǔ)言,也就是說(shuō)任何地方都可用空格,除了:標(biāo)識(shí)符中;保留字中;數(shù)值中;占位符中。只要可用空格的地方就可用換行符、制表符和換頁(yè)符,在注釋中除外。標(biāo)識(shí)符、保留字和數(shù)值之間必須用空格、換行符或換頁(yè)符隔開(kāi)。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 133HAC050947-010修訂:S1基本RAPID編程基本元素續(xù)前頁(yè)數(shù)值數(shù)值有如下兩種表示方式:3、-100或3E2等;小數(shù),如3.5、-0.345或-245E-2等。數(shù)值必須在《浮點(diǎn)數(shù)算術(shù)標(biāo)準(zhǔn)》(ANSIIEEE754)規(guī)定的范圍內(nèi)。邏輯值邏輯值可表示為T(mén)RUE或FALSE。串值串值為一個(gè)由字符(ISO8859-1(Latin-1))和控制字符(用0~255這一數(shù)字代碼范圍表示的非ISO8859-1(Latin-1)字符)組成的序列。其中可含字符代碼,使其能包含字符串中的不可見(jiàn)字符(二進(jìn)制數(shù)據(jù))。字符串的最長(zhǎng)長(zhǎng)度為80個(gè)字符。例子:"Thisisastring""ThisstringendswiththeBELcontrolcharacter\07"若其中包含一個(gè)反斜線(表示字符代碼)或雙引號(hào)字符,則該字符必須寫(xiě)兩次。例子:"Thisstringcontainsa""character""Thisstringcontainsa\\character"注釋注釋可幫助理解程序。絕不會(huì)影響程序的意義。不會(huì)出現(xiàn)在模塊聲明之外的其他地方。!commentIFreg1>5THEN!commentreg2:=0;ENDIF占位符下一頁(yè)繼續(xù)14

可載入程序內(nèi)存。占位符描述<TDN>數(shù)據(jù)類型定義<DDN>數(shù)據(jù)聲明<RDN>程序聲明<PAR>可選替換形參<ALT>可選形參<DIM>形式(一致)數(shù)組階數(shù)<SMT>指令<VAR>數(shù)據(jù)對(duì)象(變量、永久數(shù)據(jù)對(duì)象或參數(shù))索引<EIT>if指令的elseif子句RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.1.2續(xù)前頁(yè)占位符描述<CSE>測(cè)試指令情況子句<EXP>表達(dá)式<ARG>過(guò)程調(diào)用參數(shù)<ID>標(biāo)識(shí)符文件標(biāo)題

一份程序文件的開(kāi)頭就是文件標(biāo)題(非強(qiáng)制性要求),如下所示:%%%VERSION:1LANGUAGE:ENGLISH%%%語(yǔ)法標(biāo)識(shí)符數(shù)值邏輯值;字符串值備注

<identifier>::=<ident>|<ID><ident>::=<letter>{<letter>|<digit>|'_'}<numliteral>::=<integer>[<exponent>]|<decimalinteger>)[<exponent>]|<hexinteger>|<octalinteger>|<binaryinteger>|<integer>'.'[<integer>][<exponent>]|[<integer>]'.'<integer>[<exponent>]<integer>::=<digit>{<digit>}<hexinteger>::='0'('X'|'x')<hexdigit>{<hexdigit>}<octalinteger>::='0'('O'|'o')<octaldigit>{<octaldigit>}<binaryinteger>::='0'('B'|'b')<binarydigit>{<binarydigit>}<exponent>::=('E'|'e')['+'|'-']<integer><digit>::=0|1|2|3|4|5|6|7|8|9<hexdigit>::=<digit>|A|B|C|D|E|F|a|b|c|d|e|f<octaldigit>::=0|1|2|3|4|5|6|7<binarydigit>::=0|1<boolliteral>::=TRUE|FALSE<stringliteral>::='"'{<character>|<charactercode>}'"'<charactercode>::='\'<hexdigit><hexdigit><hexdigit>::=<digit>|A|B|C|D|E|F|a|b|c|d|e|f<comment>::='!'{<character>|<tab>}<newline>下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 153HAC050947-010修訂:S1基本RAPID編程基本元素續(xù)前頁(yè)字符<character>::=--ISO8859-1(Latin-1)--<newline>::=--newlinecontrolcharacter--<digit>::=0|1|2|3|4|5|6|7|8|9<hexdigit>::=<digit>|A|B|C|D|E|F|a|b|c|d|e|f<letter>::=<uppercaseletter>|<lowercaseletter><uppercaseletter>::=A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|à|á|?|?|?|?|?|?|è|é|ê|?|ì|í|?|?|D|?|ò|ó|?|?|?|?|ù|ú|?|ü|Y|T|?<lowercaseletter>::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|?|à|á|a|?|?|?|?|?|è|é|ê|?|ì|í|?|?|e|?|ò|ó|?|?|?|?|ù|ú|?|ü|y|t|?16 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程模塊1.1.3模塊簡(jiǎn)介本程序分為編程模塊和系統(tǒng)模塊。xx1100000550編程模塊

編程模塊由不同的數(shù)據(jù)和路徑構(gòu)成。每個(gè)模塊或整個(gè)程序都可復(fù)制到磁盤(pán)和內(nèi)存盤(pán)等設(shè)備中,反過(guò)來(lái),也可從這些設(shè)備中復(fù)制模塊或程序。其中一個(gè)模塊中含有入口過(guò)程和被稱為Main的全局過(guò)程。執(zhí)行程序?qū)嶋H上就是在執(zhí)行Main過(guò)程。本程序可包括多個(gè)模塊,但其中一個(gè)必須要有一個(gè)主過(guò)程。如,一個(gè)模塊要么可定義與外部設(shè)備的接口,要么就包含CAD系統(tǒng)生成的或經(jīng)數(shù)字化(示教編程)在線上創(chuàng)建的幾何學(xué)數(shù)據(jù)。因而,一個(gè)模塊中通常會(huì)包含多個(gè)小型計(jì)算站,而多個(gè)偏大的計(jì)算站可能共用一個(gè)主模塊,主模塊可引用某一或其他多個(gè)模塊中包含的程序和/或數(shù)據(jù)。系統(tǒng)模塊

用系統(tǒng)模塊定義常見(jiàn)的系統(tǒng)專用數(shù)據(jù)和程序,如工具等。系統(tǒng)模塊不會(huì)隨程序一同保存,也就是說(shuō),對(duì)系統(tǒng)模塊的任何更新都會(huì)影響程序內(nèi)存中當(dāng)前所有的或隨后會(huì)載入其中的所有程序。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 173HAC050947-010修訂:S1基本RAPID編程1.1.3模塊續(xù)前頁(yè)模塊聲明

模塊聲明介紹了相應(yīng)模塊的名稱和屬性。這些屬性只能通過(guò)離線添加,不能用FlexPendant示教器添加。下文為某模塊的屬性示例:屬性如有規(guī)定SYSMODULE就模塊而言,不是系統(tǒng)模塊就是編程模塊。NOSTEPIN在逐步執(zhí)行期間不能進(jìn)入模塊。VIEWONLY模塊無(wú)法修改。READONLY模塊無(wú)法修改,但可以刪除其屬性。NOVIEW模塊不可讀,只可執(zhí)行??赏ㄟ^(guò)其他模塊接近全局程序,此程序通常以NOSTEPIN方式運(yùn)行。目前全局?jǐn)?shù)據(jù)數(shù)值可從其他模塊或FlexPendant示教器上的數(shù)據(jù)窗口接近。NOVIEW只能通過(guò)PC在線下定義。例如,MODULEmodule_name(SYSMODULE,VIEWONLY)!datatypedefinition!datadeclarations!routinedeclarationsENDMODULE某模塊可能與另一模塊的名稱不同,或可能沒(méi)有全局程序或數(shù)據(jù)。程序文件結(jié)構(gòu)

如上所述,名稱已定的程序中包含所有編程模塊。保存程序時(shí),會(huì)生成一個(gè)新的以該程序名稱命名的目錄。在這個(gè)目錄中,所有程序模塊都保存在該文件夾中,對(duì)應(yīng)文件.pgf。該使用說(shuō)明文件含有一份列表,該列表囊括了程序中的所有模塊。語(yǔ)法模塊聲明

<moduledeclaration>::=MODULE<modulename>[<moduleattributelist>]<typedefinitionlist><datadeclarationlist><routinedeclarationlist>ENDMODULE<modulename>::=<identifier><moduleattributelist>::='('<moduleattribute>{','<moduleattribute>}')'<moduleattribute>::=SYSMODULE|NOVIEW|NOSTEPIN|VIEWONLY|READONLY下一頁(yè)繼續(xù)18

RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程模塊續(xù)前頁(yè)注意注意SYSMODULE加以說(shuō)明。<typedefinitionlist>::={<typedefinition>}<datadeclarationlist>::={<datadeclaration>}<routinedeclarationlist>::={<routinedeclaration>}技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 193HAC050947-010修訂:S1基本RAPID編程系統(tǒng)模塊User系統(tǒng)模塊User簡(jiǎn)介為簡(jiǎn)化編程過(guò)程,提供機(jī)械臂的同時(shí)要提供預(yù)定義數(shù)據(jù)。由于未明確要求必須創(chuàng)建此類數(shù)據(jù),因此,此類數(shù)據(jù)不能直接使用。若用該數(shù)據(jù),則初始編程會(huì)更簡(jiǎn)單。但通常最好是自己重新為所用數(shù)據(jù)命名,以便您能更輕松地查閱程序。目錄User包含五個(gè)數(shù)值數(shù)據(jù)(寄存器)、一個(gè)對(duì)象數(shù)據(jù)、一個(gè)計(jì)時(shí)函數(shù)和兩個(gè)數(shù)字信號(hào)符號(hào)值。名稱數(shù)據(jù)類型聲明reg1numVARnumreg1:=0reg2numVARnumreg2:=0reg3numVARnumreg3:=0reg4numVARnumreg4:=0reg5numVARnumreg5:=0clock1clockVARclockclock1User是一個(gè)系統(tǒng)模塊,也就是說(shuō),無(wú)論有沒(méi)有加載程序,它都會(huì)出現(xiàn)在機(jī)械臂內(nèi)存中。20 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程程序程序簡(jiǎn)介程序(子程序)分為無(wú)返回值程序、有返回值程序和軟中斷程序這三類。無(wú)返回值程序不會(huì)返回?cái)?shù)值。該程序用于指令中。有返回值程序會(huì)返回一個(gè)特定類型的數(shù)值。該程序用于表達(dá)式中。斷程序。程序的范圍

程序的范圍是指可獲得程序的區(qū)域。除非程序聲明的可選局部命令將程序歸為局部程序(在模塊內(nèi)),不然則為全局程序。例子:LOCALPROClocal_routine(...PROCglobal_routine(...程序適用的范圍規(guī)則如下:全局程序的范圍可能包括任務(wù)中的任意模塊;局部程序的范圍由其所處模塊構(gòu)成;在范圍內(nèi),局部程序會(huì)隱藏名稱相同的所有全局程序或數(shù)據(jù);在范圍內(nèi),程序會(huì)隱藏名稱相同的所有指令、預(yù)定義程序和預(yù)定義數(shù)據(jù)。xx1100000551以上示例中,可從程序h中調(diào)用下述程序:模塊1:程序c和d;模塊2:所有程序。同一模塊中,某一程序的名稱與另一程序、數(shù)據(jù)或數(shù)據(jù)類型的名稱不一定相同。全局程序的名稱與對(duì)應(yīng)模塊或另一模塊中的全局程序、全局?jǐn)?shù)據(jù)或全局?jǐn)?shù)據(jù)類型的名稱不一定相同。參數(shù)程序聲明中的參數(shù)列表明確規(guī)定了調(diào)用程序時(shí)必須或能提供的參數(shù)(實(shí)參)。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 213HAC050947-010修訂:S1基本RAPID編程程序續(xù)前頁(yè)參數(shù)包括四種(按訪問(wèn)模式區(qū)分):對(duì)應(yīng)參數(shù);INOUT參數(shù)規(guī)定,對(duì)應(yīng)參數(shù)必須為變量(整體、元素或部分)為可為程序所改變的完整的永久數(shù)據(jù)對(duì)象;PERS參數(shù)規(guī)定,對(duì)應(yīng)參數(shù)必須為可為程序所改變的完整的永久數(shù)據(jù)對(duì)象。更新INOUT、VAR或PERS參數(shù)事實(shí)上就等同于更新了參數(shù)本身,借此可用參數(shù)將多個(gè)數(shù)值返回到調(diào)用程序。例子:PROCroutine1(numin_par,INOUTnuminout_par,VARnumvar_par,PERSnumpers_par)此類參數(shù)是可選的,在程序調(diào)用的參數(shù)列表中可忽略??蛇x參數(shù)用反斜線(\)+表示。例子:PROCroutine2(numrequired_par\numoptional_par)不可引用程序調(diào)用時(shí)會(huì)忽略的可選參數(shù)值,也就是說(shuō),在使用可選參數(shù)前,必須要檢查程序調(diào)用的可選參數(shù)。兩個(gè)或多個(gè)可選參數(shù)之間可能會(huì)互相排斥(聲明互相排斥),也就是說(shuō)同一程序調(diào)用中只可能出現(xiàn)其中一個(gè)。這一情況通過(guò)在存疑參數(shù)之間加豎線(管道字符|)表明。例子:PROCroutine3(\numexclude1|numexclude2)switch參數(shù)。要運(yùn)用switch參數(shù)的唯一方式就是運(yùn)用預(yù)定義函數(shù)Present檢查其存在。例子:PROCroutine4(\switchon|switchoff)...IFPresent(off)THEN...ENDPROC數(shù)組可能會(huì)以參數(shù)的形式通過(guò)。數(shù)組參數(shù)的范圍必須與相應(yīng)形參的范圍相符。數(shù)組參Dim可確定參數(shù)的實(shí)際階數(shù)。例子:PROCroutine5(VARnumpallet{*,*})程序終止

通過(guò)RETURN指令明確無(wú)返回值程序執(zhí)行終止,或在到達(dá)無(wú)返回值程序末端(ENDPROC、BACKWARD、ERROR或UNDO)時(shí),即暗示執(zhí)行終止。有返回值程序求值必須通過(guò)RETURN指令終止。運(yùn)用RETURN指令明確軟中斷程序執(zhí)行終止,或在到達(dá)軟中斷程序末端(ENDTRAP、ERROR或UNDO)時(shí),即暗示執(zhí)行終止。下次會(huì)從中斷點(diǎn)處開(kāi)始繼續(xù)執(zhí)行。下一頁(yè)繼續(xù)22

RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.1.5續(xù)前頁(yè)程序聲明軟中斷聲明

程序包含程序聲明(包括參數(shù))、數(shù)據(jù)、正文主體、反向處理器(僅限無(wú)返回值程序)程序。xx1100000553如,用數(shù)值數(shù)組中的各元素乘以:PROCarrmul(VARnumarray{*},numfactor)FORindexFROM1TOdim(array,1)DOarray{index}:=array{index}*factor;ENDFORENDPROC有返回值程序可返回任意數(shù)據(jù)類型的數(shù)值,但不能返回?cái)?shù)組數(shù)值。如,可返回矢量長(zhǎng)度。FUNCnumveclen(posvector)RETURNSqrt(Pow(vector.x,2)+Pow(vector.y,2)+Pow(vector.z,2));ENDFUNC如,對(duì)“給料機(jī)空載”所致中斷的反應(yīng):TRAPfeeder_emptywait_feeder;RETURN;ENDTRAP過(guò)程調(diào)用

調(diào)用一個(gè)過(guò)程時(shí),應(yīng)使用與該過(guò)程的參數(shù)對(duì)應(yīng)的參數(shù):必須明確強(qiáng)制性參數(shù),同時(shí)還須按正確順序列出.可選參數(shù)可忽略.第39頁(yè)的運(yùn)用表達(dá)式中的函數(shù)調(diào)用。

下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 233HAC050947-010修訂:S1基本RAPID編程1.1.5程序續(xù)前頁(yè)可用標(biāo)識(shí)符(前期綁定)以靜態(tài)方式指定過(guò)程名稱或在串類型表達(dá)式運(yùn)行時(shí)間內(nèi)(后期綁定)求得程序名稱的值。前期綁定應(yīng)被視作正常的過(guò)程調(diào)用形式,但有時(shí)后期綁定卻能提供極有效的緊湊編碼。通過(guò)在代表過(guò)程名稱的字符串前后添加百分比符號(hào),定義后期綁定。例子:!earlybindingTESTproducts_idCASE1:proc1x,y,z;CASE2:proc2x,y,z;CASE3:...!sameexampleusinglatebinding%“proc”+NumToStr(product_id,0)%x,y,z;...!sameexampleagainusinganothervariantoflatebindingVARstringprocname{3}:=[“proc1”,“proc2”,“proc3”];...%procname{product_id}%x,y,z;...注意后期綁定僅適用于過(guò)程調(diào)用,不適合函數(shù)調(diào)用。若要用后期綁定引用一個(gè)未知過(guò)程,則將系統(tǒng)變量ERRNO設(shè)為ERR_REFUNKPRC;若要引用過(guò)程調(diào)用錯(cuò)誤(語(yǔ)法,而非過(guò)程),則將系統(tǒng)變量ERRNO設(shè)為ERR_CALLPROC。語(yǔ)法程序聲明參數(shù)

<routinedeclaration>::=[LOCAL](<proceduredeclaration>|<functiondeclaration>|<trapdeclaration>)|<comment>|<RDN><parameterlist>::=<firstparameterdeclaration>{<nextparameterdeclaration>}<firstparameterdeclaration>::=<parameterdeclaration>|<optionalparameterdeclaration>|<PAR><nextparameterdeclaration>::=','<parameterdeclaration>|<optionalparameterdeclaration>|','<optionalparameterdeclaration>|','<PAR><optionalparameterdeclaration>::='\'(<parameterdeclaration>|<ALT>){'|'(<parameterdeclaration>|<ALT>)}下一頁(yè)繼續(xù)24

RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.1.5續(xù)前頁(yè)軟中斷程序聲明過(guò)程調(diào)用

<parameterdeclaration>::=[VAR|PERS|INOUT]<datatype><identifier>['{'('*'{',''*'})|<DIM>]'}'|'switch'<identifier><proceduredeclaration>::=PROC<procedurename>'('[<parameterlist>]')'<datadeclarationlist><instructionlist>[BACKWARD<instructionlist>][ERROR<instructionlist>][UNDO<instructionlist>]ENDPROC<procedurename>::=<identifier><datadeclarationlist>::={<datadeclaration>}<functiondeclaration>::=FUNC<valuedatatype><functionname>'('[<parameterlist>]')'<datadeclarationlist><instructionlist>[ERROR<instructionlist>][UNDO<instructionlist>]ENDFUNC<functionname>::=<identifier><trapdeclaration>::=TRAP<trapname><datadeclarationlist><instructionlist>[ERROR<instructionlist>][UNDO<instructionlist>]ENDTRAP<trapname>::=<identifier><procedurecall>::=<procedure>[<procedureargumentlist>]';'<procedure>::=<identifier>|'%'<expression>'%'<procedureargumentlist>::=<firstprocedureargument>{<procedureargument>}<firstprocedureargument>::=<requiredprocedureargument>|<optionalprocedureargument>|<conditionalprocedureargument>|<ARG>下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 253HAC050947-010修訂:S1基本RAPID編程1.1.5程序續(xù)前頁(yè)<procedureargument>::=','<requiredprocedureargument>|<optionalprocedureargument>|','<optionalprocedureargument>|<conditionalprocedureargument>|','<conditionalprocedureargument>|','<ARG><requiredprocedureargument>::=[<identifier>':=']<expression><optionalprocedureargument>::='\'<identifier>[':='<expression>]<conditionalprocedureargument>::='\'<identifier>'?'(<parameter>|<VAR>)26 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.2.1程序數(shù)據(jù)數(shù)據(jù)類型簡(jiǎn)介有三種數(shù)據(jù)類型:部分的基本數(shù)據(jù),如num??赡苡苫绢愋蜆?gòu)成,也可能由記錄類型構(gòu)成??捎镁酆媳硎痉ū硎居涗洈?shù)值,如[300,500,depth]pos記錄聚合值。通過(guò)某部分的名稱可訪問(wèn)數(shù)據(jù)類型的對(duì)應(yīng)部分,如pos1.x:=300;pos1的x部分賦值。從定義上來(lái)講,alias數(shù)據(jù)類型等同于其他類型。Alias類。非值數(shù)據(jù)類型

一個(gè)有效數(shù)據(jù)類型要么是數(shù)值數(shù)據(jù)類型,要么是非值數(shù)據(jù)類型。簡(jiǎn)而言之,數(shù)值數(shù)據(jù)類型僅代表部分?jǐn)?shù)值形式。在數(shù)值導(dǎo)向操作中不能用非值數(shù)據(jù):初始化;賦值(:=);等于(=)和不等于(<>)檢查;TEST指令;程序調(diào)用中的IN(訪問(wèn)模式)參數(shù);有返回值程序(返回)數(shù)據(jù)類型。信號(hào)數(shù)據(jù)類型(signalai、signaldi、signalgi、signalao、signaldo、signalgo)均為半值數(shù)據(jù)類型。這些數(shù)據(jù)可用于數(shù)值運(yùn)算中,但初始化和賦值除外。在數(shù)據(jù)類型說(shuō)明中,僅對(duì)何時(shí)是半值數(shù)據(jù)類型及何時(shí)是非值數(shù)據(jù)類型作了規(guī)定。同等(alias)數(shù)據(jù)類型alias代。例子:VARnumlevel;VARdionumhigh:=1;level:=high;由于dionum是num的一種alias數(shù)據(jù)類型,因此這樣可行。語(yǔ)法<typedefinition>::=[LOCAL](<recorddefinition>|<aliasdefinition>)|<comment>|<TDN>下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 273HAC050947-010修訂:S1基本RAPID編程數(shù)據(jù)類型續(xù)前頁(yè)<recorddefinition>::=RECORD<identifier><recordcomponentlist>ENDRECORD<recordcomponentlist>::=<recordcomponentdefinition>|<recordcomponentdefinition><recordcomponentlist><recordcomponentdefinition>::=<datatype><recordcomponentname>';'<aliasdefinition>::=ALIAS<datatype><identifier>';'<datatype>::=<identifier>28 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程數(shù)據(jù)聲明數(shù)據(jù)聲明簡(jiǎn)介數(shù)據(jù)包括三種:程序執(zhí)行期間,可賦予一個(gè)變量一個(gè)新值。值自發(fā)導(dǎo)致待更新的永久聲明數(shù)值初始化。(的初始化值反映的都是對(duì)應(yīng)永久數(shù)據(jù)對(duì)象的當(dāng)前值。)各常量代表各個(gè)靜態(tài)值,不能賦予其新值。數(shù)據(jù)聲明通過(guò)將名稱(標(biāo)識(shí)符)與數(shù)據(jù)類型聯(lián)系在一起,引入數(shù)據(jù)。除了預(yù)定義數(shù)據(jù)和循環(huán)變量外,必須聲明所用的其他所有數(shù)據(jù)。數(shù)據(jù)的范圍示例程序數(shù)據(jù)程序數(shù)據(jù)示例

數(shù)據(jù)的范圍是指可獲得數(shù)據(jù)的區(qū)域。除非數(shù)據(jù)聲明的可選局部命令將數(shù)據(jù)歸為局部數(shù)據(jù)(在模塊內(nèi)),不然則為全局?jǐn)?shù)據(jù)。注意局部命令僅限用于模塊級(jí),不能用在程序內(nèi)。LOCALVARnumlocal_variable;VARnumglobal_variable;程序外聲明的數(shù)據(jù)被稱為程序數(shù)據(jù)。程序數(shù)據(jù)適用的范圍規(guī)則如下:預(yù)定義程序數(shù)據(jù)或全局程序數(shù)據(jù)的范圍可能包括任何模塊;局部程序數(shù)據(jù)的范圍由其所處模塊構(gòu)成;在范圍內(nèi),局部程序數(shù)據(jù)會(huì)隱藏名稱相同的所有全局?jǐn)?shù)據(jù)或程序(預(yù)定義程序和預(yù)定義數(shù)據(jù))。同一模塊中,程序數(shù)據(jù)的名稱與其他數(shù)據(jù)或程序的名稱不一定相同。全局程序數(shù)據(jù)的名稱與另一模塊中的全局?jǐn)?shù)據(jù)或程序的名稱不一定相同。程序內(nèi)聲明的數(shù)據(jù)被稱作程序數(shù)據(jù)。注意程序參數(shù)也同樣按程序數(shù)據(jù)處理。程序數(shù)據(jù)適用的范圍規(guī)則如下:程序數(shù)據(jù)的范圍由其所處程序構(gòu)成;程序數(shù)據(jù)的名稱與同一程序中其他數(shù)據(jù)或標(biāo)號(hào)的名稱不一定相同。在該示例中,可從程序e中調(diào)用下述數(shù)據(jù):模塊1:數(shù)據(jù)c和d;模塊2:數(shù)據(jù)a、f、g和e1可從程序h中調(diào)用下述數(shù)據(jù):模塊1:數(shù)據(jù)d;模塊2:數(shù)據(jù)a、f、g、h1和c。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 293HAC050947-010修訂:S1基本RAPID編程1.2.2數(shù)據(jù)聲明續(xù)前頁(yè)xx1100000554變量聲明下一頁(yè)繼續(xù)30

通過(guò)變量聲明可引入變量。同時(shí)變量也可作全局(無(wú)需命令)或局部變量聲明。例子:MainModule已加載到任務(wù)T_ROB1。MODULEMainModule!ThescopeofthisvariableiswithinT_ROB1,i.e.itcanbe!accessedfromanymoduleinT_ROB1.VARnumglobal_var:=123;!Thescopeofthisvariableiswithinthismodule.LOCALVARnumlocal_var:=789;PROCmain()!Thescopeofthisvariableiswithinthisprocedure.VARnumlocal_var2:=321;...ENDPROCENDMODULE在已安裝共享的模塊中聲明的變量可以使用TASK來(lái)聲明,請(qǐng)參閱,技術(shù)參考手冊(cè)-系統(tǒng)參數(shù)ControllerAutomaticLoadingofModules有任務(wù)中訪問(wèn),但是每個(gè)任務(wù)都有一個(gè)惟一的值。例如,從一個(gè)任務(wù)更改變量值不會(huì)影響其他任務(wù)。例子:SharedModule在系統(tǒng)中為共享安裝。MODULESharedModule(SYSMODULE)!Thisvariableisaccessiblefromalltasks,buthasa!uniquevalueforeachtask.TASKVARnumglobal_var:=123;...ENDMODULE在為共享安裝的模塊中使用TASK命令將不會(huì)有效果。RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.2.2續(xù)前頁(yè)通過(guò)在聲明中添加階數(shù)信息,可賦予任一類變量一種數(shù)組(1階、2階和3階)形式。階數(shù)是大于0的整數(shù)值。例子:VARpospallet{14,18};可初始化含各類數(shù)值的變量(賦予一個(gè)初始值)。程序變量初始化所用的表達(dá)式必須為常量表達(dá)式。注意,也可用未初始化變量的數(shù)值,只是該值未定義,如果為num則設(shè)為零。如果是字符串則設(shè)為空字符串,如果是布爾值則設(shè)置為FALSE。例子:VARstringauthor_name:="JohnSmith";VARposstart:=[100,100,50];VARnummaxno{10}:=[1,2,3,9,8,7,6,5,4,3];出現(xiàn)如下?tīng)顩r時(shí),即設(shè)置初始化值:已加載程序/模塊。程序指針重置,例如程序指針指向main。永久數(shù)據(jù)對(duì)象聲明

只能在模塊級(jí)進(jìn)行永久數(shù)據(jù)對(duì)象聲明,在程序內(nèi)不能??勺飨到y(tǒng)全局(無(wú)需命令)、任務(wù)全局或局部永久數(shù)據(jù)對(duì)象聲明。例子:下列模塊同時(shí)加載到T_ROB1和T_ROB2.MODULEMainModule!Thescopeofthispersistentiswithinthetaskit’sbeen!loadedto.But,itwillsharethecurrentvaluewithany!othertaskdeclaringthesamepersistent.I.e.changingthe!valueinT_ROB1willautomaticallychangethevalueinT_ROB2.PERSnumglobalpers:=123;!Thescopeofthispersistentiswithinthetaskthis!modulehasbeenloadedto.TASKPERSnumtaskpers:=456;!Thescopeofthispersistentiswithinthismodule.LOCALPERSnumlocalpers:=789;...ENDMODULE可忽略初始值。初始化值必須為單一值(不含數(shù)據(jù)引用對(duì)象或數(shù)據(jù)運(yùn)算對(duì)象)或由多個(gè)單一值或單一聚合體構(gòu)成的單一聚合體。例子:PERSposrefpnt:=[100.23,778.55,1183.98];通過(guò)在聲明中添加階數(shù)信息,可賦予任一類永久數(shù)據(jù)對(duì)象一種數(shù)組(1階、2階和3階)形式。階數(shù)是大于0的整數(shù)值。例子:PERSpospallet{14,18}:=[...];注意,永久數(shù)據(jù)對(duì)象的當(dāng)前值變更時(shí),永久數(shù)據(jù)對(duì)象聲明的初始化值(若未忽略)也會(huì)隨之更新。但在程序執(zhí)行期間,因執(zhí)行問(wèn)題,不會(huì)更新。保存模塊(備份下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 313HAC050947-010修訂:S1基本RAPID編程1.2.2數(shù)據(jù)聲明續(xù)前頁(yè)(Backup)、保存模塊(SaveModule)和保存程序(SaveProgram))的同時(shí)會(huì)更新初始值。在編輯程序時(shí),也會(huì)更新。FlexPendant前值。例子:PERSnumreg1:=0;...reg1:=5;模塊保存后,如果代碼被執(zhí)行,則保存后的模塊是這樣的:PERSnumreg1:=5;...reg1:=5;常量聲明

通過(guò)常量聲明引入常量。常量值不可更改。例子:CONSTnumpi:=3.141592654;通過(guò)在聲明中添加階數(shù)信息,可賦予任一類常量一種數(shù)組(1階、2階和3階)形式。階數(shù)是大于0的整數(shù)值。CONSTposseq{3}:=[[614,778,1020],[914,998,1021],[814,998,1022]];啟動(dòng)數(shù)據(jù)下一頁(yè)繼續(xù)32

常量或變量的初始化值可為常量表達(dá)式。永久數(shù)據(jù)對(duì)象的初始化值只能是文字表達(dá)式。例子:CONSTnuma:=2;CONSTnumb:=3;!CorrectsyntaxCONSTnumab:=a+b;VARnuma_b:=a+b;PERSnumab:=5;!!FaultysyntaxPERSnumab:=a+b;通過(guò)下表您可了解各種活動(dòng)(如重啟、新程序或程序啟動(dòng)等)中出現(xiàn)的各種情況。系統(tǒng)事件影響通電(重啟)打開(kāi)、關(guān)閉和新程序啟動(dòng)程序(移動(dòng)PPtoMain)啟動(dòng)程序(移動(dòng)PPto啟動(dòng)程序(移動(dòng)PPto啟動(dòng)程序(序(Call啟動(dòng)程序(節(jié)拍后)啟動(dòng)程序(停止后)常量未變初始化初始化初始化未變未變未變未變變量未變初始化初始化初始化未變未變未變未變永久數(shù)據(jù)對(duì)象未變初始化i未變未變未變未變未變未變未變命令中斷重新下令消失消失消失未變未變未變未變啟動(dòng)程序(有運(yùn)動(dòng)設(shè)置)未運(yùn)行運(yùn)行ii運(yùn)行未運(yùn)行未運(yùn)行未運(yùn)行未運(yùn)行未運(yùn)行RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.2.2續(xù)前頁(yè)系統(tǒng)事件影響通電(重啟)打開(kāi)、關(guān)閉和新程序啟動(dòng)程序(移動(dòng)PPtoMain)啟動(dòng)程序(移動(dòng)PPto啟動(dòng)程序(移動(dòng)PPto啟動(dòng)程序(序(Call啟動(dòng)程序(節(jié)拍后)啟動(dòng)程序(停止后)文件關(guān)閉關(guān)閉關(guān)閉關(guān)閉未變未變未變未變路徑通電時(shí)重新創(chuàng)建消失消失消失消失未變未變未變i ii實(shí)際任務(wù)程序中存在語(yǔ)義錯(cuò)誤時(shí),會(huì)生成錯(cuò)誤存儲(chǔ)類

數(shù)據(jù)對(duì)象的存儲(chǔ)類決定了系統(tǒng)為數(shù)據(jù)對(duì)象分配內(nèi)存和解除內(nèi)存分配的時(shí)間。而其本身取決于數(shù)據(jù)對(duì)象的種類及其聲明的上下文,既可為靜態(tài)存儲(chǔ),也可為易失存儲(chǔ)。常量、永久數(shù)據(jù)對(duì)象和模塊變量都是靜態(tài),也就意味著在任務(wù)期間它們具備相同的存儲(chǔ)類,賦予永久數(shù)據(jù)對(duì)象或模塊變量的任意值始終保持不變,除非重新賦值。程序變量屬易失存儲(chǔ)類。在首次調(diào)用含變量聲明的程序時(shí),即分配存儲(chǔ)易失變量值所需的內(nèi)存。隨后,在返回程序調(diào)用程序時(shí),解除內(nèi)存分配。這也就是說(shuō),在程序調(diào)用前,程序變量的值一直都不明確,且在程序執(zhí)行結(jié)束時(shí),常常會(huì)遺失該值(即,數(shù)值不明確)。在遞歸程序調(diào)用(程序直接或間接調(diào)用自身)鏈中,針對(duì)同一程序變量,各個(gè)程序?qū)嵗盏搅俗约旱膬?nèi)存位置-即,生成了含相同變量的若干實(shí)例。語(yǔ)法數(shù)據(jù)聲明變量聲明永久數(shù)據(jù)對(duì)象聲明

<datadeclaration>::=[LOCAL](<variabledeclaration>|<persistentdeclaration>|<constantdeclaration>)|TASK<persistentdeclaration>|<comment>|<DDN><variabledeclaration>::=VAR<datatype><variabledefinition>';'<variabledefinition>::=<identifier>['{'<dim>{','<dim>}'}'][':='<constantexpression>]<dim>::=<constantexpression><persistentdeclaration>::=PERS<datatype><persistentdefinition>';'<persistentdefinition>::=<identifier>['{'<dim>{','<dim>}'}'][':='<literalexpression>]注意注意只有系統(tǒng)全局永久數(shù)據(jù)對(duì)象的文字表達(dá)式可忽略。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 333HAC050947-010修訂:S1基本RAPID編程1.2.2數(shù)據(jù)聲明續(xù)前頁(yè)常量聲明

<constantdeclaration>::=CONST<datatype><constantdefinition>';'<constantdefinition>::=<identifier>['{'<dim>{','<dim>}'}']':='<constantexpression><dim>::=<constantexpression>34 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程1.3.1表達(dá)式表達(dá)式類型描述表達(dá)式指定數(shù)值的評(píng)估。例如,它可以用作:在賦值指令中作為IF指令中的變?cè)δ苷{(diào)用中的變?cè)?/p>

例如,a:=3*b/c;例如,IFa>=3THEN...例如,WaitTimetime;例如,a:=Abs(3*b);算術(shù)表達(dá)式

算術(shù)表達(dá)式用于求解數(shù)值。例子:2*pi*radius運(yùn)算符操作運(yùn)算元類型結(jié)果類型+加法num+numnumi+加法dnum+numdnumi+一目減;保留符號(hào)+num或+dnum或+pos同左ii,i+矢量加法pos+pospos-減法num-numnumi-減法dnum-dnumdnumi-一目減;更改符號(hào)-num或-pos同左ii,i-一目減;更改符號(hào)-num或-dnum或-pos同左ii,i-矢量減法pos-pospos*乘法num*numnumi*乘法dnum*dnumdnumi*矢量數(shù)乘num*pos*pos*矢積pos*pospos*旋轉(zhuǎn)連接orient*orientorient/除法num/numnum/除法dnum/dnumdnum/標(biāo)量向量除法pos/numposDIViii整數(shù)除法numDIVnumnumDIViii整數(shù)除法dnumDIVdnumdnumMODiii整數(shù)模運(yùn)算;余數(shù)numMODnumnumMODiii整數(shù)模運(yùn)算;余數(shù)dnumMODdnumdnum只要運(yùn)算元和結(jié)果仍在數(shù)值類型的整數(shù)子域內(nèi),那么就可保留整數(shù)(精確)表示法。收到的結(jié)果類型與運(yùn)算元類型相同。若運(yùn)算元有一個(gè)alias數(shù)據(jù)類型,則可收到基準(zhǔn)”類型(num、dnum或pos)的結(jié)果。整數(shù)運(yùn)算,如14DIV4=3,14MOD4=2。(非整數(shù)運(yùn)算元無(wú)效。)下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 353HAC050947-010修訂:S1基本RAPID編程表達(dá)式類型續(xù)前頁(yè)邏輯表達(dá)式

邏輯表達(dá)式用于求邏輯值(TRUE/FALSE)。例子:a>5ANDb=3運(yùn)算符操作運(yùn)算元類型結(jié)果類型<小于num<numbool<小于dnum<dnumbool<=小于等于num<=numbool<=小于等于dnum<=dnumbool=等于任意類型i=任意類型bool>=大于等于num>=numbool>=大于等于dnum>=dnumbool>大于num>numbool>大于等于dnum>dnumbool<>不等于任意類型<>任意類型boolAND和boolANDboolboolXOR異或boolXORboolboolOR或boolORboolboolNOT否;非NOTboolbooli 只有數(shù)值數(shù)據(jù)類型。運(yùn)算元類型必須相等。xx1100000555串表達(dá)式

"IN""PUT""INPUT"運(yùn)算符操作運(yùn)算元類型結(jié)果類型+串連接string+stringstring36 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程運(yùn)用表達(dá)式中的數(shù)據(jù)運(yùn)用表達(dá)式中的數(shù)據(jù)簡(jiǎn)介變量、永久數(shù)據(jù)對(duì)象或常量整體可作為表達(dá)式的組成部分。例子:2*pi*radius數(shù)組整個(gè)數(shù)組或單一元素中可引用聲明為數(shù)組的變量、永久數(shù)據(jù)對(duì)象或常量。運(yùn)用元素的索引號(hào)引用數(shù)組元素。索引號(hào)為大于0的整數(shù)值,不會(huì)違背所聲明的階數(shù)。索引值1對(duì)應(yīng)的是第一個(gè)元素。索引表中的元素量必須與聲明的數(shù)組階數(shù)(1階、2階或3階)相配。例子:VARnumrow{3};VARnumcolumn{3};VARnumvalue;!getoneelementfromthearrayvalue:=column{3};!getallelementsinthearrayrow:=column;記錄整個(gè)記錄或單一部分中可引用聲明為記錄的變量、永久數(shù)據(jù)對(duì)象或常量。運(yùn)用部分名稱引用記錄部分。例子:VARposhome;VARpospos1;VARnumyvalue;..!gettheYcomponentonlyyvalue:=home.y;!getthewholepositionpos1:=home;技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 373HAC050947-010修訂:S1基本RAPID編程運(yùn)用表達(dá)式中的聚合體運(yùn)用表達(dá)式中的聚合體簡(jiǎn)介聚合體可用于記錄或數(shù)組數(shù)值中。例子:!posrecordaggregatepos:=[x,y,2*x];!posarrayaggregateposarr:=[[0,0,100],[0,0,z]];操作前提

必須根據(jù)上下文確定范圍內(nèi)聚合項(xiàng)的數(shù)據(jù)類型。各聚合項(xiàng)的數(shù)據(jù)類型必須等于類型確定的相應(yīng)項(xiàng)的類型。示例(通過(guò)p1確定的聚合類型pos-):VARpospl;p1:=[1,-100,12];不允許存在(由于任意聚合體的數(shù)據(jù)類型都不能通過(guò)范圍決定,因此不允許存在)的示例:VARpospl;IF[1,-100,12]=[a,b,b,]THEN38 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程運(yùn)用表達(dá)式中的函數(shù)調(diào)用1.3.4運(yùn)用表達(dá)式中的函數(shù)調(diào)用簡(jiǎn)介通過(guò)函數(shù)調(diào)用,求特定函數(shù)的值,同時(shí)接收函數(shù)返回的值。例子:Sin(angle)變?cè)獏?shù)的數(shù)據(jù)類型必須與相應(yīng)函數(shù)參數(shù)的類型相同??蛇x參數(shù)可忽略,但(當(dāng)前)參數(shù)的順序必須與形參的順序相同。此外,聲明兩個(gè)及兩個(gè)以上可選參數(shù)相互排斥,在此情況下,同一參數(shù)列表中只能存在一個(gè)可選參數(shù)。示例描述Polar(3.937,0.785398)Polar(Dist:=3.937,Angle:=0.785398)兩個(gè)含或不含參數(shù)名稱的必要參數(shù)。Cosine(45)Cosine(0.785398\Rad)一個(gè)含或不含一個(gè)開(kāi)關(guān)的必要參數(shù)。Dist(p2)Dist(\distance:=pos1,p2)一個(gè)含或不含一個(gè)可選參數(shù)的必要參數(shù)??蛇x參數(shù)前必須加一反斜線“\”和形參名稱。開(kāi)關(guān)型參數(shù)具有一定的特殊性,可能不含任何參數(shù)表達(dá)式。而且此類參數(shù)就只有存在或不存在兩種情況??蛇x參數(shù),則可以認(rèn)為條件式參數(shù)“存在”,反之則可認(rèn)為已忽略。注意指定參數(shù)必須為可選參數(shù)。例子:PROCRead_from_file(iodevFile\numMaxtime)..character:=ReadBin(File\Time?Maxtime);!Max.timeisonlyusedifspecifiedwhencallingtheroutine!Read_from_file..ENDPROC參數(shù)函數(shù)參數(shù)列表為各個(gè)參數(shù)指定了一種訪問(wèn)模式。訪問(wèn)模式包括in、inout、var或pers:一個(gè)IN參數(shù)(默認(rèn))量。一個(gè)INOUT參數(shù)要求相應(yīng)參數(shù)為變量(整體、數(shù)組元素或記錄部分)久數(shù)據(jù)對(duì)象整體。所調(diào)用的函數(shù)可全面(讀/寫(xiě))接入?yún)?shù)。數(shù)可全面(讀/寫(xiě))接入?yún)?shù)。下一頁(yè)繼續(xù)技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 393HAC050947-010修訂:S1基本RAPID編程運(yùn)用表達(dá)式中的函數(shù)調(diào)用續(xù)前頁(yè)新)接入?yún)?shù)。40 RAPID語(yǔ)言概覽3HAC050947-010S1基本RAPID編程運(yùn)算符之間的優(yōu)先級(jí)運(yùn)算符之間的優(yōu)先級(jí)優(yōu)先級(jí)規(guī)則

相關(guān)運(yùn)算符的相對(duì)優(yōu)先級(jí)決定了求值的順序。圓括號(hào)能夠覆寫(xiě)運(yùn)算符的優(yōu)先級(jí)。下述規(guī)則暗示了如下運(yùn)算符優(yōu)先級(jí):優(yōu)先級(jí)操作員最高*/DIVMOD+-<><><=>==AND最低XORORNOT先求解優(yōu)先級(jí)較高的運(yùn)算符的值,然后再求解優(yōu)先級(jí)較低的運(yùn)算符的值。優(yōu)先級(jí)相同的運(yùn)算符則按從左到右的順序挨個(gè)求值。示例表達(dá)式求值順序備注a+b+c(a+b)+c從左到右的規(guī)則a+b*ca+(b*c)*高于+aORbORc(aORb)ORc從左到右的規(guī)則aANDbORcANDd(aANDb)OR(cANDd)AND高于ORa<bANDc<d(a<b)AND(c<d)<高于AND技術(shù)參考手冊(cè)-RAPID語(yǔ)言概覽 413HAC050947-010修訂:S1基本RAPID編程語(yǔ)法1.3.6語(yǔ)法表達(dá)式

<expression>::=<expr>|<EXP><expr>::=[NOT]<logicalterm>{(OR|XOR)<logicalterm>}<logicalterm>::=<relation>{AND<relation>}<relation>::=<simpleexpr>[<relop><simpleexpr>]<simpleexpr>::=[<addop>]<term>{<addop><term>}<term>::=<primary>{<mulop><primary>}<primary>::=<literal>|<variable>|<persistent>|<constant>|<parameter>|<functioncall>|<aggregate>|'('<expr>')'操作員

<relop>::='<'|'<='|'='|'>'|'>='|'<>'<addop>::='+'|'-'<mulop>::='*'|'/'|DIV|MOD常量值

<literal>::=<numliteral>|<stringliteral>|<boolliteral>數(shù)據(jù)<variable>::=<entirevariable>|<variableelement>|<variablecomponent><entirevariable>::=<ident><variableelement>::=<entirevariable>'{'<indexlist>'}'<indexlist>::=<expr>{','<expr>}<variablecomponent>::=<variable>'.'<componentname><componentname>::=<ident><persistent>::=<entirepersistent>|<persistentelement>|<persistentcomponent><constant>::=<entireconstant>|<constantelement>|<constantcomponent>聚合體

<aggregate>::='['<expr>{','<expr>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論