摘 要: 數(shù)控網(wǎng)絡(luò)系統(tǒng)是數(shù)控系統(tǒng)發(fā)展的趨勢,在這類系統(tǒng)中,結(jié)點之間通信的最大要求是高實時性、高可靠性,最大特點是通信數(shù)據(jù)量較小,且具有周期性。本論文將根據(jù)數(shù)控網(wǎng)絡(luò)的這些特點,詳細(xì)介紹如何在物理層,用VHDL語言設(shè)計一個滿足這些要求的模塊,通過光纖實現(xiàn)點對點的通信。
關(guān)鍵詞:光纖通信,數(shù)控網(wǎng)絡(luò),CNC, FPGA
1 引言:
數(shù)控技術(shù)是制造業(yè)實現(xiàn)現(xiàn)代化的戰(zhàn)略性基礎(chǔ)技術(shù),同時也是提高國家綜合國力和國防現(xiàn)代化的重要戰(zhàn)略性基礎(chǔ)技術(shù)。隨著數(shù)字驅(qū)動技術(shù)及各種制造技術(shù)的發(fā)展,提高數(shù)控系統(tǒng)的靈活多變性,可擴展性,可移植性、互操作性、互交換性、可重用性已成為迫切的需要。為此,世界各先進工業(yè)國家紛紛將研制開放式數(shù)控系統(tǒng)體系結(jié)構(gòu)列入重點發(fā)展計劃,為適應(yīng)這一發(fā)展態(tài)勢,及進一步提高工廠生產(chǎn)的自動化,數(shù)控網(wǎng)絡(luò)系統(tǒng)必將成為未來數(shù)控技術(shù)競爭的制高點。而解決在這類網(wǎng)絡(luò)中數(shù)據(jù)的高實時,高可靠地傳輸,是構(gòu)成數(shù)控網(wǎng)絡(luò)的一個核心問題。本論文將根據(jù)這網(wǎng)絡(luò)的特點集中介紹如何用光纖實現(xiàn)點對點的高速高可靠傳輸。
2 網(wǎng)絡(luò)數(shù)控的特點:
目在數(shù)控網(wǎng)絡(luò)系統(tǒng)中,應(yīng)用的協(xié)議有SERCOS(Serial Real-time Communication System)和HSB (High speech Serial Bus)等。
[align=center]

圖1 :SERCOS網(wǎng)絡(luò)拓樸[/align]
SERCOS接口的控制器可以根據(jù)需要接上一個或幾個環(huán)結(jié)構(gòu)。圖1的拓樸圖只是一個例子,由其拓樸結(jié)構(gòu)也可以看出,它糅合使用了主從結(jié)構(gòu)和環(huán)狀結(jié)構(gòu)。
HSB的拓樸結(jié)構(gòu)相對SERCOS要簡單些。它主要是主從式結(jié)構(gòu)。
由于數(shù)控系統(tǒng)的特點,它對底層設(shè)備間的數(shù)據(jù)通信要求比較高,必須保證高實時性和高可靠性的要求。例如CNC(Computer Numeric Controller)控制器主機單元和插補軸單元、驅(qū)動單元等的連接,這類控制器具有ms級的較短控制周期,同時要求較高的通信可靠性,通信錯誤將導(dǎo)致較嚴(yán)重的后果,如加工零件的報廢等。為了在工廠那種比較惡劣的環(huán)境中確保這些要求的滿足,構(gòu)成的數(shù)控網(wǎng)絡(luò)的通信介質(zhì)得用光纖。
這類高實時性、高可靠性的底層設(shè)備間典型的通信周期是1~5ms之間,典型的有效通信數(shù)據(jù)量在500~2000bit之間。以上特點決定了CNC控制器通信存在短周期、短數(shù)據(jù)幀等特點, 所以在物理層用VHDL在FPGA上設(shè)計點對點通信模塊時,必須考慮到這些基本的要求。
不管是構(gòu)成SERCOS還是HSB網(wǎng)絡(luò),為了能夠擴展更多的結(jié)點,點對點的有效位速度都應(yīng)該不小于4M,雖然組網(wǎng)要求的有效位速率大于4Mbps,但是由于協(xié)議本身的開銷,以及為了保證高可靠性而必須的通信冗余量,這類網(wǎng)絡(luò)中實際通信位速率要遠(yuǎn)大于有效位速率。其通信效率保守估計只有15%~30%。
3 光纖通信在數(shù)控網(wǎng)絡(luò)中的實現(xiàn)
不管是SERCOS還是HSB結(jié)構(gòu)的數(shù)控網(wǎng)絡(luò)系統(tǒng),當(dāng)經(jīng)過仲裁從站獲得總線控制權(quán)后,主站跟從站的通信就是點對點的通信。所以依據(jù)數(shù)控系統(tǒng)中傳輸?shù)臄?shù)據(jù)特點,實現(xiàn)點對點的高實時、高可靠光纖通信是基本環(huán)節(jié)。這一環(huán)節(jié)是在物理層來實現(xiàn)的。
在物理層點對點通信的外圍接口模型如下:
[align=center]

圖2 :外圍接口模型[/align]
該模塊是用VHDL語言在FPGA中實現(xiàn)的。它的功能是將在數(shù)據(jù)鏈路層打包好的數(shù)據(jù)幀編碼后通過光纖傳送到總線上去,以及從總線上接收串行的數(shù)據(jù)解碼后交給數(shù)據(jù)鏈路層。物理層的主要工作幾乎都由該模塊來實現(xiàn)。
該模塊的具體任務(wù)包括:與數(shù)據(jù)鏈路層接口、與光纖收發(fā)器的接口、數(shù)據(jù)的編解碼、數(shù)據(jù)的并串轉(zhuǎn)換、數(shù)據(jù)過采樣或數(shù)據(jù)時鐘恢復(fù)、數(shù)據(jù)字對齊等功能。
1):與鏈路層接口:
Outport[15..0]:要發(fā)送到總線中的十六位數(shù)據(jù),低八位是高八位數(shù)據(jù)的地址。
inport[15..0]:從總線中接受到的十六位數(shù)據(jù), 低八位是高八位數(shù)據(jù)的地址。
senddata:發(fā)送數(shù)據(jù)信號,當(dāng)給它一個跳變時,outport中數(shù)據(jù)將進行CRC、4b/5b編碼,然后從data_out中串行發(fā)送。
Ack_y:當(dāng)接收到一個對方發(fā)送過來的,表明對方已經(jīng)正確接收到數(shù)據(jù)的握手信號時,它會發(fā)生一次跳變。
Ack_n:當(dāng)接收到一個對方發(fā)送過來的,表明對方?jīng)]有正確接收到數(shù)據(jù)的握手信號時,它會發(fā)生一次跳變。
Receive_ok:當(dāng)接收到對方發(fā)來的數(shù)據(jù)并且crc校驗正確后,它會有一個跳變,同時把數(shù)據(jù)從inport端口輸出,給對方發(fā)送一個接收正確的握手信號幀。當(dāng)接收的數(shù)據(jù)沒有通過crc校驗時,receive_ok不變,數(shù)據(jù)不輸出,只給對方發(fā)送一個接收錯誤的握手信號幀。
2):與光纖的接口:
data_in:發(fā)送的串行數(shù)據(jù)。
data_out:接收的串行數(shù)據(jù)。
3):數(shù)據(jù)編解碼:
發(fā)送數(shù)據(jù)時,先用4b/5b編碼,然后用CRC編碼;接收數(shù)據(jù)時,則反過來,先用CRC解碼,然后用4b/5b解碼。本模塊采用的循環(huán)碼生成多項式是歐洲標(biāo)準(zhǔn)的CRC-16。
4):數(shù)據(jù)并串轉(zhuǎn)換:
將outport中十六位數(shù)據(jù)編碼后串行輸出,從光纖總線中接收到的串行數(shù)據(jù)解碼后在inport中并行輸出。
5):數(shù)據(jù)過采樣或數(shù)據(jù)時鐘恢復(fù):
在異步通信模式下,需要用采樣辦法將介質(zhì)上傳輸?shù)臄?shù)據(jù)進行0、1判決,以生成接收端數(shù)據(jù),由于異步模式下缺乏發(fā)送端的相位信息,難以保證采樣點位于數(shù)據(jù)的中間位置,即通信“眼圖”的中部,該處的數(shù)據(jù)有足夠的保持時間,是最佳判決點,因此在接受端采用過采樣的方法,每個bit的數(shù)據(jù)周期內(nèi),采樣數(shù)據(jù)5次,且在數(shù)據(jù)發(fā)生0->1的變化時開始采樣,取最中間的采樣結(jié)果作為該次采樣的結(jié)果。
發(fā)送的數(shù)據(jù)幀格式如下:

發(fā)送的幀的類型有:數(shù)據(jù)幀、握手幀(接收正確的握手幀和接收錯誤的握手幀),所以在該模塊中必須要解決好它們的互斥和優(yōu)先級的問題。 在本模塊中是用狀態(tài)機的機制來實現(xiàn)的:給數(shù)據(jù)幀、接收正確握手幀、接收錯誤握手幀分別給個標(biāo)志位:sign_data、sign_ack_y、sign_ack_n。當(dāng)有數(shù)據(jù)幀要發(fā)送時,sign_data置1。當(dāng)發(fā)送完數(shù)據(jù)幀時,sign_data復(fù)位為0,握手幀也一樣,模塊的狀態(tài)為:idle、SendingAck_y、SendingAck_n、SendingData,它們的狀態(tài)跳轉(zhuǎn)關(guān)系如下:
[align=center]

圖3 :狀態(tài)機跳轉(zhuǎn)圖[/align]
從跳轉(zhuǎn)關(guān)系圖也可以看出,當(dāng)同時有握手幀和數(shù)據(jù)幀要發(fā)送時,是先發(fā)送握手幀的,這是因為握手幀比起數(shù)據(jù)幀來要短得多,所以先發(fā)送它能提高整體傳輸效率。
數(shù)據(jù)鏈路層對該模塊的操作是:把要發(fā)的數(shù)據(jù)幀發(fā)給ouport端口,然后給senddata一個跳變沿,此信號為開始發(fā)送信號。如果收到ack_y握手信號,則發(fā)下一幀數(shù)據(jù),如果接收到ack_n握手信號,表示發(fā)送失敗,則重發(fā),如果在合理的時間內(nèi)沒接收到握手信號,則定義為超時,也重發(fā),如果重發(fā)了三次還是失敗,則用中斷方式通知系統(tǒng),通信失敗。這樣就能保證數(shù)控系統(tǒng)中數(shù)據(jù)傳輸?shù)臏?zhǔn)確可靠。不會出現(xiàn)因某幀數(shù)據(jù)傳輸失敗而導(dǎo)致比較嚴(yán)重的后果,比如工件的報廢。
4 仿真
該仿真用的采樣時鐘是100M(用quartusII綜合出來后實際的采樣時鐘還可以更高),從結(jié)果可以看出:從senddata跳變把outport的數(shù)據(jù)鎖存,并開始發(fā)送數(shù)據(jù)開始,到接收到握手信號的周期是1.15us,在這十六位數(shù)據(jù)中,低八位是地址,高八位才是有效數(shù)據(jù),所以其有效位速率為6.95M,該有效速度完全能滿足數(shù)控網(wǎng)絡(luò)的要求。
雖然這是仿真結(jié)果,但在實際數(shù)控系統(tǒng)中運行時的效果跟它是一樣的,該光纖通信模塊在實際系統(tǒng)中的調(diào)試已經(jīng)結(jié)束。
5 結(jié)束語
在工廠自動化越來越高的今天,用光纖構(gòu)成的數(shù)控網(wǎng)絡(luò)系統(tǒng)必將大大提高中國企業(yè)的核心競爭力。為中國企業(yè)全面參與國際競爭提供技術(shù)質(zhì)量保證。
參考文獻
[1] M. Week and Jochen Wolf .STEP-NC-The STEP compliant NC Programming Interface:Evaluation and Improvement of the modern Interface [Z].IMS Forum. Ascona/Switzerland,October/2001.
[2] 鄒澤明等. 網(wǎng)絡(luò)數(shù)控系統(tǒng)與企業(yè)信息系統(tǒng)的集成研究[J]. 機床與液壓,2003,(5).
[3] 陳衛(wèi)福,楊建武. 開放式數(shù)控系統(tǒng)及SERCOS接口應(yīng)用技術(shù) .機械工業(yè)出版社.
[4] 董孝義,王延堯. 新一代光纖通信與同步網(wǎng)原理與發(fā)展[M].天津:天津科學(xué)技術(shù)出版社.
[5] 周凱. 數(shù)控系統(tǒng)體系結(jié)構(gòu)研究 [J] 中國機械工程2002, 13 (5).
[6] 黃智偉,王彥. FPGA系統(tǒng)設(shè)計與實踐.電子工業(yè)出版社.
[7] 劉小俊等,基于VHDL語言的全雙工異步接收發(fā)送器電路設(shè)計 . 微計算機信息 . 2005. Vol.21 No.1 P.156-157