王玉麗 王宜懷
1(蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院 江蘇 蘇州 2151232(蘇州大學(xué)計算機科學(xué)與技術(shù)學(xué)院 江蘇 蘇州 215006)
基于CAN總線的智能電動密集架控制系統(tǒng)的研究
王玉麗1王宜懷2
1(蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院 江蘇 蘇州 2151232(蘇州大學(xué)計算機科學(xué)與技術(shù)學(xué)院 江蘇 蘇州 215006)
由于智能電動密集架控制系統(tǒng)多采用RS485方式控制,實時性差,總線利用率低,軟件控制復(fù)雜。針對這種情況,提出基于CAN總線技術(shù)的智能電動密集架控制系統(tǒng)的設(shè)計。采用內(nèi)嵌CAN控制器MSCAN的8位微控制器MC9S08DZ60作為主控MCU,搭配高性能CAN收發(fā)器TJA1040,組建CAN通信網(wǎng)絡(luò),提供高效數(shù)據(jù)傳輸通道。融合多種傳感器件建立多重保護機制,并添加必要的失效保護,應(yīng)對復(fù)雜現(xiàn)場環(huán)境。充分利用CAN協(xié)議降低軟件設(shè)計復(fù)雜度,并配合良好的移動調(diào)度策略,提升操作速度。實驗結(jié)果表明,該控制系統(tǒng)通信速率高、安全可靠,有效地打破了RS485導(dǎo)致的性能瓶頸,完全滿足密集架控制對通信的實時性、可靠性和互操作性的要求。
智能電動密集架 RS485 CAN
CAN是一種有效支持實時控制的串行通信網(wǎng)絡(luò),區(qū)別于基于RS485構(gòu)建的系統(tǒng),它具有數(shù)據(jù)通信實時性強、傳輸距離遠、安全性高、開發(fā)周期短等諸多優(yōu)勢。密集架是多列貨架密集組合,可根據(jù)需要通過專用導(dǎo)軌移動、靠攏或分開的裝置[1-3]。智能電動密集架系統(tǒng),是現(xiàn)代化倉儲的重要標(biāo)志,因其空間利用率高,配置靈活,而被廣泛應(yīng)用于圖書、檔案等管理系統(tǒng)中。目前市面上大部分密集架控制系統(tǒng)均采用RS485方式控制,其實時性差、總線利用率低、軟件控制復(fù)雜等缺點,已經(jīng)限制了系統(tǒng)性能的提升。針對這個問題,本文闡述了一種基于CAN總線實現(xiàn)的密集架控制系統(tǒng)方案,該方案選取Freescale 的8位微處理器MC9S08DZ60作為主控芯片。該系統(tǒng)能夠簡化各個控制單元間的連線、提高通信速率、提升安全保障[4]。本文闡述的設(shè)計方法與控制策略也可為同類的其他應(yīng)用開發(fā)提供參考。
智能電動密集架系統(tǒng)主要包括基于單片機或PLC的電氣控制系統(tǒng)、機械系統(tǒng)和用戶終端管理軟件。用戶終端管理軟件負責(zé)管理數(shù)據(jù)資料以及顯示各種庫房環(huán)境數(shù)據(jù)。電氣控制系統(tǒng)負責(zé)控制密集架的架體移動。系統(tǒng)的核心是用戶通過PC機管理軟件或密集架上的觸摸屏查詢出要取/放的資料所在的位置,系統(tǒng)自動打開特定的密集架通道,并點亮相應(yīng)位置的指示燈,供用戶取/放資料,操作完畢,密集架架體自動歸位,指示燈熄滅。
密集架一般按組劃分,一個密集架系統(tǒng)包含多個組。一組密集架,包含1個主控列和N個移動列。主控列負責(zé)控制和協(xié)調(diào)組中各列的運動以及環(huán)境監(jiān)測等,位置固定不動,也稱為固定列。移動列負責(zé)本列的電氣控制,允許左右移動、強制鎖定、手動控制等。圖1所示為一個初始狀態(tài)為全關(guān),共6列,主控列在右側(cè)的一組密集架,每組密集架底部都裝有一組導(dǎo)軌,用于移動。圖1中主控列在最右側(cè),一般主控列編號為1,最靠近主控列的那一列編號為2,其余類推。主控列的位置也可能在最左側(cè)或者正中央。
圖1 一組密集架示意圖
基于CAN總線的密集架控制系統(tǒng)結(jié)構(gòu),如圖2所示。
圖2 密集架控制系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)控制采用主從模式控制,主控列控制器作為主控CAN節(jié)點,移動策略部署在該節(jié)點上,負責(zé)調(diào)度移動列,同時負責(zé)信息的中轉(zhuǎn)處理,把終端用戶的指令轉(zhuǎn)發(fā)到CAN通信子網(wǎng)中。移動列控制器,作為CAN子節(jié)點,負責(zé)接收并執(zhí)行主控CAN節(jié)點發(fā)送的命令,并反饋結(jié)果到主控CAN節(jié)點。系統(tǒng)中需要處理的信息概括為以下幾種:
(1) 按鍵事件:操作人員主動按下移動列的左/右鍵,請求移動,此時移動列向主控列發(fā)送請求移動命令。主控列接收移動請求幀,判斷是否可以移動,如果不能移動,語音播報;如果能移動,廣播發(fā)送移動命令,同時主控列控制器通過RS232向上位機發(fā)送移動信息。移動列接收移動命令,根據(jù)傳感器信息和相鄰列的信息進行移動。操作人員主動按下移動列的強制鎖定鍵,強制系統(tǒng)硬件鎖定,忽略任何移動指令。
(2) 運動控制:主控列要求移動列移動/停止移動/解鎖等。
(3) 查詢事件:主控列查詢某個移動列的狀態(tài)。
(4) 顯示信息:主控列向移動列發(fā)送顯示信息。
(5) 定位燈控制:主控列向移動列發(fā)送定位燈亮暗信息。
觀察并對比兩組的急救時間與疼痛緩解時間、護理滿意度。為患者發(fā)放滿意度調(diào)查表,指導(dǎo)患者如實填寫,滿分100分,分為非常滿意(85~100分)、滿意(70~84分)與不滿意(<70分)。護理滿意度=非常滿意度+滿意度的[2] 。
(6) 移動列參數(shù)配置:靠近主控列和遠離主控列對應(yīng)的正轉(zhuǎn)還是反轉(zhuǎn),人體感應(yīng)時長等參數(shù)。
(7) 緊急事件:例如某列檢測到有物品墜落,發(fā)送廣播幀。
(8) 到位事件:移動列發(fā)送的到位信息。
本系統(tǒng)在設(shè)計過程中,為了保障人員和資料安全,引入了多種傳感器協(xié)同工作提供多重保護機制,主要包括:末列密集架上裝有末列到位傳感器用于移動過程中檢測是否移動到最末端;任意兩列之間都裝有列間到位傳感器,監(jiān)測兩列之間是否移動到位;每列上都裝有防墜落傳感器,監(jiān)測物品是否墜落,如果有物品墜落要強制硬件鎖定,密集架不能移動;每列上都裝有強制鎖定按鍵,人員進入時可按下強制鎖定按鍵,強制硬件鎖定,忽略任何移動指令;兩列之間裝有紅外對射防夾傳感器,人員操作時,進行系統(tǒng)鎖定,提供雙重保護;主控列上裝有RFID讀寫器,操作人員刷卡認證之后,可以通過主控列上的觸摸屏完成取放操作,為系統(tǒng)提供”脫機”控制功能,避免因意外的網(wǎng)絡(luò)故障而無法獲取資料。
Freescale公司的MC9S08DZ60內(nèi)部集成了支持CAN2.0A/B協(xié)議的MSCAN模塊。MSCAN模塊包含3個使用本地優(yōu)先級的發(fā)送寄存器5個FIFO的接收寄存器,并提供了64 位的掩碼寄存器用于標(biāo)志符的識別,可靈活組合為2個32 位/4個16位/8個8 位的寄存器,且支持11 位標(biāo)識符標(biāo)準(zhǔn)幀和29位標(biāo)識符擴展幀,總線消息尋址十分靈活[5]。同時DZ60提供了2個SCI、SPI、IIC、TPM、A/D、BDG等諸多功能模塊,資源豐富,應(yīng)用廣泛,因此本系統(tǒng)選用該芯片作為主控MCU,進行硬件設(shè)計。系統(tǒng)的主控列與移動列控制器采用近似的硬件設(shè)計,部署不同的軟件。
MSCAN模塊需要配合CAN收發(fā)器使用,本文選用高速CAN收發(fā)器TJA1040[5],它適用于較高通信速率和干擾環(huán)境下的CAN總線通信,為良好的收發(fā)奠定基礎(chǔ)。CAN總線收發(fā)器的電路連接如圖3所示。為實現(xiàn)CAN總線各節(jié)點真正的電氣隔離,CAN模塊的RXD/TXD經(jīng)由高速光耦6N137之后再與TJA1040的RXD/TXD相連,且光耦部分的VCCA/VCCB通過帶隔離輸出的開關(guān)電源模塊進行隔離,為加強保護系統(tǒng)中還添加了靜電保護裝置PESD1CAN。
圖3 CAN總線收發(fā)器電路連接
系統(tǒng)運用多種傳感器進行狀態(tài)檢測,選用了單總線芯片DS18B20用于溫度采集,電壓式濕度傳感器HIH-5030用于濕度采集,Kingsensor紅外光幕用于人員檢測和物品墜落檢測,限位開關(guān)和超聲波傳感器用于輔助電機控制。
CAN協(xié)議規(guī)定標(biāo)準(zhǔn)的數(shù)據(jù)幀有11 位標(biāo)識符,擴展幀有29位標(biāo)識符[6],但在實際的軟件開發(fā)過程,開發(fā)人員需要針對特定的應(yīng)用環(huán)境對標(biāo)識符進行協(xié)議編制,以提升軟件開發(fā)效率。
本系統(tǒng)中由于每組密集架不超過31列,因此地址碼使用5位二進制進行編碼,每個列分配一個唯一的地址碼,在系統(tǒng)初始化時通過讀取一組撥碼開關(guān)的狀態(tài)而設(shè)定[7]。為提高通信效率,本系統(tǒng)只使用標(biāo)準(zhǔn)數(shù)據(jù)幀進行數(shù)據(jù)傳輸,并將標(biāo)準(zhǔn)幀11位標(biāo)識符中的ID10作為主從模式設(shè)置位。0代表主控列發(fā)送數(shù)據(jù)到移動列,1代表移動列發(fā)送數(shù)據(jù)到主控列。將標(biāo)識符ID4-ID0用作目的地址,ID9-ID5用作源地址,子節(jié)點的目的地址設(shè)為0,表示廣播幀[7]。由于CAN協(xié)議中規(guī)定標(biāo)識符高7位不能全為隱性位,源地址排除31,而0保留,主控列負責(zé)調(diào)度優(yōu)先級較高,地址設(shè)置為1,因此實際可用的移動列地址為2~30。
CAN數(shù)據(jù)幀的發(fā)送需要將數(shù)據(jù)寫入MSCAN數(shù)據(jù)緩沖區(qū),MSCAN緩沖區(qū)結(jié)構(gòu)與應(yīng)用協(xié)議結(jié)構(gòu)如表1所示。
表1 MSCAN緩沖區(qū)結(jié)構(gòu)與應(yīng)用協(xié)議結(jié)構(gòu)
4.2 軟件流程
鑒于CAN總線的數(shù)據(jù)傳播方式為廣播,因此總線上的每個節(jié)點都需要過濾無關(guān)數(shù)據(jù),以提高數(shù)據(jù)處理效率。MSCAN模塊提供了靈活的數(shù)據(jù)幀過濾功能,通過聯(lián)合設(shè)置標(biāo)識符驗證模式寄存器、標(biāo)識符寄存器和標(biāo)識符掩碼寄存器可以滿足各種應(yīng)用需求[8-9]。通過標(biāo)識符掩碼寄存器指定哪些位參與匹配檢查,哪些位忽略不計,把接收到的數(shù)據(jù)幀標(biāo)識符和標(biāo)識符寄存器中的標(biāo)識符進行匹配,如果匹配通過,則把該數(shù)據(jù)幀存入接收緩沖區(qū)中,否則拋棄該幀[10]。本系統(tǒng)中所有CAN模塊均設(shè)置為只接受廣播幀和發(fā)送給自己的幀,根據(jù)協(xié)議規(guī)定,MSCAN模塊可接受的數(shù)據(jù)幀配置如表2所示。
表2 MSCAN模塊可接受的數(shù)據(jù)幀配置
續(xù)表2
MSCAN的幀過濾機制,不但簡化了軟件處理的復(fù)雜度,而且為系統(tǒng)擴展提供了有利條件。本控制系統(tǒng)軟件分為移動列控制部分和主控列控制部分,移動列核心為各種CAN命令幀的解析以及運動控制。主控列軟件的處理流程與移動列類似,在此基礎(chǔ)上添加移動控制策略和信息轉(zhuǎn)發(fā)策略即可,這樣可以有效提高軟件開發(fā)與調(diào)試的效率。
5.1 運動控制
(1) 原則上移動列在移動狀態(tài)下,遵循邊移動邊檢測的原則,一旦到位傳感器檢測到移動到位,則立即停止電機,并向主控列發(fā)送本列到位信息,但僅如此不足以應(yīng)對復(fù)雜的實際應(yīng)用場景中。出于安全考慮,系統(tǒng)中還添加了到位傳感器失效保護功能,當(dāng)傳感器失效時,能在超過預(yù)設(shè)距離時自動停止并自動鎖定架體,防止架體沖出軌道、發(fā)生碰撞或側(cè)翻。失效保護通過使用可編程定時器模塊TPM作為定時時鐘源,啟動定時,邊移動邊計時,精確控制時長,超時停止。此外移動裝置上還裝有阻力檢測傳感器,通過電流變化反映是否因意外障礙物而受阻。其他類型傳感器也悉數(shù)添加冗余設(shè)計,防止部分傳感器失效造成架體運行碰撞、側(cè)翻。
(2) 當(dāng)密集架通道打開時,多列電機會同時運動,即使是同一型號同一批次的電機,也存在自身速度差異,會造成列間距不均等的情況,而引發(fā)碰撞;而各個密集架體負載的資料數(shù)量不等,架體的重量也不均等,同樣會導(dǎo)致速度差異。針對這個問題,硬件上為每列添加超聲波傳感器檢測,軟件上通過讀取超聲波的反饋,自動微調(diào)各個電機的速度,以屏蔽速度差異,維持等距。
(3) 由于密集架體較重,所以電機控制應(yīng)遵循“高速啟動,勻速前進,低速無碰撞著落”原則進行,速度參數(shù)的調(diào)整需要結(jié)合架體承重、運動距離等進行測算。
5.2 CAN控制
(1) 組建CAN通信網(wǎng)絡(luò)時,CAN節(jié)點地址在系統(tǒng)初始化時通過讀入一組外部撥碼開關(guān)的狀態(tài)來設(shè)置,設(shè)置簡單靈活,方便系統(tǒng)擴展。
(2) CAN通信網(wǎng)絡(luò)中所有的節(jié)點都必須使用統(tǒng)一的位速率。位速率大小主要取決于應(yīng)用環(huán)境所需要的通信距離。本系統(tǒng)通信距離限定為兩百米左右,位速率設(shè)定為250 kbit/s。該速率通信高效可靠,可及時發(fā)現(xiàn)系統(tǒng)隱患,方便故障定位和排查。故障監(jiān)控可充分利用MSCAN模塊的錯誤中斷,通過跟蹤錯誤計數(shù),以決定是否需要進一步診斷,通過讀取CRFLG寄存器標(biāo)志位,可以判斷錯誤/警告的類型[11]。
(3) 為降低系統(tǒng)功耗,當(dāng)系統(tǒng)狀態(tài)機為Idle時,啟用MSCAN休眠模式,并在總線上有數(shù)據(jù)時通過中斷喚醒。
(4) 用戶終端管理軟件部署調(diào)度策略,以應(yīng)對多個資料統(tǒng)一取/放問題。當(dāng)開架請求涉及多組密集架時,需要首先根據(jù)組信息,按照距離入口由近及遠的順序加入命令處理隊列。主控列也部署有移動策略,收到一組多列存取指令時,根據(jù)涉及到的列數(shù)、列序號以及固定列的位置,采用類似電梯調(diào)度的移動策略,盡量避免路徑重復(fù),有效提高效率。
針對密集架控制系統(tǒng),傳統(tǒng)的RS485總線實現(xiàn)與本系統(tǒng)實現(xiàn)方式,各方面性能對比如下:
(1) 實時性:RS485是單主從結(jié)構(gòu),通信只能由主機發(fā)起,多從機通信必須經(jīng)主機中轉(zhuǎn),而CAN是多主從結(jié)構(gòu),任意節(jié)點均可發(fā)送數(shù)據(jù),互相通信,這在移動列運動時檢測鄰居列是否運動到位時,尤其重要。且由于系統(tǒng)中使用多種多路傳感器,而傳感器事件屬于隨機突發(fā)事件,隨時可能上報數(shù)據(jù)。針對隨機突發(fā)事件,RS485只能通過輪詢來解決,而CAN的多主機制可直接實現(xiàn),效率優(yōu)劣顯而易見。
(2) 總線利用率:當(dāng)同時有多個節(jié)點同時需要上報數(shù)據(jù)時,RS485只能在輪詢發(fā)現(xiàn)后,逐一進行通信。而CAN通過它獨特的逐位仲裁以及重發(fā)機制,可以自動解決問題,總線利用率明顯提升。
(3) 錯誤檢測:RS485無法識別非物理錯誤,容易造成總線癱瘓,而CAN控制器擁有完善的錯誤檢測機制,且如果節(jié)點發(fā)生嚴重錯誤則自動閉鎖,脫離總線。
(4) 軟件開發(fā)復(fù)雜度:CAN的廣播與應(yīng)答機制可以減少交互次數(shù)從而降低軟件開發(fā)復(fù)雜度,系統(tǒng)中需要處理的交互歸納如表3,其中通信方向0為主控列發(fā)送數(shù)據(jù)到移動列,1反方向傳輸,N為移動列數(shù)量。
表3 軟件開發(fā)交互次數(shù)對比
從表3可以看出,RS485需要接近N倍于CAN的交互次數(shù),加上需要自定義確認重發(fā)機制,軟件控制比較復(fù)雜。
(5) 通信速率與穩(wěn)定性:主控CAN節(jié)點通過串口連接上位機,每隔50ms查詢各移動列的狀態(tài)數(shù)據(jù),并記錄各移動列的應(yīng)答編號、應(yīng)答數(shù)據(jù)與時間,截取不間斷1小時測試數(shù)據(jù),如表4所示,其中t為時間,v為速率,r為正確幀數(shù),w為錯誤幀數(shù)。
表4 測試數(shù)據(jù)
通過表4可以看出,數(shù)據(jù)幀數(shù)量隨時間線性增加,沒有出現(xiàn)錯誤幀。通過檢查應(yīng)答編號也沒有發(fā)現(xiàn)丟幀,說明在兩百米范圍內(nèi)可以實現(xiàn)接近250kbit/s的穩(wěn)定傳輸。在同等環(huán)境下,RS485通信在30分鐘之內(nèi)就出現(xiàn)了錯誤幀。
通過以上對比,不難發(fā)現(xiàn),CAN相較于RS485在多個方面都更勝一籌。
CAN總線是目前唯一具有國際標(biāo)準(zhǔn)的現(xiàn)場總線,其高可靠性、低功耗、結(jié)構(gòu)簡單等特點,使其具有廣泛的應(yīng)用前景。本文工作受到國家自然科學(xué)基金項目(項目編號61202028)的部分資助,屬于該項目中通信方式應(yīng)用研究及現(xiàn)場總線的無線接入研究的一部分,也是該項目的橫向延伸應(yīng)用案例之一,對基于CAN總線的智能型密集架控制系統(tǒng)的設(shè)計與實現(xiàn)進行了研究,闡述了控制系統(tǒng)的軟硬件設(shè)計方案,并對系統(tǒng)實現(xiàn)的核心技術(shù)要點進行了詳細闡釋。最后通過與RS485實現(xiàn)方式的全面比對,詮釋了本系統(tǒng)在實時性、總線利用率、錯誤檢測、軟件復(fù)雜度等方面的絕對優(yōu)勢。經(jīng)實踐測試,該控制系統(tǒng)實時性強、可靠性高,打破了常規(guī)智能電動密集架控制系統(tǒng)帶來的性能瓶頸,作為RS485總線應(yīng)用的一種優(yōu)化替代方案,本系統(tǒng)也可為同類的其他應(yīng)用提供借鑒。
[1] 裴春梅,王艷秋,楊秀清,等.基于MODBUS協(xié)議的密集架智能倉儲通信系統(tǒng)設(shè)計[J].物流技術(shù),2015,34(2):127-129,166.
[2] 張國宇,鄒衛(wèi)軍.基于μC/OS-II和ModbusRTU協(xié)議的密集架控制軟件設(shè)計[J].無線互聯(lián)科技,2014(2):52-54.
[3] 張芬.基于密集架的智能倉儲管理系統(tǒng)設(shè)計及實現(xiàn)[D].南京:南京理工大學(xué),2014.
[4] 張曉焱,吳士力.基于MC9S08DZ60處理器CAN總線型車身控制系統(tǒng)的設(shè)計[J].煤炭技術(shù),2010,29(11):162-163.
[5] 袁洪芳,金鑫.基于MC9S08DZ60的CAN總線振動傳感器設(shè)計[J].電子設(shè)計工程,2009,17(7):23-25.
[6] 饒運濤,鄒繼軍,王進宏,等.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].2版.北京:北京航空航天大學(xué)出版社,2007.
[7] 黃敏雄.車載網(wǎng)絡(luò)技術(shù)的應(yīng)用與開發(fā)研究[D].成都:電子科技大學(xué),2011.
[8] 王宜懷,劉曉升.嵌入式技術(shù)基礎(chǔ)與實踐[M].北京:清華大學(xué)出版社,2007.
[9]FreescaleSemiconductorInc.MC9S08DZ60DataSheet[M].2006.
[10]FreescaleSemiconductorInc.MSCANBlockGuideV02.15[M].2004.
[11]FreescaleSemiconductorInc.Ascalablecontrollerareanetwork(MSCAN)interruptsapplicationnote[M].2002.
RESEARCH ON INTELLIGENT ELECTRICAL SERRIED SHELF CONTROL SYSTEM BASED ON CAN BUS
Wang Yuli1Wang Yihuai2
1(SuzhouIndustrialParkInstituteofVocationalTechnology,Suzhou215123,Jiangsu,China)2(SchoolofComputerScienceandTechnology,SoochowUniversity,Suzhou215006,Jiangsu,China)
Most of the intelligent electric serried shelf control system using RS485 mode control, so it is poor real-time, bus utilization is low, the software control is complex. Aiming at this situation, the design of the intelligent electric serried shelf control system based on CAN bus is proposed. 8-bit microcontroller MC9S08DZ60 with embedded CAN controller MSCAN is used as the master MCU, and the high-performance CAN transceiver TJA1040 is adopted to set up the CAN communication network to provide efficient data transmission channel. It integrates multiple sensor devices to establish multiple protection mechanisms, and add the necessary failure protection to deal with complex on-site environment. It makes full use of CAN protocol to reduce the software design complexity, and with a good mobile scheduling strategy to enhance the operation speed. The experimental results show that the control system has high communication speed, is safe and reliable, and effectively breaks the performance bottleneck caused by RS485, and fully satisfies the real-time, reliability and interoperability requirements of the serried shelf control.
Intelligent electrical serried shelf RS485 CAN
2016-04-04。國家自然科學(xué)基金項目(61202028)。王玉麗,講師,主研領(lǐng)域:嵌入式系統(tǒng)應(yīng)用。王宜懷,教授。
TP3
A
10.3969/j.issn.1000-386x.2017.04.044