快換的Profinet對接使用方式
同一個設備可以在不同的機器人上交替運行。為此必須使用其他的 IOCTL 功能進行解耦和耦合。如果一個設備僅在一個機器人上運行,則也可以使用這些 IOCTL 功能。其他 IOCTL 功能只能為了兼容的原因而使用。
- 在帶有工具更換系統的應用中,絕不能將總線用戶持久地耦合在工業以太網上。
- 在冷啟動或在一個輸入 / 輸出端配置時,在該情況下這將直接導致工業以太網故障。
- 關閉始終可用這一功能可以防止這些設備在冷啟動后或者重新配置輸入 /輸出端后被邏輯耦合進工業以太網。
- 這些已被停用的設備可以在以后程序運行時毫無問題地重新耦合進來。
- 但是在項目設置時必須考慮到,將所有工具在物理和邏輯上集入進工業以太網項目。
解耦 --已解耦設備的屬性:
若將已解耦的設備與工業以太網或者電源分離開,這不會觸發故障。
在已解耦的設備上進行的所有 IO 操作都無效。
已解耦的設備不能對讀 / 寫故障進行處理。
解耦時設備的輸入端已被歸零。
耦合
IOCTL 函數是同步執行的。當設備重新可以使用并可寫入時,該函數才返回。耦合的設備不可用時,例如因為它與總線或電源斷開了,在超時 ( 默認 10 秒) 后顯示一條提示信息。
- 菜單路徑:項目結構 > ProfiNet > 用鼠標雙擊 > 設備設定
- 通過勾選將設備設置為始終可用或者取消此設置。
選項 “始終可用” 會影響機器人控制系統在冷啟動或在重新配置 I/O 驅動程序時對于已解耦設備的反應。”始終可用”可在 WorkVisual 內的設備數據中設置。
如果設備沒有勾選選項 始終可用,則設備在重啟時或在重新配置 I/O 驅動程序時自動解耦。為了與設備建立連接,必須用 IOCTL 功能重新耦合設備。
通過 HMI 耦合和解耦現場總線用戶
1.選擇菜單序列顯示 >? 變量 >? 單個。
2.2. 在 名稱欄輸入:
解耦時:
在一臺機器人上使用該設備時:
=IOCTL("PNIO-CTRL",60,[ 用戶識別號 ])
在一臺或多臺機器人上使用該設備時:
=IOCTL("PNIO-CTRL",1060,[ 用戶識別號 ])
耦合時:
在一臺機器人上使用該設備時:
=IOCTL("PNIO-CTRL",50,[ 用戶識別號 ])
在一臺或多臺機器人上使用該設備時:
=IOCTL("PNIO-CTRL",1050,[ 用戶識別號 ])
IOCTL :用于耦合和解耦的 系統變量
PNIO-CTRL :通過 ProfiNet 驅動程序名 調用
50/1050? = 調用耦合
60/1060? = 調用解耦
用戶識別號 要耦合或解耦的模塊的設備編號 /? 用戶識別號
在單個變量顯示中,執行每個IOCTL 指令后,在當前值窗口內以數字的形式顯示一個返還值。此數字有下列不同的含義:
l0 :IOCTL 已成功執行。
l1 :超時 — 設備未能在規定時間內耦合或解耦。
l2 :IOCTL 包含一個不正確的參數 — 請檢查輸入!
l-1 :故障 — 無法執行指令。
IOCTL 功能是同步執行的。當設備重新可以使用并可寫入時,才能再次執行 IOCTL 功能。
若耦合的設備不可用,例如因為它與總線或電源斷開了,則將在超時后顯示一條信息。
若規定的用于耦合或解耦的時間設計得太短,可以重新設定超時。標準設置為 10 秒,即 10000 毫秒
RET = IOCTL("PNIO-CTRL",1001,10000)
詢問設備狀態:
用 IOCTL 函數 70 可以詢問從屬設備的狀態。
RET = IOCTL("PNIO-CTRL",70,[ 用戶 ID] )
RET 的返回值:
l4 :設備已解耦。
l5 :設備已耦合,但出現錯誤。
l6 :設備已耦合且無錯誤。
l7 :設備已解耦,但內部仍在 PROFINET Controller 中激活。
通過激活或停用總線故障
在默認情況下激活總線故障。如果出現總線故障,這會導致停止和/或鎖定激活命令。借助 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 命令 |
通過 KRL 重啟總線系統
總線故障后,可在運行時在程序之內重啟總線系統。為此,必須在程序中借助KRL 函數 IOCTL 編程一個重啟總線系統的命令。
RET = IOCTL("PNIO-CTRL",12,0)
12 | 用于重啟總線系統的 IOCTL 命令 |
ENDIF
ENDSWITCH
CASE 60? 60斷開網絡
SWITCHDockBhf
CASE 'B000000'? -工具站上全是工具-頭上在放工具
IF DOCK_SZ AND NOT DOCK_SP THEN-帶2焊鉗用2地址
SetPlcIntNull(1)? 設置軟PLC歸0
ENDIF
IF DOCK_SZ AND DOCK_SP THEN-帶3焊鉗
SetPlcIntNull(1)? 設置軟PLC歸0
SetPlcIntNull(2)?
ENDIF
IF DOCK_NZ THEN? 伺服鉚鉗帶釘
SetPlcIntNull(4) 設置軟PLC歸0
SetPlcIntNull(5)
ENDIF
IF DOCK_CZ THEN? 伺服鉚鉗無釘
SetPlcIntNull(6) 設置軟PLC歸0
SetPlcIntNull(7)
ENDIF
DEFAULT 工具站上在關網時沒有檢測到工具!則信息提示
SyncMoveMessage(8, #QuitMsg) 移動信息提示:”快換站:幾個工具站沒有被占用”
ENDSWITCH
Ret=ioctl("PNIO-CTRL",60,par1)-斷開網絡
DEFAULT? 如果不是50和60
MLD(21,#QuitMsg);? 提示信息P2設置錯誤
ENDSWITCH
SWITCH ret? 接通關閉,反饋值
CASE0? ;
IF PAR2==50 THEN? ------接通
IF $OUT[O_R_Hand] THEN-A11機器人手動
MLD(90,#NotifyMsg)?? -"PNIO Teilnehmer angedockt"提示90 PN設備連接上
ELSE
ENDIF
ENDIF
IF PAR2==60 THEN? ------斷開
IF $OUT[O_R_Hand] THEN
MLD(91,#NotifyMsg) -"PNIO Teilnehmer abgedockt"提示91 PN設備斷開
ELSE
ENDIF
ENDIF
CASE1? ;?? ---連接超時
MLD(92,#QuitMsg) - "Timeout bei Docking"? 快換頭連接超時-
CASE2? ;
MLD(93,#QuitMsg)-"IOCTL falscher Parameter"? IOCTL 參數設置錯誤-
DEFAULT
ENDSWITCH???
ENDIF
;ENDFOLD
編輯:黃飛
?
評論
查看更多