李 松,唐小琦,宋 寶
(華中科技大學(xué) 機(jī)械科學(xué)與工程學(xué)院,武漢 430074)
?
實(shí)時(shí)數(shù)據(jù)串行通信協(xié)議設(shè)計(jì)*
李 松,唐小琦,宋 寶
(華中科技大學(xué) 機(jī)械科學(xué)與工程學(xué)院,武漢 430074)
文章結(jié)合嵌入式數(shù)控系統(tǒng)的需求,設(shè)計(jì)一種兼容實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)傳輸?shù)母咚?、高可靠性串行通信協(xié)議——SCP-Bus,在基于FPGA和高速RS485接口芯片的硬件平臺(tái)上,解決了嵌入式數(shù)控系統(tǒng)數(shù)據(jù)的實(shí)時(shí)性問題、異步通信中接收方與發(fā)送方波特率時(shí)鐘相位對(duì)準(zhǔn)問題、工業(yè)現(xiàn)場(chǎng)應(yīng)用的干擾問題等。試驗(yàn)和現(xiàn)場(chǎng)使用結(jié)果表明,SCP-Bus串行通信協(xié)議能夠滿足嵌入式數(shù)控系統(tǒng)與外部設(shè)備之間通信的要求。
實(shí)時(shí);FPGA;串行通信
在數(shù)控系統(tǒng)中,從結(jié)構(gòu)上來(lái)講,分為非總線式和總線式,非總線式是將軸數(shù)據(jù),I/O數(shù)據(jù),DA/AD數(shù)據(jù),編碼器反饋數(shù)據(jù)等直接通過直連的方式接入數(shù)控核心板,這樣會(huì)導(dǎo)致接線復(fù)雜而且凌亂,往往數(shù)控系統(tǒng)對(duì)線纜要求較高,需要加入屏蔽層和磁環(huán)等防干擾措施,這些線纜價(jià)格昂貴,做線工作量大,接線工作量也大。如果采用總線式結(jié)構(gòu),將所有數(shù)據(jù)都通過總線進(jìn)行交互,就能避免傳統(tǒng)非總線結(jié)構(gòu)帶來(lái)的不便。針對(duì)總線式數(shù)控系統(tǒng),現(xiàn)有的總線協(xié)議主要有:華中數(shù)控開發(fā)的NCUC-BUS,CAN,工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT,Modicon開發(fā)的Modbus[1]等。這些總線協(xié)議雖然功能齊全而且強(qiáng)大,實(shí)時(shí)性很高,誤碼率很低,但是都較為復(fù)雜,資源消耗量大,在linux下的驅(qū)動(dòng)復(fù)雜,如果應(yīng)用在嵌入式數(shù)控系統(tǒng)中不經(jīng)濟(jì)。
針對(duì)嵌入式數(shù)控系統(tǒng),本文設(shè)計(jì)了一套簡(jiǎn)單的,滿足實(shí)時(shí)數(shù)據(jù)與非實(shí)時(shí)數(shù)據(jù)的傳輸要求,兼容一般MCU的UART或者USART的串行通信協(xié)議——SCP-Bus(Serial Communication Protocol bus)。在基于現(xiàn)場(chǎng)可編程邏輯陣列(FPGA)[2]和RS485接口芯片硬件平臺(tái)上,實(shí)現(xiàn)了數(shù)控系統(tǒng)到伺服驅(qū)動(dòng)器、遠(yuǎn)程I/O模塊、MCP鍵盤之間的數(shù)據(jù)通信,解決了資源消耗大,驅(qū)動(dòng)復(fù)雜的問題,同時(shí)軸數(shù)據(jù)的實(shí)時(shí)性與誤碼率也能滿足嵌入式數(shù)控系統(tǒng)的要求。
在嵌入式數(shù)控系統(tǒng)中,因?yàn)楦鱾€(gè)設(shè)備與主站之間的數(shù)據(jù)傳輸是一點(diǎn)對(duì)多點(diǎn)的形式,因此SCP-Bus協(xié)議采用多從站串行通信的結(jié)構(gòu)。SCP-Bus協(xié)議采用星形連接[3],因?yàn)榭紤]到數(shù)控系統(tǒng)的需求,設(shè)計(jì)從站負(fù)載量為15個(gè)。如圖1所示,主站和每個(gè)從站都包含有一個(gè)Altera公司的FPGA和高速485芯片,FPGA用于SCP-Bus協(xié)議的實(shí)現(xiàn)和與linux驅(qū)動(dòng)層交互,高速485芯片用于接收和發(fā)送差分信號(hào)。
圖1 SCP-Bus協(xié)議物理結(jié)構(gòu)
為了增強(qiáng)對(duì)外界干擾的抗干擾能力,減少總線誤碼率,SCP-Bus以差分信號(hào)為載體進(jìn)行數(shù)據(jù)傳輸,在主從站的兩端,加入終端匹配電阻,在高波特率或者是長(zhǎng)距離傳輸?shù)那闆r下,減少對(duì)信號(hào)的反射干擾[4]。除此以外,為了使總線在空閑時(shí)期和主從站斷開時(shí)期有一個(gè)確定的電平,在兩端加入了偏置電阻。
考慮到數(shù)控系統(tǒng)軸數(shù)據(jù)的通信周期一般為8ms、4ms、1ms,也就是說(shuō)軸數(shù)據(jù)需要很高的通行速度,需要在一個(gè)插補(bǔ)周期內(nèi)完成一次軸數(shù)據(jù)刷新,所以對(duì)485芯片通信速度要求較高。另一方面,因?yàn)橐獙?shí)現(xiàn)多從站通信,所以從站的485芯片的發(fā)送端需要有與總線斷開的功能[5],也就是說(shuō)在同一時(shí)間,只能有一個(gè)從站掛在總線上,并與主站通信。綜上,在選擇485接口芯片時(shí),主要需要考慮這兩個(gè)要求,故選擇了TI公司SN65HVD36高速485芯片。該芯片最高速度20Mbps,完全滿足嵌入式數(shù)控系統(tǒng)的速度要求,而且該芯片有發(fā)送和接收使能端,滿足多從站星形連接要求。
在嵌入式數(shù)控系統(tǒng)中,有許多設(shè)備,諸如I/O,AD/DA設(shè)備是使用MCU作為控制器的,為了兼容此類設(shè)備,SCP-Bus采用異步串行全雙工通信模式,在設(shè)計(jì)SCP-Bus協(xié)議時(shí),數(shù)據(jù)傳輸?shù)淖钚卧且粋€(gè)字節(jié),每個(gè)字節(jié)設(shè)置一個(gè)起始位(圖2中的第1位),8個(gè)有效數(shù)據(jù)位(圖2中的第2~9位),一個(gè)奇偶校驗(yàn)位(圖2中的第10位),一個(gè)停止位(圖2中的第11位)。這樣設(shè)計(jì)就能保證普通MCU能夠作為SCP-Bus協(xié)議的從站,通過MCU的串口掛到總線上。
圖2 SCP-Bus協(xié)議最小通信單元
3.1 SCP-Bus通信協(xié)議框架設(shè)計(jì)
SCP-Bus協(xié)議是基于FPGA實(shí)現(xiàn)的,主要工作是設(shè)計(jì)SCP-Bus協(xié)議IP核,在設(shè)計(jì)協(xié)議IP核時(shí),采用主從分開,自上而下的層次化設(shè)計(jì)方案。SCP-Bus協(xié)議的通信模式是:所有通信都是由主站發(fā)起,從站被動(dòng)響應(yīng)。所以主站與從站的協(xié)議IP核是不相同的。把主從分開來(lái)設(shè)計(jì),設(shè)計(jì)思路更加清晰。而在分別設(shè)計(jì)主從站協(xié)議時(shí),運(yùn)用自上而下分層設(shè)計(jì)的方案,每個(gè)層次完成獨(dú)立的工作,各層之間的交互都是通過訪問寄存器的方式進(jìn)行,這樣就劃清了層次之間的界限。這對(duì)協(xié)議的后期維護(hù)和修改是有重要意義的。
SCP-Bus協(xié)議主站協(xié)議在層次結(jié)構(gòu)上分為1:與linux操作系統(tǒng)的交互層;2:SCP-Bus協(xié)議實(shí)現(xiàn)層;3:數(shù)據(jù)發(fā)送與接收層。這三層的關(guān)系如圖3所示。
圖3 SCP-Bus協(xié)議主站層次結(jié)構(gòu)
在與linux操作系統(tǒng)的交互層中,linux操作系統(tǒng)讀取主站采集上來(lái)的從站信息(從站的屬性,比如是實(shí)時(shí)數(shù)據(jù)站還是非實(shí)時(shí)數(shù)據(jù)站等),讀取從站上傳上來(lái)的數(shù)據(jù),寫入需要發(fā)送到從站的數(shù)據(jù)。
主站SCP-Bus協(xié)議實(shí)現(xiàn)層中,主要完成以下任務(wù):①?gòu)恼驹O(shè)備的設(shè)備屬性的掃描;②實(shí)時(shí)數(shù)據(jù)通信與非實(shí)時(shí)數(shù)據(jù)通信的調(diào)度;③實(shí)時(shí)數(shù)據(jù)通信強(qiáng)制定時(shí)通信;④非實(shí)時(shí)數(shù)據(jù)通信輪詢通信;⑤總線出錯(cuò)處理機(jī)制的實(shí)現(xiàn);⑥與數(shù)據(jù)發(fā)送與接收層交互;⑦將數(shù)據(jù)寫入linux操作系統(tǒng)交互層;⑧從linux操作系統(tǒng)交互層讀取數(shù)據(jù)。
數(shù)據(jù)發(fā)送與接收層中,主要完成從SCP-Bus協(xié)議實(shí)現(xiàn)層中接受命令和數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行組幀,加入CRC16校驗(yàn)值,對(duì)每一個(gè)字節(jié)加入起始位,奇偶校驗(yàn)位,停止位后,發(fā)送到總線上。
加強(qiáng)肛門括約肌反饋訓(xùn)練可有效提高腹腔鏡下大腸癌根治術(shù)后病人肛門括約肌力量,減少術(shù)后排便困難發(fā)生率,避免病人因疾病并發(fā)癥產(chǎn)生焦慮、抑郁等負(fù)面情緒,提高病人生活質(zhì)量[29]。肛門括約肌反饋訓(xùn)練過程中,護(hù)理人員應(yīng)將攜帶氣囊的測(cè)壓導(dǎo)管直接插入大腸相應(yīng)區(qū)域,根據(jù)顯示器反饋的壓力情況調(diào)整閾值,增強(qiáng)病人肛門括約肌力量[30]。Arafa等[31-32]通過對(duì)病人實(shí)施電刺激生物反饋實(shí)驗(yàn)發(fā)現(xiàn):將誘發(fā)電位檢測(cè)儀應(yīng)用到肛門括約肌收縮刺激中,對(duì)腹腔鏡下大腸癌根治術(shù)病人術(shù)后康復(fù)具有重要意義。
SCP-Bus協(xié)議從站協(xié)議在層次結(jié)構(gòu)上分為①交互層;②命令響應(yīng)層;③數(shù)據(jù)發(fā)送與接收層。交互層主要任務(wù)是將收到的數(shù)據(jù)存入雙口Ram,并且在從站數(shù)據(jù)得到更新后,給出一個(gè)脈沖信號(hào),表示數(shù)據(jù)更新一次。命令響應(yīng)層根據(jù)主站下發(fā)的命令,做出相應(yīng)響應(yīng)。從站數(shù)據(jù)發(fā)送與接收層跟主站的數(shù)據(jù)發(fā)送與接收層行使一樣功能,而且代碼也是一致的。
3.2 SCP-Bus實(shí)時(shí)通信機(jī)制
為了保證實(shí)時(shí)數(shù)據(jù)(數(shù)控系統(tǒng)中的軸數(shù)據(jù))能夠在期望的時(shí)間內(nèi)得到更新,非實(shí)時(shí)數(shù)據(jù)也能在相對(duì)寬松的時(shí)間內(nèi)也得到更新,需要一個(gè)強(qiáng)有力的調(diào)度機(jī)制來(lái)保證,另外還需要添加一個(gè)必要的限制——實(shí)時(shí)性從站的數(shù)目的限制。實(shí)時(shí)性從站的個(gè)數(shù)限制可以通過下列公式進(jìn)行計(jì)算:
(1)
(2)
(3)
(4)
式(1)中,TInterpolation為數(shù)控系統(tǒng)插補(bǔ)周期,TRead(baud),TWrite(baud),TReadWrite(baud)分別為讀周期,寫周期,讀寫周期,單位為ms。LRead,LReplyRead,LWrite,LReplyWrite,LReadWrite,LReplyReadWrite分別為讀命令幀幀長(zhǎng)度,回復(fù)讀命令幀幀長(zhǎng)度,寫命令幀幀長(zhǎng)度,回復(fù)寫命令幀幀長(zhǎng)度,讀寫命令幀幀長(zhǎng)度,回復(fù)讀寫命令幀幀長(zhǎng)度,單位為bit。經(jīng)過上述公式計(jì)算,在插補(bǔ)周期為8ms,波特率為3571428bit/s情況下,實(shí)時(shí)性從站數(shù)目最多為32個(gè),在插補(bǔ)周期為4ms,波特率為3571428bit/s的情況下,實(shí)時(shí)性從站數(shù)目最多為16個(gè),在插補(bǔ)周期為1ms,波特率為3571428bit/s的情況下,實(shí)時(shí)性從站數(shù)目最多為4個(gè)。
在保證實(shí)時(shí)性從站在限制數(shù)目?jī)?nèi)的前提下,實(shí)時(shí)與非實(shí)時(shí)通信進(jìn)程調(diào)度就能有效保證實(shí)時(shí)數(shù)據(jù)在期望的時(shí)間內(nèi)得到更新。而這個(gè)調(diào)度機(jī)制是基于時(shí)間片分配的一個(gè)調(diào)度算法。其具體調(diào)度機(jī)制如圖4所示。
圖4 實(shí)時(shí)與非實(shí)時(shí)通信調(diào)度機(jī)制
當(dāng)Slave Scan完成后,立刻觸發(fā)正常通信,進(jìn)入正常通行階段后首先調(diào)度實(shí)時(shí)性從站進(jìn)入通信,進(jìn)入實(shí)時(shí)性從站的通信后,首先會(huì)重置TInterpolation和Tserve看門狗時(shí)鐘。所有實(shí)時(shí)性從站依次完成一次通信后,調(diào)度進(jìn)入非實(shí)時(shí)性從站的通信,在非實(shí)時(shí)從站的通信中,每次調(diào)度新的非實(shí)時(shí)從站進(jìn)入通信之前,檢測(cè)Tserve和TInterpolation時(shí)鐘計(jì)時(shí)到否,如果Tserve時(shí)鐘到,調(diào)度進(jìn)入Tservetimeup狀態(tài),在這種狀態(tài)下,總線空閑,等待TInterpolation到來(lái)。如果TInterpolation時(shí)鐘到,重置兩個(gè)看門狗時(shí)鐘,調(diào)度實(shí)時(shí)性從站進(jìn)入通信狀態(tài)。
為了便于理解,描述幾種極端行為,如果在slavescan后得到的從站中,沒有實(shí)時(shí)性從站,這時(shí)總線就會(huì)在非實(shí)時(shí)從站中不停循環(huán)通信,比如非實(shí)時(shí)從站有1、7、9、16號(hào)從站,那么總線就會(huì)輪轉(zhuǎn)地分配時(shí)間片給1、7、9、16。
如果在slavescan后得到的從站中,實(shí)時(shí)性從站的數(shù)目過多,超過了總線的額定負(fù)荷Nmax,這時(shí)總線在完成實(shí)時(shí)性從站的通信后,一旦調(diào)度到非實(shí)時(shí)從站通信狀態(tài)就發(fā)現(xiàn)TInterpolation計(jì)時(shí)到,立刻又調(diào)度回實(shí)時(shí)性從站通信。非實(shí)時(shí)從站分配不到通信的時(shí)間片,實(shí)時(shí)性從站的實(shí)時(shí)通信也無(wú)法得到保證。這就是為什么需要計(jì)算實(shí)時(shí)性從站個(gè)數(shù)的最大值Nmax。
在嵌入式數(shù)控系統(tǒng)中,軸設(shè)備從站是比較特殊的實(shí)時(shí)性從站,如果操作系統(tǒng)層未向主站交互層寫入數(shù)據(jù)(表示這個(gè)插補(bǔ)周期插補(bǔ)值為0),那么主站在實(shí)時(shí)通信進(jìn)程中,需要自動(dòng)將軸數(shù)據(jù)自動(dòng)填充為0,否則軸設(shè)備從站會(huì)誤動(dòng)作。為了實(shí)現(xiàn)這個(gè)特殊要求,在主站交互層中監(jiān)控了linux操作系統(tǒng)往交互層中的寫動(dòng)作,如果檢測(cè)到了linux操作系統(tǒng)往軸數(shù)據(jù)區(qū)寫入了數(shù)據(jù),對(duì)應(yīng)數(shù)據(jù)區(qū)狀態(tài)設(shè)置為Full,當(dāng)SCP-Bus協(xié)議實(shí)現(xiàn)層從軸數(shù)據(jù)區(qū)取走數(shù)據(jù)后,對(duì)應(yīng)數(shù)據(jù)區(qū)狀態(tài)設(shè)置為Empty。每次SCP-Bus協(xié)議實(shí)現(xiàn)層在取軸數(shù)據(jù)時(shí),首先詢問軸數(shù)據(jù)狀態(tài),如果是Full,按照原樣發(fā)走數(shù)據(jù);如果是Empty,自動(dòng)填充0后再發(fā)走數(shù)據(jù)。同樣地,linux操作系統(tǒng)層在往軸數(shù)據(jù)區(qū)寫入數(shù)據(jù)時(shí),需要詢問軸數(shù)據(jù)狀態(tài),如果是Full,表明上次寫入的軸數(shù)據(jù)還未發(fā)走,需要等待它被發(fā)走后,狀態(tài)為Empty時(shí)才能寫入。
3.3 接收波特率相位自適應(yīng)
由于SCP-Bus采用異步串行通信方式,所以發(fā)送方波特率時(shí)鐘、接收方波特率時(shí)鐘是在發(fā)送方和接收方內(nèi)部自行產(chǎn)生的,如果發(fā)送方波特率時(shí)鐘和接收方波特率時(shí)鐘相位沒對(duì)準(zhǔn),會(huì)增大通信的誤碼率[6]。在SCP-Bus中,所有發(fā)送方波特率時(shí)鐘都自由產(chǎn)生,對(duì)相位不作要求,而要求接收方波特率時(shí)鐘作自適應(yīng)調(diào)整[7]。自適應(yīng)的方法是:對(duì)接收方來(lái)說(shuō),在接收數(shù)據(jù)線空閑時(shí),接收方不產(chǎn)生波特率時(shí)鐘。只要接收方在接收數(shù)據(jù)線上采集到一個(gè)下降沿,接收方認(rèn)為總線上來(lái)數(shù)據(jù)了,才開始產(chǎn)生波特率。這樣接收與發(fā)送的波特率會(huì)自動(dòng)對(duì)準(zhǔn)。對(duì)準(zhǔn)效果如圖5所示。
圖5 接收方波特率相位自適應(yīng)
圖中可以看出,接收方波特率時(shí)鐘與發(fā)送方波特率時(shí)鐘的相位差只有1個(gè)系統(tǒng)時(shí)鐘(20ns),滿足對(duì)準(zhǔn)要求。
本文設(shè)計(jì)的SCP-Bus測(cè)試平臺(tái)由DNC-11嵌入式數(shù)控系統(tǒng),2個(gè)HIO-1000遠(yuǎn)程單元,MCP遠(yuǎn)程控制臺(tái)組成,主站為DNC-11,下轄3個(gè)從站,其中2個(gè)實(shí)時(shí)性從站,1個(gè)非實(shí)時(shí)性從站。本文從實(shí)時(shí)性與實(shí)時(shí)性從站個(gè)數(shù)的關(guān)系、誤碼率與通信波特率的關(guān)系來(lái)評(píng)價(jià)SCP-Bus總線的性能。試驗(yàn)方法如下:①對(duì)實(shí)時(shí)性測(cè)試:主站數(shù)控系統(tǒng)通過基于xenomai的實(shí)時(shí)linux驅(qū)動(dòng)向?qū)崟r(shí)性從站寫入軸數(shù)據(jù)[8],完成從0~2000pulses/8ms的加速過程,然后從2000~0pulses/8ms的減速過程,停止2秒,反向進(jìn)行下一次加減速,再停止2秒,如此循環(huán),觀察伺服電機(jī)的最終位置是否為0,如果為0,說(shuō)明脈沖沒有丟失,實(shí)時(shí)性良好。②對(duì)于誤碼率與通信波特率的關(guān)系的測(cè)定:因?yàn)橛绊懻`碼率的因素很多,比如測(cè)試環(huán)境的電磁干擾強(qiáng)度、傳輸線的長(zhǎng)度、通信波特率、通信線纜的材質(zhì)等,但是本文主要關(guān)注通信波特率對(duì)誤碼率的影響,故將其他變量設(shè)置為定值,測(cè)試環(huán)境為:昆明機(jī)床廠生產(chǎn)車間,2臺(tái)伺服電機(jī)使能的情況下測(cè)定;線纜長(zhǎng)度:20M;通信線纜:普通有屏蔽層雙絞線,加磁環(huán)。本文在總線上設(shè)置總線監(jiān)控模塊,統(tǒng)計(jì)總線上錯(cuò)誤幀的幀數(shù)。通過72小時(shí)測(cè)試,測(cè)試結(jié)果如圖6、圖7所示。
圖6 SCP-Bus實(shí)時(shí)性測(cè)試結(jié)果
從圖6中可以看出,在實(shí)時(shí)性從站個(gè)數(shù)少于Nmax時(shí),脈沖丟失個(gè)數(shù)為0,實(shí)時(shí)性很好,但是當(dāng)實(shí)時(shí)性從站個(gè)數(shù)大于Nmax時(shí),脈沖丟失個(gè)數(shù)很大,在使用時(shí),一定要保證實(shí)時(shí)性從站個(gè)數(shù)小于計(jì)算值Nmax。
從圖7中可以看出,波特率對(duì)誤碼率的影響很大,在低于3.5Mbp/s的情況下,誤碼率很小,滿足使用要求。當(dāng)波特率大于3.5Mbp/s后,誤碼率劇增,不能滿足使用要求。
SCP-Bus總線對(duì)比NCUC-bus總線,兩者在FPGA資源消耗和linux驅(qū)動(dòng)復(fù)雜程度上的對(duì)比結(jié)果如下:
圖7 SCP-Bus誤碼率測(cè)試結(jié)果
FPGA資源消耗是評(píng)價(jià)邏輯復(fù)雜程度的指標(biāo),SCP-Bus 消耗的total logic elements為 2702門,NCUC-Bus消耗的total logic elements 為3588門;SCP-Bus 消耗的total registers為1442個(gè),NCUC-Bus 消耗的total registers為2674個(gè);SCP-Bus 消耗的total memory bits為8192個(gè),NCUC-Bus 消耗的total memory bits為831488個(gè)[9]。如圖8、圖9所示。
圖8 SCP-Bus邏輯資源消耗
圖9 NCUC-Bus邏輯資源消耗
Linux系統(tǒng)驅(qū)動(dòng)程序復(fù)雜程度用驅(qū)動(dòng)程序行數(shù)來(lái)度量,SCP-Bus總線linux驅(qū)動(dòng)程序233行,NCUC-Bus總線linux驅(qū)動(dòng)程序2434行[10]。
從邏輯資源的消耗和linux驅(qū)動(dòng)代碼的復(fù)雜程度對(duì)比結(jié)果可以看出,SCP-Bus是一條十分精簡(jiǎn)的總線。
本文設(shè)計(jì)的SCP-Bus總線,已經(jīng)應(yīng)用在了DNC-11TA數(shù)控系統(tǒng)中,成為該系統(tǒng)的一個(gè)標(biāo)準(zhǔn)協(xié)議,經(jīng)過現(xiàn)場(chǎng)檢驗(yàn),該總線滿足設(shè)計(jì)要求,在實(shí)時(shí)性從站個(gè)數(shù)小于Nmax和波特率小于3.5Mbp/s的情況下,實(shí)時(shí)性良好,可靠性良好,誤碼率低。在嵌入式數(shù)控系統(tǒng)中對(duì)擴(kuò)展軸設(shè)備,I/O設(shè)備,AD/DA設(shè)備等有廣泛的應(yīng)用價(jià)值。
[1] 賀毅,趙望達(dá),劉勇求. 現(xiàn)場(chǎng)總線技術(shù)應(yīng)用及其發(fā)展趨勢(shì)探討[J]. 工業(yè)計(jì)量,2005(1):55-58.
[2] 尚明. FPGA技術(shù)的應(yīng)用與發(fā)展趨勢(shì)[J]. 科技資訊,2007(14):32-34.
[3] 田立志,王美忠,孫廣,等. 485總線使用中的問題與編程[J]. 設(shè)備管理與維修,2007(7):77-80.
[4] 董兵,許曉斐. RS-485總線系統(tǒng)通信可靠性設(shè)計(jì)與應(yīng)用[J]. 廣東輕工職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009(3):84-88.
[5] 張習(xí)加,李成群. 波特率自適應(yīng)的RS-485中繼器設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(8):34-38.
[6] 冷玉林,鐘將. 基于ARM的嵌入式Linux系統(tǒng)構(gòu)建[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2010(11):64-70.
[7] 劉萍先,曹清華,趙筱媛. 基于RS232/485協(xié)議的多機(jī)通信系統(tǒng)的設(shè)計(jì)[J]. 南昌工程學(xué)院學(xué)報(bào),2008(12):17-20.
[8] 金如彬,葉萍萍,陳詠恩. 異步串行口波特率自動(dòng)調(diào)整的原理與實(shí)現(xiàn)[J]. 同濟(jì)大學(xué)學(xué)報(bào)(自然科學(xué)版),1998(12):729-731.
[9] 王翰,宋寶,唐小琦,等. 基于NCUC-Bus現(xiàn)場(chǎng)總線的驅(qū)動(dòng)信號(hào)轉(zhuǎn)發(fā)裝置的設(shè)計(jì)與實(shí)現(xiàn)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2012(7):23-27.
[10] 劉慧雙,宋寶,周向東,等. 嵌入式數(shù)控系統(tǒng)NCUC-Bus現(xiàn)場(chǎng)總線設(shè)備驅(qū)動(dòng)研究與開發(fā)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2012(8):63-65.
(編輯 李秀敏)
The Design of Real Time Serial Communication Protocol
LI Song, TANG Xiao-qi, SONG Bao
(School of Mechanical Science and Engineering, HuaZhong University of Science and Technology, Wuhan 430074, China)
Considering the requirement of the Embedded NC System, this paper designs a high speed and reliable serial communication protocol-SCP-Bus, which is compatible with the transmission of real time data and non-real time data. Based on hardware platform composed of PFGA and high speed RS485 chip, this paper solves the problem of data’s instantaneity in Embedded NC System, and the problem of baud rate clock’s phase alignment between the receiver and the sender in asynchronous communication, the problem of disturbance in industrial field, and etc. The result of experiment and field application indicates that SCP-Bus can meet the demands of communication between the Embedded NC System and peripheral equipment.
embedded NC System; real time; FPGA; serial communication
1001-2265(2014)01-0096-04
10.13462/j.cnki.mmtamt.2014.01.027
2013-05-14;
2013-06-20
“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”科技重大專項(xiàng)(2012ZX04001012);“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”科技重大專項(xiàng)(2012ZX04001041);高等學(xué)校博士學(xué)科點(diǎn)專項(xiàng)科研基金(新教師基金課題)(20090142120035)
李松(1986—),男,四川樂山人,華中科技大學(xué)碩士研究生,主要研究方向?yàn)閿?shù)控技術(shù)、嵌入式系統(tǒng),(E-mail)374985119@qq.com。
TH165;TG65
A