1 概述
在工程機械的控制系統中,計算機技術、網絡通訊技術的應用日趨廣泛。CAN 總線由于其數據傳輸高可靠性和高實時性的特點,已經成為工業現場數據傳輸方式的事實標準之一,現已被廣泛應用于汽車、工業控制、智能樓宇、煤礦設備等各個行業的數據通訊。CAN 總線采用短幀報文結構,實時性好,并具有完善的數據校驗、錯誤處理以及檢錯機制,此外CAN 總線節點在嚴重錯誤下會自動脫離總線,對總線通訊沒有影響[1]。CAN 總線網絡中,數據收發、硬件檢錯均由CAN 控制器硬件完成,大大增強了CAN 總線網絡的抗電磁干擾能力,因此非常適用于對實時性、安全性要求十分嚴格的機械控制網絡。
SNMP 作為TCP/IP 協議族的一個子協議,是IEITF 研究小組提出的網絡管理解決方案之一,它作為一種簡潔而流行的網絡管理協議在工業界獲得了廣泛的應用。SNMP 網絡管理模型中的重要組成部分包括:網絡管理協議、管理端(Manager)、代理(Agent )和管理信息庫(MIB)。其管理的基本思想是,通過管理端與代理之間的相互合作,以分布方式執行網絡管理活動[2]。管理端負責管理網絡中各種資源和設備,采用輪詢(polling )或手動方式向遠程的代理發送Get(讀取)和Set(設置)請求命令,以獲取信息或實施控制。代理駐留在設備上,負責設備的實際管理和控制,響應和執行管理端的管理命令,并且返回應答信息。MIB 存放被管對象資源的所有信息,管理端通過代理來讀取和設置MIB 文件中的變量值,以實現對被管理設備的監控。每個網絡設備上的MIB 又由代理負責維護。SNMP 最大的優點是協議簡潔,可擴展性強,只要將新的MIB 裝載在管理軟件上就可以實現對新的終端的控制與訪問。
起重力矩限制系統是起重機械運行中重要的安全保障裝置,其核心在于對規定動作執行的精確度,這不僅有賴于傳感器和執行器的精度,還有賴于數據采集信號和命令的執行速度。比如起落桿的左右轉動角度信號,通過數據采集模塊將信號標準化,主控工控機接收到該信號后和預先設定的參數做比較,并根據偏差指揮左轉或右轉開關動作,并最終到位。傳統的起重力矩控制系統采用基于RS485 的信號傳輸,其通訊波特率僅為57.6Kbps ,系統穩定性差,電動機和其他大功率設備常常影響系統的正常運行。而采用CAN 總線傳輸信號則不僅提高系統的抗電磁干擾能力,而且可使通訊波特率大大提高。基于SNMP 協議的遠程通信,傳輸距離不受限制,這相對于其他工業控制總線有不可比擬的優勢。本文提出的方案結合應用CAN 總線和SNMP 協議的優點,構建遠程起重力矩監控系統,現場數據傳輸速率可高達500Kbps ,并具有硬件自動校驗和錯誤自動重發功能。該方案可以保障可靠、實時的數據傳輸和命令執行,保障起重機械的安全運行。
2 系統硬件結構與特點
在起重機工作現場,通過CAN 總線實現對各傳感器信號的采集以及對輸出裝置的控制,具有抗干擾能力強、可靠性高、實時響應性好,線纜少易敷設、成本低等優點。現場工控機與遠程監控計算機之間的通信采用Internet 作為媒介,使用基于SNMP 協議的遠程傳輸,進一步拓展了CAN 總線的優勢。
現場起重機工作的角度、長度、壓力等信號由各類傳感器采集,輸入iCAN 數據采集模塊,經過CAN 總線傳給現場工控機,并存儲在駐留工控機內的MIB 文件中,供運行在遠程監控計算機中的管理端軟件查詢調用。同時,各開關的狀態變量也存儲在該MIB 文件中,根據管理端發來的設置值變更成新值,再經由現場CAN 總線網絡傳遞給輸出控制模塊以控制各開關的狀態,達到起重力矩遠程監控的目的。系統結構如圖1 所示。
其中,iCAN-4017 AI 功能模塊具有8 路模擬量輸入通道,符合CAN2.0B 協議規范,用于采集傳感器的輸入信號,將輸入信號經多路開關、AD 轉換后經光耦隔離模塊,通過CAN 總線通訊將輸入的模擬量信號傳送給現場工控機[3]。iCAN-2404 繼電器功能模塊有4 路具有自保持功能的繼電器輸出通道,它在工作時,工控機通過CAN 總線將輸出的繼電器控制數據傳送給該模塊,模塊通過光電隔離后輸出驅動繼電器,實現對上升、下降、左轉、右轉開關的控制。
3 系統軟件工作原理及實現
系統的軟件主要分為兩部分,其一是為了提取和設置CANbus 現場總線中的據,其二是基于SNMP 協議實現數據的遠程通信。
3.1 提取和設置現場總線中的數據
為了對傳感器數據進行處理,實時獲取系統工作狀態,并對各執行器進行相應的控制,我們利用iCAN 模塊附帶的函數庫在VC++開發平臺下編寫了相應的程序來通過各iCAN 模塊采集傳感器的信號,控制各開關的狀態。iCAN 主站函數庫以動態鏈接庫(DLL)的形式提供,內部封裝了iCAN 協議,屏蔽訪問控制細節,提供對現場總線iCAN 網絡中設備訪問的接口[3]。通過調用此函數庫,可以使PC-CAN 主站卡和iCAN 從站模塊進行通訊,完成工控機與現場總線上各節點設備之間的信息交換。
3.2 基于SNMP 協議的通信實現
為了基于SNMP 協議在遠程監控計算機與現場工控機之間進行通信,需要開發兩部分的程序,即管理端程序和代理程序。管理端程序運行在遠程監控計算機中,代理程序駐留在與現場CAN 總線相連的工控機上,代理中還包括管理信息庫MIB,MIB 存儲被管理對象的信息,包括角度、壓力數據,各開關的開閉狀態等。管理端以輪詢方式向遠程的代理發送Get(讀取)和Set(設置)請求命令,以獲取角度、長度和壓力信息或實施開關控制。代理將根據請求的內容從本地 MIB 中提取所需信息,并以響應報文方式將結果回送給管理端。具體地,它一方面不斷地檢查本地的狀態,更新MIB 庫中的變量值;另一方面,循環偵聽管理端的請求報文,并作出相應的響應,讀取或修改 MIB 中的變量值,將結果返回給管理端。通信交互過程如圖2 所示[4] 。
圖2 管理端與代理的通信交互過程
(1)Get 操作
管理端向代理發送Get 請求,要求返回壓力、角度等數據。代理接受請求后,對PDU 進行解析處理,并調用相應的子功能模塊,從MIB 文件中讀出“壓力”、“角度”、“長度”等變量的值,然后代理調用編碼模塊,將這些數據打包成相應的PDU 發送給管理端作為對Get 請求的響應。管理端接收到相應數據后,將它們與預先設定的參考值作比較,根據實際值與設定值之間的偏差,判斷起重力矩是否超過限制,并據此發出相應的開關控制命令。
(2)Set 操作
Set 請求的原理與Get 類似,不過是將某一新的值寫給相應的變量,而不是讀,從而實現對被管理設備的控制。在該系統中,管理端向代理發送Set 請求,以設置各開關的狀態變量。代理接受請求后,向MIB 文件中寫入各“開關”變量的新值,并通過現場的CAN 總線傳遞給輸出控制模塊來控制上升、下降、左轉、右轉開關的動作。
3.3 MIB 的編寫
MIB 是有關被管理目標對象的數據庫,其數據結構呈樹形。本系統中的MIB 文件存儲了現場傳感器采集的各種信號以及開關的狀態,通過讀取和設置這些MIB 對象的值,管理端完成監測和控制。MIB 文件編寫中最關鍵的一點是確定要定義的變量。在該系統的MIB 設計中定義的變量如表1 所示。
表1 遠程起重力矩監控系統MIB 變量表
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 萬元。