通過 KRL 解耦 PROFINET 設(shè)備
? | IOCTL 命令 1060: |
? |
為了可以在不同的機器人上交替地運行一個設(shè)備,需要 IOCTL 命 令 1060 進行解耦。如果該設(shè)備僅在一個機器人上運行,也可以使 用該命令。 設(shè)備輸出端設(shè)置在解耦后立即歸零。如果將設(shè)備短時間斷開電源后 又重新接上,則不會恢復(fù)輸出端設(shè)置。 |
? | IOCTL 命令 60: |
? |
只在該設(shè)備僅在一個機器人上運行時,才能使用該 IOCTL 命令。 只出于兼容性原因,該命令才仍可用。 在解耦時,設(shè)備上的輸出端設(shè)置保持不變。如果將設(shè)備短時間斷開 電源后又重新接上,則會恢復(fù)輸出端設(shè)置。 |
始終可用 |
? 勾選:機器人控制器啟動時期待設(shè)備已被激活。若設(shè)備未被激活,將輸出故障信息。 ? 未勾選:機器人控制器在啟動時不檢查設(shè)備是否已被激活。 |
已解耦設(shè)備的屬性
? 若將解耦了的設(shè)備與總線或者電源分離開,這不會觸發(fā)故障。
? 在已解耦的設(shè)備上進行的所有輸入/輸出操作都將保持無效。
? 已解耦的設(shè)備不能對讀/寫故障進行處理。
? 解耦時設(shè)備的輸入端已被歸零。
? 解耦時設(shè)備的輸入端已被歸零。
選項 始終可用
對于帶工具更換系統(tǒng)的應(yīng)用程序,并非所有設(shè)備都持續(xù)耦合。在冷啟動或重新配置 I/O 驅(qū)動程序時,解耦的設(shè)備將直接觸發(fā)總線故障。用選項 始終可用可以避免該情況:
? 勾選:錯誤信息
未勾選:無故障信息
句法
? 在一臺機器人上使用該設(shè)備時:
RET = IOCTL("PNIO-CTRL",60,用戶 ID)
? 在一臺或多臺機器人上使用該設(shè)備時:
RET = IOCTL("PNIO-CTRL",1060,用戶 ID)
這里將根據(jù)所用的工具給 ID 為 3 的設(shè)備解耦:
...
IF (NEXT_TOOL == GRIPPER_1) THEN
RET = IOCTL("PNIO-CTRL",1060,3)
ENDIF
...
2.通過 KRL 耦合 PROFINET 設(shè)備
有 2 個具有不同應(yīng)用和效果的 IOCTL 命令用于耦合:
? IOCTL 命令 1050:為了使設(shè)備可以在不同的機器人上交替運行,需要IOCTL 命令 1050 進行耦合。如果該設(shè)備僅在一個機器人上運行,也可以使用該命令。
? IOCTL 命令 50:只在該設(shè)備僅在一個機器人上運行時,才能使用該IOCTL 命令。只出于兼容性原因,該命令才仍可用。
句法
? 在一臺機器人上使用該設(shè)備時:
RET= IOCTL("PNIO-CTRL",50,用戶 ID)
? 在一臺或多臺機器人上使用該設(shè)備時:
RET= IOCTL("PNIO-CTRL",1050,用戶 ID)
這里將根據(jù)所用的工具給 ID 為 5 的設(shè)備耦合:
...
IF (NEXT_TOOL == GRIPPER_2) THEN
RET = IOCTL("PNIO-CTRL",1050,5)
ENDIF
...
3、通過 KRL 更改耦合 PROFINET 設(shè)備的等待時間
有些設(shè)備的耦合時間長于其他設(shè)備。因此,在機器人控制系統(tǒng)輸出錯誤信息之前,要等待規(guī)定的時間。默認情況下,規(guī)定的等待時間為 10 秒,可在運行時于程序之內(nèi)更改。為此,必須在程序中借助 KRL 函數(shù) IOCTL 編程一個更改等待時間的命令。
句法
RET = IOCTL("PNIO-CTRL",32776,等待時間)
素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返回值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
32776 | 用于更改等待時間的 IOCTL 命令 |
等待時間 | 在機器人控制器輸出錯誤信息之前要等待的時間,單位:ms |
返回值:RET
0 | 已成功更改等待時間。 |
-1 | 由于無法訪問總線系統(tǒng),所以未能更改等待時間。 |
示例
在該示例中,將該值設(shè)為 15 s (= 15000 ms):
RET = IOCTL("PNIO-CTRL",32776,15000)
4.通過 KRL 查詢 PROFINET 設(shè)備的狀態(tài)
說明
運行時,可在一個程序之內(nèi)查詢 PROFINET 設(shè)備的狀態(tài)。為此,必須在程序中借助 KRL 函數(shù) IOCTL 編程一個查詢狀態(tài)的命令。
句法
RET = IOCTL("PNIO-CTRL",70,用戶 ID)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返還值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
70 | 用于查詢設(shè)備狀態(tài)的 IOCTL 命令 |
用戶識別號 | 要查詢其狀態(tài)的設(shè)備的用戶 ID |
返回值RET
值 | 說明 |
4 | 設(shè)備已解耦。 |
5 | 設(shè)備已耦合,但出現(xiàn)錯誤。 |
6 | 設(shè)備已耦合且工作正常。 |
7 |
設(shè)備已解耦,但內(nèi)部仍在 PROFINET Controller 中激活。 提示:例如,當用 IOCTL 命令 60 將設(shè)備解耦時,會出現(xiàn)這種狀態(tài)。在這種情況下,PROFINET Controller 會通過 DCP 搜索設(shè)備。 |
5.通過 KRL 激活或停用總線故障
在默認情況下激活總線故障。如果出現(xiàn)總線故障,這會導(dǎo)致停止和/或鎖定激活命令。借助 KRL 函數(shù) IOCTL 可停用并再次激活總線故障。激活或停用可以在運行時于程序內(nèi)通過 KRL 執(zhí)行。
可為一個或多個總線實例停用總線故障。如果總線故障被停用,會有如下表現(xiàn):
? 總線故障:不停止和/或鎖定激活命令
? 總線故障:smartHMI 信息窗口中沒有故障信息
? smartHMI 信息窗口中會顯示以下信息:
KRC IO 總線錯誤抑制針對下列總線實例激活:{總線實例}{總線實例}{總線實例}
? 如果總線實例中已出現(xiàn)故障,則無法再次激活總線故障。
該情況下可通過系統(tǒng)變量 $IOBUS_INFO 讀取是否出現(xiàn)總線故障。
句法
? 為了停用總線故障:
RET = IOCTL("KRC->PNIO-CTRL", 1, 1)
? 為了激活總線故障:
RET = IOCTL("KRC->PNIO-CTRL", 1, 0)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返還值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
1、1 | 用于停用總線故障的 IOCTL 命令 |
1、0 | 用于激活總線故障的 IOCTL 命令 |
返回值RET
值 | 說明 |
0 | IOCTL 命令成功執(zhí)行。 |
-1 | 未找到指定的總線驅(qū)動程序。 |
-3 | KRL 函數(shù) IOCTL 包含一個錯誤參數(shù)。 |
-4 | 由于出現(xiàn)總線故障,不允許激活。 |
6.通過 KRL 查詢機器人控制器的節(jié)能模式
運行時,可在一個程序之內(nèi)查詢機器人控制器的節(jié)能模式。為此,必須在程序中借助 KRL 函數(shù) IOCTL 編程一個查詢節(jié)能模式的命令。
句法
RET = IOCTL("PNIO-DEV",1002,0)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返回值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-DEV | 總線驅(qū)動程序的名稱 |
1002 | 用于查詢機器人控制器節(jié)能模式的 IOCTL 命令 |
返回值RET
值 | 說明 |
-1 | 查詢時出現(xiàn)了一個錯誤。 |
2 | 機器人控制器處于制動器已制動的狀態(tài)下。 |
240 | 機器人控制器處于 Energy_Saving_Disabled 狀態(tài)下。 |
255 | 機器人控制器處于 Ready_To_Operate 狀態(tài)下。 |
256 | PROFIenergy 未初始化。 |
257 | 機器人控制器處于過度狀態(tài)下 |
通過 KRL 重啟總線系統(tǒng)
總線故障后,可在運行時在程序之內(nèi)重啟總線系統(tǒng)。為此,必須在程序中借助KRL 函數(shù) IOCTL 編程一個重啟總線系統(tǒng)的命令。
句法
RET = IOCTL("PNIO-CTRL",12,0)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返還值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
12 | 用于重啟總線系統(tǒng)的 IOCTL 命令 |
返回值RET
值 | 說明 |
0 | 重啟總線系統(tǒng)成功。 |
3 | 重啟總線系統(tǒng)失敗。 |
7.通過 KRL 查詢有故障的 PROFINET 設(shè)備數(shù)量
運行時,可在一個程序之內(nèi)查詢總線系統(tǒng)上有故障的 PROFINET 設(shè)備數(shù)量。為此,必須在程序中借助 KRL 函數(shù) IOCTL 編寫一個查詢故障設(shè)備的命令。
RET = IOCTL("PNIO-CTRL",32774,0)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返回值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
32774 | 用于查詢故障設(shè)備數(shù)量的 IOCTL 命令 |
返回值RET
值 | 說明 |
0 | 總線系統(tǒng)上的所有設(shè)備功能完好。 |
>0 | 故障設(shè)備的數(shù)量 |
8.通過 KRL 查詢已配置的 PROFINET 設(shè)備數(shù)量
運行時,可在一個程序之內(nèi)查詢總線系統(tǒng)上已配置的 PROFINET 設(shè)備數(shù)量。為此,必須在程序中借助 KRL 函數(shù) IOCTL 編寫一個查詢已配置設(shè)備的命令。
句法
RET = IOCTL("PNIO-CTRL",32775,0)
元素 | 說明 |
RET | 用于保存 KRL 函數(shù) IOCTL 返回值的變量。該變量的數(shù)據(jù)類型為 INT,在使用之前必須在程序中聲明。 |
IOCTL | 用于向總線驅(qū)動程序發(fā)送命令的 KRL 函數(shù) |
PNIO-CTRL | 總線驅(qū)動程序的名稱 |
32775 | 用于查詢已配置設(shè)備數(shù)量的 IOCTL 命令 |
返回值RET
值 | 說明 |
-1 | 執(zhí)行 IOCTL 命令時出錯。 |
>0 | 已配置設(shè)備的數(shù)量 |
-
控制器
+關(guān)注
關(guān)注
112文章
16445瀏覽量
179446 -
機器人
+關(guān)注
關(guān)注
211文章
28641瀏覽量
208404 -
DCP
+關(guān)注
關(guān)注
0文章
30瀏覽量
17287
原文標題:KUKA.機器人8.7系統(tǒng) 對 PROFINET軟件進行編程控制
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論