摘 要: 設計了一種基於串列埠擴充套件卡的分布式步進電機控制系統。採用串列埠擴充套件卡擴充套件rs-232串列埠數,每個串列埠對應乙個微控制器。計算機通過選擇串列埠的方式與微控制器進行通訊,進而控制單個步進電機。整個系統易於擴充套件。重點介紹了計算機與微控制器之間的控制協議及系統軟硬體的實現。
1 系統的構成[1]
該系統由計算機,串列埠擴充套件卡,微控制器,步進電機驅動器和步進電機構成,如圖1。系統構造更加靈活且易於擴充套件。
計算機對步進電機的控制通過微控制器和步進電機驅動器實現。計算機將各種控制要求在基於vc開發的程式下轉換成相應的控制指令。通過串列埠將控制指令傳送到微控制器。再由微控制器通過步進電機驅動器控制步進電機行走步距,行走速度,運轉方向和執行狀態。計算機採用中斷方式與微控制器進行資料傳輸。
傳統的多機通訊,主機要給從機乙個位址編號,所有的從機在收到編號後與自己的位址編號核對,若一致則與主機之間建立通。而本文設計的系統,採用擴充套件串列埠卡擴充套件了通訊串列埠數,使計算機可通過乙個串列埠控制一台步進電機,有效地簡化了計算機和微控制器之間的通訊程式設計。微控制器控制電路中,cpu選用at89s52,作為控制電路的核心部件。at89s52通過rs232序列口,接收從上位控制計算機傳送的控制指令,並解釋命令,完成相應的操作;同時也可按要求通過串列埠向上位控制計算機反饋相應的應答資訊。
系統採用dcm8082作為步進電機驅動器, dcm8082使用了雙極性直流斬波技術,可使電機輸出功率更高,速度更快。驅動器與步進電機採用4線連線方式。
2 軟體設計
分布式多串列埠步進電機控制系統的軟體部分包括計算機與微控制器之間控制協議的構造、 微控制器控制程式以及基於vc開發的步進電機工作控制介面。
2.1計算機與微控制器之間控制協議的構造
為保證計算機與微控制器之間進行資料通訊的靈活、高效、可靠,需構造乙個控制協議。而在構造控制協議之前,應先了解步進電機的動作規律及計算機與微控制器之間通訊要求。
步進電機動作可按週期性和非週期性方式分類。週期性動作是指步進電機執行一系列動作後,下一週期又執行相同系列的動作。非週期性方式為步進電機的隨機動作。因此構造控制協議時應考慮週期性動作的標識,微控制器以此標識對該命令重複執行,以減少計算機與微控制器之間的資訊傳輸量。並且步進電機在執行過程中,使用者應可根據需要控制步進電機執行暫停,繼續執行及復位等執行方式。此外計算機向微控制器傳送指令後,微控制器應存在回應機制。根據使用者的需要反饋給計算機相應的確認訊息。
本**根據上述的電機運動規律及計算機與微控制器之間的通訊要求,構造一套控制協議。電機控制命令遵照控制協議定義的格式由計算機發向微控制器。協議定義了控制命令由兩部分組成:命令訊息頭和命令訊息體。
2.1.1控制命令的命令訊息頭格式
命令訊息頭含括了控制命令的主要資訊,包含了使用者對微控制器和步進電機的工作方式的要求及確保計算機與微控制器之間資料通訊正常。其詳細定義見表1。
syn(同步字): 同步字為0x81ff(無符號十六進製制)。計算機向微控制器先傳送0x81,後傳送0xff。syn表徵乙個命令塊的開始。
message id(命令編號): 命令編號為無符號數,範圍0-255。不同的命令編號表徵不同的電機執行的狀態。本**工作中,已實現的命令編號見表2。
其中,命令的優先順序共0-2級,0級最低,2級最高;按優先順序的不同,高優先順序的命令可中斷低優先順序命令的執行,直到高優先順序命令執行完後,再繼續執行先前被中斷的低優先順序的命令。
length(資料體長度): 資料體長度為無符號數,範圍0-255。用以表示命令訊息體中包含的位元組數量。
statusbit(狀態): 用以表徵使用者是否需要微控制器返回相應的確認訊息以及步進電機是否需要重複執行pc傳來的命令。該位元組各bit詳細資訊見表3。
f(finish):為1時,要求微控制器在執行完該命令後返回確認訊息。a(acknowledge):為1時,要求微控制器在收到該命令後返回確認訊息。i(iteration):為1時,要求微控制器對該命令重複執行。r(reserved):保留。
headerchecksum(頭校驗和):頭校驗和為無符號數,範圍0-255。按下列公式計算:
headerchecksum=,該公式中,h[i]為命令訊息頭中各識別符號所含的資訊所佔的位元組數,n為命令訊息頭中所含的識別符號數。將h[i]按無符號數相加,若有溢位,則溢位位丟棄,保留尾數部分。當傳送方將命令訊息頭髮送給微控制器,微控制器收到命令訊息頭後,即先計算頭校驗和並與接收到的命令訊息頭中最後一位元組的頭校驗和比較。若二者相等,則表示接收正確,否則微控制器丟棄剛接收到的命令訊息頭,並返回出錯資訊,等待重新接收新的命令訊息頭。
2.1.2控制命令的命令訊息體格式
命令訊息體主要是表徵步進電機該以何種方式執行,它與控制命令的命令訊息頭中的命令編號密切相關。系統共定義了四種電機執行狀態,分別為:
①.控制步進電機執行(命令編號00h)
該控制命令的命令訊息體長度為5byte,控制步進電機按使用者確定的步數和脈衝週期運轉。各byte詳細資訊見表4。
m(mode):電機運轉的方式。byte1為00h時表示電機順時針轉動;byte1為01h表示電機逆時針轉動。c(circle):步進電機運轉所需脈衝週期,範圍0-65535,單位?s 。byte2和byte3分別儲存脈衝週期的低八位和高八位。s(step):步進電機執行步數,範圍0-65535。byte4和byte5分別儲存執行步數的低八位和高八位。
②.電機執行暫停(命令編號11h)
此時,命令塊只包含命令訊息頭,無命令訊息體。該控制命令可暫停電機的執行。
③.繼續執行(命令編號12h)
此時,命令塊只包含命令訊息頭,無命令訊息體。該控制命令可以使處於暫停狀態的步進電機從暫停時的斷點處繼續執行。
④.復位(命令編號20h)
此時,命令塊只包含命令訊息頭,無命令訊息體。微控制器執行此命令後,微控制器清除所有命令緩衝區,並使電機處於等待接收新的控制命令的狀態。
在命令訊息體的定義中對電機的執行步數和運轉週期作出了範圍限制,若想擴充套件電機的執行步數及運轉週期,只要相應增加訊息體中儲存步數和週期的位元組數即可。
2.1.3微控制器應答訊息定義
當計算機將控制指令發向微控制器後,微控制器亦可以根據使用者的需要返回相應的確認資訊或是在接收控制指令出錯時向計算機返回出錯資訊。具體的返回訊息定義下:
a0h:微控制器收到正確的命令後的返回值;b0h:微控制器執行完命令後的返回值;c0h:微控制器未能正確接收命令時返回出錯訊息。
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式事務的控制
xa是乙個分布式事務協議,由tuxedo提出。xa中大致分為兩部分 事務管理器和本地資源管理器。其中本地資源管理器往往由資料庫實現,比如oracle db2這些商業資料庫都實現了xa介面,而事務管理器作為全域性的排程者,負責各個本地資源的提交和回滾。xa實現分布式事務的原理如下 總的來說,xa協議比...
分布式系統下登入會話控制系統設計
背景介紹 本人目前就職於中國電信旗下第三方支付公司 甜橙金融的資訊科技部客戶平台,該平台負載管理公司近2億使用者的個人資訊與鑑權憑證,並提供相關的介面能力。我主要負責該平台的需求分析與設計工作。甜橙金融通過自主研發,經過一段時間的積累,目前主要業務已經執行在第三代基礎技術平台。該平台採用分布式架構,...