楚寧
摘? ?要:CANBus告警通信網(wǎng)路在于建構(gòu)出以CAN為傳輸接口的分布式監(jiān)控系統(tǒng),利用多種傳感器與致動(dòng)器做為外部物理量的輸出入,并使用CAN功能的微控制器PIC18F458制作節(jié)點(diǎn)模組,由微控制器上類比/數(shù)位(A/D)轉(zhuǎn)換器將傳感器感測(cè)值轉(zhuǎn)換后,將資料送至CAN匯流排上,最后由主控制室接收資料,經(jīng)過計(jì)算與邏輯判斷等等,最后將結(jié)果顯示在LCD面板上。另外,亦可由主控制室設(shè)定比較默認(rèn)值來控制節(jié)點(diǎn)模塊上裝置,或利用開關(guān)按鈕發(fā)出訊息對(duì)制動(dòng)器制動(dòng)、關(guān)閉,以達(dá)到自動(dòng)監(jiān)視與控制的目的。
關(guān)鍵詞:遠(yuǎn)程? 告警? 通信方式? 系統(tǒng)? 架構(gòu)
CAN于1986年由德國RobertBoschGmbH最先提出[1],且Philips與Intel也同時(shí)參與發(fā)展并于之后開發(fā)出CAN控制芯片。研究開發(fā)CAN匯流排最初的動(dòng)機(jī)就是為了解決現(xiàn)代汽車中龐大電子控制裝置之間的復(fù)雜通信及減少不斷增加的信號(hào)線,于是設(shè)計(jì)出一個(gè)獨(dú)立的網(wǎng)路匯流排,使所有的周邊裝置都可以直接掛接在該匯流排上,CAN通信協(xié)議因而誕生。
1? CAN通信方式
CAN采取廣播通信的方式,而不是使用地址的方式傳遞資料,也就是說我們將資料送至匯流排上,在匯流排上每個(gè)節(jié)點(diǎn)都能接收訊息。這些定義的訊息是由訊息辨識(shí)碼(ArID)來進(jìn)行辨識(shí),其中還包括訊息優(yōu)先權(quán)的仲裁判斷。所以,辨識(shí)碼在于網(wǎng)路上必須是單獨(dú)且唯一的,這影響到多個(gè)訊息競(jìng)爭匯流排的使用權(quán),因而顯得非常重要。
1.1 訊息發(fā)送與節(jié)點(diǎn)的擴(kuò)充和維護(hù)
所謂廣播通信是指針對(duì)訊息(Message)制定的機(jī)制,設(shè)定訊息過濾器(Filter)與訊息屏蔽(Mask)來決定節(jié)點(diǎn)是否要接收在匯流排上的訊息。訊息屏蔽決定訊息識(shí)別碼與訊息過濾器的相對(duì)應(yīng)位是否要進(jìn)行比較;而訊息過濾器上相對(duì)應(yīng)的位則為比較的內(nèi)容。簡單來說,可將Filter視為被觸發(fā)的事件,而Mask則決定哪些位是可以被忽略的。當(dāng)Mask的值為”1”時(shí)使用Filter來過濾此位,而當(dāng)值為“0”時(shí)則無條件接受。若在未設(shè)置訊息過濾器及屏蔽的情況下,節(jié)點(diǎn)將會(huì)接收到每筆匯流排上的訊息。如此一來,將使得CAN不需要建立節(jié)點(diǎn)與節(jié)點(diǎn)之間的通信連結(jié)關(guān)系,這也讓匯流排上的節(jié)點(diǎn)彼此能夠共享訊息。
1.2 低傳輸延遲
在CAN匯流排系統(tǒng)中,允許節(jié)點(diǎn)請(qǐng)求傳輸訊框,請(qǐng)求傳輸訊框也按照優(yōu)先權(quán)順序的重要性運(yùn)行,當(dāng)發(fā)生超過負(fù)載的情況且有高優(yōu)先權(quán)的節(jié)點(diǎn)立即需要信息時(shí),該節(jié)點(diǎn)可以立即傳送請(qǐng)求傳輸訊框請(qǐng)求資料。透過優(yōu)先權(quán)順序的運(yùn)行,使得請(qǐng)求節(jié)點(diǎn)可以取得實(shí)時(shí)響應(yīng),并存取到所需的信息,也使系統(tǒng)每個(gè)節(jié)點(diǎn)各自等待的時(shí)間較少。
1.3 錯(cuò)誤檢驗(yàn)、錯(cuò)誤通報(bào)、錯(cuò)誤回復(fù)
CAN匯流排上錯(cuò)誤的偵測(cè)、處理及要求資料的再傳送都是由硬件來處理,同時(shí)也使用位填充的技術(shù)來做雙重的訊號(hào)保護(hù)。當(dāng)傳送的訊息資料中連續(xù)出現(xiàn)五個(gè)相同準(zhǔn)位的訊號(hào)時(shí),不管是強(qiáng)勢(shì)位(0)或弱勢(shì)位(1),都會(huì)自動(dòng)充填一個(gè)相反的位,而接收方在接收資料時(shí)更會(huì)自動(dòng)把此相反位元拿掉,如此一來將更可以保證資料的完整性。在錯(cuò)誤的偵測(cè)上,CAN會(huì)偵察五種的錯(cuò)誤型式[2],分別為
(1)BitError:在訊框傳送過程中,如果匯流排上偵察的位與傳送出的位不同時(shí),即發(fā)生BitError而停止傳送。但只有用在DLC、Datafield和傳送端的CRCField。
(2)StuffError:傳送的資料有五個(gè)連續(xù)相同準(zhǔn)位的位時(shí),就自動(dòng)插入一個(gè)相反的位。而當(dāng)匯流排偵測(cè)到有五個(gè)連續(xù)相同準(zhǔn)位的位時(shí)即表示發(fā)生Stufferror。
(3)CRCError:當(dāng)接收端發(fā)現(xiàn)接收計(jì)算后的循環(huán)冗位檢查(CyclicRedundancyCheck,CRC)值與實(shí)際傳送的資料不一樣時(shí)即表示發(fā)生CRCError。
(4)FormError:在CAN的訊框中某些欄位有其特殊指定的位值,只要這些位與規(guī)定值不同時(shí)即表示發(fā)生FormError。
(5)AcknowledgmentError:當(dāng)傳送端偵察到匯流排上的回應(yīng)(ACKSlot)不為“0”時(shí),表示接收端無正確的回應(yīng),即發(fā)生AcknowledgmentError,將重新傳送此次的資料。
1.4 容錯(cuò)機(jī)制
一般的匯流排系統(tǒng)中,任何一個(gè)錯(cuò)誤的節(jié)點(diǎn)可能會(huì)造成整個(gè)網(wǎng)路系統(tǒng)癱瘓,但是CAN能自動(dòng)將有錯(cuò)誤的節(jié)點(diǎn)由匯流排上排除,以避免這方面的破壞。因?yàn)镃AN定義每個(gè)節(jié)點(diǎn)都必須執(zhí)行傳送錯(cuò)誤與接收錯(cuò)誤兩個(gè)計(jì)數(shù)器,當(dāng)傳送錯(cuò)誤發(fā)生時(shí)便將傳送錯(cuò)誤計(jì)數(shù)值加1,而成功時(shí)便減1;接收的錯(cuò)誤計(jì)數(shù)值也相同。而當(dāng)錯(cuò)誤計(jì)數(shù)值超過255時(shí),該節(jié)點(diǎn)將自動(dòng)進(jìn)入“BusOff”狀態(tài),中止任何與該節(jié)點(diǎn)間的傳送與接收動(dòng)作以維持帶寬[3]。計(jì)數(shù)值小于128時(shí)為“ErrorActive”狀態(tài);大于128而且小于255時(shí)為“ErrorPassive”狀態(tài),此兩種狀況還不會(huì)影響該節(jié)點(diǎn)的正常動(dòng)作,故匯流排仍將運(yùn)行在“On”的狀態(tài)。
2? CAN在工業(yè)的應(yīng)用
CAN在工業(yè)上的應(yīng)用,主要都是依使用者需求而去定義各自的形式,也就是對(duì)應(yīng)用層的設(shè)計(jì)開發(fā),在國外主要的高層協(xié)議有CANopen、DeviceNet、SDS三種開放式系統(tǒng)標(biāo)準(zhǔn),相當(dāng)成熟,也獲得支持。CANopen在通信和系統(tǒng)服務(wù)以及網(wǎng)路管理方面,使用了CAL子集。其標(biāo)準(zhǔn)設(shè)備功能性是以“設(shè)備子協(xié)議”的形式規(guī)定,并借助于對(duì)象目錄、對(duì)象索引和基于設(shè)備功能性來描述。DeviceNet高層協(xié)議是根據(jù)抽象對(duì)象模型來定義這個(gè)高層協(xié)議模型,為了建立可用的通信服務(wù)和對(duì)象的外部可見行為,以不同的設(shè)備子協(xié)議去規(guī)范不同種類設(shè)備的行為。
3? CANBus告警網(wǎng)路實(shí)驗(yàn)架構(gòu)
3.1 瓦斯氣體感測(cè)模塊
在瓦斯感測(cè)節(jié)點(diǎn)模塊上,我們將TGS-800R的輸出電壓接至節(jié)點(diǎn)模塊且具有1顆LED警示燈。瓦斯傳感器會(huì)將感測(cè)電壓值送至該節(jié)點(diǎn)模塊,透過微控制器類比/數(shù)位轉(zhuǎn)換計(jì)算后,將訊號(hào)送至主控制室做邏輯判斷,若此值超出我們所預(yù)定的值,主控制室則會(huì)判定有瓦斯異常,并送一訊號(hào)至該節(jié)點(diǎn)模塊將LED致動(dòng),我們即可由LED的亮起以及主控制節(jié)點(diǎn)上LCD所顯示的訊息得知瓦斯外泄的警報(bào)。
3.2 振動(dòng)感測(cè)模塊
震動(dòng)傳感器(ShockSensor01S),具有微振動(dòng)感測(cè)的功能且無振動(dòng)方向上的限制,并在耐久性上可承受至少六千萬次的振動(dòng)量測(cè),且只需花費(fèi)低成本的電路即可調(diào)整其靈敏度。在振動(dòng)感測(cè)節(jié)點(diǎn)模塊上,當(dāng)振動(dòng)(位移)發(fā)生時(shí),震動(dòng)傳感器會(huì)產(chǎn)生一脈沖方波輸出,此一方波訊號(hào)在經(jīng)過濾噪聲、微分和積分等處理后,傳送至節(jié)點(diǎn)電路模塊的微分控制器上,再由節(jié)點(diǎn)模塊程序?qū)⒋艘挥嵪⑺椭罜ANBus上由主控制模塊接收并顯示于LCD面板。
4 結(jié)語
分布式監(jiān)控即“集中監(jiān)視、分散控制”之意,此種架構(gòu)必須運(yùn)用到分散式控制系統(tǒng)(DCS)的技術(shù)。工廠使用機(jī)器來降低人類的負(fù)荷并增加產(chǎn)能,因此使用者必須隨時(shí)了解機(jī)器的狀況,以便知道如何因應(yīng),這就是“監(jiān)視”。在了解機(jī)器或設(shè)備的相關(guān)訊息后,使用者可以針對(duì)補(bǔ)同的狀況下達(dá)不同的輸出指令,以達(dá)到系統(tǒng)設(shè)計(jì)的要求。將廠房或?qū)嶒?yàn)室現(xiàn)場(chǎng)狀況傳回系統(tǒng)控制者,其再依一定的判斷法則作出相對(duì)應(yīng)的控制輸出,就形成了一個(gè)“監(jiān)控系統(tǒng)”。
參考文獻(xiàn)
[1] 趙帥帥,陳成軍,王錦,等.基于STM32的波浪能發(fā)電裝置遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[J].制造業(yè)自動(dòng)化,2014,36(22):108-111,156.
[2] 李蒙,高仲合.基于ZigBee和GPRS的遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)[J].電子技術(shù),2014,43(10):40-42,33.
[3] 張海波,史紹領(lǐng).大型PLC系統(tǒng)不停產(chǎn)升級(jí)改造方法[J].港口裝卸,2014(5):50-51.