性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

KUKA 機器人消息庫(MsgLib)程序詳解與調(diào)用指南

一、程序概述

該程序是一個基于 KUKA 機器人編程語言(KRL,KUKA Robot Language)的消息處理庫,用于在機器人程序運行過程中生成、管理各類交互消息(如通知、提示、錯誤、對話框等)。通過封裝標準化的消息處理邏輯,簡化了開發(fā)者與機器人用戶的交互設計,支持消息參數(shù)化、日志記錄、程序控制等功能。

二、核心接口與功能概覽

程序提供了 7 個核心全局子程序 / 函數(shù),覆蓋不同類型的消息需求,具體如下:

三、通用參數(shù)解釋

各函數(shù)的參數(shù)存在共性,核心參數(shù)定義如下:

四、核心函數(shù)詳解

1. MsgNotify通知消息功能

生成非阻塞的通知消息,用于提示信息(如運行狀態(tài)、警告等),不暫停程序執(zhí)行。

代碼邏輯

GLOBAL DEF MsgNotify(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
  ; 1. 處理MsgOpt默認值(若參數(shù)無效則設為默認:VL_Stop=TRUE, Clear_P_Reset=TRUE, Log_To_DB=FALSE)
  ; 2. 校驗并截斷消息文本(sText[]最大80字符,sModul[]最大24字符)
  ; 3. 處理參數(shù)插入:若nNumPar有效則替換%1為數(shù)值,否則替換為sTextPar[]文本
  ; 4. 調(diào)用系統(tǒng)函數(shù)Set_KrlMsg生成#NOTIFY類型消息
END

示例

MsgNotify("this is a notify message") ; 簡單通知
MsgNotify("this is a %1 notify message", "Tech", , "asd") ; 帶文本參數(shù)的通知(%1替換為"asd")

2. MsgQuit:退出消息

功能生成阻塞的退出消息,程序會暫停并等待消息被處理(如用戶確認)后再繼續(xù)執(zhí)行。

代碼邏輯

GLOBAL DEF MsgQuit(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
  ; 1. 同MsgNotify的參數(shù)處理(默認值、文本截斷、參數(shù)插入)
  ; 2. 調(diào)用Set_KrlMsg生成#QUIT類型消息
  ; 3. 循環(huán)等待消息處理完成(通過Exists_KrlMsg檢查消息句柄是否存在)
  WHILE ( Exists_KrlMsg(nHandle) )
    WAIT sec 0.1
  ENDWHILE
END

示例

MsgQuit("this is a quit message", "myMod") ; 簡單退出消息
INT myInt=123
MsgQuit("this is the %1 quit message", "Module", myInt) ; 帶數(shù)值參數(shù)(%1替換為123)

3. MsgState:狀態(tài)消息

功能生成狀態(tài)類消息,返回消息句柄(nHandle),用于后續(xù)通過句柄管理消息(如更新、清除)。

代碼邏輯

GLOBAL DEF MsgState(nHandle:OUT, sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
  ; 1. 同MsgNotify的參數(shù)處理
  ; 2. 調(diào)用Set_KrlMsg生成#STATE類型消息,返回句柄到nHandle
END

用途

適用于需要持續(xù)顯示并動態(tài)更新的狀態(tài)信息(如進度、實時數(shù)據(jù)),通過句柄可后續(xù)操作消息。

4. MsgLoop:循環(huán)消息

功能

生成持續(xù)顯示的循環(huán)消息(如 “運行中...”),發(fā)送空字符串可取消消息。

代碼邏輯

GLOBAL DEF MsgLoop(sText[]:IN,sModul[]:IN)
  ; 1. 截斷文本(sText[]最大80字符,sModul[]默認"Appl")
  ; 2. 若消息文本非空且含有效字符,調(diào)用MsgState生成循環(huán)消息
  ; 3. 若消息文本為空或僅空格,清除已有的循環(huán)消息(通過句柄lnHandle)
END

示例

MsgLoop("this is the loop message") ;

顯示循環(huán)消息MsgLoop(" "); 取消循環(huán)消息

5. MsgDialog:對話框消息

功能

生成帶軟鍵的交互式對話框,等待用戶選擇后返回結果(nAnswer),支持最多 7 個軟鍵選項。

代碼邏輯

GLOBAL DEF MsgDialog(nAnswer:OUT,sText[]:IN,...sDialogSK7[]:IN,NoBrakes:IN, nMsgNr:IN,MsgOpt:IN)
  ; 1. 處理MsgOpt默認值和文本截斷
  ; 2. 配置軟鍵(sDialogSK1到sDialogSK7),設置軟鍵文本(最大24字符)
  ; 3. 調(diào)用系統(tǒng)函數(shù)SET_KRLDLG生成對話框消息
  ; 4. 循環(huán)等待用戶選擇(通過Exists_KrlDlg檢查對話框狀態(tài))
  ; 5. 若NoBrakes=TRUE,保持機器人剎車松開(不鎖軸)
END

示例

MsgDialog(DialogAnswer, "StartPTP", "CrossMeld", "Achse 3", "YES", "NO", "Cancel") ;

對話框消息文本為"StartPTP",模塊"CrossMeld",參數(shù)"Achse 3",軟鍵為YES/NO/Cancel;

用戶選擇后,DialogAnswer返回對應軟鍵索引(如1=YES,2=NO)

6. MsgNotifyTextPar 與 MsgQuitTextPar:帶多文本參數(shù)的消息

功能

支持 2 個文本參數(shù)的通知 / 退出消息(%1和%2占位符),當nNumPar=0時啟用文本參數(shù),nNumPar>0時啟用數(shù)值參數(shù)。

代碼邏輯

GLOBAL DEF MsgNotifyTextPar(...)
  ; 1. 同MsgNotify的參數(shù)處理
  ; 2. 若nNumPar=0,替換%1為sTextPar[],%2為sTextPar2[]
  ; 3. 若nNumPar>0,替換%1為數(shù)值nNumPar
  ; 4. 調(diào)用Set_KrlMsg生成#NOTIFY類型消息
END

示例

MsgNotifyTextPar("Error: %1 - %2", "CrossMeld", 0, "Sensor", "Disconnected", 511);

消息文本為"Error: Sensor - Disconnected",模塊"CrossMeld",編號511

7. CheckOfMsgOpt:消息選項校驗函數(shù)

功能

校驗MsgOpt結構體參數(shù)的有效性,為未定義或無效的成員設置默認值。

碼邏輯

DEFFCT KrlMsgOpt_TCheckOfMsgOpt(LocalMsgOpt:IN)
  ; 1. 檢查VL_Stop:無效則設為TRUE
  ; 2. 檢查Clear_P_Reset:無效則設為TRUE
  ; 3. 檢查Log_To_DB:無效則設為FALSE
  ; 4. 返回校驗后的MsgOpt
ENDFCT

作用確保所有消息選項有合理默認值,避免因參數(shù)缺失導致的程序錯誤。

五、關鍵技術細節(jié)

文本長度控制:所有文本參數(shù)(如sText[]、sModul[])均有長度限制,超過部分會被截斷(如sText[]最大 80 字符),避免消息顯示異常。

參數(shù)占位符:通過%1(單參數(shù))或%1+%2(雙參數(shù))在消息文本中插入動態(tài)內(nèi)容,支持數(shù)值(nNumPar)或文本(sTextPar[])參數(shù)。

阻塞與非阻塞非阻塞:MsgNotify、MsgState、MsgLoop不暫停程序;阻塞:MsgQuit、MsgDialog會等待消息處理完成后再繼續(xù)。

消息管理:通過句柄(nHandle)標識消息,可通過系統(tǒng)函數(shù)(如Exists_KrlMsg、Clear_KrlMsg)檢查或清除消息。

日志與控制MsgOpt.Log_To_DB控制消息是否記錄到系統(tǒng)日志;MsgOpt.VL_Stop控制是否觸發(fā)程序提前停止。

六、程序用途與優(yōu)勢

標準化交互:統(tǒng)一消息格式和處理邏輯,簡化機器人程序的用戶交互設計。

靈活參數(shù)化:支持動態(tài)插入數(shù)值 / 文本參數(shù),適應不同場景的消息需求(如錯誤詳情、狀態(tài)數(shù)據(jù))。

程序控制:通過MsgOpt靈活配置消息是否阻塞、是否記錄日志、是否自動清除,平衡交互體驗與系統(tǒng)性能。

多場景支持:覆蓋通知、警告、錯誤、狀態(tài)顯示、用戶確認等多種交互場景,滿足機器人調(diào)試、運行、維護全流程需求。

七、消息函數(shù)調(diào)用指南

一、調(diào)用前的準備

確保消息庫已加載該消息庫(MsgLib)需作為子程序被主程序或其他模塊引用,通常通過 EXTERN 聲明或在程序頭文件中包含,確保機器人系統(tǒng)能識別這些全局函數(shù)。

參數(shù)格式要求

字符串參數(shù)(如 sText[]、sModul[])需用雙引號包裹(如 "Error")。

數(shù)值參數(shù)(如 nNumPar、nMsgNr)直接傳遞數(shù)字(如 123)。

可選參數(shù)可省略(用逗號分隔占位),系統(tǒng)會自動使用默認值。

二、常用函數(shù)調(diào)用

示例

1. MsgNotify:發(fā)送通知消息(非阻塞)

用途:提示運行狀態(tài)、警告等,不暫停程序。

示例:; 簡單通知(僅消息文本)

MsgNotify("系統(tǒng)啟動中...");

帶模塊名和數(shù)值參數(shù)(%1替換為數(shù)值)

INT temp = 35

MsgNotify("溫度警告:當前%1℃", "溫控模塊", temp)

; 帶文本參數(shù)(%1替換為文本)

MsgNotify("傳感器%1連接正常", "檢測模塊", , "A1")

2. MsgQuit:發(fā)送退出消息(阻塞)

用途:提示嚴重信息(如錯誤),程序暫停等待處理后再繼續(xù)。

示例:

; 簡單退出消息MsgQuit("程序執(zhí)行完成", "主模塊"); 

帶消息編號和選項(不記錄日志)

KrlMsgOpt_T opt

opt.Log_To_DB = FALSE  ; 不寫入日志

MsgQuit("機械臂到達極限位置", "運動模塊", , , 5001, opt)

3. MsgDialog:顯示對話框(等待用戶選擇)

用途:需要用戶確認或選擇的場景(如確認啟動、選擇模式)。

示例:

INT answer  ; 存儲用戶選擇結果(1~7對應7個軟鍵)

; 帶3個軟鍵的對話框(YES/NO/Cancel)

MsgDialog(answer, "是否執(zhí)行自動上料?", "上料模塊", , "YES", "NO", "Cancel");

根據(jù)用戶選擇執(zhí)行不同邏輯

IF answer == 1 THEN  ; 用戶選擇第一個軟鍵"YES" 

PTP HOME

AUTO_LOAD()  ; 調(diào)用自動上料程序

ELSEIF answer == 2 THEN  ; 用戶選擇"NO"

MsgNotify("取消自動上料", "上料模塊")

ENDIF

4. MsgLoop:顯示循環(huán)消息(持續(xù)提示)

用途:程序運行中持續(xù)顯示狀態(tài)(如 “運行中”),完成后取消。

示例:

; 開始循環(huán)顯示"抓取中..."

MsgLoop("抓取中...", "抓取模塊")

; 執(zhí)行抓取動作(耗時操作)

; 完成后取消循環(huán)消息(傳遞空字符串)

MsgLoop(" ", "抓取模塊")

5. MsgNotifyTextPar:帶多文本參數(shù)的通知

用途:

消息文本中需要插入 2 個文本參數(shù)(%1 和 %2)。

示例:

; %1替換為"傳送帶A",%2替換為"堵塞"

MsgNotifyTextPar("設備%1發(fā)生%2故障", "物流模塊", 0, "傳送帶A", "堵塞")

6. MsgState:生成狀態(tài)消息(返回句柄)

用途:

需要后續(xù)管理的狀態(tài)消息(如動態(tài)更新、手動清除)。

示例:

INT msg_handle  ; 消息句柄

; 生成狀態(tài)消息并獲取句柄

MsgState(msg_handle, "焊接進度:30%", "焊接模塊")

; (后續(xù)邏輯)更新進度后清除舊消息,顯示新消息

WAIT SEC 5

Clear_KrlMsg(msg_handle)  

; 清除舊消息MsgState(msg_handle, "焊接進度:60%", "焊接模塊")

三、參數(shù)傳遞技巧

省略可選參數(shù)

函數(shù)的可選參數(shù)(如 nMsgNr、MsgOpt)可省略,只需用逗號占位。例如:

; 省略nNumPar、sTextPar、nMsgNr,僅傳遞必要參數(shù)

MsgNotify("操作完成", "主模塊", , , , )

使用消息編號(nMsgNr)

為消息分配編號(如錯誤碼),便于日志檢索和問題定位:

MsgQuit("伺服電機故障", "驅(qū)動模塊", , , 1002)  ; 1002為自定義故障碼

配置消息選項(MsgOpt)

通過 MsgOpt 控制消息行為(如是否暫停、是否記錄日志):

KrlMsgOpt_T opt

opt.VL_Stop = FALSE  ; 不觸發(fā)程序提前停止

opt.Log_To_DB = TRUE  ; 寫入系統(tǒng)日志

MsgNotify("電量低", "電源模塊", , , , opt)

四、注意事項

文本長度限制

sText[] 最大 80 字符,sModul[] 最大 24 字符,超出部分會被截斷。

阻塞函數(shù)的影響

MsgQuit 和 MsgDialog 會暫停程序執(zhí)行,直到消息被處理(如用戶確認),需合理安排調(diào)用時機,避免影響生產(chǎn)效率。

循環(huán)消息的取消

MsgLoop 必須通過傳遞空字符串(" ")取消,否則會一直顯示。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 1
關注 26
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧