梁國棟 劉 媛 梁昊穹
(1. 天津市第五機床廠,天津 300222;2. 天津職業(yè)技術(shù)師范大學,天津 300222;3. 中國汽車工業(yè)工程有限公司,天津 300113)
在水、電、氣的計量管理行業(yè)中,作為預(yù)收費管理的預(yù)付費智能閥門控制器得到了廣泛的應(yīng)用,然而在實際運行過程中,工業(yè)用大流量計量設(shè)備的數(shù)據(jù)與智能閥門控制器的數(shù)據(jù)往往發(fā)生偏差,導致供銷矛盾,甚至糾紛。
發(fā)生這種數(shù)據(jù)偏差的根源,是數(shù)據(jù)傳輸或者說是數(shù)據(jù)采集出現(xiàn)了問題。傳統(tǒng)的智能閥門控制器與流量計量設(shè)備間,采取的是由計量設(shè)備發(fā)出一個脈沖,智能閥門控制器接收一個脈沖,然后智能閥門控制器的系統(tǒng)就消減相應(yīng)的預(yù)置數(shù)值,當該數(shù)值消減到程序設(shè)定值時,控制器閥門自動關(guān)閉。這種原始的通信模式作為系統(tǒng)數(shù)據(jù)傳輸方案簡易可行,但在實際運行過程中,就時常會發(fā)生計量設(shè)備發(fā)出的信號沒有被智能閥門控制器及時接收到的現(xiàn)象,也就是俗稱的丟失脈沖,長期累積也就導致了數(shù)據(jù)發(fā)生偏差。
為了解決這一難題,本文提出了基于485通信技術(shù)的智能閥門控制器數(shù)據(jù)采集方案。該方案應(yīng)用在天津市第五機床廠生產(chǎn)的智能閥門控制器產(chǎn)品中,經(jīng)過近兩年時間的推廣使用,取得了很好地效果。
RS-485作為一種串行通信標準,是目前工業(yè)上最常用的數(shù)據(jù)傳輸方式,采用平衡式發(fā)送、差分式接收的方式實現(xiàn)通信,不僅可以實現(xiàn)半雙工通信,而且可以實現(xiàn)全雙工通訊。利用兩根雙絞數(shù)據(jù)線就可同時進行數(shù)據(jù)的發(fā)送和接收。具有硬件設(shè)計簡單、傳輸距離長、速度較高、控制方便、電平兼容性好、使用靈活方便、成本低廉和有極強的抗共模干擾能力,可靠度高等諸多優(yōu)點,應(yīng)用在智能管理、工業(yè)控制、在線控制等許多廣泛領(lǐng)域。
RS-485標準通信接口,當傳輸距離為100m時,通信速率可達12Mb/s[2]。計量設(shè)備與智能閥門控制器之間的現(xiàn)場距離最多也就十幾米。采用點對點通信方案,完全可以勝任傳輸距離與通信速率的實際需求。RS-485接口標準的具體參數(shù)見表1[1]。
表1 RS-485接口標準的具體參數(shù)
一般情況,系統(tǒng)通過RS-485串行通信接口發(fā)送端,將所要發(fā)送的并行數(shù)據(jù),通過異步收發(fā)單元(UART)轉(zhuǎn)換為串行數(shù)據(jù),再由485電平轉(zhuǎn)換芯片將TTL信號轉(zhuǎn)換為RS-485標準的信號,通過信號連接線送到接收端,在接收端經(jīng)過相反的轉(zhuǎn)換完成通信,如圖 1所示[3]。在本方案的計量設(shè)備和智能閥門控制器系統(tǒng)的RS-485通信結(jié)構(gòu)中,沒有使用專門的UART單元,而是利用軟件的方法,實現(xiàn)信號串行和并行之間的轉(zhuǎn)換。
圖1 RS-485點對點方式通信示意圖
可用于 RS-485標準的接口芯片種類較多,例如,Maxmi公司的 MAX485和 MAX491芯片,MAX485用于半雙工,而MAX491可用于全雙工,不同的系統(tǒng)需求對芯片的功能要求也會有不同。本方案選用的MAX485是最常用的RS-485通信芯片,它采用單一電源+5V工作,額定電流為300μA。
圖2表示A、B的波形,RS-485傳輸信號在雙絞線上極性相反,即UA和UB是一對大小相等方向相反的差分信號,UOH>3V,UOL<1V,圖中中間完整周期的信號對應(yīng)的是邏輯 0。在接收端根據(jù)UA和 UB的電壓差判斷信號,當 UA-UB>0時,邏輯為0,當UA-UB<0時,邏輯為1[3]。
圖2 RS-485A、B端信號波形
預(yù)付費智能閥門控制器系統(tǒng)單片機的串行輸出TXD和串行輸入RXD,經(jīng)電路接至芯片MAX485。如圖3所示。
圖3 MAX485硬件接口電路
DI腳為數(shù)據(jù)輸入端,它將單片機的TTL電平的數(shù)據(jù)轉(zhuǎn)換為差模信號VAB,并由A、B兩腳傳送出去。
DE是DI的使能端,高電平選通DI,數(shù)據(jù)輸出有效。
RO腳為數(shù)據(jù)輸出腳,它接收RS-485的差模信號VAB,并換為TTL電平由RO輸出。
RE腳為RO的使能端,低電平時選通RO,輸出有效。
為了控制上的方便,將RE、DE兩腳連在一起,系統(tǒng)中的MCS-51單片機的串行通道是一個全雙工的串行通信口,其并口2的P2.7對MAX485輸入使能端 RE和輸出使能端 DE,進行控制。當 P2.7輸出高電平時,DI腳輸入的數(shù)據(jù)有效;低電平時,RO腳數(shù)據(jù)輸出有效。
通信時,由于采用的是點對點通信模式,計量設(shè)備雖然不需要進行地址的設(shè)定,但需要以兩個設(shè)備共同約定的數(shù)據(jù)格式,波特率等通信規(guī)約,發(fā)送通信文件,智能閥門控制器在接收符合的字符格式和校驗正確后,才能進行正常的數(shù)據(jù)通信。
本方案的通信協(xié)議約定設(shè)置如下。
1)波特率設(shè)置:9600 bps。
2)信息幀格式:1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗位。
3)檢驗方式:采用CRC16循環(huán)冗余校驗碼校驗,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
4)傳送方式:計量設(shè)備(從機)采用定時方式接收和發(fā)送數(shù)據(jù),智能閥門控制器(主機)采用中斷方式接收和發(fā)送數(shù)據(jù)。
本方案采用點對點通信,以串行口中斷的方式接收,無需判斷機位號。智能閥門控制器程序初始化完成后,等待計量設(shè)備(從機)發(fā)送信息,當智能閥門控制器(主機)接收到第一個字節(jié)后,判斷該字節(jié)是否為包頭,如果不是包頭,接收個數(shù)清零,如果是包頭,則繼續(xù)接收第二個字節(jié),該字節(jié)為從計量設(shè)備發(fā)送信息的字節(jié)個數(shù) X,計算從計量設(shè)備發(fā)送總字節(jié)個數(shù)為M=X+3+2,包括3個包頭字節(jié)和2個CRC校驗碼,智能閥門控制器接收到M個字節(jié)后,首先判斷CRC校驗碼是否正確,錯誤舍棄所有信息,正確則把從計量設(shè)備收到的信息保存到數(shù)據(jù)區(qū),該次接收結(jié)束,智能閥門控制器繼續(xù)等待接收。
按照通信協(xié)議的要求,首先呼叫計量設(shè)備,發(fā)出聯(lián)絡(luò)信號。呼叫成功后,要求計量設(shè)備向智能閥門控制器發(fā)送數(shù)據(jù)??紤]到程序的簡單和可靠性,智能閥門控制器程序采用了定時器,定時向計量設(shè)備發(fā)送要求發(fā)送數(shù)據(jù)的指令。
計量設(shè)備的處理器采用中斷方式進行數(shù)據(jù)通信,由主程序完成串行口和中斷的初始化,一旦智能閥門控制器有通信要求,則響應(yīng)中斷,執(zhí)行通信中斷服務(wù)程序。智能閥門控制器通信中斷服務(wù)程序流程圖如圖4所示。
圖4 通信程序流程圖
本文給出了利用 RS-485通信接口電路和通信程序?qū)崿F(xiàn)計量設(shè)備與智能閥門控制器之間數(shù)據(jù)可靠傳輸?shù)脑O(shè)計方案。該技術(shù)方案的使用,可有效避免因為計量儀表與智能預(yù)付費控制器兩個設(shè)備間的計量不完全一致帶來的困擾。應(yīng)用該方案已經(jīng)應(yīng)用在天津市第五機床廠生產(chǎn)的智能閥門控制器產(chǎn)品中,經(jīng)過近兩年時間的推廣使用,取得了很好的效果。
[1] 馮子陵, 俞建新. RS485總線通信協(xié)議的設(shè)計與實現(xiàn)[J]. 計算機工程, 2012, 38(20): 215-218.
[2] 李成, 王鵬, 丁天懷, 等. RS-485總線的高速串行遠距離數(shù)據(jù)傳輸方法[J]. 清華大學學報(自然科學版),2009, 49(5): 68-71.
[3] 徐惠鋼, 郭文華. RS-485通信的無極性連接[J]. 低壓電器, 2005(7): 41-43.