引言 由于指令的速度不斷加快,單片機在各個方面的性能大為提高,比如多個單片機之間的時鐘同步。Silicon Labs公司的C8051F系列單片機的執行速度最高可以達到100MIPS,這使得更高精度的時鐘同步成為可能。時鐘同步是一個在多單片機相互配合時經常遇到的問題,主要有兩種同步方式——絕對同步和相對同步。絕對同步是指各個控制器和一個標準的時間進行同步,比如北京時間、華盛頓時間等等;而相對時鐘同步是指各個單片機和一個相對穩定的時鐘進行同步,與外界的時間沒有聯系。本文主要針對RS422總線組成的網絡的高精度時鐘同步問題,提出了一種相對時鐘同步解決方案。 1 整體框架結構 RS422網絡中,多個單片機的連接如圖1所示。這是一個典型的“一主多從”式結構:主單片機通過向從單片機發送命令,實現管理功能;從單片機主要執行具體的功能,比如數據采集、D/A轉換輸出等。為了使多個單片機能夠同步工作,需要一種同步方式,所以從單片機不但要實現各自的具體功能,而且還要能夠進行多個單片機的時鐘同步。本方案設計了從單片機的幾種工作狀態。R和T分別表示R+、R-和T+、T-。 2 從單片機的狀態機 本文重點介紹系統時鐘同步功能的實現,但是在實際應用過程中,該系統必定要實現其他的功能,比如數據采集、模擬量輸出等。主單片機的作用是控制從單片機工作,所以要使從單片機具有不同的工作狀態。本文設計了3種工作狀態:準備態、時鐘同步態、工作態。3種工作狀態之間的相互轉換過程如圖2所示。圖中,①代表主單片機向從單片機發送“工作”命令;②代表主單片機向從單片機發送“時鐘同步”命令;③代表主單片機向從單片機發送“工作態向時鐘同步態轉換”命令;④代表主單片機向從單片機發送“時鐘同步態向工作態轉換”命令。 準備態是從單片機上電后的工作狀態,當主單片機向某一從單片機發送“是否準備好”命令后,若從單片機回復“準備好”,則說明從設備已經處于準備好的狀態,可以向時鐘同步態和工作態進行轉換。如果從單片機處于工作態,主單片機發送“工作態向時鐘同步態轉換”命令,則從時鐘進入時鐘同步態;如果從單片機處于時鐘同步態,主單片機發送“時鐘同步態向工作態轉換”命令,則從單片機由時鐘同步態轉換到工作態。 3 時鐘同步設計的基本原理 本方案采用多個C8051F120單片機組成RS422網絡。C8051F120單片機具有高達100MIPS的執行速度,也就是1μs可以執行100條單周期指令,所以定時器定時1μs可以達到1%的精度。而RS4.22總線組成的網絡是“一主多從”式結構,網絡中每個設備都有自己的時鐘,時鐘采用定時器實現,1μs觸發一次。主設備和從設備的時鐘偏差產生有兩個原因;一是某些隨機因素產生的誤差;二是由于晶振的運行速度不同引起的誤差,此誤差的產生主要受溫度的影響,而溫度又是由工作環境來決定的。本文采用相對時鐘同步的方法來減小這種誤差的影響。 該方法分為2步: ①主設備每2 s進行一次時鐘同步。主設備首先發送報文master_a(該報文本身不含發送時間),之后再發送一幀帶有該報文發送時間信息的報文master_b。這樣,從設備可以分析出主設備的同步報文的發送時間T1和接收時間T2(如無特殊標注,文中所涉及的時間變量都是以μs為單位的)。從設備再發送一個報文 slave_c,并記下這個報文的發送時間T3,主設備接到該報文后記下接收時間T4,并把T4發給從設備,從設備就有了T1、T2、T3、T4的值。由于主設備和從設備都采用同一波特率進行串行通信,所以只要保證主設備的報文和從設備的報文發送的字節數相同,就可以看成主設備和從設備的發送時間和接收時間是相同的,即圖3中的T1、T2、T3、T4四點構成的是等腰梯形。所以主設備和從設備之間的時間偏差: 從設備的時間T_Slave減去從設備和主設備之間的偏差△,即校正后的時間。但此時校正后的結果只是改變從設備的時鐘誤差,并沒有改變從時鐘的時鐘頻率。隨著時間的增長,這個誤差就又會出現,因此想要減小這個誤差必須采用進一步的方法。 ②進行時鐘頻率的校正。C8051F120單片機的指令速度很快(可達100MIPS),這就為單片機應用內部定時器實現頻率可調時鐘創造了有利條件。本文多次測量從設備和主設備之間的時間誤差來求取平均值,作為主從時鐘在規定時間內的從設備和主設備之間的誤差,通過這個誤差來修正從設備的時鐘頻率。具體做法為:測量5次從設備和主設備之間的偏差△1~△5,采用平均值濾波法得到的結果△z作為2 s的時間偏差。 其中,t代表1μs內時鐘的偏差量,單位是0.01 μs。只須修改定時器的相應寄存器,就可以達到調整時鐘頻率的目的。 4 系統的硬件連接 各個單片機采用RS422總線進行互聯,形成一個“一主多從”的結構。RS422接口電路如圖4所示。接口芯片采用Maxim公司的MAX489,其中 DI、RO連接在C8051F120單片機的串口上,用端子J將各個RS422的各路信號引出。 5 時鐘同步軟件設計 時鐘同步部分的軟件設計包括主、從單片機的工作過程,以及頻率可調時鐘部分和時鐘校準部分的實現,但不包括狀態轉換功能的實現。 編者注:主從機程序略。 結語 時鐘同步問題是多單片機同步工作面臨的一個重要問題。本文針對RS422網絡的時鐘同步工作問題,提出了一種相對時鐘同步解決方案;并應用單片機片內定時器設計了一個頻率可調時鐘,在沒有增加硬件成本的前提下,明顯地減小了不同單片機之間的時鐘偏差。 參考文獻 1. 張培仁,孫力.基于C語言C8051系列微控制器原理與應用[M].北京:清華大學出版社,2004. 2. 桂本烜,劉錦華.IEEE1588高精度同步算法的研究與實現[J].電光與控制,2006,13(5):91-94. 3. 阮於東.IEEE1588和高精度時間同步的方法[J].國內外機電一體化技術,2006(6):25-28. 4. 桂本烜,等.IEEE 1588的高精度時間同步算法的分析與實現[J].工業儀表與自動化裝置,2006(4):20-23. 5. Mohl D S.IEEE 1588?Precise Time Synchronization as the Basis for Real Time Applications in Automation[R].Industrial Networking Solotions,2003. 作者:西安工業大學 由四海 王大明 劉繼勇 李寒 來源:《單片機與嵌入式系統應用》 2009(11) |