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