0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

命令通道$FCT_CALL 的功能

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 作者:機(jī)器人及PLC自動(dòng)化 ? 2022-06-21 10:54 ? 次閱讀


命令通道 $FCT_CALL 的功能

使用 CWRITE 調(diào)用命令通道 $FCT_CALL 的文件系統(tǒng)函數(shù)。調(diào)用時(shí),函數(shù)參數(shù)必須作為 Var1 … Var10 傳送到 CWRITE。此外,CWRITE 傳輸?shù)膶懭肽J奖仨毷?SYNC。

默認(rèn)情況下,函數(shù)訪問(wèn)的文件存儲(chǔ)在本地目錄C:KRCROBOTERUserFiles。存儲(chǔ)在那里的文件的最大總大小限制為 10 MB,即存儲(chǔ)在那里的所有文件的總大小不得超過(guò)此限制。也可以通過(guò)函數(shù) krl_mount() 使用啟用的網(wǎng)絡(luò)驅(qū)動(dòng)器。

可以從機(jī)器人解釋程序或提交解釋程序調(diào)用文件系統(tǒng)函數(shù)。不允許從一個(gè)解釋器打開文件,然后從另一個(gè)解釋器訪問(wèn)它,例如 寫入或再次關(guān)閉文件。

錯(cuò)誤處理

每個(gè)文件系統(tǒng)函數(shù)通過(guò) CWRITE 提供一個(gè)返回值,可以在 KRL 程序中查詢和評(píng)估。返回值指示函數(shù)是成功執(zhí)行還是因錯(cuò)誤而中止。

調(diào)用 CWRITE 時(shí)傳遞的變量 State.RET1 用于監(jiān)控是否發(fā)生錯(cuò)誤:

State.RET1= #DATA_OK:函數(shù)執(zhí)行成功

State.RET1= #CMD_ABORT: 函數(shù)因錯(cuò)誤而取消

在發(fā)生錯(cuò)誤的情況下,返回的錯(cuò)誤號(hào)可用于定位原因。使用變量 State.MSG_NO 輪詢錯(cuò)誤號(hào)。描述了每個(gè)功能的可能錯(cuò)誤編號(hào)。

$FCT_CALL: 將字符寫入文件

bb7cb058-f0a3-11ec-ba43-dac502259ad0.png

命令通道 $FCT_CALL 的管理號(hào)(句柄)

CWRITE() 函數(shù)可用于通過(guò) $FCT_CALL 命令通道調(diào)用函數(shù)。變量本身是寫保護(hù)的。

$FCT_CALL=Number

字符“a”將通過(guò)命令通道 $FCT_CALL 寫入文件MyTest.TXT。如果文件已經(jīng)存在,則在打開文件時(shí)刪除文件的內(nèi)容。 對(duì)于使用 CWRITE 的每個(gè)函數(shù)調(diào)用,都要進(jìn)行檢查以查看函數(shù)是成功執(zhí)行還是因錯(cuò)誤而中止。如果發(fā)生錯(cuò)誤,可以根據(jù)錯(cuò)誤原因編程相應(yīng)的錯(cuò)誤處理。如果沒(méi)有發(fā)生錯(cuò)誤,將寫入字符并再次關(guān)閉文件. krl_mount()創(chuàng)建和連接掛載點(diǎn)

為了從 KRL 連接到啟用的網(wǎng)絡(luò)驅(qū)動(dòng)器,必須為掛載點(diǎn)分配一個(gè)名稱,并且必須知道啟用目錄的完整路徑。連接網(wǎng)絡(luò)驅(qū)動(dòng)器也需要用戶的用戶名和加密密碼。

機(jī)器人控制器 C:KRCUTILHash 目錄下的程序 khash.exe 可用于加密密碼。程序 khash.exe 必須在 Windows shell cmdk.exe 上執(zhí)行,并且需要輸入密碼。

例如,如果用戶的密碼是“kuka”,則 Windows shell 上的加密程序調(diào)用如下:khash.exe kuka

在 KRL 程序中調(diào)用 krl_mount() 時(shí)必須使用的加密密碼隨后會(huì)顯示在 Windows shell 上。

krl_mount(CHAR[] Name, CHAR[] Path, CHAR[] User, CHAR[] Password)

例:

使用名稱 TransferNet 建立到網(wǎng)絡(luò)驅(qū)動(dòng)器 \160.160.113.23 ransfer 的掛載點(diǎn)。使用加密密碼為用戶“Administrator”建立連接:

CWRITE($FCT_CALL, State, Mode, "krl_mount", "/TransferNet","http://160.160.113.23/transfer","Administrator","04FF94D4B99A1153C8CF3D479089A77AFE")

krl_unmount()

刪除掛載點(diǎn)

此函數(shù)可用于終止與使用 krl_mount() 建立的網(wǎng)絡(luò)驅(qū)動(dòng)器的連接。

krl_unmount(CHAR[] Name)

Name創(chuàng)建的掛載點(diǎn)名稱

名稱必須以字符“/”開頭,并且不得包含另一個(gè)“/”字符。

與掛載點(diǎn) TransferNet 的連接被終止:

CWRITE($FCT_CALL, State, Mode, "krl_unmount", "/TransferNet")

krl_fopen()

打開一個(gè)文件

根據(jù)選擇的模式,文件以文本文件或二進(jìn)制文件的形式打開以進(jìn)行讀訪問(wèn)和/或?qū)懺L問(wèn)??捎媚J綄?duì)應(yīng)于頭文件 stdio.h 的 fopen() 函數(shù)。

在 KRL 程序中使用此功能最多可以同時(shí)打開 11 個(gè)文件。

krl_fopen(CHAR[] Name, CHAR[] Mode, INT Handle <, BUFF_MODE_T Buffering> )

Mode

“r”

作為文本文件打開以進(jìn)行讀取訪問(wèn)

在這種模式下,一個(gè)文件可以連續(xù)打開多次(包括由機(jī)器人和提交解釋器同時(shí)打開)而無(wú)需先關(guān)閉。在每種情況下都會(huì)返回一個(gè)不同的句柄。這些句柄中的每一個(gè)都必須在某個(gè)時(shí)候關(guān)閉,因?yàn)榉駝t無(wú)法以不同的模式打開文件。

“w”

作為文本文件打開以進(jìn)行寫訪問(wèn)

在這種模式下,文件的內(nèi)容在打開時(shí)被刪除。如果他的文件不存在,則創(chuàng)建它。

“a”

作為文本文件打開以進(jìn)行寫訪問(wèn)

在這種模式下,文件的內(nèi)容在打開時(shí)不會(huì)被刪除;相反,寫入的值被添加到文件的末尾。如果文件不存在,則創(chuàng)建它。

“rb”

作為二進(jìn)制文件打開以進(jìn)行讀取訪問(wèn)

“wb”

作為二進(jìn)制文件打開以進(jìn)行寫訪問(wèn)

“r+”

作為文本文件打開以進(jìn)行讀寫訪問(wèn)

注意:打開文件后,文件指針指向文件的開頭。為確保在將數(shù)據(jù)寫入文件時(shí)不會(huì)覆蓋任何內(nèi)容,必須通過(guò)函數(shù) krl_fseek() 將文件指針?lè)旁谖募┪病?/p>

例:

文件 ROBOTERUserFilesMyFile.txt 作為文本文件打開以進(jìn)行讀取訪問(wèn):

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "MyFile.txt", "r", FileHandle)

文件 ROBOTERUserFiles estMyFile.txt 作為二進(jìn)制文件打開,用于讀寫訪問(wèn)。如果該文件已存在,則刪除該文件的內(nèi)容。

如果文件不存在,則創(chuàng)建它:

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "Test/MyFile.txt", "wb+", FileHandle)

MyFile.txt 文件作為文本文件打開,用于讀取訪問(wèn),無(wú)需在啟用的網(wǎng)絡(luò)驅(qū)動(dòng)器上進(jìn)行緩沖。名稱為 Net1 的網(wǎng)絡(luò)驅(qū)動(dòng)器的掛載點(diǎn)必須首先通過(guò) krl_mount() 創(chuàng)建:

CWRITE($FCT_CALL, State, Mode, "krl_fopen", "/Net1/MyFile.txt", "r",

FileHandle, #NO_BUFF)

krl_fclose()

關(guān)閉文件

該文件由傳輸?shù)木浔鞔_確定。一旦文件被關(guān)閉,句柄就無(wú)效并且不能用于進(jìn)一步的文件系統(tǒng)操作。

當(dāng)文件關(guān)閉時(shí),寫入緩沖區(qū)的內(nèi)容將寫入文件。

krl_fclose(INT Handle)

文件通過(guò)文件句柄關(guān)閉:CWRITE($FCT_CALL, State, Mode, "krl_fclose", FileHandle)

krl_fputc()

將字符寫入文件

文件中寫入字符的點(diǎn)取決于打開文件的模式和文件指針的位置。

krl_fputc(INT Handle, CHAR Character)

字符“x”被寫入句柄傳輸?shù)奈募校篊WRITE($FCT_CALL, State, Mode, "krl_fputc", FileHandle, "x")

krl_fputs()

將字符串寫入文件

該函數(shù)可用于將常量字符串或可變字符串寫入文件。如果使用變量,則 CHAR 數(shù)組的每個(gè)元素都必須初始化并包含一個(gè)有效值。

文件中寫入字符串的點(diǎn)取決于打開文件的模式和文件指針的位置。

krl_fputs(INT Handle, CHAR[] String)

例:

一個(gè)常量字符串被寫入到句柄傳送的文件中:

CWRITE($FCT_CALL, State, Mode, "krl_fputs", FileHandle, "write this!")

將變量“StringVar[]”中包含的字符串寫入句柄傳送的文件中:

CWRITE($FCT_CALL, State, Mode, "krl_fputs", FileHandle, StringVar[])

krl_fwriteln()

將字符串逐行寫入文件

該函數(shù)可用于將常量字符串或可變字符串寫入文件。將行尾字符附加到要寫入的字符串。如果使用變量,則 CHAR 數(shù)組的每個(gè)元素都必須初始化并包含一個(gè)有效值。

文件中寫入字符串的行取決于打開文件的模式和文件指針的位置。

krl_fwriteln(INT Handle, CHAR[] String)

將一個(gè)空行寫入句柄傳輸?shù)奈募校?/p>

CWRITE($FCT_CALL, State, Mode, "krl_fwriteln", FileHandle, " ")

krl_fprintf()

將字符串格式化寫入文件

要寫入的格式作為字符串傳送給函數(shù)。要寫入的值也會(huì)被傳送。

可用格式在頭文件 stdio.h 的 fprintf() 函數(shù)的文檔中列出。除了“%o”、“%p”、“%n”和列表“[List]”之外,所有格式都是允許的。

krl_fprintf(INT Handle, CHAR[] Format, Par1, … , Par8)

由字符“;”分隔的 3 個(gè)值 被寫入由句柄傳輸?shù)奈募⒏袷交?/p>

CWRITE($FCT_CALL, State, Mode, "krl_fprintf", FileHandle, "%s;%x;%c", "Item1", 'HA0', CharVar)

例:

DECL INTHANDLE DECL STATE_T STAT DECL MODUS_T MODE

...

CHAR MYCHAR

...

MODE =#SYNC HANDLE = 0 MYCHAR = "a"

...

; 在 C:KRCROBOTERUserFiles 下創(chuàng)建一個(gè)文件

CWRITE($FCT_CALL, STAT, MODE,"krl_fopen", "MyTest.TXT", "w", HANDLE)

; 檢查是否發(fā)生錯(cuò)誤

IF (STAT.RET1 == #CMD_ABORT)THEN

IF (STAT.MSG_NO == -5) THEN

; 如果有很多文件已經(jīng)打開,則錯(cuò)誤處理...

ELSE

; 如果需要,檢查其他錯(cuò)誤代碼

... ENDIF

ELSE

; 沒(méi)有發(fā)生錯(cuò)誤

; 將字符寫入文件

CWrite($FCT_CALL, STAT, MODE, "krl_fputc",HANDLE, MYCHAR) IF (STAT.RET1 == #CMD_ABORT) THEN

; 錯(cuò)誤處理

... ENDIF

; 關(guān)閉文件

CWRITE($FCT_CALL, STAT, MODE,"krl_fclose", HANDLE) IF (STAT.RET1 == #CMD_ABORT) THEN

錯(cuò)誤處理

... ENDIF

ENDIF

大家有空可以試試吧!

-------------------END-----------------

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    52

    文章

    8117

    瀏覽量

    145855
  • Call
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8319
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28311

原文標(biāo)題:也許使用它會(huì)對(duì)KUKA編程有一個(gè)突破性的認(rèn)識(shí)---$FCT_CALL。

文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瀚海微SD NAND存儲(chǔ)功能描述(16)命令類c

    卡狀態(tài)轉(zhuǎn)換表 下方表格根據(jù)接收到的命令定義了卡的狀態(tài)轉(zhuǎn)換。表中的狀態(tài)名是命令執(zhí)行后的下一個(gè)狀態(tài)?!?”表示該命令被視為非法命令。此外,命令
    的頭像 發(fā)表于 08-21 10:00 ?224次閱讀
    瀚海微SD NAND存儲(chǔ)<b class='flag-5'>功能</b>描述(16)<b class='flag-5'>命令</b>類c

    瀚海微SD NAND存儲(chǔ)功能描述(14)命令類a

    命令類 SD Memory Card系統(tǒng)的命令集分為幾類,如下表所示。每個(gè)類都支持一組卡片功能。表4-20根據(jù)卡支持的命令進(jìn)行設(shè)置。一個(gè)CCC位對(duì)應(yīng)一個(gè)支持的
    的頭像 發(fā)表于 08-19 10:26 ?243次閱讀
    瀚海微SD NAND存儲(chǔ)<b class='flag-5'>功能</b>描述(14)<b class='flag-5'>命令</b>類a

    有沒(méi)有辦法通過(guò)AT命令啟用WPS功能

    有沒(méi)有辦法通過(guò) AT 命令啟用 WPS 功能?如果沒(méi)有,是否有人已經(jīng)為此目的創(chuàng)建了一些自定義 AT 命令?
    發(fā)表于 07-17 08:05

    想使用SDK提供的mDNS功能,有沒(méi)有機(jī)會(huì)通過(guò)AT命令啟動(dòng)該功能?

    我想使用 SDK 提供的 mDNS 功能。有沒(méi)有機(jī)會(huì)通過(guò) AT命令啟動(dòng)該功能?我以為我會(huì)自己實(shí)現(xiàn)這個(gè)命令。但是源代碼,https://github.com/espressif/esp8
    發(fā)表于 07-17 06:24

    通過(guò)串行和AT命令使用wps8266,是否可以使用WPS PBC功能和AT命令?

    我正在通過(guò)串行和 AT 命令使用 wps8266,是否可以使用 WPS PBC 功能和 AT 命令?
    發(fā)表于 07-16 07:35

    abb機(jī)器人編程指令詳解中的call什么意思

    ABB機(jī)器人編程指令詳解中的“call”是一個(gè)非常重要的指令,它允許程序員在程序中調(diào)用另一個(gè)程序或子程序。 概述 在ABB機(jī)器人編程中,程序是由一系列的指令組成的,這些指令可以控制機(jī)器人的運(yùn)動(dòng)、操作
    的頭像 發(fā)表于 06-17 09:47 ?975次閱讀

    鴻蒙開發(fā)電話服務(wù):【@ohos.telephony.call (撥打電話)】

    call模塊提供呼叫管理功能,包括撥打電話、跳轉(zhuǎn)到撥號(hào)界面、獲取通話狀態(tài)、格式化電話號(hào)碼等。
    的頭像 發(fā)表于 06-15 09:13 ?652次閱讀
    鴻蒙開發(fā)電話服務(wù):【@ohos.telephony.<b class='flag-5'>call</b> (撥打電話)】

    請(qǐng)問(wèn)cubemx中勾選call hal handler有什么作用?

    cubemx中勾選call hal handler有什么作用
    發(fā)表于 05-17 11:55

    LOTO示波器動(dòng)作編程功能命令批處理)

    我們定制開放。目前大概分為通道A相關(guān)命令,F(xiàn)FT相關(guān)命令,時(shí)間相關(guān)命令,以及數(shù)據(jù)相關(guān)命令,如下圖所示: 們可以選擇不同
    發(fā)表于 05-11 16:41

    淺談任意波形發(fā)生器及通道合并功能

    淺談任意波形發(fā)生器及通道合并功能? 任意波形發(fā)生器(AWG)是一種能夠產(chǎn)生各種復(fù)雜波形的信號(hào)發(fā)生器。它可以通過(guò)調(diào)節(jié)其輸出信號(hào)的幅值、頻率、相位等參數(shù),生成任意形狀的波形,包括正弦波、方波、三角波
    的頭像 發(fā)表于 01-19 15:54 ?572次閱讀

    jvm內(nèi)存分析命令和工具

    介紹JVM內(nèi)存分析命令和工具,并詳細(xì)介紹它們的使用方法和功能。 一、JVM內(nèi)存分析命令 jps命令:jps命令用于顯示當(dāng)前系統(tǒng)中正在運(yùn)行的J
    的頭像 發(fā)表于 12-05 11:07 ?1117次閱讀

    uboot命令的執(zhí)行過(guò)程是什么

    U-boot是通過(guò)執(zhí)行u-boot提供的命令來(lái)加載Linux內(nèi)核的,其中 命令bootm的功能 即為從memory啟動(dòng)Linux內(nèi)核映像文件。 在講解bootm加載內(nèi)核之前,先來(lái)看看u-boot中
    的頭像 發(fā)表于 12-04 17:31 ?738次閱讀

    三菱FX3U調(diào)用CALL指令介紹與應(yīng)用

    如果不執(zhí)行CALL指令,在工作中是不接通的。即使待用程序里面所有條件滿足了,所有的輸入條件都滿足了,也是不會(huì)輸出的。只有當(dāng)你執(zhí)行CALL指令后。用指針 P表示(例如 P1)。P后面的常數(shù),要跟 CALL指令設(shè)定的P1后面的程序要
    發(fā)表于 11-19 15:26 ?1197次閱讀
    三菱FX3U調(diào)用<b class='flag-5'>CALL</b>指令介紹與應(yīng)用

    CentOS7系統(tǒng)網(wǎng)絡(luò)配置命令

    CentOS 7是一種流行的Linux操作系統(tǒng),具有廣泛的用途和功能。在配置網(wǎng)絡(luò)時(shí),可以使用各種命令和工具來(lái)確保系統(tǒng)能夠正確連接到網(wǎng)絡(luò)并提供所需的服務(wù)。 以下是一些常用的網(wǎng)絡(luò)配置命令,以及如何使用它
    的頭像 發(fā)表于 11-17 11:07 ?4554次閱讀

    linux重啟命令有哪些

    Linux是一種自由和開放源代碼的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備。在Linux中,有多種命令用于重啟系統(tǒng)。在本文中,我們將詳細(xì)介紹常用的Linux重啟命令并解釋每個(gè)命令的用途
    的頭像 發(fā)表于 11-17 09:49 ?1951次閱讀