精密數(shù)字壓力表多機通信的實現(xiàn)
根據(jù)實際應(yīng)用需要,以計算機為主機、精密數(shù)字壓力表為從機,從通信原理、硬件實現(xiàn)、主/從機軟 件設(shè)計方面介紹了精密數(shù)字壓力表多機通信的實現(xiàn)方案。實際應(yīng)用表明,釆用該方案設(shè)計并實現(xiàn)的精密數(shù) 字壓力表及其與主機的RS232C通信系統(tǒng)能夠?qū)崿F(xiàn)在主機上實時顯示各個精密數(shù)字壓力表的測量值及查看 或設(shè)置壓力表測量參數(shù)的功能。
0.引言
近年來,隨著工業(yè)自動化應(yīng)用的需要,儀器儀表 得到了蓬勃發(fā)展。精密數(shù)字壓力表作為原來工業(yè)指 針壓力表的替代品,廣泛應(yīng)用于工業(yè)現(xiàn)場的壓力測 量。PIC單片機由于性價比高而大量應(yīng)用于智能儀 器儀表的開發(fā)中。筆者選用PIC18F252為主控芯 片設(shè)計了一種精密數(shù)字壓力表,并利用其自帶的 USART模塊方便地實現(xiàn)了與監(jiān)控主機的RS232C 串行通信,使監(jiān)控主機能夠?qū)崟r顯示各個精密數(shù) 字壓力表的測量值,并隨時對其中某一個壓力表的 測量參數(shù)進行查看或設(shè)置。
1.通信原理
RS232C是美國電子工業(yè)協(xié)會(Electronic Industry Association ,EIA)制定的一*種串行物理接 口標(biāo)準(zhǔn)。目前RS232C是PC機與通信工業(yè)中應(yīng)用 最廣泛的一種串行接口,被定義為一種在低速率串 行通信中增加通信距離的單端標(biāo)準(zhǔn),釆取不平衡傳 輸方式,最大傳輸距離約為20 m ,最大傳輸速率為 20 kbit/ s。PIC18F252 擁有 USART 資源,釆用 三線連接方式,通過電平轉(zhuǎn)換芯片將信號轉(zhuǎn)換成 RS232C標(biāo)準(zhǔn)電平,完成與主機上RS232C串口的 連接。然后在主機的VC++平臺下調(diào)用MSComm 控件,并設(shè)置PIC18F252的USART各相關(guān)寄存器參數(shù),實現(xiàn)主機與PIC18F252的點對點通信。
圖1為主機和多臺精密數(shù)字壓力表的連接方 式。其中計算機作為主機,釆用查詢方式接收從機 發(fā)來的數(shù)據(jù);各壓力表作為從機,釆用中斷方式接收 從主機發(fā)來的數(shù)據(jù)。
為了實現(xiàn)多機無沖突可靠通信,通信協(xié)議的設(shè) 計格外重要。首先每臺從機必須有唯一的地址,通 過壓力表的菜單模式下壓力表地址設(shè)置選項進行地 址設(shè)置。根據(jù)應(yīng)用需要,每臺從機有16個地址值可 供選擇,分別為1?16。其次是通信數(shù)據(jù)格式的定 義,為了使數(shù)據(jù)處理簡單化,以1個字節(jié)作為最小通 信單位。數(shù)據(jù)分為地址幀和數(shù)據(jù)幀。數(shù)據(jù)長度不定 長,對數(shù)據(jù)進行和校驗,保證收到的數(shù)據(jù)準(zhǔn)確可靠; 地址幀主要用于主機對從機進行數(shù)據(jù)查詢和設(shè)置時 的從機識別。
數(shù)據(jù)幀用于壓力值、報警值等數(shù)據(jù)的傳送,其格 式如下:
數(shù)據(jù)幀的起始符和結(jié)束符分別為0x5B、x5D ; 不同參數(shù)數(shù)據(jù)用3個字節(jié)標(biāo)識符進行區(qū)分,以字符 的ASCII碼作為標(biāo)識符;由于傳輸數(shù)據(jù)大小、類型 不一致,釆用不定長數(shù)據(jù)長度;從機地址標(biāo)識符和校 驗碼與地址幀的原理相同。如向主機傳輸壓力值、上下限壓力值報警、低電壓報警時,其傳輸數(shù)據(jù)幀為 “0x5B(起始符)、0x43(C)、0x44(D)、0x3D( =)、N1 (液晶屏第一位數(shù)據(jù))、N2(液晶屏第二位數(shù)據(jù))、N3 (液晶屏第三位數(shù)據(jù))、N4(液晶屏第四位數(shù)據(jù))、N5 (液晶屏第五位數(shù)據(jù))、POINT_flag (小數(shù)點位置標(biāo) 識)、ALARM_flag(上下限壓力值報警標(biāo)識)、LVD_ flag(低電壓報警標(biāo)識)、AD(壓力表地址標(biāo)識)、 0x5D(結(jié)束符)、UM(和校驗碼)”。主機接收到數(shù) 據(jù)流之后進行和校驗,如果傳輸錯誤,發(fā)錯誤數(shù)據(jù)幀 給從機,從機再次發(fā)送數(shù)據(jù)。如校驗正確,按照協(xié)議 進行解碼,并送對話框相應(yīng)控件顯示。當(dāng)然,從主機 傳輸?shù)綇臋C的數(shù)據(jù)也經(jīng)過和校驗驗證。多機通信必 須保證每時每刻只有1臺從機與主機通信,所以 每次通信的建立首先必須是主機對從機的查詢。
0x5A和0x5C作為地址幀的起始符和結(jié)束符, 各占用1個字節(jié);由于主機軟件存在多個子頁面,分 別用于各種壓力表數(shù)據(jù)的顯示和設(shè)置,所以需要 1個字節(jié)的頁面標(biāo)識符;從機的地址識別占用1個字 節(jié);校驗碼是起始符和結(jié)束符之間數(shù)據(jù)的和(不包括 起始符和結(jié)束符),占用1個字節(jié),超過1個字節(jié)則 自動丟失高位數(shù)據(jù)。
2.硬件實現(xiàn)
該多機通信系統(tǒng)除了單片機RS232C通信的硬 件要求外,還釆用了一塊MAX3223ECAP芯片和 一個IN4148 二極管實現(xiàn)多機通信的硬件電路,如 圖2所示。
MAX3223ECAP 為一款雙向 TTL RS232C 標(biāo)準(zhǔn)電平轉(zhuǎn)換芯片。當(dāng)主機向從機發(fā)送數(shù)據(jù)時,從機 1的RXD0在收到數(shù)據(jù)的同時,通過電平轉(zhuǎn)換連接 到從機2的RXD1端,MAX3223ECAP此時起增強信號的作用。從機1的TXD0端口向主機發(fā)送的 數(shù)據(jù)通過MAX3223ECAP電平轉(zhuǎn)換,再用二極管 進行隔離,實現(xiàn)從機1 TXD0端與從機2 TXD1端 口互不干擾。以上連接方式理論上可以實現(xiàn)1臺主 機對無限多臺從機的多機通信。在本文涉及的精密 數(shù)字壓力表系統(tǒng)中,只要求完成1臺主機對16臺從 機的通信,因此,該電路可滿足通信要求。
3.軟件實現(xiàn)
3. 1從機軟件
精密數(shù)字壓力表釆用PIC18F252作為主控芯 片,其軟件編程語言釆用C語言,在MAPLAB IDE 平臺上開發(fā),利用PICC- 18編譯工具編譯。從機 軟件功能為實現(xiàn)壓力表地址分配(不允許2臺不同 的壓力表具有相同的地址值)以及對主機查詢信息 命令的中斷響應(yīng)。壓力表地址分配是由按鍵處理子 文件實現(xiàn)的,通過進入壓力表的菜單模式下地址處 理子菜單St - AD進行相應(yīng)按鍵操作,最終將設(shè)定 好的地址值保存到PIC18F252自帶的EEPROM 中。設(shè)定壓力表地址值后,主機對從機進行數(shù)據(jù)查 詢時,從機在USART接收中斷服務(wù)程序中完成對 數(shù)據(jù)的保存,并置位標(biāo)志位,等待主程序循環(huán)對所接 收數(shù)據(jù)進行處理。從機數(shù)據(jù)接收及處理程序流程如 圖 3 所示 。
3.2主機軟件
主機軟件的設(shè)計是基于VC + +平臺的MFC 編程實現(xiàn)。首先建立一個模態(tài)對話框,添加 MSComm控件,對所用計算機串口進行參數(shù)設(shè)置 及初始化。數(shù)據(jù)接收是通過對GetCommlvenl()事 件的響應(yīng),然后將數(shù)據(jù)校驗、保存并處理,在軟件前臺顯示。主機數(shù)據(jù)接收程序流程如圖4所示。
數(shù)據(jù)發(fā)送功能是通過按鈕或者定時器控件調(diào)用 數(shù)據(jù)發(fā)送函數(shù)實現(xiàn)的,在此不予詳述。
4.結(jié)語
本文根據(jù)精密數(shù)字壓力表的實際應(yīng)用要求,詳 細(xì)描述了精密數(shù)字壓力表多機通信的實現(xiàn)過程,提出的通信原理及軟硬件實現(xiàn)方式合理、可靠。通信 中使用和校驗大大減低了通信的出錯率,能夠勝任 工業(yè)現(xiàn)場惡劣的工作環(huán)境。依據(jù)本文所述方法開發(fā) 的精密數(shù)字壓力表已形成產(chǎn)品,并已得到實際應(yīng)用。
實際應(yīng)用過程中數(shù)據(jù)通信穩(wěn)定可靠,尚未出現(xiàn) 故障。但本文提出的RS232通信限制了從機和主 機的通信距離,可根據(jù)實際需要以其它通信接口 代替。
下一篇:精密壓力表的選擇