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