前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的基本通信協(xié)議主題范文,僅供參考,歡迎閱讀并收藏。
[關鍵詞]通信協(xié)議 IPX/SPX協(xié)議 NetBEUI協(xié)議 TCP/IP協(xié)議
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1009-914X(2016)23-0114-01
引言:通過通信信道和設備互連起來的多個不同地理位置的數(shù)據通信系統(tǒng),要使其能協(xié)同工作實現(xiàn)信息交換和資源共享,它們之間必須具有共同的語言。交流過程中都必須遵循某種互相都能接受的規(guī)則,這個規(guī)則就是通信協(xié)議。網絡通信協(xié)議是計算機網絡的一個重要組成部分,是不同網絡之間通信、交流的公共語言。有了它,使用不同系統(tǒng)的計算機或網絡之間才可以彼此識別,識別出不同的網絡操作指令,建立信任關系,否則就會造成網絡的接入速度太慢以及工作不穩(wěn)定。這一技術發(fā)展至今,已經發(fā)展出了很多種不同類型的通信協(xié)議,不同的網絡協(xié)議都有其存在的必要,每一種協(xié)議都有它所主要依賴的操作系統(tǒng)和工作環(huán)境。所以要很好地選擇與配置協(xié)議就必須要先了解目前各主要協(xié)議的主要性能特點和所適用的范圍,一遍合理的配置各種通信協(xié)議,保證網絡通信的正常運行。
一、通信協(xié)議簡介
通信協(xié)議是指雙方實體完成通信或服務所必須遵循的規(guī)則和約定。協(xié)議定義了數(shù)據單元使用的格式,信息單元應該包含的信息與含義、連接方式、信息發(fā)送和接收的時序,從而確保網絡中數(shù)據順利地傳送到確定的地方。在計算機通信中,通信協(xié)議用于實現(xiàn)計算機與網絡連接之間的標準,網絡如果沒有統(tǒng)一的通信協(xié)議,電腦之間的信息傳遞就無法識別。
通信協(xié)議包括語義、語法和時序三個組成部分。語義是對協(xié)議元素的含義進行解釋。不同類型的協(xié)議元素所規(guī)定的語義是不同的。語法是將若干個協(xié)議元素和數(shù)據組合在一起用來表達一個完整的內容所應遵循的格式,也就是對信息的數(shù)據結構做一種規(guī)定。而時序是對事件實現(xiàn)順序的詳細說明。
二、幾種主要的通信協(xié)議
1. IPX/SPX協(xié)議
IPX/SPX(網際包交換/序列包交換)協(xié)議主要應用于基于NetWare操作系統(tǒng)的Novell局域網中,基于其他操作系統(tǒng)的局域網能夠通過IPX/SPX協(xié)議與Novell網進行通信。當用戶端接入 NetWare服務器時,IPX/SPX 及其兼容協(xié)議是最好的選擇。但在非Novell網絡環(huán)境中,一般不使用IPX/SPX。IPX/SPX及其兼容協(xié)議不需要任何配置,它可通過網絡地址來識別自己的身份。Novell網絡中的網絡地址由兩部分組成:標成物理網段的網絡ID和標明特殊設備的“節(jié)點 ID” 。其中網絡ID集中在NetWare服務器或路由器中,節(jié)點ID即為每個網卡的ID號。 所有的網絡ID和節(jié)點ID都是一個獨一無二的內部IPX地址。正是由于網絡地址的唯一性,才使用IPX/SPX具有較強的路由功能。IPX/SPX協(xié)議中,IPX是NetWare最低層的協(xié)議,他只負責數(shù)據在網絡中的移動,并不保證數(shù)據是否傳輸成功,也不提供糾錯服務。IPX 在負責數(shù)據傳送時,如果接收節(jié)點在同一網段內,就直接按節(jié)點的ID將數(shù)據傳給它;如果接收節(jié)點是遠程的,數(shù)據將交給 NetWare 服務器或路由器中的網絡ID,繼續(xù)數(shù)據的下一步傳輸。
2. NetBEUI協(xié)議
NetBEUI(用戶擴展接口)協(xié)議是一種體積小、效率高、速率快的通信協(xié)議,也是微軟最鐘愛的一種通信協(xié)議,所以它被稱為微軟所有產品中通信協(xié)議的"母語"。NetBEUI是專門為由幾臺到百余臺計算機所組成的單網段部門級小型局域網而設計的,它不具有跨網段工作的功能,即NetBEUI不具備路由功能。如果一個服務器上安裝了多個網卡,或要采用路由器等設備進行兩個局域網的互連時,則不能使用NetBEUI通信協(xié)議。否則,與不同網卡(每一個網卡連接一個網段)相連的設備之間,以及不同的局域網之間無法進行通信。在3種通信協(xié)議中,NetBEUI占用的內存最少,在網絡中基本不需要任何配置。
3. TCP/IP協(xié)議
TCP/IP(傳輸控制協(xié)議/網絡協(xié)議)從字面上理解只有兩個協(xié)議,即TCP協(xié)議和IP協(xié)議,而事實上它是是由一組具有專業(yè)用途的多個子協(xié)議組合而成的,這些子協(xié)議包括TCP、IP、UDP、ARP、ICMP等,而TCP和IP協(xié)議是協(xié)議族中最基本的最重要的兩個協(xié)議。它是為了實現(xiàn)不同網絡之間的互連而設計的。TCP/IP 通信協(xié)議具有靈活性,適用任意規(guī)模的網絡,幾乎可連接所有的服務器和工作站,正因為的靈活性也帶來了它的復雜性,它需要針對不同網絡進行不同設置,且每一個節(jié)點至少需要一個IP地址,一個網掩碼,一個默認網關和一個主機名,但是在局域網中微軟為了簡化 TCP/IP協(xié)議的設置,在NT中配置了一個動態(tài)主機配置協(xié)議(DHCP),它可以為客戶端自動分配一個IP地址,避免了出錯。
三、選擇通信協(xié)議的原則
1.網絡結構和功能的一致性
如果網絡存在多個網段或要通過路由器相連時,就不能使用不具備路由和跨網段操作功能的NetBEUI協(xié)議,而必須選擇具備這一功能的IPX/SPX或TCP/IP等協(xié)議。此外,如果網絡規(guī)模較小,同時只是為了簡單的文件和設備的共享,這時最主要的就是網絡速度,所以在選擇協(xié)議時應選擇占用內存小和帶寬利用率高的協(xié)議,如NetBEUI。當網絡規(guī)模較大且網絡結構復雜時,應選擇可管理性和可擴充性較好的協(xié)議,如TCP/IP。
2.除特殊情況外,一個網絡盡量只選擇一種通信協(xié)議
由于每個協(xié)議都要占用計算機的內存,選擇的協(xié)議越多,占用計算機的內存資源就越多。一方面影響了計算機的運行速度,另一方面不利于網絡的管理。事實上一個網絡中一般一種通信協(xié)議就可以滿足需要。
3.注意協(xié)議的版本
每個協(xié)議都有它的發(fā)展和完善過程,因而出現(xiàn)了不同的版本。每個版本的協(xié)議都有它最為合適的網絡環(huán)境。從整體來看,高版本協(xié)議的功能和性能要比低版本好。所以在選擇時,在滿足網絡功能要求的前提下,應盡量選擇高版本的通信協(xié)議。
4.協(xié)議的一致性。
如果要讓兩臺實現(xiàn)互聯(lián)的計算機間進行對話,它們兩者使用的通信協(xié)議必須相同。否則中間還需要一個“翻譯”進行不同協(xié)議的轉換。這樣不僅影響通信速度,同時也不利于網絡的安全和穩(wěn)定運行。
結語:
通信協(xié)議作為連接不通網絡和設備之間的橋梁,其作用至關重要。這一技術發(fā)展至今,已經發(fā)展出了多種多樣不通版本的協(xié)議,而每個版本也都具有各自的特點和功能,所以在選擇協(xié)議的時候應該根據實際需要選擇最適合的通信協(xié)議,從而使其更好地為用戶服務。
參考文獻:
[1] 高傳善.數(shù)據通信與計算機網[M].北京:高等教育出版社,2002.
1DDC和PLC性能比較
DDC是隨著半導體技術、微處理器技術以及智能樓宇自動化控制需求而產生的一種可編程的智能控制設備;PLC是隨著半導體技術、微處理器技術以及工業(yè)生產流水線自動化控制需求而產生的一種可編程的智能控制設備。兩者的性能比較見表1。由表1可見,PLC和DDC這兩類產品在其架構上基本相同,兩者在車站環(huán)境及機電設備自動化控制系統(tǒng)中所實現(xiàn)的功能也完全相同,但在產品封裝、可靠性、應用側重等方面是有所差異的。在城市軌道交通車站環(huán)境及機電設備自動化監(jiān)控系統(tǒng)中,無論是PLC產品還是DDC產品,均采用了集散系統(tǒng)架構;散布在線路控制中心和車站內的各部分均通過通信鏈路連接,并通過私有協(xié)議或公開協(xié)議實現(xiàn)信息的傳輸和交換。
2通信協(xié)議
互聯(lián)互通是城市軌道交通中不同應用系統(tǒng)間互相交換信息的需要,或是同一個應用系統(tǒng)中不同產品間互相交換信息的需要。在同一個應用系統(tǒng)中,建設方通常都會選擇同一品牌同一系列的產品,至少可以保證在本應用系統(tǒng)的內部不會產生信息交換的障礙,同時通過接口協(xié)議的商談定義來解決不同應用系統(tǒng)間信息交換的問題。但事實上,為保證信息交換的有效性,一般會選擇同一品牌同一系列的產品,其實質是因為同一品牌同一系列產品采用的是同一種通信協(xié)議。正是因為這種通信協(xié)議上的統(tǒng)一性,才保證了信息交換的有效性和準確性。
因此,要實現(xiàn)設備間的互聯(lián)互通,即便采用不同的產品,如PLC和DDC,只要它們采用的是同一種通信協(xié)議,則可實現(xiàn);反之,即便采用的是同一種產品,如PLC和PLC間,甚至是同一家公司產品,只要產品所采用的通信協(xié)議不同,就不能直接實現(xiàn)互聯(lián)互通。所以,要實現(xiàn)不同產品間的互聯(lián)互通,如DDC和PLC這兩種產品間的互聯(lián)互通,其關鍵點在于產品是否采用了同一種通信協(xié)議,或者是否有合適的網關設備進行不同協(xié)議間的轉換。表2為目前4種公開的通信協(xié)議。每種協(xié)議各有優(yōu)劣。很多產品為發(fā)揮其特色,還擁有其自定義的私有協(xié)議。
3互聯(lián)互通工程實例
3.1用戶需求
上海軌道交通2號線的既有線和延伸線的自動監(jiān)控系統(tǒng)中分別采用了兩種不同的產品。既有線部分采用的是施耐德公司CSI系列的BAS(設備監(jiān)控系統(tǒng))。該系統(tǒng)是基于DDC的系統(tǒng)。東延伸段和西延伸段采用的是基于PLC的BAS系統(tǒng),產品為施耐德公司的PremiumPLC和M340PLC。為了保證控制中心環(huán)控調度操作的統(tǒng)一性,提高調度工作效率,降低調度操作難度,保證調度操作準確性,需要將2號線上基于不同產品的BAS系統(tǒng)整合成一個系統(tǒng),在一個監(jiān)控操作平臺上,BAS中央級對BAS車站級進行統(tǒng)一的監(jiān)控、操作。
要實現(xiàn)在一個監(jiān)控操作平臺(或稱人機界面,即HMI)上實現(xiàn)對基于DDC和PLC不同產品的系統(tǒng)進行統(tǒng)一監(jiān)控的目的,就必須使用同時支持兩種不同網絡通信協(xié)議的HMI軟件平臺。但是,既有線BAS系統(tǒng)與HMI間的網絡通信協(xié)議為CSI產品特有的I-NET2000網絡協(xié)議,而延伸線BAS系統(tǒng)支持的與HMI間的網絡通信協(xié)議有多種,包括Modb-us、UN-TELWAY、FIPWAY等。由于CSI產品所使用的I-NET2000網絡協(xié)議應用并不廣泛,只有CSI產品自身的HMI采用,所以要簡單地選擇一個既能直接與CSI中的DDC通信又能直接與施耐德PLC通信的HMI軟件平臺是不現(xiàn)實的。
性價比較高的解決方法是在不改變既有線車站級BAS系統(tǒng)基本結構的前提下,破解I-NET2000通信協(xié)議,選擇能夠支持多種通信協(xié)議的HMI軟件平臺以實現(xiàn)同時與CSI中的DDC和施耐德PLC通信。
3.2整合準備
鑒于上海軌道交通2號線既有線分一期工程部分(龍陽路站至中山公園站)和西延伸部分(婁山關路站至淞虹路站)。兩部分的BAS車站級設備雖都是CSI的DDC產品,但還略有不同。一期工程上所使用的7760DDC需要通過一個名叫TAP的設備和車站監(jiān)控工作站連接,而西延伸工程上所使用的7790DDC上有可用于連接監(jiān)控工作站的串行通信端口。故車站級的改造方法也稍有不同。一期工程部分BAS車站級設備采用的是CSI7760DDC,其車站基本結構如圖1所示。西延伸段BAS車站級設備采用的是CSI7790DDC,其車站基本結構如圖2所示。針對一期工程7760DDC和TAP的結構,7760DDC和TAP上并無多余通信端口可以使用,以及車站也只有1個以太網通道端口可供BAS使用的情況,在車控室增設1個以太網交換機和1個串口服務器。增設以太網交換機的目的是拓展BAS使用的以太網端口,以供車站BAS監(jiān)控工作站和串口服務器使用;增設串口服務器的目的是為了車站級監(jiān)控工作站和中央級HMI軟件接口同時能與TAP進行通信。系統(tǒng)結構如圖3所示。
系統(tǒng)改造后,上海軌道交通2號線一期工程部分的BAS有如下幾條數(shù)據流:①7760DDCTAP串口服務器交換機車站工作站;②7760DDCTAP串口服務器交換機新控制中心;③車站工作站交換機既有其他車站和既有控制中心。
針對上海軌道交通2號線西延伸工程7790DDC結構,車站內2個7790DDC上各有1個可用于連接車站監(jiān)控工作站的串行端口,而且由于2個7790DDC已經聯(lián)網,故這2個串行端口上的數(shù)據是一致的。其中1個端口已經用于車站監(jiān)控工作站,故利用另1個端口進行車站級數(shù)據讀取和命令寫入。與一期工程一樣,在車控室增加1個以太網交換機和1個串口服務器。增設以太網交換機的目的是拓展BAS使用的以太網端口,以供車站BAS監(jiān)控工作站和串口服務器使用;增設串口服務器的目的是為了中央HMI軟件接口同時能與2個7790DDC的串行端口中的1個進行通信。系統(tǒng)構成如圖4所示。
系統(tǒng)改造后,上海軌道交通2號線西延伸部分的BAS有如下幾條數(shù)據流:①7790DDC車站工作站;②7790DDC串口服務器交換機新控制中心;③車站工作站交換機既有其他車站和既有控制中心。完成了車站級既有BAS系統(tǒng)改造后,既不影響原有系統(tǒng)的所有功能,包括車站級的監(jiān)控和既有中央級對車站級的監(jiān)控,又增加了一個新中央級到車站級的監(jiān)控通道。
3.3新建控制中心及東延伸段PLC并網
(1)在2號線控制中心5樓調度大廳內,新設全線BAS中央級。
(2)在新設中央級調試及試運行期間,新中央級和既有中央級并網運行。
(3)中央級搬遷工程以先并入新設中央級,后移除既有中央級為基本工序。
(4)新設BAS中央級以統(tǒng)一的平臺(包括軟件和硬件)對既有基于DDC的BAS系統(tǒng)和延伸線基于PLC的BAS系統(tǒng)進行監(jiān)控管理。
(5)新設的中央級符合目前的《上海城市軌道交通設備監(jiān)控系統(tǒng)設備招標通用技術文件》的要求,如設有熱備冗余的服務器、熱備冗余的工作站等,以完成全線數(shù)據的采集、存儲、相關運算以及命令的。
(6)新設的中央級設全線事故風機控制盤(中央IBP盤)1臺,以完成對全線隧道事故情況下的統(tǒng)一控制、指揮。
(7)設置新中央級后,不改變既有BAS系統(tǒng)車站級和既有中央級所有的點位設置、邏輯控制程序、監(jiān)控功能及操作方法。
圖5為新控制中心建成后的上海軌道交通2號線BAS新中央級和既有系統(tǒng)的聯(lián)網圖。上海軌道交通2號線東延伸段依工程進度,計劃完成基于PLC的BAS系統(tǒng)建設后,通過以太網并入系統(tǒng)。工程完成后,經各項功能測試,系統(tǒng)運行正常。完成DDC和PLC整合后的系統(tǒng)結構如圖6所示。
在現(xiàn)有的即時通信系統(tǒng)中,實現(xiàn)音視頻通信的核心組件包括音視頻處理框架和即時通信協(xié)議兩個部分。音視處理框架集成了音視頻采集、音視頻編解碼、音視頻分流控制、音視頻數(shù)據流網絡擁塞控制等技術模塊,能夠完成音視頻數(shù)據流的采集、編碼、分流等基本處理流程;即時通信協(xié)議則負責為音視頻數(shù)據協(xié)商傳輸通道,并且在協(xié)商好的傳輸通道上建立對應的連接,從而為音視頻數(shù)據的順暢傳輸提供保障。
1即時通信協(xié)議
即時通信協(xié)議是進行即時通信必須遵循的信息規(guī)范,主要負責完成用戶信息傳輸通道協(xié)商,客戶端與服務器通信信令傳輸控制等任務。XMPP是主流即時通信協(xié)議之一,是基于可擴展標記語言(XML)的協(xié)議,其繼承了在XML的高可擴展性,可以通過發(fā)送擴展的信息來處理用戶需求。目前最常用的即時通信協(xié)議體系主要是SIP和XMPP協(xié)議體系,兩者都可以完成音視頻通信功能。另外,一些商業(yè)公司自行開發(fā)私有的即時通信協(xié)議實現(xiàn)了相對封閉的通信環(huán)境,例如QQ和MSN。XMPP協(xié)議是個總稱,包括核心協(xié)議,擴展協(xié)議等。
核心協(xié)議只規(guī)定了很小、很基本的一些功能,大部分功能都是在擴展協(xié)議中規(guī)定的。實際上,XMPP協(xié)議只是作為協(xié)商協(xié)議應用,真正的P2P連接和實時通信是通過其擴展協(xié)議實現(xiàn)的。Jingle就是典型的擴展協(xié)議案例。Jingle[6]是Google開發(fā)的XMPP協(xié)議上的擴展,其解決了在XMPP協(xié)議體系下點對點的P2P連接問題。Jingle協(xié)議提供了多種傳輸方式用于數(shù)據傳輸,而針對多媒體數(shù)據的最為常見的模式是兩種UDP傳輸方式。一種傳輸模型是RAWUDP[9],RAWUDP是在UDP協(xié)議上發(fā)送媒體數(shù)據包的傳輸通道模型,可以實現(xiàn)在同一局域網下的P2P連接,沒有網絡穿越功能,無法實現(xiàn)遠程通信;另一種模型則是功能更為強大的ICE-UDP[8],ICE-UDP也是在UDP協(xié)議上發(fā)送媒體數(shù)據包,并且可以實現(xiàn)具有防火墻的網絡穿越和ICE連接性檢查,實現(xiàn)遠程通信。ICE是標準的建立P2P連接性檢查的協(xié)議,其自身不能獨立工作,必需在信號通道的協(xié)調下建立連接,而XMPP協(xié)議就可以作為ICE通道協(xié)商的協(xié)議標準。
基于Jingle/XMPP協(xié)議實現(xiàn)的即時通信框圖如圖1所示。Jingle通過XMPP完成P2P通道的協(xié)商任務,同時通過Jingle協(xié)議建立P2P通道并進行連接性檢查,然后建立并完成RTP會話,從而完成音視頻通信。如果選擇ICE-UDP通道傳輸模型進行RTP視頻數(shù)據傳輸,XMPP服務器可以使用STUN[2]服務器收集用戶的地址,包括NAT[3]后面的私有地址以及NAT與互聯(lián)網連接的公共地址,并且以此為基礎建立映射機制,完成會話參與者跟具體的網絡地址間的轉換和NAT穿越。
2音視頻處理框架
即時通信系統(tǒng)中的音視頻處理框架主要為用戶提供一組多媒體數(shù)據處理的接口,用戶可以用這些接口實現(xiàn)從多媒體采集卡上獲得數(shù)據,進行壓縮編碼、格式轉換、數(shù)據封包等一系列操作,從而完成多媒體的實時處理傳輸功能,大大簡化多媒體處理的復雜性。目前具有二次開發(fā)功能的音視頻處理框架包括Gstreamer,Directshow,Opencore等。其中DirectShow是微軟公司在ActiveMovie和VideoforWindows基礎上推出的基于COM的流媒體處理開發(fā)包。運用DirectShow可以很方便地從支持Windows驅動模型的采集卡上捕獲數(shù)據,并進行相應的后期處理乃至存儲到文件中。OpenCore則是手機操作系統(tǒng)Android的多媒體核心,OpenCore的代碼非常龐大,是一個基于C++的實現(xiàn),定義了全功能的操作系統(tǒng)移植層,各種基本的功能均被封裝成類的形式,各層次之間的接口多使用繼承等方式。而基于Linux平臺的GStreamer則是完全開源的多媒體框架庫,利用其可以構建一系列媒體處理模塊,包括從簡單的Ogg播放功能到復雜的音頻混音和視頻非線性編輯處理。Gstreamer應用非常廣泛,大多數(shù)手機平臺及個人電腦Linux平臺均采用Gstreamer進行音視頻處理開發(fā)。
2.1Gstreamer音視頻處理
Gstreamer通過其模塊化設計理念,更加便于構建流媒體應用程序。它將各個模塊封裝起來,以元件的形式提供給用戶使用。用戶可以利用庫中原有的元件進行應用程序的編程,同樣也可以編寫元件,然后插入到庫中,以便日后調用時使用。如果只利用庫中的元件來實現(xiàn)特定功能,只需要采用模塊化的方式編寫應用程序[4]。Gstreamer實現(xiàn)局域網內簡單多媒體音視頻傳輸發(fā)送端的框圖如圖2所示。對于視頻數(shù)據流,Gstreamer在發(fā)送端將攝像頭(v4l2src1)采集的數(shù)據依次經過色度空間轉換(ffmpegcsp1)、H263視頻編碼(ffenc_h263p1)、RTP[1]載荷頭添加(rtph263ppay1),在gstrtpbin中實現(xiàn)實時傳輸協(xié)議(RTP)和實時傳輸控制協(xié)議(RTCP)數(shù)據包整合,并添加發(fā)送報告的背景時鐘時間戳,便于在接受端進行音視頻同步播放,然后發(fā)到UDP端口(udpsink)。在接收端,從UDP端口截獲的數(shù)據依次經過RTP和RTCP數(shù)據包解析、RTP載荷頭解碼、H263解碼器解碼視頻數(shù)據、色度空間轉換,最后經過視頻顯示插件顯示到窗口中。其中gstrtpbin是進行RTP會話管理的核心組件,可以完成RTP數(shù)據包傳輸控制、RTCP數(shù)據包生成、沖突檢測、音視頻分流等任務。
2.2Farsight視頻會議框架
通過Gstreamer開發(fā)庫中的基礎元件可以完成音視頻處理的功能,并且可以進行簡單的局域網內視頻通信。但是,在視頻會議等復雜應用中經常包含多個多媒體會話,而且多媒體會話之間的協(xié)調非常復雜,需要通過更為高層的處理框架來實現(xiàn)會話管理的功能。Farsight是以Gstreamer為基礎開發(fā)的視頻會議框架,它能夠提供一套完整的為多媒體流協(xié)議編寫插件的應用程序接口,同時還為用戶提供API調用這些插件。即時通信應用程序可以使用Farsight進行音視頻會議,而無須擔心底層的數(shù)據流和NAT穿越的問題。因為Farsight[5]是以Gstre-amer為基礎進行開發(fā),所以開發(fā)新的元件能夠和已有的Gstreamer元件整合,實現(xiàn)完成視頻會議功能的多媒體框架。Farsight可以包含多路音視頻會話流,包含多個會話參與者,具有強大的音視頻會話管理功能。它通過模塊化設計為許多即時通信軟件提供音視頻會議的服務,大大擴展了多媒體處理的功能,并且可以實現(xiàn)更為強大的視頻會議功能。目前很多即時通信客戶端軟件都采用Farsight完成音視頻通信。本文以Gstreamer/Farsight音視頻處理框架為重點,詳述其內部結構及功能實現(xiàn)。
Farsight中包括4個核心概念:會議(Conference)、會話(Session)、參與者(Participant)、流(Stream)。會話參與者是指多媒體數(shù)據源,可以是音頻或視頻等;會話則代表一路音頻或視頻會話,通常有一個媒體類型和一個輸出端;會議則代表一個多媒體會議,可以包含多路會話,并且完成多路會話的協(xié)調管理;當參與者加入到會話中,就將多媒體數(shù)據引入會話中,使得數(shù)據能夠流動,從而構成數(shù)據流。另外,F(xiàn)arsight實現(xiàn)了網絡層的抽象,即將網絡抽象為一個發(fā)射器對象,當數(shù)據流被創(chuàng)建時就會建立發(fā)射器對象,然后通過設置發(fā)射器參數(shù)確定發(fā)送的目的地址。實際上,F(xiàn)arsight并沒有參與多媒體數(shù)據的采集和打包工作,它只是為多媒體數(shù)據流傳輸?shù)骄W絡端進行發(fā)送提供了一個通道,并且對通道進行協(xié)調管理,保證不同的會話參與者與其特定的數(shù)據流綁定以防止收發(fā)混淆。
Farsight實現(xiàn)RTP視頻會議的結構如圖3所示,其中FsRTPConference是Farsight框架下的一種插件,主要的RTP會話管理功能都在這個組件中實現(xiàn)。FsRTPConference中可以同時存在多路FsSession,每一路FsSession因參與者或音媒體源的不同代表不同的多媒體會話。編解碼器在雙方建立連接前無法確定,只有當通信雙方的客戶端協(xié)商之后,才會根據具體的編解碼器名字調用并進行插件的連接。
Farsight通過將gstrtpbin封裝到FsRTPConference中,添加一些其他的必要組件,實現(xiàn)RTP會話。RTP管理器主要由gstrtpbin負責完成RTP會話管理的操作。在發(fā)送端,視頻源和音頻源通過Sink接入到會話中,編解碼器協(xié)商成功后,將編碼器與數(shù)據源和過濾元件連接,然后通過RTP混合器將音視頻數(shù)據發(fā)送到RTP管理器中,完成RTCP數(shù)據包的生成以及RTP會話的管理。最后,經過數(shù)據發(fā)射器將數(shù)據發(fā)送到相應的數(shù)據通道中。在接收端,數(shù)據流同樣要經過類似的信息解碼過程得到音視頻數(shù)據。在發(fā)送端,數(shù)據發(fā)射器在Farsight中通常有多種插件選擇,例如多播UDP插件、Libnice插件等,目的是為了實現(xiàn)底層數(shù)據傳輸?shù)倪B接性檢查。Libnice是實現(xiàn)了ICE和STUN協(xié)議規(guī)范的軟件庫,開發(fā)者以此為基礎完成nice插件,可以實現(xiàn)基于ICE的數(shù)據發(fā)送。但是Libnice中只定義了如何在P2P連接確立后進行連接性檢查,以及如何在確定的P2P連接上進行數(shù)據傳輸?shù)木W絡穿越,并沒有定義如何進行P2P連接,即P2P通道的協(xié)商任務。Jingle協(xié)議規(guī)范則定義了P2P通道建立連接及通道協(xié)商的任務。目前,Jin-gle協(xié)議已經在Libpurple(多協(xié)議會話開發(fā)庫)中實現(xiàn)。
3即時通信系統(tǒng)中音視頻通信的實現(xiàn)
為了開發(fā)的便捷,Pidgin軟件的開發(fā)者將負責通信部分與圖形用戶界面部分分開,分離出來的核心代碼構成即時通信客戶端開發(fā)的核心部分,被稱為Libpurple。這個程序庫已被Adium與Proteus這些客戶端使用。完成分離后,開發(fā)者將有可能以各自的圖形程序庫編寫自己的客戶端接口。在Libpurple中,為實現(xiàn)多媒體通信,開發(fā)者將基于Farsight的多媒體處理框架進行繼承和封裝,實現(xiàn)即時通信協(xié)議,并提供接口供用戶使用,用戶可利用應用程序接口編寫程序實現(xiàn)網絡層的連接。使用者可以使用Libpur-ple直接編寫即時通信程序的核心代碼,并構建應用程序。
同時,Libpurple實現(xiàn)了許多即時通信協(xié)議的通信,例如MSN,XMPP,AIM等協(xié)議,同時完成了媒體后端流處理與相應即時通信協(xié)議的協(xié)同工作。Libpurple在Farsight的基礎上進行開發(fā),實現(xiàn)了一套具備自身特點的流媒體模式。通過對Lipurple庫的理解分析[10],得到了Libpurple實現(xiàn)音視頻數(shù)據流控制及會話管理的方法,如圖4所示。圖4中Src是音視頻數(shù)據源,傳輸?shù)紽sSession進行音視頻流整合、RTCP包生成、數(shù)據流管理等操作。Vol-ume和level則分別表示音頻的音量與消息控制插件。Libpurple采用FsSession做會話管理,并在FsSession的基礎上添加Gstreamer基礎元件進行控制,完成自己需要的功能。FsSession通過選擇不同的連接通道,將音視頻數(shù)據流通過發(fā)送器進行發(fā)送。
Libpurple中實現(xiàn)了Jingle協(xié)議進行RTP通信的規(guī)范,并提供兩種數(shù)據通道,RAWUDP和ICE-UDP供用戶使用。在進行具體RTP視頻通信時,程序根據不同情況選擇不同的通道使用。圖4選擇RAWUDP作為數(shù)據發(fā)送通道,用戶也可以選擇其他通道進行數(shù)據發(fā)送。為了與Jingle協(xié)議合作完成音視頻通信,Libpurple建立了一個組件對象purplemedia,這個對象在Farsight組件中提取相關的參數(shù)信息,例如編解碼器信息、發(fā)送目的地址等,并傳遞給Jingle協(xié)議,便于Jingle協(xié)議進行通道協(xié)商。當有新的即時通信協(xié)議需要利用Farsight完成視頻通信時,開發(fā)者往往需要以Libpurple為基礎進行開發(fā),完成即時通信協(xié)議在Libpurple上的移植,以實現(xiàn)視頻通信。在眾多采用Libpurple庫開發(fā)的即時通信軟件客戶端中,Pidgin是最成功的,也是少數(shù)幾個可以實現(xiàn)音視頻通信的案例。Pidgin是一款支持多協(xié)議客戶端的圖形化即時通信應用程序,它可以使用AIM,Jabber,MSN,Yahoo等即時通信軟件的帳號進行登錄。并采用Libpurple作為開發(fā)庫,利用圖形開發(fā)工具包編寫用戶界面及各種事件提醒和任務管理,從而實現(xiàn)在多種即時通信協(xié)議基礎上的音視頻通信。
關鍵詞:通信協(xié)議宏; PLC; 串行通信; 自動化
近年來,隨著科學技術的發(fā)展,中波廣播發(fā)射機也從過去的電子管板調機發(fā)展為全新的全固態(tài)機,為實現(xiàn)自動化控制奠定了基礎。中波廣播自動化控制系統(tǒng)常采用可編程序控制器(PLC)做為前端控制器,通過PLC的輸入、輸出模塊對發(fā)射機進行現(xiàn)場接入控制。但對于那些提供通信端口的發(fā)射機或設備,其內部已經配置了微控制器和采樣控制回路,如果還是采用現(xiàn)場接入控制,不僅功能重復,而且有的時候難于實現(xiàn),例如Thomcast的M2W型中波發(fā)射機,電路板集成度高,對接入參數(shù)非常敏感。對于這種類型的設備,只能是通過其串行口,利用其通信協(xié)議來實現(xiàn)工作狀態(tài)的數(shù)據監(jiān)測和控制。如果使用把監(jiān)測控制軟件放在服務器上運行的方式,那么當網絡有故障時設備將失控,因此安全性不夠,最好把監(jiān)測控制軟件放在其上位機的PLC中。過去只包含I/O模塊的PLC是無法實現(xiàn)串行通信功能的,而PLC通信協(xié)議宏的出現(xiàn)解決了這個問題。以下著重介紹使用協(xié)議宏來解決Thomcast的M2W型中波廣播發(fā)射機的自動化控制問題。
1 中波發(fā)射自動化控制系統(tǒng)的總體構成與功能
廈門廣電集團發(fā)射中心202臺中波發(fā)射自動化控制系統(tǒng)主要由受控系統(tǒng)、前端監(jiān)控器、網絡和系統(tǒng)服務器等四部分組成。網絡結構的拓撲結構如圖1。
圖1
總體采用現(xiàn)場分布式結構,每個受控系統(tǒng)都有自己獨立的前端監(jiān)控器,并在其監(jiān)控下工作。受控系統(tǒng)由主/備發(fā)射機、同軸開關、假負載、音頻矩陣及溫控器等組成。
前端控制器采用OMRON公司生產的CS1H-CPU63型可編程序控制器,它是實時監(jiān)控系統(tǒng)中最基本、最核心的單元,在整個系統(tǒng)中起著承上啟下的作用。它能夠脫離上位軟件和網絡連接而獨立完成對受控系統(tǒng)的監(jiān)測和控制,對受控系統(tǒng)各種異常狀態(tài)用不同的方式發(fā)出告警信號,并能夠存儲開關機時間表等日常管理流程數(shù)據。
自動化控制系統(tǒng)的主要功能分為:①基本控制功能(遠程控制及自動開關機等);②開關量、模擬量的監(jiān)測;③開關機時間表的設定;④與用戶系統(tǒng)及服務系統(tǒng)的通信功能。其中前兩項功能通過PLC通信協(xié)議宏來實現(xiàn)。
2 Thomcast公司M2W發(fā)射機提供的通信協(xié)議分析
M2W發(fā)射機的標準通信協(xié)議幀的格式分為:寫控制幀(控制量)和讀控制幀(狀態(tài)量)。如下表,我們把常用的一些常用的操作指令列出來。
2.1 寫控制:(開關機控制量)
特別說明:在M2W發(fā)射機內部PLC是采用文件的格式存儲機器信息的,其中:N1——遙控連接的直接命令輸入;N2——本地連接的直接命令輸入(發(fā)射機觸摸屏);N3——發(fā)射機實際數(shù)據。N1文件在指令寫入時發(fā)射機將做出反應,從N3文件則可讀取機器的實際數(shù)據進行監(jiān)測,通過對這兩個文件的修改和讀取來實現(xiàn)發(fā)射機的控制。
3 OMRON通信協(xié)議宏的簡介與應用設計
3.1 通信協(xié)議宏概述
通信協(xié)議宏是PLC具有的一種通信控制功能,用于為符合具有串行通信端口的通用外部設備的通信規(guī)范的通信協(xié)議創(chuàng)建宏。支持與幾乎所有具有RS-232C或RS-422A/485端口外部通用設備的通信,通過編制通信協(xié)議指令實現(xiàn)對外部通信設備的相應數(shù)據采集和控制。
CX-Protocol是創(chuàng)建協(xié)議宏應用軟件。協(xié)議宏由通信指令系列組成,支持硬件是PMSU(串行通信單元)。CX-Protocol將協(xié)議宏傳送至PMSU、通過CPU單元上的PMCR指令來指定協(xié)議宏的序號并執(zhí)行通信序列。一個通信指令序列由若干步組成,每個步由發(fā)送、接收或者發(fā)送與接收指令組成;可允許用戶根據處理結果來重復、結束這些步或者對這些步生成分支。
3.2 通信協(xié)議宏的創(chuàng)建
根據上面的表格,我們先將這些常用操作指令轉換成發(fā)射機通信協(xié)議的指令幀(即協(xié)議宏的通信報文),通信報文分為發(fā)送報文和接收報文,包含有:報頭、地址、長度、數(shù)據、錯誤檢驗碼和終止符,但每個字段不是必需的,在發(fā)送報文中,可以僅有數(shù)據字段(實際上數(shù)據字段就已經包含有報頭、地址、錯誤檢驗碼和終止符);在接收報文中,存在終止符時,報頭、地址、長度、錯誤檢驗碼也可以不存在,如果數(shù)據長度固定,則終止符也可以不存在。
根據M2W發(fā)射機的協(xié)議說明,無論在寫或讀操作,發(fā)送完成后發(fā)射機均會返回一個響應幀,如果出錯則要求重發(fā),正確則發(fā)送“1006”確認該操作。
3.3 寫控制幀格式
發(fā)送命令:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>+<DLE>+<ETX>+<CRC16>
返回:響應+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<EXT STS>+<DLE>+<ETX>+<CRC16>其中,發(fā)送報文可以定義<DLE>+<STX>為報頭字段;<DST>+<SRC>為地址字體;<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>,可這數(shù)據字體,<DATA>為寫入N1中相應操作位的數(shù)據<DLE>+<ETX>為終止符;<CRC16>為錯誤校驗碼。接收報文中的“響應”有三種:接收正確─“1006”;接收錯誤─“1005”;校驗錯誤─“1015”
以發(fā)送“開機”操作指令為例:10 02 01 09 0F 00 88 03 AA 02 0F 89 02 00 01 00 10 03 20 8d將N1中的“開機位”置“1”,返回:10 06 10 02 09 01 4F 00 88 03 10 03 0d c4,則再發(fā)送“1006”確定執(zhí)行開機操作。如果返回“1005”或“1015”則重發(fā)操作指令。
3.4 讀控制幀格式
發(fā)送命令:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC A2>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DLE>+<ETX>+<CRC16>返回:響應+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<DATA >+<EXT STS>+<DLE>+<ETX>+<CRC16>其中< FNC A2>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>給出功能碼和讀取的范圍和文件類型,其它字段與寫控制的相同。返回時,<DATA>字段為讀取的機器狀態(tài)數(shù)據,可用W()指令寫入DM數(shù)據存儲區(qū)。
由于讀取范圍要求不超過240字節(jié),機器的狀態(tài)數(shù)據需要分三次才能全部讀出,如發(fā)送:10 02 01 09 0F 00 01 01 A2 EE 11 89 00 00 10 03 e0 0f則返回10 06 10 02 09 01 4F 00 01+<DATA>+00 10 03 28 64,這樣我們可以讀取到0~240字節(jié)的數(shù)據,其它數(shù)據讀取修改范圍即可。
3.5 協(xié)議宏的創(chuàng)建
協(xié)議宏的一個序列由最多16個步組成,一個步包含一條命令操作,該命令分為:“發(fā)送”、“接收”、“發(fā)送與接收”、“打開”、“關閉”、“刷出”或“ 等待”,通過步中的“下一個過程/出錯過程”來指定執(zhí)行下一步。協(xié)議宏就是通過“步”發(fā)送和接收處理通信報文,完成指令操作的執(zhí)行,所以創(chuàng)建協(xié)議宏可分兩步完成。(1)首先,將“開機”操作指令按寫控制幀格式轉換成協(xié)議宏的發(fā)送報文(Send Message),Send Message為:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>+<DLE>+<ETX>+<CRC16>,按圖2設置相應字段并存儲為Send Message 1,也可直接設置在數(shù)據字段里。
圖2
然后,按返回的數(shù)據格式編制 “接收報文(Recv Message)”,Recv Message為:響應+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<EXT STS>+<DLE>+<ETX>+<CRC16>,也設置相應字段并存儲為Recv Message2。如果是讀命令,則將該數(shù)據寫入DM存儲器中。(2)在“步”中設置命令為“發(fā)送與接收”,發(fā)送報文設置為創(chuàng)建的“開機”發(fā)送報文,接收報文可以設置為 “接收報文”或“矩陣”,然后再選擇“下一個過程”。其執(zhí)行流程如圖3所示。
圖3
3.6 CX-Protocol軟件操作
(1)創(chuàng)建各報文:打開CX-Protocol軟件,從“File”(文件)菜單中選擇“NEW”(新增)創(chuàng)建一個項目,創(chuàng)建項目后從PLC菜單中選擇“Edit PC-PLC Comms Settings”(編輯PC-PLC通信設定);在項目文件下創(chuàng)建協(xié)議列表(New Protocol list),右鍵點擊“Create/Protocol”(創(chuàng)建/協(xié)議),指定下列項:協(xié)議名稱、序列起始號、序列結束號和目標;右鍵點擊“Create/Sequence”編制協(xié)議序列,指定下列項:鏈接字、傳送控制參數(shù)、響應類型和監(jiān)測時間(Tr、Tfr、Tfs),一個協(xié)議序列對應一條M2W發(fā)射機操作命令;在通信序列中右鍵點擊“Create/Step”(創(chuàng)建/步),指定下列項:重復計數(shù)器、命令、重試計數(shù)、發(fā)送等待時間、發(fā)送報文、接收報文、有/無響應寫入、下一個過程和出錯過程,每一步就是一條協(xié)議指令。右鍵點擊步列表中的“Send Message”(發(fā)送報文)或“Receive Message”(接收報文)字段,然后從彈出菜單中選擇“New Message”(新報文),將全部使用到的協(xié)議指令輸入為通信報文,必要時做好注釋,便于讀懂程序。(2)創(chuàng)建矩陣:如果要根據不同的響應報文決定下一步執(zhí)行的步(Step),就需要創(chuàng)建矩陣來完成。右鍵點擊“Create/Matrix”(創(chuàng)建/矩陣)和“Create/Martrix Case”(創(chuàng)建/矩陣實例),預先設定可能返回的響應報文數(shù)據,改變各響應報文的下一個控制步,一個矩陣中允許最多設定15種報文。如圖4,寫控制指令時,可將“接收B“設為”1006,下一步為發(fā)送“1006”確認;“接收C”為“1005”和“接收C”為“1015”,下一步為重新發(fā)寫指令。(3)傳送項目:選中項目名稱,點擊菜單Protocol-Download Protocol,將以上創(chuàng)建的項目傳送至PMSU(從個人計算機到PMSU)。
圖4
3.7 創(chuàng)建梯形圖程序
梯形圖程序主要有按時間表自動試機、開關機程序和故障處理等程序。梯形圖程序段較長,這里主要介紹在梯形圖中如何調用協(xié)議宏指令。在梯形圖中通過使用PMCR命令來調用協(xié)議宏指令,首先為PMCR指令分配一條功能代碼,然后執(zhí)行PMCR指令。
圖5
如圖5所示:控制字1為#02E1,其中0為通信端口(內部邏輯端口號0);2為端口2;E1為內插板(串行通信板);控制字2為#2,表示執(zhí)行02號通信序列。第一個發(fā)送字為100,發(fā)送數(shù)據首字(DM100)
第一個接收字為200,接收數(shù)據存儲首字(DM200)。當“T機開機”位1213.14置ON并將協(xié)議宏執(zhí)行標志(1919.15:端口2)置OFF時,將調用PMSU上注冊的02號通信序列,從而在通信端口允許標志(A202.00:使用0號通信端口的內部邏輯端口)為ON的情況下經由PMSU的端口2發(fā)送和接收數(shù)據。
4 系統(tǒng)硬件連接與測試
4.1 PLC需要用到的兩個通信連接
4.1.1 電腦CX-Protocol軟件與PLC的編程連接
首先,必須先用編程電纜將電腦CX-Protocol軟件連接到PLC的CPU外設口或內置RS-232C口上,然后,設置PLC“設備類型”、和“網絡類型”。
4.1.2 PLC通信板(CS1W-SCB41-V1)與受控通信設備的通信連接
(1)將串行通信板(CS1W-SCB41-V1)插入CS1的CPU模塊中,設置終端電阻ON/OFF開關為“ON”及線制開關2線/4線撥到“4”的位置。將通信板(CS1W-SCB41-V1)上的端口2(RS-422A/485)與M2W發(fā)射機的RS-485端口連接。(2)制作通信板與發(fā)射機的數(shù)據連接線,并連接好兩端通信口。(3)根據M2W的通信協(xié)議參數(shù)設定為:協(xié)議:全雙工;和檢驗:CRC;COM口:RS422;波特率:19200;每字位數(shù):8;奇偶Parity:偶數(shù);停止位Stop bits:1。
5 系統(tǒng)調試
CX-Protocol提供了數(shù)據跟蹤和監(jiān)測功能,當執(zhí)行數(shù)據跟蹤操作時,從該點開始,串行通信板對發(fā)送/接收報文中按時間順序排列的數(shù)據執(zhí)行跟蹤記錄,通過跟蹤發(fā)送或接收數(shù)據和信號,可根據步來檢查發(fā)送或接收和各條報文的內容并將其與預設的序列進行對比,查找程序的出錯原因。筆者在調試中體會到在使用通信協(xié)議宏時,必須注意下面幾個問題,否則可能會造成通信失敗。(1)執(zhí)行PMCR指令時,最好使用上升沿微分觸發(fā)PMCR指令,否則可能引起各條指令間的沖突。(2)根據實際測試發(fā)射機的接收和反饋時間,設置發(fā)送完成監(jiān)測時間Tfs為0.2S、接收等待監(jiān)測時間Tr為0.2S和接收完成監(jiān)測時間Tfr為0.4S,既能保證指令的完整發(fā)送,又節(jié)省等待時間,并可以防止協(xié)議宏進入死鎖狀態(tài)。(可參考操作手冊中監(jiān)測時間的計算方法)。
6 出錯處理
PLC設置有特殊輔助區(qū),存儲PLC運行狀態(tài),協(xié)議宏在發(fā)生以下任一錯誤時,根據設定的重試計數(shù)自動重復執(zhí)行同一個步(最多3次):① 監(jiān)測時間(Tfs、Tr、Tfr)已過。②發(fā)生了接收通信錯誤。③接收報文不正確。④校驗碼存在錯誤。
發(fā)生異常時,可通過這些狀態(tài)了解異常情況,并可應用這些狀態(tài)位進行程序保護。以CS1為例常用的有:
7 結束語
通信協(xié)議宏不單可以實現(xiàn)對中波發(fā)射機房M2W發(fā)射機的自動化控制,而且還可以應用在各種具有串行通信端口的設備上;如果采用RS-422A/485串行通信端口,還可以實現(xiàn)1:N控制(最多32部)外部通信設備。此應用系統(tǒng)在我臺投入運行以來,能安全、穩(wěn)定、可靠地工作,整個控制系統(tǒng)靈活、方便、一體化控制,大大提高了廣播播出系統(tǒng)自動化、網絡化的管理水平,具有很好的實用性和行業(yè)中的推廣價值。
關鍵詞:網絡協(xié)議 動態(tài)鏈接庫 協(xié)議工作說明書
一、引言
PRT-GET定義為一個協(xié)議模擬器,所謂協(xié)議模擬器就是通過某種途徑模擬各式各樣的網絡通信協(xié)議從而可以進行具體而實際的網絡通信,最終達到同時支持多種通信協(xié)議的目的。PRT-GET不同于現(xiàn)今網上存在的各種網絡工具,使用它可以編寫基本上所有的基于Socket應用層的通信協(xié)議,PRT-GET的設計解決了用戶使用網絡工具時難以支持新出現(xiàn)的協(xié)議的問題。
二、PRT-GET的特點
作為一個優(yōu)秀的協(xié)議模擬器,PRT-GET具備以下的幾個特點:
1.PRT-GET是一個動態(tài)鏈接庫??紤]到應用程序的擴展極其的不方便,所以沒有把PRT-GET設計成應用程序的形式,而采用動態(tài)鏈接庫的方式,該方式可以方便地進行二次開發(fā),也方便擴展軟件的功能。
2.PRT-GET是完全面向對象的。PRT-GET是一個可二次開發(fā)的動態(tài)鏈接庫,所以面向對象的設計模式能令二次開發(fā)更加高效。
3.PRT-GET的代碼擴展性高。使用PRT-GET時,如果PRT-GET本身提供的功能不夠,那么用戶可以通過擴展PRT-GET中對應的類,以實現(xiàn)自定義的功能。
4.PRT-GET支持自定義協(xié)議。PRT-GET的最大特色就是支持用戶自定義應用層協(xié)議,通過用戶編寫的協(xié)議工作說明書,PRT-GET忠實地執(zhí)行用戶在說明書中指定的每一個操作,也就是說,用戶無需編寫任何一句代碼就可以使PRT-GET支持自定義協(xié)議。
5.PRT-GET的使用方便。PRT-GET使用時只需要調用動態(tài)鏈接庫就可以輕松地使用其中的協(xié)議控制類。
三、PRT-GET的設計
1.PRT-GET的工作層次
PRT-GET設計為一個動態(tài)鏈接庫,它為系統(tǒng)應用程序提供中間層服務,使得應用程序無需了解網絡通信的具體邏輯,只需把網絡的內容當作本地的內容操作即可,從這點看起來PRT-GET也是一個協(xié)議,而且更是一個能提供很多協(xié)議服務的協(xié)議支持軟件。PRT-GET在網絡中的工作層次如圖1所示。
對于使用PRT-GET作為網絡通信協(xié)議的應用程序來說,用戶可以指定PRT-GET使用哪個協(xié)議進行工作,因為PRT-GET是在需要使用時才加載協(xié)議內容的,所以用戶可以隨時動態(tài)指定PRT-GET使用的協(xié)議,甚至可以動態(tài)修改PRT-GET使用的協(xié)議內容。當協(xié)議組里面包含的協(xié)議不滿足用戶要求時,用戶還可以添加新的協(xié)議,這只需要添加一個協(xié)議工作說明書到協(xié)議組里面就可以了。
應用程序
計算機
PRT-GET
協(xié)議組
協(xié)議內容
服務器
服務程序
用戶
圖1 PRT-GET工作層次
PRT-GET工作時根據用戶指定的協(xié)議加載協(xié)議工作說明書,然后再依照協(xié)議說明書內容與遠端服務器/客戶端協(xié)作工作。對于PRT-GET來說,遠端機器是透明的,PRT-GET的機器透明性是基于工作在TCP協(xié)議上的Socket的,所以對于PRT-GET來說沒有機器的差別,沒有平臺的差別。
2.PRT-GET的幾個概念
在PRT-GET中,有一些基本概念貫穿于整個PRT-GET的設計和實現(xiàn)過程中。
(1)協(xié)議
PRT-GET中的協(xié)議對應著一個網絡協(xié)議。協(xié)議在PRT-GET程序中只是一個邏輯的存在,并沒有具體的某個協(xié)議的實現(xiàn),所以如果要使PRT-GET支持某個協(xié)議的話,需要編寫一個具體的協(xié)議工作說明書與PRT-GET相配合。也就是說協(xié)議工作說明書是PRT-GET的具體協(xié)議的載體,也是PRT-GET支持協(xié)議的體現(xiàn)。
(2)元素
元素是PRT-GET的一個新概念。所有的協(xié)議都是一些基本通信單元的組合,而PRT-GET就是通過將協(xié)議分解成一個個的基本單元從而做到支持各種協(xié)議的。這種基本單元就是元素。元素是PRT-GET中協(xié)議構成的基本單位,一個PRT-GET的協(xié)議本質上就是一些PRT-GET的元素序列,同樣的,對元素的不同組合可以生成不同的協(xié)議,這就是PRT-GET可以支持不同協(xié)議的本質原因。
程序中的一個元素類的對象對應著協(xié)議工作說明書的實際一行,也就是代表著通信交互中的一個基本交互單元。協(xié)議工作說明書中指定了每一個通信單元應當使用的元素類,并執(zhí)行相應動作實現(xiàn)對應的通訊單元。
為更好的實現(xiàn)通訊單元的分割和減少通信協(xié)議工作說明書的編寫難度,定義了動作元素和輔助元素這兩個概念。
動作元素:對應著一個通訊基本操作,它指明了對于本次操作應該如何進行。
輔助元素:對動作單元進行輔助處理的單元,它是從屬于動作單元,一個動作元素可以有零個或多個輔助元素。
動作元素和輔助元素指定了協(xié)議的一個通信單元的工作方式,而本次通信的內容就由內容項指定了。一個元素由動作元素和輔助元素、內容三項組成,其結構如下:
動作單元 [輔助單元]* [內容]
(3)分析器
PRT-GET中并沒有協(xié)議的實體存在,代替的是用協(xié)議工作說明書作為協(xié)議的載體,而協(xié)議工作說明書只是一個文本文件,如何將這個協(xié)議工作說明書的內容加載到內存并轉變?yōu)橐粋€一個對應的元素,這個工作是由分析器來解決的。
分析器有協(xié)議分析器和元素分析器兩種,分別用于不同用途。
協(xié)議分析器:協(xié)議分析器主要的工作是分析協(xié)議工作說明書并創(chuàng)建該說明書對應的元素序列,輔助Protocol實體的創(chuàng)建。
元素分析器:元素分析器的工作是從一個字符串中分解出輔助元素和內容,以支持元素類的動作。
PRT-GET工作流程
PRT-GET的使用非常的方便,只需要使用URL創(chuàng)建出具體的一個協(xié)議對象則可以與主機通信,而此URL的要求為“protocol://host: port/file”格式,其中port并不是必須的,如果沒有指定的話就會使用對應協(xié)議的協(xié)議工作說明書中指定的默認端口。
PRT-GET工作時,將會根據用戶提交的協(xié)議名檢查其協(xié)議說明書庫中是否有該協(xié)議,如果發(fā)現(xiàn)對應的協(xié)議不存在則拋出一個異常提示用戶。找到指定協(xié)議后,PRT-GET將創(chuàng)建一個協(xié)議對象以實現(xiàn)通信,并將協(xié)議工作說明書加載進內存中,分析生成一個元素序列,最后就執(zhí)行元素序列以實現(xiàn)實際通信目的,其工作流程如圖2所示。
是
讀取
否
開始
結束
查找協(xié)議工作說明書
協(xié)議組
協(xié)議存在
拋出異常
創(chuàng)建協(xié)議對象
分析工作說明書
執(zhí)行元素動作
圖2 PRT-GET工作流程圖
四、主要包的設計
對PRT-GET的設計采用按功能結構分包的方式,將功能相近的類放置在一起,并按邏輯位置將其放在不同的命名空間之中。
PRT-GET中最核心的三個包分別是Element(元素包)、Analyze(分析工具包)和Util(其他工具包),此外,還有ProtocolManager和Protocol兩個核心類。
PRT-GET將網絡操作分為基本的單元——元素,在程序中的體現(xiàn)就是元素(Element對象),PRT-GET將所有的元素類都放置在Element包中,并通過接口IElement實現(xiàn)元素動作的統(tǒng)一。
Analyze包是一個存放存放分析器的包。PRT-GET經常需要對協(xié)議工作說明文件進行分析,這就需要一個分析器專門對協(xié)議中的字符串進行分析,Analyze包中的類就是負責此類工作。
PRT-GET在進行一些處理時經常會用到一些方法,為增加代碼的重用率,將所有經常使用到的方法或操作封裝為類存放在Util包中。
五、協(xié)議工作說明書
協(xié)議工作說明書是協(xié)議的真正載體,它以“協(xié)議名+.prt”為文件名存放在PRT-GET動態(tài)鏈接庫目錄的“protocol”文件夾下,PRT-GET加載協(xié)議時到這查找該協(xié)議是否存在,當查找到時就會加載為一個協(xié)議實體。
1.協(xié)議工作說明書的組成
網絡通信主要是發(fā)送內容和接收內容,PRT-GET的主要作用就是屏蔽了這一層中繁瑣的通信,使得用戶可以直接對通信的有用內容進行處理。
基于網絡通信只有發(fā)送和接收兩種情況,協(xié)議工作說明書也只有兩種基本元素:Send和Receive。Send發(fā)送數(shù)據,而發(fā)送的數(shù)據可以是在協(xié)議說明書中指定的常量,也可以是用戶動態(tài)加載的內容。Receive同樣也可以接收常量,或者接收到內存中對應的元素的Data數(shù)據中。除了這兩種基本元素外,PRT-GET還擴展了另外兩種元素:Skip和Repeat。Skip能忽略用戶不感興趣的內容,Repeat的作用就是重復進行用戶的一些煩瑣的操作,這些對提高用戶的工作效率有很大的幫助。此外,還有其它一些輔助元素可以指定各種動作元素的具體操作內容。
2.協(xié)議工作說明書編寫要求
編寫協(xié)議工作說明書必須滿足以下格式:
Port 端口號
(Element名 [輔助元素名]* 內容)*
協(xié)議說明書的最開始應該是端口號說明,而后出現(xiàn)的是元素字符串。元素字符串由三部分組成,其中元素名是指該動作元素的名稱;輔助元素指定了動作元素的一些要求,一個動作元素可以有幾個輔助元素的存在;第三個部分就是內容,內容可以是常量內容,也可以是變量,也就是用戶指定的數(shù)據。
一個協(xié)議說明書只能由一個端口號,但是卻可以有多個元素,不同元素之間用換行隔開即可。定義一個協(xié)議說明書必須以該協(xié)議名稱加上“.prt”為協(xié)議工作說明書名稱,并將其放置在PRT-GET的動態(tài)鏈接庫目錄下的protocol文件夾內。
六、應用實例
多協(xié)議服務器是一個使用PRT-GET作為通信層的服務器軟件,以文件映射作為虛擬路徑管理手段。通過該服務器軟件可以設置虛擬目錄,用戶可以指定訪問需要使用的網絡協(xié)議(如HTTP),當有客戶端請求時,服務器調用PRT-GET創(chuàng)建一個協(xié)議實體執(zhí)行通信,并由服務器解釋請求的URL,將其映射為相關系統(tǒng)文件,客戶端可以和服務器進行通信,請求服務器上的文件資源如圖3所示。
圖3 利用PRT-GET模擬HTTP通信
七、結語
本文討論了多協(xié)議模擬器PRT-GET的設計思路和方法,并通過實例模擬HTTP協(xié)議驗證了文中所提設計方案的可行性。由于PRT-GET目前的版本設計中輔助元素還不夠多,模擬器的交互設計還有所欠缺,下一步將增加輔助元素的設計,豐富模擬器的功能,增強其應用的靈活性。
參考文獻
[1] 陳富春.ASP.NET中XML數(shù)據與關系數(shù)據的交互技術.現(xiàn)代計算機.2005(04):P35-37
路燈定時器調時間的方法如下:
路燈定時器采用先進的嵌入式微型計算機控制技術的高級時控器,根據用戶節(jié)能需要多路任意編程同時啟用;路燈定時器是通信協(xié)議正常運行的基本要素之一,主要用于各種定時和幀重傳的任務;路燈定時器通信協(xié)議在單片機系統(tǒng)上實現(xiàn)所使用的定時器,定時精度要求不高,但數(shù)量要求比較大;路燈定時器由于硬件資源有限,不能為每一個單獨任務分配一個硬件定時器,只能通過單個硬件定時器模擬多個軟件定時器的方法,來滿足協(xié)議中的定時應用需要。
(來源:文章屋網 )
現(xiàn)場執(zhí)行層可以采用直接硬連線方式(通過電流或電壓信號完成控制器與設備間的信息傳遞)、網絡連接方式(以太網方式連接控制器和設備,控制器與設備之間根據某種通信協(xié)議完成信息交換)等不同的網絡接入方式連接設備。②現(xiàn)場控制層:主要包括區(qū)域控制器和專用控制器,這些控制器可以獨立處理、控制數(shù)據,各個控制器之間以太網或其他網絡連接方式連接,根據某種通信協(xié)議完成交換信息。③信息管理層:主要負責所有信息技術以及網絡技術的統(tǒng)一管理,各個信息管理工作站之間會用計算機廣域網或局域網進行連接。
2.無線網絡技術應用于智能樓宇控制的可能性與挑戰(zhàn)性
在現(xiàn)代無線技術的快速發(fā)展與應用的背景形勢下,以太網為主的連接方式以及組網方式受到極大的沖擊,經大量的市場研究調查分析,現(xiàn)場執(zhí)行層以及信息管理層可以無線網絡技術來替代有線的連接方式的可能性最大。因為現(xiàn)場執(zhí)行層的傳感器節(jié)點較多,有線連接的布線部署比較困難,工程難度較大,而且像舊大樓、工廠生產車間以及博物館等地方根本無法布線,采用無線連接的部署非常方便,傳感器節(jié)點可以增加,位置也可以變換。在信息管理層應用無線連接的方式可方便用戶隨時隨地通過移動設備控制、管理整個信息系統(tǒng),信息的管理以及維護比較便捷。但是無線網絡會由于樓宇內部環(huán)境的特殊性,經常受到多途徑的傳輸干擾、障礙物反射以及傳輸沖突等問題,從而影響無線網絡技術的可擴展性以及可靠性,使寬帶通信數(shù)據的吞吐量受到影響。而有線網絡擁有巨大的網絡寬帶資源,信息受到保護,因此比較安全、可靠,這是無線網絡技術所欠缺的很重要的一點,因此無線網絡技術無法完全取代有線網絡。目前智能樓宇自動控制系統(tǒng)的信息管理層基本都采用的是無線網絡連接技術,并且受到廣泛好評,然而在現(xiàn)場執(zhí)行層的無網絡應用技術仍處于探索階段。
3.現(xiàn)場執(zhí)行層的無線網絡技術應用分析
智能電網指的是電網智能化,是電網技術發(fā)展的2.0版本。智能電網以信息和通信技術為支撐,建設高集成度、高速信息傳遞的電網系統(tǒng),利用高速傳感器以及先進測量技術,引進理念先進的決策支持系統(tǒng),對電網的可靠、安全、經濟、高效以及友好應用提供強有力的支持。
2智能電網運行特點
智能電網在設計和運行過程中,利用高速雙向通信通道進行信息傳遞,并利用傳感器技術、測控技術等進行數(shù)據采集和指令的執(zhí)行??偟膩碚f,智能電網運行特點如下。
2.1自愈功能
智能電網的自愈功能是指當電網在遭受突發(fā)事故破壞時,例如雷擊、地震、火災或其他自然災害以及人為破壞后,能夠在短時間內對故障進行診斷、定位、隔離以及修復,以自身能力對電網進行保護,實現(xiàn)電力系統(tǒng)的安全運行。自愈功能發(fā)揮作用的基礎是系統(tǒng)對電網實時狀態(tài)的監(jiān)控和掌握,能夠在盡可能少的人工干預下,進行備自投、故障隔離等操作,實現(xiàn)電網的自我恢復。
2.2較高的兼容性和集成性
智能電網的標志之一是較好的兼容性和較高的集成性。智能電網的兼容性首先表現(xiàn)在數(shù)據格式的兼容,能夠提供不同的數(shù)據格式的支持;其次,表現(xiàn)在設備的兼容性上,不同廠家、不同標準的設備能夠與智能電網進行互通和運行;智能電網的兼容性還表現(xiàn)在對于不同用戶的用電需求能夠實現(xiàn)精確控制,滿足不同用戶的需求。高度集成的系統(tǒng)對于信息采集、處理以及信息安全的保障具有重要作用。
2.3安全性
智能電網的安全性除保證電網的供電安全外,還包括與變電站、客戶、終端設備之間的通信網絡的數(shù)據信息安全,智能電網通信技術目前應用較為廣泛的是光纖通信,數(shù)據流量大,通信質量有保障。
3智能電網信息及通信技術關鍵問題
當前,智能電網信息及通信技術的研究熱點,主要集中在通信技術、信息安全以及通信體系標準化建設等方面,這些關鍵技術的革新,將會給智能電網的建設及發(fā)展帶來飛速發(fā)展的契機。
3.1通信技術問題
通信技術及通信網絡,是智能電網信息輸送的動力源泉以及大動脈,對于智能電網終端信息采集、數(shù)據傳輸以及保護、網絡控制等意義重大。解決通信技術及通信網絡的建設問題,是發(fā)展智能電網的基礎保障。當前,以光纖通信為代表的信息通信技術是該領域的主流。
3.1.1光纖通信技術問題
光纖通信技術是以光纖作為信息傳遞的通道和載體,實現(xiàn)數(shù)據互通的技術。一般而言,光纖通信技術可以借助MPLS(Multi-ProtocolLabelSwitching,多協(xié)議標簽交換)技術將傳統(tǒng)光纖由2M帶寬擴容到100M,可有效降低成本。目前智能電網光纖通信技術的主要問題是在架設以及更換加掛時光纜型式的選擇。智能電網通常采用OPGW、OPPC、ADSS等光纜進行網絡建設。OPGW光纜在敷設時具有以下兩種優(yōu)勢:第一,OPGW光纜在敷設時與地線可復用架設,能夠減少工程量,降低成本。第二,OPGW光纜能夠將信號在傳輸過程中的損失控制到較小的程度,適用于智能電網長遠距離信息傳輸使用,以確保通信質量。其主要缺點是易受雷擊,需附設防雷擊裝置以對其進行保護。而ADSS光纜相較于OPGW而言,在防雷擊方面具有明顯優(yōu)勢;且由于其采用低密度材料,在敷設時更加便于施工,對輸電線路影響更小;此外,該光纜敷設采用桿塔添加形式,維修和線路優(yōu)化工作便于展開。該光纜應用的主要缺點在于電腐蝕情況較為明顯。OPPC光纜目前主要在發(fā)達國家應用,其主要特點是能夠與相導線復合使用,借助相導線的高壓對光纜形成天然的保護,成為OPGW以及ADSS光纜敷設盲區(qū)的最佳替代品。三者相比,OPPC以及OPGW光纜主要適用于新建線路中,而ADSS光纜則主要用于老舊線路加掛時使用。
3.1.2電力通信技術問題
電力通信技術目前主要問題有兩種:第一,電力線纜本身的射頻干擾以及載波頻率過低,都對其尋找合適的替代品帶來較大難度,另外,新材料應用的技術難題也困擾著電力通信技術的發(fā)展。第二,互聯(lián)網通用的TCP/IP協(xié)議無法兼容與電力線通信,許多新技術難以得到應用。針對目前電力通信技術的主要問題,一方面可以從開發(fā)新型信息承載材料入手,解決電力線纜的使用弊端;另一方面,BPL標準開發(fā)的發(fā)展,將為未來電力線兼容互聯(lián)網協(xié)議提供標準體制上的極大助力。
3.2信息安全技術問題
智能電網從自身分布式的系統(tǒng)以及終端獲取運行數(shù)據信息,實現(xiàn)數(shù)據的交換,因而,信息傳輸?shù)陌踩c否直接關系到電網運行的安全,甚至能夠影響國家戰(zhàn)略部署和社會安定。因此智能電網ICS/MCS系統(tǒng)的安全問題顯得愈發(fā)重要。ICS/MCS系統(tǒng)的安全問題主要包括物理安全、運行安全以及信息安全三個方面。而由于智能電網的數(shù)字化程度高,易遭受網絡惡意代碼的攻擊,對電網造成極大威脅,這類威脅主要分為主觀威脅和客觀威脅兩類??陀^威脅主要來自電網內部,包括自身電力設備及網絡設備的損壞或故障,由于工作人員的疏忽帶來的威脅也屬于客觀威脅;而主觀威脅則主要來自系統(tǒng)外部,主要包括商業(yè)間諜、犯罪分子以及網絡黑客的攻擊。智能電網信息安全防護的重點在于保證信息的完整性以及及時性,一旦信息完整性被破壞,無法及時進行傳遞,會造成整個電網運行的控制指令的錯誤甚至電網癱瘓。而傳統(tǒng)信息安全中所指的私密性在電網信息安全中反而處于較低的優(yōu)先級。為保證智能電網信息安全,需建立完整的信息安全方案,主要目的是:①設備接入控制:防止除系統(tǒng)許可的各類電氣設備、網絡設備等之外的設備接入系統(tǒng)。②數(shù)據信息認證:確認系統(tǒng)接收信息來源的合法性和信息完整性。主要技術手段可采用:第一,對終端各設備進行離線注冊并分別分配密鑰,并采用基于IBE策略的訪問控制及認證,確保終端設備接入的合法性。第二,采用基于HASH函數(shù)的信息完整性確認技術,確保系統(tǒng)接收到信息的完整性。
3.3標準體系構建問題
目前,對智能電網的繼續(xù)發(fā)展形成掣肘的主要問題之一便是標準體系遲遲未能完善。智能電網的建設牽涉到種類繁多的電氣設備、網絡設備,類型多樣,需要構建一個統(tǒng)一的標準體系來確保各設備之間協(xié)調運行,形成這個標準體系的主要組成包括通信協(xié)議和標準。其中通信協(xié)議主要包括互聯(lián)網TCP/IP通信協(xié)議,而通信標準除了包括BPL標準外,還包括BACnet、IECTC57、IEC61400-25、IEEE802和1588等。從電網的發(fā)電、輸電、配電、送電和用電五大環(huán)節(jié)中,前三個環(huán)節(jié)目前在我國基本形成了比較完善的通信協(xié)議標準體系,以IEEE體系作為基本標準,對電網廣域時間進行同步,同時借助PTP等協(xié)議對發(fā)電控制系統(tǒng)進行精確調節(jié)。但是,在送用電環(huán)節(jié),由于涉及到的用戶較多,用電設備種類覆蓋面積大,因此尚未與電氣生產商達成廣泛共識,形成統(tǒng)一的送用電標準體系,該項工程將會是未來智能電網發(fā)展的重點。
4結語
關鍵詞:同步串行接口;SPI;FPGA;Verilog HDL
中圖分類號:TP319文獻標識碼:A文章編號:16727800(2012)009009202
0引言
SPI(串行設備接口)是一種廣泛使用的串行數(shù)據傳輸協(xié)議,主要用于微處理器與外設的高速通訊。由于它速度快,通信協(xié)議簡單,占用外部IO口少,相對來說較穩(wěn)定,因此廣泛應用于AD轉換器、串行EEPROM、高速時鐘、FLASH、DDS以及LCD顯示驅動等領域。
另外,SPI口的時鐘速度、數(shù)據位長度、時鐘模式可以靈活控制,實質上是一個長度可編程的移位寄存器,為提高其集成性和經濟性,經常通過其它芯片模擬SPI。本文介紹了一種基于FPGA設計模擬SPI的方法,完成了SPI的基本功能,具有一定的實用價值。
1SPI協(xié)議基礎
SPI是一種同步串行通信方式,數(shù)據是一位接一位進行傳輸?shù)?,主要是以主從方式工作的。主設備(Master)與從設備(Slavel)之間的連線方式如圖1,其中,主設備一個,從設備可為一個或多個。
MOSI:主設備數(shù)據輸出從設備數(shù)據輸入;MISO從設備數(shù)據輸出主設備數(shù)據輸入;SCK:時鐘信號由主設備產生,MOSI、MISO都是基于此時鐘信號完成數(shù)據傳輸;SSEL片選控制信號,控制芯片是否被選中成為SPI的從設備,低電平有效。SPI工作時序如圖2。
2SPI模塊代碼設計
本設計中SPI同步串口的設計主要采用硬件描述語言Verilog HDL來完成,由于FPGA模擬SPI主設備的設計與FPGA模擬SPI從設備的設計思路基本一致,而且FPGA模擬SPI主設備的設計更為復雜,所以,下面以FPGA為主設備為例介紹SPI同步串口的實現(xiàn)方法。
FPGA模擬SPI主設備實現(xiàn)的邏輯實現(xiàn)框圖如圖3所示。它主要包含3個模塊的設計:SCK產生模塊、發(fā)送數(shù)據模塊、接收數(shù)據模塊,下面將一一介紹其程序的實現(xiàn)方法。
2.1SCK產生模塊
同步時鐘信號SCK一般由輸入時鐘信號CLK分頻產生,在FPGA中對時鐘進行分頻一般有兩種方法:鎖相環(huán)的IP核分頻和直接采用Verilog HDL語言分頻。SCK的大小可由設計者靈活控制,但前提是一定要滿足從設備的時序要求,從設備對SCK一般包含3個方面的限定:SCK的周期最小值、SCK高電平的最小值、SCK低電平的最小值。
2.2數(shù)據發(fā)送模塊
如上圖3可知,數(shù)據發(fā)送模塊主要包含3個輸入信號時鐘信號CLK、復位信號RESET和兩個輸出信號片選信號SSEL、主設備發(fā)送給從設備的串行數(shù)據MOSI。
片選控制信號SSEL置低時有效,主設備開始和從設備進行數(shù)據交換,數(shù)據交換完成的是以字節(jié)為基本單位,當FPGA模擬SPI主設備時,字節(jié)數(shù)可以根據從設備的不同而自動調節(jié)。主從設備一般有兩種數(shù)據交換方式:若主設備在SCK上升沿發(fā)送和下降沿接收,則從設備也在SCK上升沿發(fā)送和下降沿接收;若主設備在SCK下降沿發(fā)送和上升沿接收,則從設備也在SCK下降沿發(fā)送和上升沿接收。設計SSEL信號時一般要考慮以下幾點:①SSEL到SCK上升沿的最小時間;②SSEL到SCK下降沿的最小時間;③數(shù)據交換的字節(jié)數(shù)。
假若主設備在SCK上升沿發(fā)送,數(shù)據交換為2個字節(jié)(16bit),數(shù)據發(fā)送模塊設計代碼的流程如圖4。
其中,Txdata為發(fā)送的16bit數(shù)據寄存器,發(fā)送開始時先將i置15,檢測到SCK的第一個上升沿時,將片選信號SSEL拉低選中從設備,并將Txdata的最高位Txdata[15]送到MOSI串行線上,在SCK的下一個上升沿再將Txdata的次高位Txdata[14]送到MOSI串行線上,依此類推,一直到將Txdata的最低位Txdata[0]送到MOSI串行線后,若又檢測到SCK的上升沿,將片選信號SSEL拉高停止發(fā)送。
2.3數(shù)據接收模塊
數(shù)據接收模塊與數(shù)據發(fā)送模塊有所不同,主要包含五個輸入信號CLK、RESET、SSEL、SCK、從設備發(fā)送給主設備的串行數(shù)據MISO,無輸出信號。同樣,以數(shù)據交換為2個字節(jié)(16bit)為例,SCK下升沿接收數(shù)據,數(shù)據接收模塊設計代碼的流程如圖5。
其中,Rxdata為16bit的接收緩沖器,SSEL拉低時開始接收數(shù)據,一旦檢測到SCK下降沿,將MISO上的串行數(shù)據存入Rxdata的最低位Rxdata[0]中,當又檢測到SCK的下降沿時,將Rxdata左移一位,并再將MISO上的串行數(shù)據存入Rxdata[0]中,依此類推,當接收緩沖器 Rxdata全部更新一遍時,若檢測到SCK上升沿,將Rxdata 存儲值賦給Data_recieved,Data_recieved為最終接收到的16bit數(shù)據。
3仿真驗證及性能評估
FPGA芯片選擇Altera公司的Cyclone II系列的EP2C8T144I8,對整個FPGA為SPI主設備的設計在QuattusII 7.1中進行邏輯綜合,發(fā)現(xiàn)整個設計僅占用36個查找表的資源,用戶可以根據需要集成多個SPI主設備或從設備,F(xiàn)PGA內部時鐘最高可達到200MHz,通過分頻基本可滿足大部分的SPI設備對SCK的要求,另外,F(xiàn)PGA具有非常強大的外部接口單元,可以兼容。各種電平的接口,可與大部分的SPI設備直接連接。
在Modelsim SE 6.5中對整個設計進行仿真,其中Txdata為發(fā)送的數(shù)據,在測試程序中設定,Data_recieved為接收到的數(shù)據,整個測試過程就是一個自循環(huán)的過程,接收到的數(shù)據和發(fā)送的數(shù)據一致。若txdata=36785 (二進制為1000111110110001),SCK為CLK的十分頻,則仿真結果如圖6。
4結語
文中介紹了SPI的通信協(xié)議及其在FPGA上的代碼實現(xiàn)方法。用FPGA實現(xiàn)SPI接口通信,通過對設計代碼作少許的修改,SPI的時鐘速度、數(shù)據位長度、時鐘模式都可以根據實際需要靈活控制。另外,SPI串口實現(xiàn)占用的FPGA邏輯資源并不太多,設計者可以根據需要外擴同時連接幾個SPI主從設備。總之,用FPGA實現(xiàn)SPI接口通信具有一定的實用價值。
參考文獻: