1 概述
在工程機(jī)械的控制系統(tǒng)中,,計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)的應(yīng)用日趨廣泛,。CAN 總線(xiàn)由于其數(shù)據(jù)傳輸高可靠性和高實(shí)時(shí)性的特點(diǎn),,已經(jīng)成為工業(yè)現(xiàn)場(chǎng)數(shù)據(jù)傳輸方式的事實(shí)標(biāo)準(zhǔn)之一,現(xiàn)已被廣泛應(yīng)用于汽車(chē),、工業(yè)控制,、智能樓宇、煤礦設(shè)備等各個(gè)行業(yè)的數(shù)據(jù)通訊,。CAN 總線(xiàn)采用短幀報(bào)文結(jié)構(gòu),,實(shí)時(shí)性好,并具有完善的數(shù)據(jù)校驗(yàn),、錯(cuò)誤處理以及檢錯(cuò)機(jī)制,,此外CAN 總線(xiàn)節(jié)點(diǎn)在嚴(yán)重錯(cuò)誤下會(huì)自動(dòng)脫離總線(xiàn),對(duì)總線(xiàn)通訊沒(méi)有影響[1],。CAN 總線(xiàn)網(wǎng)絡(luò)中,,數(shù)據(jù)收發(fā)、硬件檢錯(cuò)均由CAN 控制器硬件完成,大大增強(qiáng)了CAN 總線(xiàn)網(wǎng)絡(luò)的抗電磁干擾能力,,因此非常適用于對(duì)實(shí)時(shí)性,、安全性要求十分嚴(yán)格的機(jī)械控制網(wǎng)絡(luò)。
SNMP 作為TCP/IP 協(xié)議族的一個(gè)子協(xié)議,,是IEITF 研究小組提出的網(wǎng)絡(luò)管理解決方案之一,,它作為一種簡(jiǎn)潔而流行的網(wǎng)絡(luò)管理協(xié)議在工業(yè)界獲得了廣泛的應(yīng)用。SNMP 網(wǎng)絡(luò)管理模型中的重要組成部分包括:網(wǎng)絡(luò)管理協(xié)議,、管理端(Manager),、代理(Agent )和管理信息庫(kù)(MIB)。其管理的基本思想是,,通過(guò)管理端與代理之間的相互合作,,以分布方式執(zhí)行網(wǎng)絡(luò)管理活動(dòng)[2]。管理端負(fù)責(zé)管理網(wǎng)絡(luò)中各種資源和設(shè)備,,采用輪詢(xún)(polling )或手動(dòng)方式向遠(yuǎn)程的代理發(fā)送Get(讀?。┖?/span>Set(設(shè)置)請(qǐng)求命令,以獲取信息或?qū)嵤┛刂?。代理駐留在設(shè)備上,,負(fù)責(zé)設(shè)備的實(shí)際管理和控制,響應(yīng)和執(zhí)行管理端的管理命令,,并且返回應(yīng)答信息,。MIB 存放被管對(duì)象資源的所有信息,管理端通過(guò)代理來(lái)讀取和設(shè)置MIB 文件中的變量值,,以實(shí)現(xiàn)對(duì)被管理設(shè)備的監(jiān)控,。每個(gè)網(wǎng)絡(luò)設(shè)備上的MIB 又由代理負(fù)責(zé)維護(hù)。SNMP 最大的優(yōu)點(diǎn)是協(xié)議簡(jiǎn)潔,,可擴(kuò)展性強(qiáng),,只要將新的MIB 裝載在管理軟件上就可以實(shí)現(xiàn)對(duì)新的終端的控制與訪(fǎng)問(wèn)。
起重力矩限制系統(tǒng)是起重機(jī)械運(yùn)行中重要的安全保障裝置,,其核心在于對(duì)規(guī)定動(dòng)作執(zhí)行的精確度,,這不僅有賴(lài)于傳感器和執(zhí)行器的精度,,還有賴(lài)于數(shù)據(jù)采集信號(hào)和命令的執(zhí)行速度,。比如起落桿的左右轉(zhuǎn)動(dòng)角度信號(hào),通過(guò)數(shù)據(jù)采集模塊將信號(hào)標(biāo)準(zhǔn)化,,主控工控機(jī)接收到該信號(hào)后和預(yù)先設(shè)定的參數(shù)做比較,,并根據(jù)偏差指揮左轉(zhuǎn)或右轉(zhuǎn)開(kāi)關(guān)動(dòng)作,并最終到位,。傳統(tǒng)的起重力矩控制系統(tǒng)采用基于RS485 的信號(hào)傳輸,,其通訊波特率僅為57.6Kbps ,系統(tǒng)穩(wěn)定性差,,電動(dòng)機(jī)和其他大功率設(shè)備常常影響系統(tǒng)的正常運(yùn)行,。而采用CAN 總線(xiàn)傳輸信號(hào)則不僅提高系統(tǒng)的抗電磁干擾能力,,而且可使通訊波特率大大提高?;?/span>SNMP 協(xié)議的遠(yuǎn)程通信,,傳輸距離不受限制,這相對(duì)于其他工業(yè)控制總線(xiàn)有不可比擬的優(yōu)勢(shì),。本文提出的方案結(jié)合應(yīng)用CAN 總線(xiàn)和SNMP 協(xié)議的優(yōu)點(diǎn),,構(gòu)建遠(yuǎn)程起重力矩監(jiān)控系統(tǒng),現(xiàn)場(chǎng)數(shù)據(jù)傳輸速率可高達(dá)500Kbps ,,并具有硬件自動(dòng)校驗(yàn)和錯(cuò)誤自動(dòng)重發(fā)功能,。該方案可以保障可靠、實(shí)時(shí)的數(shù)據(jù)傳輸和命令執(zhí)行,,保障起重機(jī)械的安全運(yùn)行,。
2 系統(tǒng)硬件結(jié)構(gòu)與特點(diǎn)
在起重機(jī)工作現(xiàn)場(chǎng),通過(guò)CAN 總線(xiàn)實(shí)現(xiàn)對(duì)各傳感器信號(hào)的采集以及對(duì)輸出裝置的控制,,具有抗干擾能力強(qiáng),、可靠性高、實(shí)時(shí)響應(yīng)性好,,線(xiàn)纜少易敷設(shè),、成本低等優(yōu)點(diǎn)。現(xiàn)場(chǎng)工控機(jī)與遠(yuǎn)程監(jiān)控計(jì)算機(jī)之間的通信采用Internet 作為媒介,,使用基于SNMP 協(xié)議的遠(yuǎn)程傳輸,,進(jìn)一步拓展了CAN 總線(xiàn)的優(yōu)勢(shì)。
現(xiàn)場(chǎng)起重機(jī)工作的角度,、長(zhǎng)度,、壓力等信號(hào)由各類(lèi)傳感器采集,輸入iCAN 數(shù)據(jù)采集模塊,,經(jīng)過(guò)CAN 總線(xiàn)傳給現(xiàn)場(chǎng)工控機(jī),,并存儲(chǔ)在駐留工控機(jī)內(nèi)的MIB 文件中,供運(yùn)行在遠(yuǎn)程監(jiān)控計(jì)算機(jī)中的管理端軟件查詢(xún)調(diào)用,。同時(shí),,各開(kāi)關(guān)的狀態(tài)變量也存儲(chǔ)在該MIB 文件中,根據(jù)管理端發(fā)來(lái)的設(shè)置值變更成新值,,再經(jīng)由現(xiàn)場(chǎng)CAN 總線(xiàn)網(wǎng)絡(luò)傳遞給輸出控制模塊以控制各開(kāi)關(guān)的狀態(tài),,達(dá)到起重力矩遠(yuǎn)程監(jiān)控的目的。系統(tǒng)結(jié)構(gòu)如圖1 所示,。
其中,,iCAN-4017 AI 功能模塊具有8 路模擬量輸入通道,符合CAN2.0B 協(xié)議規(guī)范,用于采集傳感器的輸入信號(hào),,將輸入信號(hào)經(jīng)多路開(kāi)關(guān),、AD 轉(zhuǎn)換后經(jīng)光耦隔離模塊,通過(guò)CAN 總線(xiàn)通訊將輸入的模擬量信號(hào)傳送給現(xiàn)場(chǎng)工控機(jī)[3],。iCAN-2404 繼電器功能模塊有4 路具有自保持功能的繼電器輸出通道,,它在工作時(shí),工控機(jī)通過(guò)CAN 總線(xiàn)將輸出的繼電器控制數(shù)據(jù)傳送給該模塊,,模塊通過(guò)光電隔離后輸出驅(qū)動(dòng)繼電器,,實(shí)現(xiàn)對(duì)上升、下降,、左轉(zhuǎn),、右轉(zhuǎn)開(kāi)關(guān)的控制。
3 系統(tǒng)軟件工作原理及實(shí)現(xiàn)
系統(tǒng)的軟件主要分為兩部分,,其一是為了提取和設(shè)置CANbus 現(xiàn)場(chǎng)總線(xiàn)中的據(jù),,其二是基于SNMP 協(xié)議實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程通信。
3.1 提取和設(shè)置現(xiàn)場(chǎng)總線(xiàn)中的數(shù)據(jù)
為了對(duì)傳感器數(shù)據(jù)進(jìn)行處理,,實(shí)時(shí)獲取系統(tǒng)工作狀態(tài),,并對(duì)各執(zhí)行器進(jìn)行相應(yīng)的控制,我們利用iCAN 模塊附帶的函數(shù)庫(kù)在VC++開(kāi)發(fā)平臺(tái)下編寫(xiě)了相應(yīng)的程序來(lái)通過(guò)各iCAN 模塊采集傳感器的信號(hào),,控制各開(kāi)關(guān)的狀態(tài),。iCAN 主站函數(shù)庫(kù)以動(dòng)態(tài)鏈接庫(kù)(DLL)的形式提供,內(nèi)部封裝了iCAN 協(xié)議,,屏蔽訪(fǎng)問(wèn)控制細(xì)節(jié),,提供對(duì)現(xiàn)場(chǎng)總線(xiàn)iCAN 網(wǎng)絡(luò)中設(shè)備訪(fǎng)問(wèn)的接口[3]。通過(guò)調(diào)用此函數(shù)庫(kù),,可以使PC-CAN 主站卡和iCAN 從站模塊進(jìn)行通訊,,完成工控機(jī)與現(xiàn)場(chǎng)總線(xiàn)上各節(jié)點(diǎn)設(shè)備之間的信息交換。
3.2 基于SNMP 協(xié)議的通信實(shí)現(xiàn)
為了基于SNMP 協(xié)議在遠(yuǎn)程監(jiān)控計(jì)算機(jī)與現(xiàn)場(chǎng)工控機(jī)之間進(jìn)行通信,,需要開(kāi)發(fā)兩部分的程序,,即管理端程序和代理程序。管理端程序運(yùn)行在遠(yuǎn)程監(jiān)控計(jì)算機(jī)中,,代理程序駐留在與現(xiàn)場(chǎng)CAN 總線(xiàn)相連的工控機(jī)上,,代理中還包括管理信息庫(kù)MIB,MIB 存儲(chǔ)被管理對(duì)象的信息,,包括角度,、壓力數(shù)據(jù),,各開(kāi)關(guān)的開(kāi)閉狀態(tài)等,。管理端以輪詢(xún)方式向遠(yuǎn)程的代理發(fā)送Get(讀取)和Set(設(shè)置)請(qǐng)求命令,以獲取角度,、長(zhǎng)度和壓力信息或?qū)嵤╅_(kāi)關(guān)控制,。代理將根據(jù)請(qǐng)求的內(nèi)容從本地 MIB 中提取所需信息,并以響應(yīng)報(bào)文方式將結(jié)果回送給管理端,。具體地,,它一方面不斷地檢查本地的狀態(tài),更新MIB 庫(kù)中的變量值,;另一方面,,循環(huán)偵聽(tīng)管理端的請(qǐng)求報(bào)文,并作出相應(yīng)的響應(yīng),,讀取或修改 MIB 中的變量值,,將結(jié)果返回給管理端。通信交互過(guò)程如圖2 所示[4] ,。
圖2 管理端與代理的通信交互過(guò)程
(1)Get 操作
管理端向代理發(fā)送Get 請(qǐng)求,,要求返回壓力、角度等數(shù)據(jù),。代理接受請(qǐng)求后,,對(duì)PDU 進(jìn)行解析處理,并調(diào)用相應(yīng)的子功能模塊,,從MIB 文件中讀出“壓力”,、“角度”、“長(zhǎng)度”等變量的值,,然后代理調(diào)用編碼模塊,,將這些數(shù)據(jù)打包成相應(yīng)的PDU 發(fā)送給管理端作為對(duì)Get 請(qǐng)求的響應(yīng)。管理端接收到相應(yīng)數(shù)據(jù)后,,將它們與預(yù)先設(shè)定的參考值作比較,,根據(jù)實(shí)際值與設(shè)定值之間的偏差,判斷起重力矩是否超過(guò)限制,,并據(jù)此發(fā)出相應(yīng)的開(kāi)關(guān)控制命令,。
(2)Set 操作
Set 請(qǐng)求的原理與Get 類(lèi)似,不過(guò)是將某一新的值寫(xiě)給相應(yīng)的變量,,而不是讀,,從而實(shí)現(xiàn)對(duì)被管理設(shè)備的控制。在該系統(tǒng)中,,管理端向代理發(fā)送Set 請(qǐng)求,,以設(shè)置各開(kāi)關(guān)的狀態(tài)變量。代理接受請(qǐng)求后,,向MIB 文件中寫(xiě)入各“開(kāi)關(guān)”變量的新值,,并通過(guò)現(xiàn)場(chǎng)的CAN 總線(xiàn)傳遞給輸出控制模塊來(lái)控制上升,、下降、左轉(zhuǎn),、右轉(zhuǎn)開(kāi)關(guān)的動(dòng)作,。
3.3 MIB 的編寫(xiě)
MIB 是有關(guān)被管理目標(biāo)對(duì)象的數(shù)據(jù)庫(kù),其數(shù)據(jù)結(jié)構(gòu)呈樹(shù)形,。本系統(tǒng)中的MIB 文件存儲(chǔ)了現(xiàn)場(chǎng)傳感器采集的各種信號(hào)以及開(kāi)關(guān)的狀態(tài),,通過(guò)讀取和設(shè)置這些MIB 對(duì)象的值,管理端完成監(jiān)測(cè)和控制,。MIB 文件編寫(xiě)中最關(guān)鍵的一點(diǎn)是確定要定義的變量,。在該系統(tǒng)的MIB 設(shè)計(jì)中定義的變量如表1 所示。
表1 遠(yuǎn)程起重力矩監(jiān)控系統(tǒng)MIB 變量表
MIB 變量名
|
含義
|
類(lèi)型
|
DegreeValue
|
角度的實(shí)際值
|
Integer
|
LengthValue
|
長(zhǎng)度的實(shí)際值
|
Integer
|
PressureValue
|
壓力的實(shí)際值
|
Integer
|
UpSwitch
|
上升開(kāi)關(guān)狀態(tài)
|
Integer
|
DownSwitch
|
下降開(kāi)關(guān)狀態(tài)
|
Integer
|
LeftSwitch
|
左轉(zhuǎn)開(kāi)關(guān)狀態(tài)
|
Integer
|
RightSwitch
|
右轉(zhuǎn)開(kāi)關(guān)狀態(tài)
|
Integer
|
3.4 代理與管理端程序的開(kāi)發(fā)
采用AdventNet Agent Toolkit C Edition 工具包來(lái)開(kāi)發(fā)代理程序,,該工具包提供了一個(gè)廣泛而完整的開(kāi)發(fā)環(huán)境,,并帶有代理信息定義編輯器、編譯器等一系列代理開(kāi)發(fā)工具及測(cè)試工具,,降低了代理開(kāi)發(fā)的復(fù)雜性,。所開(kāi)發(fā)的代理僅占用極小的空間,卻具有較高的性能,,而且代理的擴(kuò)展幾乎不會(huì)影響到應(yīng)用和設(shè)備的性能,。在編寫(xiě)好MIB 文件后,依據(jù)Agent Toolkit C Edition 工具的開(kāi)發(fā)流程編寫(xiě)代理程序,,其主要功能是對(duì)MIB 文件進(jìn)行管理,,并實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)端口的偵聽(tīng),SNMP 數(shù)據(jù)報(bào)的解碼及編碼,,對(duì)管理端的請(qǐng)求進(jìn)行處理,,以及對(duì)硬件的管理。
在VC++.NET 開(kāi)發(fā)平臺(tái)下利用NET-SNMP 開(kāi)發(fā)包來(lái)編寫(xiě)管理端程序,。NET-SNMP 開(kāi)發(fā)包是目前最為流行的基于C++的SNMP 協(xié)議開(kāi)發(fā)包之一,,開(kāi)發(fā)包中的SNMP 協(xié)議模塊為用戶(hù)使用SNMP 協(xié)議來(lái)構(gòu)建網(wǎng)絡(luò)管理應(yīng)用層軟件提供了良好的協(xié)議通訊的基礎(chǔ),它提供了一系列的API 函數(shù)可供開(kāi)發(fā)者使用,。本系統(tǒng)的管理端程序運(yùn)行在遠(yuǎn)程監(jiān)控計(jì)算機(jī)上,,與工作現(xiàn)場(chǎng)工控機(jī)上駐留的代理之間進(jìn)行遠(yuǎn)程數(shù)據(jù)通信,主要完成Get 和Set 操作兩項(xiàng)任務(wù),。
5 結(jié)論
CAN 總線(xiàn)因其自身的諸多優(yōu)點(diǎn)適合于對(duì)實(shí)時(shí)性,、可靠性、安全性要求十分嚴(yán)格的機(jī)械控制網(wǎng)絡(luò),。SNMP 協(xié)議簡(jiǎn)潔,,可擴(kuò)展性強(qiáng),基于SNMP 協(xié)議的網(wǎng)絡(luò)傳輸以Internet 作為媒介,,傳輸距離不受限制,,可進(jìn)一步拓展CAN 總線(xiàn)的優(yōu)勢(shì),。本文的創(chuàng)新點(diǎn)在于,結(jié)合這兩種技術(shù)的優(yōu)點(diǎn),,實(shí)現(xiàn)了基于CAN 總線(xiàn)和SNMP 協(xié)議的起重力矩遠(yuǎn)程監(jiān)控系統(tǒng),,該方案可以保障可靠,、實(shí)時(shí)的遠(yuǎn)程數(shù)據(jù)傳輸和命令執(zhí)行,,確保起重機(jī)械的安全運(yùn)行。項(xiàng)目經(jīng)濟(jì)效益達(dá)20 萬(wàn)元,。