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