武曉雪
摘 要:在現(xiàn)在的機電自動化產(chǎn)品中,控制系統(tǒng)大多是單片機。對于一些簡單的機電傳動系統(tǒng)或是機電一體化設(shè)備,往往采用的是一個單片機作為主控板,配合動力元件,如:舵機、直流電機、步進電機、伺服電機等。帶動機械元件,如:連桿,絲杠,光軸、齒輪、凸輪等運動,通過這些機械元件運動的相互配合完成所期望的運動。而對于一些復(fù)雜的機電傳動系統(tǒng)或是機電一體化設(shè)備,單一的單片機已經(jīng)不能滿足我們的需求,因為一個單片機上的資源,如I\O口,定時器,中斷源的數(shù)目有限。那么就要采用兩個或是多個單片機組成控制系統(tǒng)進行控制機械進行運動。采用兩個以上的單片機不等不考慮的問題就是單片機之間的通信。在常規(guī)的方法中往往采用的是雙機通信協(xié)議或是多機通訊協(xié)議。但是這些協(xié)議有些復(fù)雜,通過我們組的學(xué)習(xí)與實踐種提出了一中簡易雙機通訊的思想,并且在試驗和實踐中得到了驗證。
關(guān)鍵詞:簡易的,雙機通訊
在單片機之間的通訊方式中的雙機通訊,他門要遵循一些固定的思維方式。而我門組對于雙機通訊方式都提出了一種簡單的算法思想。
對于單片機雙機通訊,它實際上是串口通訊,但是其中的關(guān)鍵就是單片機之間要共地。因為在單片機之間在傳遞復(fù)雜信息時,實際上是機器碼之間的傳遞,而機器碼值有0和1。0和1在單片機之間進行通訊時,實際上是通過電壓等電信號的高低電平來表示,共地實質(zhì)是讓兩個單片機之間共低電平。這樣穿點的高低電平也就是機器碼中的0和1才會相互識別否則就會出現(xiàn)以通信失敗或是其他的一些問題。這在工程或是項目中是不允許的。對于串口通訊實際上用的是串口中斷,通常的做法是通過標志位來引發(fā)串口中斷。在中斷中進行通訊,也就是單片機之間的交互信息。而單片機的串口通訊還要保證兩個單片機的波特率保持一致。這樣做的目的是為了保證單片機接收的數(shù)據(jù)和另一個單片機發(fā)送的數(shù)據(jù)一致。否則就會出現(xiàn)現(xiàn)接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù)不一致,從而導(dǎo)致通信失敗。對于波特率又要牽涉到定時器中斷。所以單片機之間的雙機通訊牽涉到的內(nèi)容還是很多的。使用時需要設(shè)置很多的寄存器和特殊功能位的值。
對于單片機雙機通訊我們組提出了一個簡易的思想,不用設(shè)置那么多的寄存器和特殊功能位就可以進行單片機之間的雙機通訊。當(dāng)然我們的這個算法思想也是針對一些簡單的工程或是項目。我們的想法是再進行單片機雙機通訊時,多半是主機發(fā)送命令,從機接收命令去執(zhí)行,在執(zhí)行完畢時向主機傳遞相關(guān)信息表示該命令已經(jīng)執(zhí)行完畢。(這是簡單工程常用的)。那么只要讓主機給從機一個信號,讓從機檢測到,并且知道要去執(zhí)行怎洋的動作,當(dāng)從機執(zhí)行完相關(guān)動作,向主機發(fā)送一個信號,告訴主機命令已經(jīng)執(zhí)行完畢就可以了。這個信號在電控當(dāng)中一般想到的是電信號。我們組選用的是電壓信號。通過實驗得知,當(dāng)給單片機I/O口接高電平(5V,且電源與單片機共地)時,單片機可以檢測到該值,并且這個值是1;當(dāng)給單片機I/O口低電平是(0V,電源與單片機共地)時,單片機可以檢測到該值,并檢測到的結(jié)果是0。有了以上的基礎(chǔ),我們的算法思想就誕生了。
我們的簡易雙機通訊思想是:讓兩個單片機共地,兩個單片機得所有普通的I/O口初始化的值全部為1,及為高電平。對于命令少或是要求的功能少的項目,我們可通過I/O口的高電平來進行信傳遞,主從機的單個I/O引腳之間用杜邦線連接。一個I/O引腳用來傳遞一種命令,一個I/O引腳用來表示從機的動作已經(jīng)執(zhí)行完畢。具體的執(zhí)行方式是主機將其一個I/O的一位置低電平,與該I/O連接的從機I/O的相應(yīng)位檢測到低電平,說明從機已經(jīng)檢測到主機已經(jīng)向我傳遞了一個命令,至于這是一個什么樣的命令可以根據(jù)從機該位的名稱來識別或是認知,并去執(zhí)行相應(yīng)的命令,在動作執(zhí)行完畢的時候,從機將其一個I/O的一位置低電平,與之先連接的主機的I/O的相應(yīng)位檢測到,表示從機已經(jīng)執(zhí)行完一個命令,之后主機可以通過相同的方式向從機繼續(xù)發(fā)送命令。當(dāng)需要執(zhí)行的命令很多的時候,由于單片機的位的數(shù)目是有限的,有可能不滿足我們的需求,我們可以通過使用一個完整的I/O來進行單片機之間的信息交互。一個完整的I/O一共有八位,其值可以從00000000到11111111之間進行變化,共有256種可能,及可以傳遞256中信息。如果這個I/O是用來發(fā)送指令的,那么理論上可以傳遞256種命令。若是該I/O是用來向主機傳遞信息時,理論上可以向主機主機傳遞256種信息。對于一般的工程已經(jīng)足夠使用。倘若還是不能滿足我們的需求,那么我們可以采用多個I/O來進行信息交流。例如采用兩個I/O來傳遞信息時,理論上可以傳遞256*256種信息,及65536種信息。
當(dāng)然我們這種簡易的雙機通訊只是適用于一些簡單的要求,對于要求非常嚴謹?shù)耐ㄐ?,簡易適用常規(guī)的方法。
參考文獻:
[1].曾增烽, 劉浩, 李雪. 基于51單片機的串行通信協(xié)議的實現(xiàn)[J]. 硅谷, 2009(13):26.
[2].梅小華. 提高51單片機TCP通信效率的軟件方法[J]. 華僑大學(xué)學(xué)報(自然版), 2011, 32(2):235-237.
[3].楊永, 杜文龍. 51單片機接收GPS數(shù)據(jù)的算法與實現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2008, 31(22):50-52.