專利名稱:Rs-485總線式測控系統(tǒng)中的即插即用測控模塊的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及測控模塊,更具體地說,是一種應(yīng)用在以主機(jī)為中心,配以各種測控模塊構(gòu)成的測控系統(tǒng)中的測控模塊。
測控系統(tǒng)廣泛用于遠(yuǎn)程數(shù)據(jù)采集、過程控制系統(tǒng)、能源管理、安全系統(tǒng)、實(shí)驗(yàn)室自動(dòng)化、智能大廈以及產(chǎn)品性能測試等領(lǐng)域。在這類測控系統(tǒng)中,測控模塊是通過一對雙絞線完成與主機(jī)通訊,各模塊并聯(lián)在總線上。測控模塊在工作之前,除了對其輸入/輸出類型、輸入/輸出范圍等參數(shù)進(jìn)行設(shè)置外,還必須對其地址、通訊波特率進(jìn)行配置。監(jiān)控系統(tǒng)中各個(gè)模塊的波特率可以相同,但模塊的地址不得重復(fù)。因此,模塊使用前或使用中,對于模塊地址的分配和波特率的確定是系統(tǒng)正常運(yùn)行的必要保證。
現(xiàn)有技術(shù)在每個(gè)測控模塊接入監(jiān)控系統(tǒng)前,必須通過人工的方式,單獨(dú)對其進(jìn)行參數(shù)配置,使得接入監(jiān)控系統(tǒng)的每個(gè)模塊都有確定的波特率和不相同的地址,即模塊的波特率和地址均是已知的,這樣主機(jī)才能識別每一個(gè)測控模塊并使之工作。當(dāng)有多個(gè)波特率和地址均是未知的測控模塊接入監(jiān)控系統(tǒng)后,由于可能存在測控模塊的地址相同的情況(一般出廠時(shí)模塊地址缺省設(shè)置是相同的),主機(jī)發(fā)出一個(gè)命令,就會同時(shí)有多個(gè)測控模塊響應(yīng),而造成數(shù)據(jù)沖突(即總線競爭);或者由于主機(jī)通訊波特率與模塊不同,使得二者通訊無法進(jìn)行。所以,如果沒有人工單獨(dú)地對每一個(gè)模塊進(jìn)行地址分配和波特率設(shè)定,計(jì)算機(jī)監(jiān)控系統(tǒng)將無法工作。這種人工設(shè)置對于用戶而言,使監(jiān)控系統(tǒng)的安裝顯得既麻煩又費(fèi)時(shí)。
本實(shí)用新型的目的在于避免上述現(xiàn)有技術(shù)中的不足之處,提供一種RS-485總線式測控系統(tǒng)中的即插即用測控模塊。以解決模塊波特率自適應(yīng)和總線競爭的技術(shù)方法,來實(shí)現(xiàn)測控模塊的即插即用功能,對于地址和波特率不詳?shù)臏y控模塊,在其接入運(yùn)行在標(biāo)準(zhǔn)波特率集的監(jiān)控系統(tǒng)后,測控模塊具有自動(dòng)調(diào)整自身波特率與系統(tǒng)相匹配的能力;同時(shí),在有多個(gè)測控模塊接入系統(tǒng)后,模塊具有與系統(tǒng)相匹配的自動(dòng)識別能力。本實(shí)用新型具有特定電路結(jié)構(gòu)的測控模塊是解決上述問題的重要基礎(chǔ)。
本實(shí)用新型的目的通過如下技術(shù)方案實(shí)現(xiàn)本實(shí)用新型測控模塊,其內(nèi)置單片機(jī)U1,由電容C1、C2、晶體振蕩器X1與單片機(jī)U1的內(nèi)部電路構(gòu)成振蕩電路,采用非易失性存儲器U3,異步通信串行接口,包括信號接收端RXD和信號發(fā)送端TXD,其特征是所述信號接收端RXD另有一路通過同相器U5與單片機(jī)U1的外部中斷INTO端相連接。
具有所述結(jié)構(gòu)的本實(shí)用新型測控模塊,在相應(yīng)軟件的支持下,能可靠地完成測控模塊與主機(jī)的波特率自適應(yīng);主機(jī)對其總線上各測控模塊的識別及注冊,以及測控模塊按系統(tǒng)主機(jī)分配的參數(shù)進(jìn)行配置。
與已有技術(shù)相比,本實(shí)用新型具有如下優(yōu)點(diǎn)1、本實(shí)用新型提供了模塊波特率自適應(yīng)功能,在測控系統(tǒng)中無論是由于現(xiàn)場強(qiáng)干擾使模塊波特率代碼丟失,或是由于主機(jī)的波特率發(fā)生變化,造成模塊與主機(jī)不能正常通訊的情況時(shí),本實(shí)用新型都能夠做到自動(dòng)識別并快速與主機(jī)相匹配,盡快恢復(fù)與主機(jī)的通訊。從而避免或盡可能減少測控系統(tǒng)失控而造成的不良后果,極大地提高了系統(tǒng)的工作可靠性。
2、本實(shí)用新型中的模塊即插即用功能使得模塊的使用更為簡單、便利,大大降低了對模塊使用人員技術(shù)水平的要求。
3、本實(shí)用新型測控模塊自身結(jié)構(gòu)簡單,幾乎不增加硬件成本。
圖1為本實(shí)用新型結(jié)構(gòu)示意圖。
圖2為本實(shí)用新型應(yīng)用在測控系統(tǒng)中的系統(tǒng)框圖。
圖3為本實(shí)用新型應(yīng)用在測控系統(tǒng)中的信號傳輸時(shí)序圖。
圖4為本實(shí)用新型應(yīng)用在測控系統(tǒng)中波特率自適應(yīng)流程圖。
以下通過實(shí)施例,結(jié)合附圖對本實(shí)用新型作進(jìn)一步描述。
實(shí)施例
參見圖1,本實(shí)施例中的即插即用測控模塊,其內(nèi)置單片機(jī)U189C52,由電容C1、C2、晶體振蕩器X1與單片機(jī)U1的內(nèi)部電路構(gòu)成振蕩電路,產(chǎn)生CPU工作的時(shí)鐘信號。采用非易失性存儲器U3 X25045,用以保存模塊的波特率和地址信息,模塊掉電時(shí),其保存的信息不會丟失。U3與CPU的P20~24和RESET口線相連。本實(shí)施例采用異步通信串行接口包括信號接收端RXD和信號發(fā)送端TXD,如圖所示,在信號接收端RXD另有一路通過同相器U5 7407與單片機(jī)U1的外部中斷INTO端相連接。
當(dāng)CPU將數(shù)據(jù)寫入E2PROM時(shí),U3的CS片選置為0電平,WP寫保護(hù)置為1電平,數(shù)據(jù)隨SCK時(shí)鐘信號,通過串行數(shù)據(jù)輸入口SI管腳寫入E2PROM。當(dāng)CPU從E2PROM讀取數(shù)據(jù)時(shí),CS片選置為0電平,WP置為0電平,數(shù)據(jù)隨SCK時(shí)鐘信號,通過串行數(shù)據(jù)輸出口SO管腳讀入CPU。
圖中,U4 RS485為通訊收發(fā)器,其接收發(fā)送端RO、DI分別與CPU串口的接收發(fā)送端RxD、TxD相連,通訊收發(fā)器的使能端RE、DE分別與CPU P1口的P16 P17口線相連,U4 RS485通訊收發(fā)器的引腳說明如下RO—接收數(shù)據(jù)端RE—接收數(shù)據(jù)使能端,低電平有效DE—發(fā)送數(shù)據(jù)使能端,高電平有效DI—發(fā)送數(shù)據(jù)端DATA(-)—接RS-485網(wǎng)絡(luò)的正端,數(shù)據(jù)傳輸端DATA(+)—接RS-485網(wǎng)絡(luò)的負(fù)端,數(shù)據(jù)傳輸端當(dāng)CPU通過P16 P17口線將RE置為1電平、DE置為1電平,U4 RS485通訊收發(fā)器處于發(fā)送狀態(tài),CPU數(shù)據(jù)可通過DI管腳發(fā)送到RS-458總線上;當(dāng)RE置為0電平、DE置為0電平,U4 RS485通訊收發(fā)器處于接收狀態(tài),RS-458總線上數(shù)據(jù)CPU可通過RO管腳讀入;當(dāng)RE置為0電平、DE置為1電平,U4 RS485通訊收發(fā)器同時(shí)處于發(fā)送和接收狀態(tài)。
偵聽RS-485通訊線有無收發(fā)信息的工作原理是CPU首先通過P16P17口線將U4 RS485通訊收發(fā)器置于接收狀態(tài),CPU 89C52中斷0(INT0)設(shè)置為信號的下降沿觸發(fā);由于串口通訊每幀的啟始位電平總是由高電平跳至到低電平,當(dāng)通訊線上有收發(fā)信息時(shí),該跳變信號經(jīng)U4 RS485收發(fā)器RO管腳、U5A 7407同相器傳送到INT0中斷口線,引起CPU 89C52產(chǎn)生中斷;反之,通訊線上沒有收發(fā)信息,CPU 89C52就不會產(chǎn)生中斷。
解決數(shù)據(jù)沖突的工作原理是接在計(jì)算機(jī)監(jiān)控系統(tǒng)的RS-485總線上的每個(gè)模塊,在其發(fā)送信息之前,為避免由于競爭引起的數(shù)據(jù)沖突,首先使用上面所述的偵聽技術(shù),偵聽RS-485總線上是否有信息在發(fā)送,如果RS-485總線是空閑的,則可以發(fā)送;如果RS-485總線是忙的,則等待一個(gè)隨機(jī)時(shí)間間隔后重新再試。當(dāng)CPU 89C52準(zhǔn)備發(fā)送數(shù)據(jù)時(shí),先通過CPU的P16和P17口線,將U4 RS485收發(fā)器的發(fā)送和接收功能同時(shí)使能,即U4RS495通訊收發(fā)器同時(shí)處于發(fā)送和接收狀態(tài),使CPU能夠邊發(fā)送數(shù)據(jù)、邊接收數(shù)據(jù),在CPU 89C52把數(shù)據(jù)發(fā)送出去后,CPU將發(fā)送的數(shù)據(jù)與同時(shí)接收回來的數(shù)據(jù)按位比較,若不一致,就說明RS-485總線上的數(shù)據(jù)已產(chǎn)生了沖突,則CPU 89C52重復(fù)上述過程;若一致,即數(shù)據(jù)傳輸成功,總線無數(shù)據(jù)沖突。
參見圖2,應(yīng)用系統(tǒng)是以主機(jī)為中心,配以分布在各處的測控模塊。圖中,CESN-2520為RS-232/RS-485轉(zhuǎn)換模塊,CESN-2510為中繼模塊,CESN-2000系列為測控模塊。主機(jī)與測控模塊的通訊遵循主從式、ASCⅡ碼命令/響應(yīng)通訊協(xié)議。測控模塊與主機(jī)之間的通訊波特率采用1200、2400、4800、9600、19.2K、38.4K、57.6K、115.2Kbps(其代碼分別為03、04、05、06、07、08、09、0A)標(biāo)準(zhǔn)波特率集中的一個(gè)進(jìn)行通訊。
針對本實(shí)施例中測控系統(tǒng),其相應(yīng)的以軟件實(shí)現(xiàn)的即插即用法包括三個(gè)步序測控模塊與主機(jī)的波特率自適應(yīng);主機(jī)對其總線上各測控模塊的識別及注冊;測控模塊按系統(tǒng)主機(jī)分配的參數(shù)進(jìn)行配置。
關(guān)于測控模塊與主機(jī)的波特率自適應(yīng)。首先按E2PROM內(nèi)貯存的波特率代碼進(jìn)行模塊通訊波特率的配置,然后偵聽RS-485通訊線上有無主機(jī)與測控模塊的收發(fā)信息;當(dāng)RS-485通訊線上沒有收發(fā)信息,模塊不進(jìn)入波特率檢測程序;而當(dāng)RS-485通訊線上有收發(fā)信息,模塊又無法收到有效數(shù)據(jù),則說明測控模塊的波特率與主計(jì)算機(jī)的波特率不同,此時(shí)測控模塊自動(dòng)進(jìn)入波特率檢測程序,變換當(dāng)前波特率,直至能收到有效的數(shù)據(jù)為止。這時(shí)測控模塊將此時(shí)通訊波特率設(shè)定為當(dāng)前工作的波特率,并將這個(gè)波特率代碼存入E2PROM中。具體方法為a、實(shí)現(xiàn)測控模塊對RS-485總線上有無信息傳送的偵聽。
其原理如前所述。當(dāng)采用異步串行方式通訊時(shí),傳輸數(shù)據(jù)的每一幀包含1位啟始位、8位數(shù)據(jù)位和1位停止位,如圖3所示。每幀信號的開始電平總是由高電平跳至低電平。當(dāng)通訊線上有收發(fā)信息時(shí),引起CPU 89C52產(chǎn)生中斷。反之,通訊線上沒有收發(fā)信息,CPU 89C52就不會產(chǎn)生中斷。
b、以測控模塊能否接收到RS-485總線上傳輸?shù)挠行?shù)據(jù)來判斷該測控模塊的波特率與主機(jī)是否相適應(yīng);當(dāng)模塊偵聽到總線上有數(shù)據(jù)傳送時(shí),產(chǎn)生INT0中斷,這時(shí)串行口開始一條命令數(shù)據(jù)的接收,如果模塊在足夠長的延時(shí)時(shí)間內(nèi)接收不到有效數(shù)據(jù),可以斷定模塊的波特率與主計(jì)算機(jī)不相適應(yīng)。只有當(dāng)模塊接收到一組有效數(shù)據(jù)時(shí),才能夠得出模塊與主計(jì)算機(jī)波特率相適應(yīng)的結(jié)論。
對模塊所接收的命令數(shù)據(jù)是否有效的判斷方法如下首先對主機(jī)的有效命令格式進(jìn)行分析,主機(jī)向模塊發(fā)布命令的格式為定義符地址命令數(shù)據(jù)結(jié)束符其中定義符取值可以是$或#或%或@地址碼取值范圍00~FFH命令內(nèi)容命令不同,其取值范圍和字節(jié)長度也不相同。
數(shù)據(jù)碼數(shù)據(jù)不同,其取值范圍和字節(jié)長度也不相同結(jié)束符(cr)回車?yán)?230(cr)其中,$為定義符,23為地址碼,0為命令碼,(cr)為結(jié)束符。
模塊與主計(jì)算機(jī)的通訊遵循ASCⅡ碼命令/響應(yīng)協(xié)議,即主計(jì)算機(jī)把將要向模塊傳輸?shù)拿钜訟SCⅡ碼的形式傳送給模塊,每一幀傳送一位ASCⅡ碼,直至命令結(jié)束。
上例命令中,主機(jī)向模塊傳送命令以從左到右的順序?qū)?、2、3、0、(cr)這五個(gè)字符分為5幀傳送,每一幀傳送值分別為對應(yīng)字符的ASCⅡ碼。
通過對主機(jī)與模塊通訊的命令格式和通訊協(xié)議進(jìn)行分析,得出主計(jì)算機(jī)有效命令數(shù)據(jù)具有下列四個(gè)特征1、主機(jī)命令的第一幀數(shù)據(jù)必定為命令定義符$、或#、或%、或@的ASCⅡ碼。
2、第二幀數(shù)據(jù)和第三幀數(shù)據(jù)的取值有兩種可能(1)、為**的ASCⅡ碼。
(2)、為模塊地址的ASCⅡ碼,地址的取值范圍00~FF。
3、命令的最后一幀數(shù)據(jù)必定為(cr)的ASCⅡ碼4、主機(jī)的每一條命令,都是由若干幀數(shù)據(jù)組成的;由于命令的長短不同,所以模塊所接收的數(shù)據(jù)幀數(shù)也不相同,但每一幀數(shù)據(jù)均為ASCⅡ碼。
在得知主機(jī)命令的四個(gè)特征后,根據(jù)這四個(gè)特征對模塊所接收到的每一幀數(shù)據(jù)進(jìn)行判斷,以確定是否為有效的主機(jī)命令代碼。只有當(dāng)確定模塊接收到了一條完整的主計(jì)算機(jī)命令時(shí),說明模塊與主計(jì)算機(jī)的波特率相適應(yīng);否則,說明模塊的波特率與主機(jī)不相適應(yīng)。
c、測控模塊自動(dòng)調(diào)整直至與主機(jī)波特率相匹配。
在上述兩步判斷的基礎(chǔ)上,可以得出模塊與主計(jì)算機(jī)的波特率是否適應(yīng),如相適應(yīng),則將目前模塊的波特率代碼寫入E2PROM中,如果不適應(yīng),則變換模塊的標(biāo)準(zhǔn)波特率代碼,再重復(fù)以上二步驟,直到模塊的波特率與主機(jī)相適應(yīng)為止。然后將正確的波特率代碼存入E2PROM中。
至此,模塊的波特率自適應(yīng)功能完成。
模塊波特率自適應(yīng)流程圖,如圖4所示。
關(guān)于主機(jī)對其總線上各測控模塊的識別及注冊a、置測控系統(tǒng)運(yùn)行軟件以及每一測控模塊各自唯一的代碼。
模塊實(shí)現(xiàn)即插即用的過程,實(shí)質(zhì)是模塊與系統(tǒng)主計(jì)算機(jī)相互識別的過程,為了便于二者間的相互辨別,對于每個(gè)模塊均有一組唯一的代碼,其格式及代表的意義為模塊型號年(2位)月(2位)日(2位)序號(3位)例如2011 00 01 23 480其中2011模塊型號00:2000年01:1月23:23日480序號對于每個(gè)監(jiān)控系統(tǒng)運(yùn)行的軟件也有一組唯一的代碼,該代碼借鑒了組件(COM)規(guī)范中唯一標(biāo)識符產(chǎn)生的原理,軟件的唯一代碼為25位長的字符串(0~9,A~W 32進(jìn)制)。
b、測控模塊對RS-485總線上有無信息傳送的偵聽。
測控模塊即插即用的實(shí)現(xiàn),除了解決通訊波特率的問題,還必須解決總線競爭的問題。同樣使用圖1所示電路的偵聽技術(shù)。當(dāng)通訊線上有收發(fā)信息,引起CPU 89C52產(chǎn)生中斷;反之,通訊線上沒有收發(fā)信息,CPU 89C52就不會產(chǎn)生中斷。
c、置測控模塊的CPU串口為邊發(fā)送邊接收狀態(tài),在總線空閑時(shí),由模塊發(fā)送其本身對應(yīng)的代碼信息,并同時(shí)將發(fā)送的信息與接收到的反饋信息按位比較,若一致,即信息傳輸成功,總線無數(shù)據(jù)沖突。通過偵聽,如果RS-485總線是空閑的,則測控模塊可以發(fā)送信息;如果總線是忙的,則等待一個(gè)隨機(jī)時(shí)間間隔后重新再試。當(dāng)測控模塊CPU89C52準(zhǔn)備發(fā)送數(shù)據(jù)時(shí),先通過CPU的P16和P17口線,將U4 RS485收發(fā)器的發(fā)送和接收功能同時(shí)使能,使CPU處于邊發(fā)送邊接收的狀態(tài),在CPU 89C52把數(shù)據(jù)發(fā)送出去后,CPU將已發(fā)送的數(shù)據(jù)與接收到的數(shù)據(jù)按位比較,若不一致,就說明RS-485總線上的數(shù)據(jù)已產(chǎn)生了沖突,則CPU89C52重復(fù)上述過程,直至比較結(jié)果一致。
d、主機(jī)向總線發(fā)布由查詢碼和主機(jī)軟件代碼構(gòu)成的模塊查詢命令,測控模塊將該命令信息與其自身對主機(jī)軟件代碼的記錄比較,以完成主機(jī)對于測控模塊的識別;在解決總線競爭、模塊與軟件唯一代碼問題后,對于具有即插即用功能的測控模塊,用戶可以將其接入或移出RS-485總線,而不需要重新啟動(dòng)監(jiān)控系統(tǒng)進(jìn)行修改或調(diào)整配置參數(shù)。對于安裝好的、以RS-485總線為通訊通道的監(jiān)控系統(tǒng),不管系統(tǒng)是首次運(yùn)行或系統(tǒng)已在運(yùn)行中,此時(shí)加入測控模塊,無論模塊是第一次使用,還是曾經(jīng)使用過,當(dāng)該模塊接入監(jiān)控系統(tǒng)的RS-485總線上后,系統(tǒng)均會找到新加入的模塊并識別它。具體方法是系統(tǒng)主機(jī)總以一定的時(shí)間間隔,以廣播方式向總線發(fā)布模塊查詢命令,查詢廣播命令由查詢碼和主機(jī)軟件代碼(簡稱為主機(jī)碼)組成,總線上所有測控模塊在收到查詢廣播命令后,首先,判別主機(jī)碼是否與模塊本身記錄的主機(jī)碼相同,若比較結(jié)果相同,測控模塊無響應(yīng),反之,測控模塊向主機(jī)發(fā)送模塊代碼以及模塊當(dāng)前的參數(shù)配置狀態(tài)。
此外,若有模塊從RS-485總線上移出,當(dāng)監(jiān)控系統(tǒng)啟動(dòng)時(shí),將采用點(diǎn)名方式檢查總線上模塊的存在情況,若經(jīng)多次點(diǎn)名確認(rèn),對已從RS-485總線上移出的模塊,主機(jī)將移出的模塊從注冊表中刪除。
關(guān)于對于測控模塊的參數(shù)配置模塊與主機(jī)經(jīng)相互識別后,主機(jī)根據(jù)現(xiàn)有模塊的注冊以及地址資源的使用情況,向?qū)?yīng)的模塊發(fā)送配置命令,該配置命令包含有配置命令碼、模塊代碼、模塊地址碼、波特率代碼和主機(jī)碼。
當(dāng)接在監(jiān)控系統(tǒng)RS-485總線上的所有模塊接收到配置命令后,各模塊將配置命令中的模塊代碼與本身的模塊代碼進(jìn)行比較,若比較結(jié)果相同,則模塊把新的模塊地址碼、波特率代碼和主機(jī)碼寫入E2PROM中并重新初始化,按新的配置開始工作。從而實(shí)現(xiàn)即插即用的功能。
權(quán)利要求1.一種RS-485總線式測控系統(tǒng)中的即插即用測控模塊,其內(nèi)置單片機(jī)U1,由電容C1、C2、晶體振蕩器X1與單片機(jī)U1的內(nèi)部電路構(gòu)成振蕩電路,采用非易失性存儲器U3,異步通信串行接口,包括信號接收端RXD和信號發(fā)送端TXD,其特征是所述信號接收端RXD另有一路通過同相器U5與單片機(jī)U1的外部中斷INTO端相連接。
專利摘要RS—485總線式測控系統(tǒng)中的即插即用測控模塊,其內(nèi)置單片機(jī),由電容、晶體振蕩器與單片機(jī)的內(nèi)部電路構(gòu)成振蕩電路,采用非易失性存儲器,異步通信串行接口包括信號接收端和發(fā)送端,其特征是所述信號接收端另有一路通過同相器與單片機(jī)的外部中斷相接。即插即用功能使模塊的使用更為簡單、便利。
文檔編號G06F13/38GK2450713SQ0022174
公開日2001年9月26日 申請日期2000年9月11日 優(yōu)先權(quán)日2000年9月11日
發(fā)明者袁廷華 申請人:合肥創(chuàng)源智能網(wǎng)絡(luò)有限責(zé)任公司