前言:我們精心挑選了數篇優質控制器設計論文文章,供您閱讀參考。期待這些文章能為您帶來啟發,助您在寫作的道路上更上一層樓。
1高速握手
USB2.0設備連接到主機后,主機給設備供電并發送復位信號復位設備,之后設備進入全速模式工作,由圖2所示在fullspeed狀態檢測到SE0(linestate[1:0]=00)持續2.5μs后,高速握手開始,設備控制器進入sendchirp狀態,設備向主機發送一個持續時間大于1ms的K(linestate[1:0]=01)信號以檢測主機是否支持高速模式。設備進入recvchirp狀態并準備接收來自主機的JK序列。主機支持高速并檢測到K之后,向設備發送JKJKJK序列以檢測設備是否支持高速模式。設備控制器在recvchirp狀態成功檢測到3對JK序列后高速握手成功,進入到highspeed模式工作;否則,設備以全速模式工作。
2設備掛起
根據USB2.0協議,為了減小功耗,當總線3ms沒有動作時,設備需進入掛起(suspend)狀態,設備在掛起狀態只能消耗小于500μA的電流,并且進入掛起后設備需要保留原來的狀態。(1)全速模式掛起:檢測到總線狀態為SE0達到3ms,設備從fullspeed狀態進入suspend狀態。(2)高速模式掛起:設備工作在高速模式時,由于高速復位和高速掛起都是發送一個大于3ms的總線空閑信號,因此設備需要區分這兩個事件。如圖2,處于highspeed狀態時,設備檢測到總線空閑(SE0)3ms,進入hsrevert狀態。之后檢測總線狀態不為SE0,此后設備掛起。假如在hsrevert狀態后還檢測到SE0持續100μs,則判斷為高速復位,clrtimer2=1。設備狀態轉換到sendchirp狀態,開始設備的高速握手。
3掛起恢復
設備處于掛起狀態時,在它的上行口接收到任何非空閑信號時可以使設備恢復工作[5]。(1)全速掛起恢復:設備從掛起狀態起檢測到的不是持續的J,則恢復到fullspeed狀態,以全速模式工作。(2)高速掛起恢復:掛起時保留著高速連接狀態,highspeed=1且hssupport=1,掛起恢復需要判斷是由總線動作引起還是系統復位引起。設備中測到總線狀態為SE0,說明是由復位引起的掛起恢復,設備狀態進入sus-preset,然后檢測到SE0持續2.5μs后,進入高速握手過程sendchirp狀態;反之,檢測到掛起恢復信號K,則設備從掛起恢復到高速模式。
4復位檢測
集線器通過在端口驅動一個SE0狀態向所連接的USB設備發出復位信號。復位操作可以通過USB系統軟件驅動集線器端口發出復位信號,也可以在設備端RE-SET信號置1,進行硬件復位。(1)設備是從掛起狀態復位:在suspend狀態檢測到SE0時,設備跳轉到suspreset狀態,檢測總線狀態為超過2.5μs的SE0后設備啟動高速握手檢測,即進入sendchirp狀態。(2)設備從非掛起的全速狀態復位:設備在檢測到2.5μs<T<3.0ms的SE0狀態后啟動高速握手檢測。硬件縱橫HardwareTechnique(3)設備從非掛起的高速狀態復位:設備在high-speed狀態檢測到總線上持續時間3.0ms的SE0后,設備狀態轉換到hsrevert,以移除高速終端并重連D+的上拉電阻,此時為全速連接狀態;之后設備需要在100μs<T<875μs的時間內采樣總線狀態,檢測到SE0持續2.5μs后,進入sendchirp狀態,開始高速握手過程。
5仿真及驗證
關鍵詞:CAN_BUS調試系統通信協議
磁懸浮轉向架的懸浮由四組電磁鐵實現,每組電磁鐵都有獨立的懸浮控制器,控制該點的懸浮與下落。為了獲得最優的控制參數,需要在整個轉向架的懸浮過程中通過上位機監視軌道與電磁鐵之間的間隙、電磁鐵工作電流等狀態參數以及懸浮控制器的控制參數,動態地修改控制參數以觀察控制效果。
懸浮控制器之間是相互獨立的,上位機無法同時監控多個懸浮控制器,因此需要找到合理的通信方式使上位機同時與所有的控制器連接,使它們之間能夠實時傳遞數據。CAN總線是一種有效支持分布式控制和實時控制的多主的異步串行通信網絡。由于CAN總線具有較強的糾錯能力,支持差分收發,適合高噪聲環境,具有較遠的傳輸距離,在各個領域中得到了廣泛應用。CAN通信協議規定通信波特率、每個位周期的取樣位置和個數都可以自行設定,這保證了用戶在使用過程中的靈活性。選用CAN總線,無論是在抗電磁干擾方面還是在實時性方面都能夠滿足實驗要求。
圖1
1調試系統硬件端口的設計
懸浮控制器使用SJA1000作為CAN總線協議轉換芯片。SJA1000是一種獨立控制器,用于移動目標和一般工業環境中的區域網絡控制。它內建BASICCAN協議,并提供對CAN2.0B協議的支持。通過對片內寄存器的讀、寫操作,懸浮控制器的核心處理器能夠設置CAN總線通信模式,實現數據的發送與接收。它的傳輸速度很快,位速率可達1Mbit/s,可滿足高速大流量實時傳輸要求。
SJA1000在邏輯上實現了傳輸數據的編碼和解碼,若要與物理線路連接,必須借助總線驅動器。PCA82C250是協議控制器與物理鏈路之間的接口,可以用高達1Mbit/s的位速率在兩條有差動電壓的總線電纜上傳輸數據,它與SJA1000結合才能實現CAN總線通信。
圖1為CAN總線接口電路原理圖。圖中,SJA1000用16MHz的晶振作為基準時鐘,數據線AD0~AD7與核心控制器的低八位數據線相連,在CS、RD、WR的控制下可實現芯片寄存器的讀寫。RX0和TX0與PCA82C250數據輸入引腳相連,作為串行數據線。RX1與PCA82C250的參考電壓引腳5相連,向PCA82C250輸出參考電壓。PCA82C250的兩根輸出數據線之間加上120Ω的終端電阻,用以匹配線路。
上位機通過專用的USBTOCAN轉換器實現PC機與CAN總線的連接,市場上有很多這類產品,這里不再詳細說明。上位機主要提供人機交互界面,顯示狀態和控制器參數,并完成參數與程序的下載。
2通信協議構建
DSP控制器上的CAN總線端口要完成兩項工作:(1)上傳控制器的控制常量和電流、間隙等狀態參數,送給檢測系統;(2)讀取上位機下傳的待修改的控制參數,實現參數的在線修改,接收下傳的程序文件,實現DSP主程序的在線寫入。
在調試過程中,實現多DSP系統的在線聯調是很有效的調試手段。這樣,上位PC機不但能夠采集各控制器的狀態參數,還能夠對采集的數據進行整理與顯示,并能實時調整不同控制器的控制參數,最終實現控制器運行程序的遠程下載。
為實現CAN總線的數據傳送,需要定義參數包、程序包、命令包三種傳送數據包,并分別由0x11、0x22、0x33標示出來。根據數據傳送方向的不同,數據包的格式略有差異。考慮到CAN總線上的節點較多,為避免數據傳送過程中出現混亂的情況,定義數據發送的基本數據包大小為8個字節,即CAN總線一次傳送的最大字節數為8。
2.1下傳數據協議
下傳數據包括程序、參數、命令三種數據類型。
2.1.1參數數據包格式
上位機需要下傳的數據包括控制參數C1、C2、C3及給定間隙與電流,根據修改需要,每個參數都是單獨下傳的。下傳數據包的大小與CAN的最大有效傳送字節數一致,為8個字節。第一個字節指出數據包的類型(用Oxll標示),第二個字節指出參數類型(用0xx7標示),第三字節至第八字節指出傳送的有效數據,對應上面給定參數的參數標示依次為0x17、0x27、0x37、0x47、0x57。圖2所示為數據包的一般格式。
2.1.2程序數據包格式
FLASH寫入文件較大,一般有幾十K字節。控制系統采用的FLASH芯片AT29C010以128字節為基本操作單位。為了適應芯片,可將文件分成128字節的數據段,并為每個數據段標定次序。發送時,標出數據段號及該片數據所處段中的位置即可。控制器接收到128字節后,做一次寫入FLASH操作,數據包格式及說明見圖3。
2.1.3命令數據包格式
命令數據指出對下傳參數的操作,Oxx7+0x44表示對某一參數的修改生效,如:0x17+0x44使能C1,0x27+0x44使能C2,0x37+0x44使能C3。如果修改的參數不能滿足控制要求,調試員希望能恢復原來的運行參數,因此定義0x55為修改參數恢復命令,如:0x17+0x55恢復C1,0x27+0x55恢復C2,0x37+0x55恢復C3。0x66+0x66表示將下傳數據寫入最后的FLASH參數存儲區。命令數據包格式如圖4所示。
2.2上傳數據協議
上傳數據包的大小也為8個字節,數據包類型分為參數反饋、命令反饋兩種,參數反饋用于上傳DSP的實際運行控制參數及間隙、電流等狀態信息,命令反饋用于對PC機使能、寫入、參數恢復等命令的應答。
上傳數據依次為控制參數C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE。數據類型標示依次為0x17、0x27、0x37、0x47、0x57、0x67。由于上位機要同時接收多個控制器上傳的數據,所以為了正確區分這些參數,需要給上傳的數據包加入端口標示,指出數據包來自哪個總線端口。上傳的數據包在前面格式的基礎上還要加入對應于各控制器的CAN總線端口號。
上傳命令是對總線通信出現異常情況的應答,因為控制器隨時將控制參數上傳,且參數字節數較少,出錯的可能性較低,不需配備應答命令;而上傳程序的數據量較大,容易出現錯誤,必須配備應答命令,指示程序寫入過程。
因為控制器是周期性地掃描SJAl000的接收緩沖區,當總線連接的節點較多時,數據量較大,難免會發生數據漏收的情況;而且控制器對外部中斷的響應也會影響掃描周期,使接收緩沖區中未來得及讀取的數據被新數據沖掉。當控制器發現應接收的數據位置與已接收到的數據位置不符時,控制器發差錯命令給上位機,指出應接收的數據段號及位置,上位機接收到這一信息后重發相關數據。發送數據包包含CAN端口字節、命令標示、段號、位置號等信息。通信過程中也可能出現發送數據與接收數據不符的情況,因此有必要引入數據校驗算法。控制器將接收到的128字節校驗后得到的校驗值與接收到的校驗值作比較,一致后才將數據寫入FLASH;否則反饋回校驗值錯誤信息,上位機重發該段數據。發送數據包包含CAN端口字節、命令標示、段號、重發標示(0x88)等信息。
圖5
3通信程序設計流程
3.1控制器通信流程
控制器的通信部分主要在主程序循環中完成。每次主程序循環中,控制器都向調試系統發送當前C1、C2、C3、CURRENTl、CURRENT2、CLEARANCE等信息;一旦接收到調試系統下傳的信息,控制器便分析下傳信息的性質,對它們分別進行判別與應答。
圖5是控制器的通信流程。控制器上電后,程序從FLASH的參數存儲區(最后256個字節)讀取控制參數值,存人控制參數緩存中,作為參數初值。同時,控制器通過CAN總線接收上位機下傳的控制參數,校驗后存入控制參數緩存中。一旦接收到參數使能命令,則將緩存中的數據復制給C1、C2、C3等變量,作為實際的工作參數;調試完畢后,在接收到參數寫入命令后,將參數寫入FLASH的參數存儲區,作為永久工作參數。接收到程序數據包后,控制器首先檢驗數據的次序,保證接收到的數據按次序排列;接著代入校驗算法,將計算得到的校驗值和接收的校驗值作比較,不一致則給上位機反饋校驗值錯誤命令,要求上位機重發該段程序,否則將數據寫入FLASH。圖中監控信息的發送周期可根據情況確定。
3.2上位機通信流程
上位機是調試員與控制系統的接口,它顯示控制器的上傳參數,將調試員需要修改的控制參數下傳。為完成上述功能,調試界面應包括參數顯示窗口、參數輸入窗口、命令工具條等,必要的話,還應將狀態參數以曲線的形式顯示出來。調試人員根據狀態曲線調整控制參數。
本文設計的基于以太網的超聲檢測多軸運動控制系統是在復雜的多軸運動控制技術之上結合了遠程通信技術,以此來實現超聲檢測的遠程自動控制。此系統主要由上位機、多軸運動控制器、步進電機驅動器、步進電機、機械執行裝置、限位開關和超聲探頭等組成,其組成框圖如圖1所示。由上位機LabVIEW控制系統為多軸運動控制器發送運動指令,并由多軸運動控制器將運動信號拆分為步進信號和方向信號,再將這兩種電機控制信號發送給步進電機驅動器,步進電機驅動器將其轉化為角位移發送給步進電機,使步進電機轉動相應個步距角,以達到使步進電機按指令運動的目的。步進電機上安裝有機械執行裝置,用以固定超聲探頭,機械執行裝置上安有限位開關,以此控制電機的運動范圍,當電機運動到限位開關的位置時,限位開關發出限位信號到多軸運動控制器,運動控制器便停止發出使電機運動的脈沖信號。在進行自動超聲檢測時,Z軸方向機械執行機構上固定的超聲檢測探頭能夠在被檢測物體的表面按照上位機運動控制算法設計的運動軌跡進行連續檢測,并實時向PC機返回探頭的位置信息,并將數據采集卡采集的超聲信號與探頭返回的位置信息建立起對應關系,最終通過上位機的圖像處理系統形成超聲檢測圖像,以此來實現物體的超聲檢測。
2多軸運動控制器的方案設計
多軸運動控制器可以通過遠程以太網通信的方式接收上位機的控制信號,向步進電機驅動器發送脈沖信號和方向信號以完成對電機的運動控制。采用ARM9處理器S3C2440搭建硬件平臺,配有DM9000A以太網通信芯片使硬件平臺具備遠程通信的功能。在Linux操作平臺上進行控制系統軟件功能設計,并采用UDP通信協議實現上位機與運動控制器之間的遠程通信[3]。
2.1多軸運動控制器硬件電路設計
本文采用ARM9處理器S3C2440設計了系統中運動控制器的硬件電路部分,并采用DM9000A網絡接口控制器設計了運動控制器的以太網接口。運動控制器硬件整體框圖如圖2所示。運動控制器選用ARM9處理器作為運動控制器的核心芯片可以方便地嵌套Linux操作系統,在操作系統之上實現運動控制器的插補等多軸運動控制算法。選用DM9000A以太網控制芯片實現上位機LabVIEW與運動控制器之間的遠程通信,進而實現超聲檢測的遠程自動控制。為了解決步進電機驅動器與主控芯片信號匹配的問題,本文采用光耦器件設計了電壓轉換模塊,負責把主控芯片輸出的3.3V電壓信號轉換至5V電壓信號后輸入到步進電機驅動器中,同時負責把限位開關發出的24V限位信號轉換至3.3V輸入到主控芯片中。此外,電路中還搭載了用于存儲數據的擴展存儲器、以及用于調試的JTAG接口電路和RS232串口電路。
2.2多軸運動控制器軟件設計
本課題所用的限位開關為位置可調的限位開關,每個軸有2個限位開關,在每次超聲檢測前,把每個限位開關調節到被測工件的邊緣處,從而使探頭移動的范圍即為工件所在范圍。故此設計運動控制器的軟件時便可將限位開關做為邊界條件,以此來設計探頭的運動范圍。其運動控制流程:首先系統初始化,通過上微機控制界面人工控制探頭到被測工件的起點,然后X軸正向運動到X軸限位開關處,Y軸正向運動一個探頭直徑的長度,X軸再反向運動到X軸另一側的限位開關處,之后Y軸繼續正向運動一個探頭直徑的長度,如此往復運動直至探頭到達Y軸的限位開關處,檢測結束,探頭復位。運動控制軟件流程圖如圖3所示。
3多軸運動控制系統上位機軟件設計
基于以太網的自動超聲檢測多軸運動控制系統的上位機軟件是以LabVIEW開發平臺為基礎,使用圖形G語言進行編寫的,主要包括多軸運動控制軟件和以太網通信軟件。Lab-VIEW是一款上位機軟件,其主要應用于儀器控制、數據采集和數據分析等領域,具有良好的人機交互界面[4]。LabVIEW軟件中有專門的UDP通信函數提供給用戶使用,用戶無需過多考慮網絡的底層實現,就可以直接調用UDP模塊中已經的VI來完成通信軟件的編寫,因此編程者不必了解UDP的細節,而采用較少的代碼就可以完成通信任務,以便快速的編寫出具有遠程通信功能的上位機控制軟件[5]。上位機LabVIEW軟件的遠程通信模塊、運動控制模塊以及數據處理模塊相互協調配合,共同構成了超聲檢測多軸運動控制系統的上位機軟件。
3.1運動控制軟件設計
運動控制系統軟件部分主要由運動方式選擇、探頭位置坐標、運動控制等模塊組成,可完成對系統運動方式的選擇,運動參數、控制指令的設定以及探頭位置信息讀取等工作。運動方式選擇模塊可根據實際需要完成相對運動或是絕對運動兩種運動方式的選擇,并會依照選擇的既定運動模式將X、Y、Z三軸的相應運動位置坐標輸出在相應顯示欄中,以便進行進一步的參數核對以及設定;運動控制模塊可依照檢測規則實現對整個系統運動過程的控制,包括:設定相對原點、運行、復位、以及退出等相關操作。相對原點設定可以將探頭任意當前位置設為新的原點,并以原點作為下一個運動的起始點,即為探頭位置坐標的相對零點,并將此刻相對原點的絕對位置坐標值在文本框中顯示出來。運動控制系統軟件流程圖如圖4所示。
3.2以太網通信軟件設計
以太網通信模塊采用無連接的UDP通信協議,通過定義多軸運動控制器與上位機LabVIEW的以太網通信協議,實現下位機與上位機之間的遠程通信。具體設計如下:首先使用“UDPOpenConnection”打開UDP鏈接,使用“UDPWrite”節點向服務器端相應的端口發送命令信息,然后使用“UDPRead”節點讀取服務器端發送來的有效回波數據,用于后期處理,最后應用“UDPCloseConnection”節點關閉連接[6]。以太網通信模塊的程序框圖如圖5所示。
4實驗及結果
實驗平臺由步進電機及其驅動器、上位機控制軟件和自主研發的多軸運動控制器構成。在上位機的用戶控制界面中,首先輸入以太網的IP地址并選擇運動方式,然后根據用戶的檢測需求設定運動速度和運動距離,點擊運行后探頭即按所設定運行。探頭運動過程中還可以選擇設定當前位置為原點,探頭即按照新的原點重新開始運動。同時,在探頭運動時會實時顯示探頭當前所在位置坐標。模擬開關發送選通超聲探頭信號并發送脈沖信號激勵超聲探頭發射超聲波,FPGA控制A/D轉換電路對超聲回波信號進行轉換,并將數據存入雙口RAM,存儲完成后向ARM發送信號,ARM接收到采集完成信號將數據通過以太網向上位機發送。上位機的LabVIEW用戶控制界面如圖6所示。
5結束語