楊韶斌 竇忠國
(肇慶市四會中等專業(yè)學(xué)校,廣東 肇慶 526200)
在工業(yè)控制中,需要經(jīng)常建立一個由上位機和下位機組成的系統(tǒng),并通過上位機實現(xiàn)對多個下位機的控制。由于上位機與下位機之間的距離較遠(yuǎn),因此需要進行上位機與下位機間的串行通信。上位機通常為PC 機,下位機通常為單片機,因此經(jīng)常會不可避免地出現(xiàn)PC 機與單片機之間的串行通信問題[1]。目前PC 機的研發(fā)與應(yīng)用已經(jīng)使其具備了極強的監(jiān)控和管理能力,而單片機在實際應(yīng)用中具備了快速和容易被控制等特點。因此在實際應(yīng)用中,通常都是通過PC 機串行接口與多個單片機相連接來實現(xiàn)對數(shù)據(jù)的傳輸[2-3]。基于該特點,為了實現(xiàn)PC 機與單片機間的串行通信控制,該文提出了一種全新的優(yōu)化控制方法。
為了實現(xiàn)PC 機與單片機之間的串行通信,采用RS-485 接口,該解耦器與TTL 電平相兼容,具有10Mbit/s 的數(shù)據(jù)傳輸速度,并具有較強的抗共模噪聲干擾能力,將其引入PC 機與單片機通信連接結(jié)構(gòu)上。PC 機與單片機通信連接結(jié)構(gòu)示意圖如圖1所示。
圖1 PC 機與單片機通信連接結(jié)構(gòu)示意圖
此外,RS-232 接口只能在總線上與一個收發(fā)機相連,也就是一個單站的功能。而RS-485 的接口最多可以連接128 臺收發(fā)信機,即具備多個基站的功能,使使用者能夠較容易地使用一個RS-485 接口來組建一個設(shè)備網(wǎng)絡(luò)[4]。因此,RS-485 接口是PC 和MCU 間串行通信的首選。根據(jù)上述論述,由于PC 機的串口選用了RS232 電平信號,因此在單片機與PC機之間需要加裝一個能夠?qū)崿F(xiàn)RS-232與RS-485 轉(zhuǎn)換的接口。根據(jù)上述內(nèi)容,完成對PC 機與單片機通信連接設(shè)計。
在下位機中,通過查找和中斷2 種方式實現(xiàn)數(shù)據(jù)的發(fā)送和接收。不管采用何種方法,它的串行數(shù)據(jù)的傳輸僅(利用MOVSBUF.A 指令)將數(shù)據(jù)從累加器轉(zhuǎn)移到串口緩沖區(qū)寄存器即可。其串行數(shù)據(jù)的接收僅需將數(shù)據(jù)從串口緩沖區(qū)寄存器傳輸?shù)嚼奂悠鳎ú捎肕OVA、SBUF 指令)[5]。在具體的使用過程中,通常使用中斷的方法來實現(xiàn)與上位機的通信。而上位機作為主控方,當(dāng)接收到上位機發(fā)送的地址信息后,將該信息傳輸給相應(yīng)的中斷服務(wù)子程序,然后與上位機進行通信。它接收一個中斷服務(wù)子例程的過程如下:第一步,關(guān)中斷,現(xiàn)場保護。第二步,接收來自PC機發(fā)送的地址。第三步,判斷該地址是否為本機地址,如果是則進行下一步操作;如果不是則直接進行現(xiàn)場恢復(fù)并開啟中斷。第四步,接收判斷為本機地址的數(shù)據(jù)。第五步,判斷數(shù)據(jù)是否接收完畢,如果接收完畢,則直接恢復(fù)現(xiàn)場,開啟中斷;如果未接收完畢,則需要返回第四步,直到完成對所有數(shù)據(jù)接收。最后恢復(fù)現(xiàn)場,開啟中斷,完成下位機接收中斷服務(wù)子程序流程。上述流程也適用于多個單片機的通信。
該文利用可視化語言編寫了PC 機的串口通信程序。Windows 的支持使串口裝置被包裝為MSComm 控件,非常便于VisualBasic 程序?qū)Υ诘目刂芠6]。利用MSComm控制器,可以較容易地完成微機與微機以及微機與其外圍設(shè)備之間的通信,具體操作步驟如下:選擇可以添加的MSComm 控件,啟動VisualBasic,并在彈出的Project 菜單中選擇對應(yīng)的Components 選項,選擇所需的控件。然后從工具欄中選擇電話機圖標(biāo),將其拖拽到窗體中,單擊鼠標(biāo)右鍵,在彈出的串口屬性對話框中完成對各項屬性的設(shè)置。MSComm 控制中最重要的通信事件就是OnComm,而串行通信的一切都可以由程序來處理。通過OnComm事件,也可以不使用程序?qū)崟r監(jiān)控輸入緩沖區(qū),只要有數(shù)據(jù)傳輸,就可以引發(fā)OnCom 事件,實現(xiàn)通信數(shù)據(jù)的自動處理[7]。
串行通信通常以比特為單位,逐位完成對數(shù)據(jù)的傳輸。假設(shè)并行通信傳送N位數(shù)據(jù)所需的時間是T,則串行通信所需時間如公式(1)所示。
式中:T'min為串行通信需要的最少時間。
串行通信由于每次只能傳送一比特,而且都是統(tǒng)一的電壓,因此很難出現(xiàn)數(shù)據(jù)丟失的情況。如果采取一定的保護措施,則串口通信的抗干擾性就會有較大增強。此外,其所需的傳輸線路較少,可以大幅減少經(jīng)濟費用,特別適用于長距離通信傳輸[8]。根據(jù)串行通信的特性,將串行通信分為串行異步通信與同步通信2 個部分。
在串行異步通信控制的過程中,進行數(shù)據(jù)傳送時采用了獨立的字節(jié)模式,每個字節(jié)前面有一個開始信號,字節(jié)后面有一個或多個結(jié)束信號[9]。為確保同步接收機的起止信號被利用,在有標(biāo)簽的地方,傳送線路是空閑的,每字節(jié)傳送一次,其前方的起始比特就會從一位元傳送到一位元傳送,這一傳送代表著一位元傳送的開始。發(fā)送結(jié)束時,發(fā)送線路通過一個或更多的終結(jié)位恢復(fù)到標(biāo)記狀態(tài)。此時傳送器即可以傳送下一個位字節(jié)。針對串行異步通信進行編碼,其起始位占用1 位,字符編碼占用7 位,第8 位為奇偶校驗位,如圖2所示。
圖2 串行異步通信控制字符格式
同時,在串行異步通信控制過程中,每次發(fā)送一個字符,都必須同步附加一個標(biāo)志信息在字符中。
針對串行同步通信的控制,把這些字符串串起來,組成一個完整的數(shù)據(jù)塊。進行串行同步通信時,還需要在數(shù)據(jù)塊前增加一個特殊的同步字符,并將組合后的字符作為串行同步頭通信起始信號。在一組數(shù)據(jù)后加上一個檢查符號,以檢查通信中是否有錯誤。在同步通信中,字符間不存在空格,因此可以達(dá)到數(shù)十至數(shù)百波特,但是需要一個時鐘來完成收發(fā)雙方的同步。串行同步通信控制字符格式如圖3所示。
圖3 串行同步通信控制字符格式
根據(jù)實際PC 機與單片機的串行通信需要,選擇異步通信或同步通信。進行通信前,先控制定時器、串行口進入初始化狀態(tài),然后將地址指針寄存器、程度計數(shù)器、校驗和寄存器等設(shè)置為初始值,判斷是否發(fā)送緩沖器為空。如果為空則返回,不為空則接收回答信號。再判定傳輸是否正確,如果不正確則返回,正確則結(jié)束單片機的傳輸。
為對該文上述控制方法應(yīng)用效果進行驗證,進行下述優(yōu)化前、后的對比試驗研究。在試驗前,準(zhǔn)備51 單片機(AT58C40)、數(shù)據(jù)存儲器(6264)和5×8的矩陣鍵盤。利用電平轉(zhuǎn)換芯片轉(zhuǎn)換為RS485 和TTL 接口能夠識別的電平,通過串口傳輸?shù)缴衔粰C上。利用VB/VC 編程在PC 機上顯示所有接收和發(fā)送的通信數(shù)據(jù)。通過上述操作,可以實現(xiàn)對試驗中產(chǎn)生的各項參數(shù),例如通信發(fā)送與接收時間等數(shù)據(jù)的統(tǒng)計,為對比后續(xù)試驗結(jié)果提供依據(jù)。在該基礎(chǔ)上,還需設(shè)定串口主控件MSCOMM 的參數(shù)。將一個通信對象MSCOMM 用于串行通信,設(shè)定通信端口編號為1,設(shè)定通信協(xié)定handshaking=0。將發(fā)送速率及其他參數(shù)設(shè)定為SETTINGS=4800、n、8、1。開啟通信端口,設(shè) PORTOPEN 為ture。完成上述設(shè)置后,進行PC 機與單片機之間的串行通信,并分別從優(yōu)化前、后串行通信傳輸速度方面和優(yōu)化前、后串行通信質(zhì)量方面,驗證優(yōu)化控制方法的應(yīng)用可行性。
完成上述試驗準(zhǔn)備后,對比控制方法優(yōu)化前、后在應(yīng)用中PC 機與單片機間串行通信數(shù)據(jù)量。分別設(shè)置5 組條件,5組不同通信條件的基本信息見表1。
表1 5 組串行通信條件設(shè)置
在上述5 組串行通信傳輸過程中,分別利用優(yōu)化前的控制方法和優(yōu)化后的控制方法對其進行串行通信控制,通信數(shù)據(jù)量記錄見表2。
表2 5 組串行通信應(yīng)用優(yōu)化前、后控制方法的通信數(shù)據(jù)量
從表2 中的2 組串行通信數(shù)據(jù)量對比可以看出,在優(yōu)化前控制方法應(yīng)用下,其串行通信數(shù)據(jù)量最高為598.25YB,優(yōu)化后最高為865.32YB,最低也達(dá)到了826.26YB。在相同的傳輸時間條件下,優(yōu)化后控制方法應(yīng)用下的串行通信數(shù)據(jù)量明顯更大。因此,通過上述試驗結(jié)果可以證明,優(yōu)化后的控制方法在實際應(yīng)用中可以有效提高PC 機與單片機之間串行通信的傳輸速度。
上述從串行通信傳輸?shù)乃俣确矫鎸Ρ攘藘?yōu)化前、后控制方法的應(yīng)用性能。在該基礎(chǔ)上,針對優(yōu)化前、后控制方法應(yīng)用下PC 機與單片機之間串行通信質(zhì)量進行對比。選擇將串行通信過程中產(chǎn)生的信干噪比為評價指標(biāo),信干噪比是指串行通信過程中正常通信信號與干擾、噪聲等信號之和之間的比值,如公式(2)所示。
式中:S為信干噪比;W1為正常通信信號有效傳輸功率;W2為干擾信號有效傳輸功率;W3為噪聲信號有效傳輸功率。
通過計算得出的信干噪比S,取值越大,說明串行通信中的正常信號占比越大,通信質(zhì)量越優(yōu);取值越小,說明串行通信中干擾信號和噪聲信號占比越大,通信質(zhì)量越差。以表1 中編號為TX-#01 的通信組合為例,由PC 機A 發(fā)送通信信號,由單片機A 接收通信信號,將其通信時間控制為50s,記錄50s 內(nèi)優(yōu)化前、后控制方法應(yīng)用下的2 組信干噪比,結(jié)果如圖4所示。
圖4 優(yōu)化前、后串行通信質(zhì)量對比圖
從圖4 中得到的結(jié)果可以看出,在優(yōu)化前、后控制方法應(yīng)用下,信干噪比均呈現(xiàn)出先增加、后降低的變化趨勢,但優(yōu)化后控制方法應(yīng)用下的信干噪比始終高于另一組。因此,上述試驗結(jié)果可以證明,應(yīng)用優(yōu)化后的控制方法,串行通信質(zhì)量得到了顯著提升。
該文針對PC 機與單片機之間的串行通信需要提出了一種全新的優(yōu)化控制方法,并對比優(yōu)化前、后的應(yīng)用效果證明了優(yōu)化后控制方法的應(yīng)用可行性。在實際應(yīng)用中,如果存在多個控制對象,則可以在該文優(yōu)化控制方法應(yīng)用的基礎(chǔ)上構(gòu)成集散結(jié)構(gòu),實現(xiàn)一臺PC 機和多個單片機的同步控制,為單片機應(yīng)用適應(yīng)性提升提供更有利的條件。