我的問題:
在過去 6 個月左右的時間里,我一直在使用 Codesys 創建專案,雖然我學到了很多關于編程環境的知識,但我還沒有找到一種在運行時將自定義訊息顯示到控制臺訊息日志的方法。
我想要的是:
在運行時或除錯時在 Codesys IDE 的訊息視窗中顯示訊息。
我試過的:
- 計數器:
我使用計數器來幫助跟蹤我的程式的某些實體何時發生,但是不斷地監視它們變得乏味,尤其是當我的專案變得更大或確切地知道計數器起源于我的程式中的哪個位置時。
- 編譯指示
我最近發現了 Codesys 所謂的“pragma”,雖然它們似乎正是我正在尋找的東西 - 我還沒有看到使用 pragma 的任何結果或輸出,所以我不確定它們的用途或作用。
為了顯示我的編譯指示是什么樣子,在許多情況下,我會有如下一行:
{info <'手動模式已啟動!'>} 或 {warning <'手動模式已終止!'>}
這些行不會導致錯誤,但據我所知,它們似乎沒有做任何事情。
- 自定義訊息:
我什至創建了自己的自定義訊息傳遞系統。該功能使用自定義函式將訊息添加到陣列,然后顯示在可視化上。該函式允許我從程式中的任何位置執行此操作,并且基本上用作列印陳述句。但是它需要可視化的事實使得使用起來很不方便,特別是對于小型專案或具有多個可視化的專案。
我很感激任何建議——如果我要求的東西是不可能的,那么我至少想知道。
uj5u.com熱心網友回復:
你想要的是CmpLog和ComponentManager庫。我的用法示例:
result: SysExcept.SysTypes.RTS_IEC_RESULT;
componentID: UDINT;
name: STRING := "myLogComponentName";
message: STRING := "my message";
// Execute this once and cache "componentID" in a global variable.
Component_Manager.CMAddComponent2(pszComponent := name, udiVersion := 1, udiCmpId := ADR(componentID), pResult := ADR(result));
// Use the cached "componentID".
CmpLog.LogAdd2(hLogger := CmpLog.LogConstants.LOG_STD_LOGGER, udiCmpID := componentID, udiClassID := CmpLog.LogClass.LOG_DEBUG, 1, 1, pszInfo := message);
日志將出現在正在運行的控制器內的“日志”選項卡中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/476985.html
