基于CANbus和SNMP的起重力矩監控系統
管理端向代理發送Get 請求,要求返回壓力、角度等數據。代理接受請求后,對PDU 進行解析處理,并調用相應的子功能模塊,從MIB 文件中讀出“壓力”、“角度”、“長度”等變量的值,然后代理調用編碼模塊,將這些數據打包成相應的PDU 發送給管理端作為對Get 請求的響應。管理端接收到相應數據后,將它們與預先設定的參考值作比較,根據實際值與設定值之間的偏差,判斷起重力矩是否超過限制,并據此發出相應的開關控制命令。
(2)Set 操作
Set 請求的原理與Get 類似,不過是將某一新的值寫給相應的變量,而不是讀,從而實現對被管理設備的控制。在該系統中,管理端向代理發送Set 請求,以設置各開關的狀態變量。代理接受請求后,向MIB 文件中寫入各“開關”變量的新值,并通過現場的CAN 總線傳遞給輸出控制模塊來控制上升、下降、左轉、右轉開關的動作。
3.3 MIB 的編寫
MIB 是有關被管理目標對象的數據庫,其數據結構呈樹形。本系統中的MIB 文件存儲了現場傳感器采集的各種信號以及開關的狀態,通過讀取和設置這些MIB 對象的值,管理端完成監測和控制。MIB 文件編寫中最關鍵的一點是確定要定義的變量。在該系統的MIB 設計中定義的變量如表1 所示。
MIB 變量名 | 含義 | 類型 |
DegreeValue | 角度的實際值 | Integer |
LengthValue | 長度的實際值 | Integer |
PressureValue | 壓力的實際值 | Integer |
UpSwitch | 上升開關狀態 | Integer |
DownSwitch | 下降開關狀態 | Integer |
LeftSwitch | 左轉開關狀態 | Integer |
RightSwitch | 右轉開關狀態 | Integer |
3.4 代理與管理端程序的開發
采用AdventNet Agent Toolkit C Edition 工具包來開發代理程序,該工具包提供了一個廣泛而完整的開發環境,并帶有代理信息定義編輯器、編譯器等一系列代理開發工具及測試工具,降低了代理開發的復雜性。所開發的代理僅占用極小的空間,卻具有較高的性能,而且代理的擴展幾乎不會影響到應用和設備的性能。在編寫好MIB 文件后,依據Agent Toolkit C Edition 工具的開發流程編寫代理程序,其主要功能是對MIB 文件進行管理,并實現對網絡端口的偵聽,SNMP 數據報的解碼及編碼,對管理端的請求進行處理,以及對硬件的管理。
在VC++.NET 開發平臺下利用NET-SNMP 開發包來編寫管理端程序。NET-SNMP 開發包是目前最為流行的基于C++的SNMP 協議開發包之一,開發包中的SNMP 協議模塊為用戶使用SNMP 協議來構建網絡管理應用層軟件提供了良好的協議通訊的基礎,它提供了一系列的API 函數可供開發者使用。本系統的管理端程序運行在遠程監控計算機上,與工作現場工控機上駐留的代理之間進行遠程數據通信,主要完成Get 和Set 操作兩項任務。
5 結論
CAN 總線因其自身的諸多優點適合于對實時性、可靠性、安全性要求十分嚴格的機械控制網絡。SNMP 協議簡潔,可擴展性強,基于SNMP 協議的網絡傳輸以Internet 作為媒介,傳輸距離不受限制,可進一步拓展CAN 總線的優勢。本文的創新點在于,結合這兩種技術的優點,實現了基于CAN 總線和SNMP 協議的起重力矩遠程監控系統,該方案可以保障可靠、實時的遠程數據傳輸和命令執行,確保起重機械的安全運行。項目經濟效益達20 萬元。












評論