DEF EthernetKRL()文件機(jī)器人程序中的設(shè)置:
EKI_Check(Ret:IN,Type:IN,strChannelName[]:IN)– 檢查函數(shù)是否有錯(cuò)誤
Ethernet KRL 會(huì)在出現(xiàn)任何錯(cuò)誤時(shí)在 smartHMI 上輸出一條信息。可禁用信息的自動(dòng)輸出。
檢查運(yùn)行函數(shù)時(shí)是否出錯(cuò):
? 將讀取錯(cuò)誤編號(hào)并在 smartHMI 上輸出相應(yīng)的信息。
? 可選:如果給出了通道名稱(chēng),則在接收數(shù)據(jù)時(shí)會(huì)詢(xún)問(wèn)是否存在錯(cuò)誤參數(shù) .
參數(shù) ?1? EKI_STATUS
所檢查函數(shù)的返回值
參數(shù) ?2? 類(lèi)型:ENUM
在 smartHMI 上輸出的信息類(lèi)型:
? #NOTIFY :提示信息
? #STATE:狀態(tài)信息
? #QUIT :確認(rèn)信息
? #WAITING:等待信息
參數(shù) ?3 (可選) 類(lèi)型:CHAR應(yīng)檢查的打開(kāi)的通道名稱(chēng)
示例? :EKI_CHECK(RET,#QUIT)
如果自動(dòng)信息輸出已被禁用,建議用 EKI_CHECK() 檢查在運(yùn)行函數(shù)時(shí)是否出錯(cuò):
? 將讀取錯(cuò)誤編號(hào)并在 smartHMI 上輸出相應(yīng)的信息。
? 如果在 EKI_CHECK() 中給出了通道名稱(chēng),則在接收數(shù)據(jù)時(shí)會(huì)詢(xún)問(wèn)是否存在錯(cuò)誤。
每次調(diào)用 EKI_CHECK() 時(shí)將調(diào)用程序 KRC:R1TPEthernetKRLEthernetKRL_USER.SRC。在該程序中可編程設(shè)定用戶(hù)特定的錯(cuò)誤反應(yīng)。
EKI_Open? RET = EKI_Open(CHAR[]) 打開(kāi)初始化的通道
當(dāng)外部系統(tǒng)配置為服務(wù)器時(shí),EKI_Open() 會(huì)中斷程序運(yùn)行,直至與外部系統(tǒng)的連接激活為止。
只能用函數(shù) EKI_OPEN() 恢復(fù)連接。
EKI 配置為客戶(hù)端時(shí),EKI 將與外部系統(tǒng)(= 服務(wù)器)連接。
EKI 配置為服務(wù)器時(shí),EKI 將等待外部系統(tǒng) (= 客戶(hù)端)的連接問(wèn)詢(xún)。
RET = EKI_Open(通道名稱(chēng))
RET 反饋值,類(lèi)型:EKI_STATUS
示例 RET = EKI_Open("Channel_1")
程序結(jié)構(gòu):
GLOBALDEFFCTEKI_STATUS EKI_Open(strChannelName[]:IN)
DECLCHAR strChannelName[]? ? 通道的名稱(chēng)變量聲明
DECLSTATE_T Stat?? ?
DECLMODUS_T Mode
DECLEKI_STATUS Ret
Mode?= #SYNC 工作模式:一旦伙伴控制器從接收緩沖區(qū)中獲取了傳輸?shù)臄?shù)據(jù),就認(rèn)為CWRITE語(yǔ)句已執(zhí)行。
Ret?= EKI_NULL_STATUS
CONTINUE
CWRITE($FCT_CALL,Stat,Mode,"EFC_eki_Open",strChannelName[])
使用”EFC_eki_Open”打開(kāi)EthernetKRL文件的通道名
Ret.Msg_No?= Stat.Msg_No
IF(Ret.Msg_No == 0)THEN 如果反饋狀態(tài)信息號(hào)是0 就認(rèn)為連接成功.
Ret.Connected?= true
ENDIF
RETURN Ret
ENDFCT
通過(guò)命令通道$ FCT_CALL進(jìn)行通信
CWRITE
觸發(fā)器中不能進(jìn)行CWRITE調(diào)用。而是可以在觸發(fā)器子程序中使用CWRITE。
CWRITE將數(shù)據(jù)寫(xiě)入LD_EXT_OBJ類(lèi)型的已加載外部模塊。在已加載的LD_EXT_FCT類(lèi)型的外部模塊中,CWRITE調(diào)用一個(gè)函數(shù)。
CWRITE將命令寫(xiě)入命令通道$ CMD。
CWRITE通過(guò)命令通道$ FCT_CALL調(diào)用一個(gè)函數(shù)。
CWRITE觸發(fā)提前運(yùn)行停止。
CWRITE ( HandleΙ$CMDΙ$FCT_CALL,? State, Mode, Format, Var1 < ,?
…, Var10 >)
HandleΙ類(lèi)型:INT
處理由COPEN傳遞給CWRITE的變量,以標(biāo)識(shí)到外部模塊的通道.
$ CMD預(yù)定義句柄變量,用于寫(xiě)入命令通道$ CMD
$ FCT_CALL預(yù)定義句柄變量,用于寫(xiě)入命令通道$ FCT_CALL
State類(lèi)型:STATE_T ; 自動(dòng)返回到CWRITE的狀態(tài)
Mode類(lèi)型:MODUS_T ;必須初始化寫(xiě)模式。
Format類(lèi)型:CHAR數(shù)組
必須先將變量Var1…Var10轉(zhuǎn)換為文本字符串,然后才能將其寫(xiě)入通道。格式定義要生成的文本的格式。必須為每個(gè)變量指定一種格式。
Var1 … Var10
其數(shù)據(jù)寫(xiě)入通道的變量。每個(gè)語(yǔ)句最多可以有10個(gè)變量。
對(duì)于類(lèi)型為L(zhǎng)D_EXT_FCT和命令通道$ FCT_CALL的外部模塊:變量Var1…Var10包含使用Format調(diào)用的函數(shù)的傳遞參數(shù)。
Format : 讀/寫(xiě)的“格式”變量
$FCT_CALL
命令通道$ FCT_CALL的管理號(hào)(句柄)
CWRITE()函數(shù)可用于通過(guò)$ FCT_CALL命令通道調(diào)用函數(shù)。變量本身具有寫(xiě)保護(hù)。
命令通道$ FCT_CALL的功能
使用CWRITE調(diào)用命令通道$ FCT_CALL的文件系統(tǒng)功能。進(jìn)行調(diào)用時(shí),必須將功能參數(shù)作為Var1…Var10傳送到CWRITE。此外,由CWRITE傳輸?shù)膶?xiě)入模式必須為#SYNC。
可以從機(jī)器人解釋程序或提交解釋程序調(diào)用文件系統(tǒng)功能。不允許從一個(gè)解釋器打開(kāi)文件然后從另一個(gè)解釋器訪問(wèn)文件,例如 寫(xiě)入或再次關(guān)閉文件。
-
編輯:黃飛
?
評(píng)論