翁子寒
(上海兒童醫(yī)學(xué)中心,上海 200127)
信息科技的不斷進(jìn)步帶動(dòng)著工業(yè)制造領(lǐng)域的轉(zhuǎn)型升級(jí)。表現(xiàn)為日趨擴(kuò)大的有關(guān)測(cè)量的領(lǐng)域,更多的工業(yè)制造可以進(jìn)行自動(dòng)控制、動(dòng)態(tài)監(jiān)控。單片機(jī)在汽車(chē)機(jī)車(chē)、光伏發(fā)電、柴油發(fā)電機(jī)、液壓支架、直升機(jī)自動(dòng)飛行等多領(lǐng)域起到了重要作用[1-5]。這樣的態(tài)勢(shì)之下,原有的單個(gè)單片機(jī)芯片以及較小范圍內(nèi)的芯片整合所構(gòu)成的功能不能應(yīng)對(duì)機(jī)械制造業(yè)內(nèi)的發(fā)展需求。為滿(mǎn)足上述領(lǐng)域?qū)I(yè)控制的需求,進(jìn)而實(shí)現(xiàn)大面積的過(guò)程監(jiān)控、數(shù)據(jù)采集和測(cè)算任務(wù),有必要在各設(shè)備內(nèi)形成一種通用的信號(hào)傳輸共享機(jī)制,構(gòu)建靈活實(shí)用的分布式系統(tǒng)。此外,還需考慮規(guī)?;I(yè)設(shè)備的復(fù)雜性、即時(shí)性特點(diǎn),這些均需要物與物、物與PC之間的網(wǎng)絡(luò)相連以保障控制及監(jiān)控的穩(wěn)定高效。現(xiàn)有文獻(xiàn)較為分散,僅闡述其單個(gè)領(lǐng)域運(yùn)用單片機(jī)所進(jìn)行的實(shí)用探究,未能從理論上闡述在工業(yè)制造內(nèi)有關(guān)控制、測(cè)量、監(jiān)控功能的通信機(jī)理[6-7]。據(jù)此本文構(gòu)建連接到以太網(wǎng)、PC互連、單片機(jī)聯(lián)通的全方位的控制系統(tǒng),探究利用單片機(jī)芯片完成的通信模型的分析,在歸納概括相應(yīng)總線(xiàn)協(xié)議標(biāo)準(zhǔn)、架構(gòu)流程內(nèi)容的基礎(chǔ)上,完成相應(yīng)的硬件設(shè)計(jì)和軟件測(cè)試。
分布式控制系統(tǒng)的主要結(jié)構(gòu),如圖1所示。
圖1 網(wǎng)絡(luò)設(shè)備分層結(jié)構(gòu)
由下往上分別是設(shè)備控制、操作監(jiān)控、信息管理功能[8]。上述功能的載體為經(jīng)過(guò)概括整合的網(wǎng)絡(luò)設(shè)備或軟件功能的抽象,具體分配劃分如下。單片機(jī)分布在底端的位置,承擔(dān)對(duì)設(shè)備直接操控任務(wù),依據(jù)上層PC發(fā)出的指令對(duì)下面的設(shè)備進(jìn)行操作;處于中間位置聯(lián)通上下兩結(jié)構(gòu)的是一些監(jiān)控軟件,對(duì)下將單片機(jī)反饋回來(lái)的信息進(jìn)行傳遞,使上層客戶(hù)能對(duì)整體的運(yùn)轉(zhuǎn)有準(zhǔn)確的把控,同時(shí)通過(guò)對(duì)單片機(jī)的各類(lèi)指令,能夠及時(shí)的調(diào)整下層管控的運(yùn)行狀態(tài);最上面的信息管理是整個(gè)監(jiān)控機(jī)制的關(guān)鍵所在。借助于對(duì)由下往上逐級(jí)傳遞而來(lái)的參數(shù)、數(shù)據(jù)、反饋信息的處理,確??蛻?hù)能夠進(jìn)行下一階段的指令發(fā)布。對(duì)應(yīng)構(gòu)建的通信電路圖,其通過(guò)特定的接口模塊連接到某個(gè)監(jiān)控PC上,如圖2所示。
圖2 通信模型
對(duì)于尋求特定狀態(tài)下與主動(dòng)向上層設(shè)備發(fā)起通訊連接的狀況,需要利用CAN總線(xiàn)標(biāo)準(zhǔn)的多主通信模式。上述模式在控制系統(tǒng)內(nèi)體現(xiàn)的較為明顯??梢罁?jù)規(guī)則讓單片機(jī)最先向監(jiān)PC傳遞數(shù)據(jù)信息,進(jìn)一步優(yōu)化監(jiān)控PC巡檢任務(wù)。涉及到軟件、測(cè)量單元、適配器等實(shí)體的監(jiān)控系統(tǒng)的協(xié)議層次結(jié)構(gòu),其中列出通信幀傳遞的方向和路徑[9],如圖3所示。
圖3 協(xié)議層次結(jié)構(gòu)
監(jiān)控層和設(shè)備層傳輸信息所用數(shù)據(jù)幀格式與總線(xiàn)標(biāo)準(zhǔn)相關(guān)。RS-232協(xié)議調(diào)和上述兩層串行通信。圖4為RS-232協(xié)議幀結(jié)構(gòu)[10],如圖4所示。
圖4 RS-232協(xié)議幀結(jié)構(gòu)
給出了數(shù)據(jù)幀的字段說(shuō)明,OPT與CTL編碼共同表征數(shù)據(jù)幀定義,體現(xiàn)串行通信協(xié)議各項(xiàng)功能。DATA字段大部分時(shí)間是通過(guò)CAN數(shù)據(jù)幀起作用,如表1所示。
表1 幀字段說(shuō)明
上述串行通信協(xié)議具有五類(lèi)功能,除去SEND以及EVENT之外的均是在調(diào)試過(guò)程中所需要的[11]。由此CAN總線(xiàn)網(wǎng)絡(luò)適配器可通過(guò)OPT、CTL字段不同的編碼方式明確預(yù)先設(shè)置好的動(dòng)作,詳細(xì)的編碼細(xì)節(jié)不再敘述,如表2所示。
表2 串行通信協(xié)議功能
CAN應(yīng)用層協(xié)議用于數(shù)據(jù)內(nèi)容的共享與交互傳輸,保證遠(yuǎn)程測(cè)量單元與監(jiān)控軟件能通過(guò)定義的專(zhuān)用設(shè)定控制與傳輸規(guī)則的接口,對(duì)應(yīng)幀結(jié)構(gòu),如圖5所示。
圖5 CAN應(yīng)用層協(xié)議幀結(jié)構(gòu)
其較之RS-232多了基于拓?fù)浣Y(jié)構(gòu)和通信模式而增添的尋址功能,對(duì)應(yīng)幀字段解釋?zhuān)憩F(xiàn)為參數(shù)和編碼相結(jié)合的命令形式[12],如表3所示。
表3 幀字段說(shuō)明
主從式通信模式的基本特點(diǎn)是待連接的下層單片機(jī)收到來(lái)自于監(jiān)控PC的數(shù)據(jù)幀,對(duì)照收到數(shù)據(jù)內(nèi)容所帶標(biāo)識(shí)與本身所帶是否一致,以確定是否進(jìn)行應(yīng)答、執(zhí)行、丟棄重發(fā)等操作。在設(shè)備層和監(jiān)控層之間進(jìn)行數(shù)據(jù)和信息的交互以完成上下行所用的數(shù)據(jù)幀。其通信時(shí)序圖如圖6所示。
RS-485接口利用Modbus總線(xiàn)協(xié)議進(jìn)行控制器的信息傳輸,完成數(shù)目較多儀器的監(jiān)視和控制[13]。本文將TIA/EIA-485 充當(dāng)物理接口通過(guò)RTU模式實(shí)現(xiàn)Modbus協(xié)議下的串口通信。RTU模式在波特率一定的情況下的吞吐量高于A(yíng)SCII模式下的吞吐量[14]。如圖7所示。
接口電路作為設(shè)計(jì),如圖8所示。
其中芯片SN75LBC 184[15]是RS-485類(lèi)型的且單電源供電。為避免外圍電路干擾,同時(shí)隔斷接口芯片與單片機(jī)可能存在的點(diǎn)連接,利用芯片TLP521起到隔離作用[16]。RS-485中程序作用的機(jī)理是處理主PC發(fā)來(lái)的請(qǐng)求幀,從機(jī)應(yīng)答重點(diǎn)在其中的請(qǐng)求功能碼、從機(jī)地址的辨別。
Modbus協(xié)議主從機(jī)通信流程如圖9所示。
圖6 主從機(jī)通信時(shí)序圖
圖7 RTU模式字符序列
所設(shè)通信系統(tǒng)與服務(wù)器進(jìn)行信息交換中的程序是與協(xié)議功能和串口接收相關(guān)的兩部分,主要步驟如下所示。主機(jī)發(fā)送請(qǐng)求報(bào)文幀。從機(jī)獲取到該信息,開(kāi)始逐步篩選幀內(nèi)的字段,判別是否與本機(jī)地址一致,若對(duì)比不一致則即刻丟棄;對(duì)比一致檢驗(yàn)判斷主機(jī)請(qǐng)求功能碼,在確保能提供該功能的情況下執(zhí)行動(dòng)作,否則顯示錯(cuò)誤信號(hào);在這之后,調(diào)用CRC 16檢驗(yàn)函數(shù),執(zhí)行差錯(cuò)校驗(yàn)任務(wù),擬定差錯(cuò)校驗(yàn)值置于響應(yīng)報(bào)文幀最后部分,將結(jié)果發(fā)送到主機(jī)。
圖8 RS-485接口電路設(shè)計(jì)
圖9 主從機(jī)通信流程圖
通過(guò)單片機(jī)通信接口1、2分別對(duì)應(yīng)的RS-232、RS-485進(jìn)行連接,以異步方式與儀器設(shè)備聯(lián)通,上述模塊為進(jìn)行測(cè)試的串口模塊,本測(cè)試主要是驗(yàn)證該接口的性能進(jìn)而驗(yàn)證所設(shè)計(jì)的通信模型的準(zhǔn)確穩(wěn)定運(yùn)行。在本測(cè)試中,其他設(shè)備處于在線(xiàn)聯(lián)通狀態(tài)下,相關(guān)設(shè)置如下:RS-232與PC直接聯(lián)通,RS-485經(jīng)過(guò)轉(zhuǎn)換器格式變化后再輸入到單片機(jī)內(nèi)。在PC顯示的界面上,依據(jù)串口調(diào)試工具來(lái)完成測(cè)試。測(cè)試中的串口設(shè)置和最終收到數(shù)據(jù)的結(jié)果顯示,如圖10所示。
說(shuō)明單片機(jī)收到了模擬工具所傳輸?shù)臄?shù)據(jù)且將之轉(zhuǎn)發(fā)。單片機(jī)借助于RS-232、RS-485得到的調(diào)試工具發(fā)來(lái)的信息后,原封不動(dòng)的返回獲取到的信息。串口調(diào)試工具接收結(jié)果處內(nèi)容和發(fā)送操作框內(nèi)的內(nèi)容相同。檢測(cè)單片機(jī)內(nèi)串口緩存區(qū)域,也可獲得與上述發(fā)送接收具一致的內(nèi)容。這說(shuō)明所構(gòu)成的控制系統(tǒng)的通信模塊部分?jǐn)?shù)據(jù)傳輸正常穩(wěn)定。
本文構(gòu)建的通信模型內(nèi)的傳輸功能大多分布在從機(jī)內(nèi),由從機(jī)向PC或服務(wù)器傳輸信息內(nèi)容。根據(jù)上述設(shè)置,需驗(yàn)證Modbus數(shù)據(jù)幀依據(jù)所設(shè)規(guī)范獲取信息。具體操作步驟如下,選取數(shù)量為2的RS-485總線(xiàn)的進(jìn)行測(cè)試驗(yàn)證,標(biāo)記從機(jī)地址依次為01、02。流程第一步為檢驗(yàn)從機(jī)是否與主機(jī)有效互連,確保轉(zhuǎn)換器的效力,同時(shí)保證其相互之間串行相接距離五米。第二步為在主PC上開(kāi)啟Modscan32,設(shè)置為波特率為5200bps的串口功能,對(duì)02從機(jī)傳輸字符為“02 03 00 00 00 02 "的請(qǐng)求幀,隨后收到字符串為“02 03 20 14 10 25 08 13 49 07 00 10"。在上述動(dòng)作發(fā)生后,向01從機(jī)傳輸如上述一致的請(qǐng)求幀,從機(jī)收到后回復(fù)主PC字符串“01 03 20 1410 26 123056010220”。上述流程進(jìn)行完畢之后測(cè)試工具M(jìn)odbuscan32內(nèi)狀態(tài),確認(rèn)相應(yīng)信息的格式和接收狀況完好。如圖11所示。
圖10 發(fā)送和接收界面
圖11 Modbus測(cè)試情況
結(jié)果顯示,Modbus協(xié)議下數(shù)據(jù)傳輸未出現(xiàn)遺漏或差錯(cuò),且從機(jī)得到的信息格式和預(yù)先設(shè)置的相同,通信模塊內(nèi)的RS-485總線(xiàn)通信性能穩(wěn)定性較高。
主要探究單片機(jī)在工業(yè)測(cè)量和監(jiān)控內(nèi)的應(yīng)用,對(duì)這一控制系統(tǒng)進(jìn)行分析。在對(duì)應(yīng)通信模型的基礎(chǔ)上從多主通信和主從通信兩類(lèi)模式進(jìn)行RS-232、RS - 485 和CAN 總線(xiàn)標(biāo)準(zhǔn)及協(xié)議的研究。重點(diǎn)對(duì)RS-485總線(xiàn)通信的硬件模塊和軟件流程進(jìn)行設(shè)計(jì),包括相關(guān)主從機(jī)的中斷子程序和單片機(jī)功能程序。最后,在此基礎(chǔ)上進(jìn)行了Modbus RTU、串口功能測(cè)試,驗(yàn)證了單片機(jī)在結(jié)合上述功能模塊構(gòu)造出的通信模型的穩(wěn)定性和有效性。