當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]  步進(jìn)電機是一種將電脈沖信號轉(zhuǎn)換為線位移或角位移的電機,但步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文結(jié)合SC3步進(jìn)電機控制器及平移臺的控制開發(fā)為例

  步進(jìn)電機是一種將電脈沖信號轉(zhuǎn)換為線位移或角位移的電機,但步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文結(jié)合SC3步進(jìn)電機控制器及平移臺的控制開發(fā)為例,介紹了一種如何在Windows平臺下利用Visual C++6.0提供的串行通信控件MSComm來實現(xiàn)PC機與步進(jìn)電機控制器之間的數(shù)據(jù)通訊,最終實現(xiàn)由PC機直接控制步進(jìn)電機的方法,并詳細(xì)介紹了編寫串行通信程序的基本步驟和方法。調(diào)試結(jié)果表明:設(shè)計的控制程序簡單、易懂,工作可靠,且具有友好的人機交互界面。

 步進(jìn)電機是一種將電脈沖轉(zhuǎn)化為角位移的機電式數(shù)模轉(zhuǎn)換器,在控制系統(tǒng)中具有十分廣泛的用途,但傳統(tǒng)的步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文利用VC++提供的串行通信控件MSComm實現(xiàn)PC機與步進(jìn)電機控制器之間的串行通信。與 DOS下串行通信程序不同的是,Windows不提倡應(yīng)用程序直接控制硬件,而是通過Windows操作系統(tǒng)提供的設(shè)備驅(qū)動程序來進(jìn)行數(shù)據(jù)傳送。串行口在Win32中是作為文件來進(jìn)行處理的,而不是直接對端口進(jìn)行操作,對于串行通信,Win32提供了相應(yīng)的文件I/O函數(shù)與通信函數(shù),通過了解這些函數(shù)的使用,可以編制出符合不同需要的通信程序。

 實現(xiàn)串行通信一般有3種方法:使用VC++提供的串行通信控件MSComm;在單線程中實現(xiàn)自定義的串口通信類;多線程下實現(xiàn)串行通信。結(jié)合實際情況,本系統(tǒng)采用VC++提供的串行通信控件MSComm來進(jìn)行軟件編程,可以很方便地管理與控制計算機串口。

  1、系統(tǒng)組成

 由PC機控制步進(jìn)電動機的系統(tǒng)如圖1所示。

圖1 PC機控制步進(jìn)電機系統(tǒng)框圖

 本系統(tǒng)的電機控制采用通用的RS 232串口的異步通信。由于RS 232早期是為促進(jìn)公用電話網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信而制定的標(biāo)準(zhǔn),其邏輯電平對地是對稱的,與TTL、MOS邏輯電平完全不同。邏輯0電平規(guī)定為+5~+15 V之間,邏輯1電平規(guī)定為-5~-15 V之間,因此,RS 232驅(qū)動器與TTL電平連接必須經(jīng)過電平轉(zhuǎn)換。

  2、控制軟硬件的技術(shù)參數(shù)

  本系統(tǒng)采用卓立漢光儀器有限公司生產(chǎn)的SC3步進(jìn)電機控制器及平移臺,實現(xiàn)平移臺的三維控制(x,y,z)。利用RS 232串口異步通信完成對步進(jìn)電機的單步和連續(xù)移動控制,并且把電機的實際位置數(shù)據(jù)反饋給PC機處理。

  電控平移臺的機械指標(biāo)如下:

  (1) 精密電控旋轉(zhuǎn)臺:型號RSA200用于x軸。轉(zhuǎn)動范圍>±40°;傳動比180∶1;小步距0.000 312 5°;臺面直徑Φ200;分辨率0.001 25°;重復(fù)定位精度<0.005°;最大速度25/s;中心最大負(fù)載60 kg。

  (2) 重載型電控平移臺:型號TSA300B,用于z軸。最小步距0.003 15 mm;重復(fù)定位精度<0.005 mm;加固定平移臺有效行程為150 mm。

  (3) 超薄型電控平移臺:型號TSA30C,用于y軸。最小步距為0.002 mm;重復(fù)定位精度<0.005 mm;有效行程30 mm。SC3步進(jìn)電機控制器設(shè)有手動和聯(lián)動方式,手動能設(shè)置的操作有:速度設(shè)定、歸零操作、方向設(shè)定、位移量設(shè)定等,聯(lián)機方式可以使電機的運動直接受應(yīng)用軟件控制。由于是進(jìn)行二次開發(fā),因此應(yīng)用程序必須嵌入原控制器的控制指令及協(xié)議。

  步進(jìn)電機是一種將電脈沖信號轉(zhuǎn)換為線位移或角位移的電機,但步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文結(jié)合SC3步進(jìn)電機控制器及平移臺的控制開發(fā)為例,介紹了一種如何在Windows平臺下利用Visual C++6.0提供的串行通信控件MSComm來實現(xiàn)PC機與步進(jìn)電機控制器之間的數(shù)據(jù)通訊,最終實現(xiàn)由PC機直接控制步進(jìn)電機的方法,并詳細(xì)介紹了編寫串行通信程序的基本步驟和方法。調(diào)試結(jié)果表明:設(shè)計的控制程序簡單、易懂,工作可靠,且具有友好的人機交互界面。

 步進(jìn)電機是一種將電脈沖轉(zhuǎn)化為角位移的機電式數(shù)模轉(zhuǎn)換器,在控制系統(tǒng)中具有十分廣泛的用途,但傳統(tǒng)的步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文利用VC++提供的串行通信控件MSComm實現(xiàn)PC機與步進(jìn)電機控制器之間的串行通信。與 DOS下串行通信程序不同的是,Windows不提倡應(yīng)用程序直接控制硬件,而是通過Windows操作系統(tǒng)提供的設(shè)備驅(qū)動程序來進(jìn)行數(shù)據(jù)傳送。串行口在Win32中是作為文件來進(jìn)行處理的,而不是直接對端口進(jìn)行操作,對于串行通信,Win32提供了相應(yīng)的文件I/O函數(shù)與通信函數(shù),通過了解這些函數(shù)的使用,可以編制出符合不同需要的通信程序。

 實現(xiàn)串行通信一般有3種方法:使用VC++提供的串行通信控件MSComm;在單線程中實現(xiàn)自定義的串口通信類;多線程下實現(xiàn)串行通信。結(jié)合實際情況,本系統(tǒng)采用VC++提供的串行通信控件MSComm來進(jìn)行軟件編程,可以很方便地管理與控制計算機串口。

  1、系統(tǒng)組成

 由PC機控制步進(jìn)電動機的系統(tǒng)如圖1所示。

圖1 PC機控制步進(jìn)電機系統(tǒng)框圖

 本系統(tǒng)的電機控制采用通用的RS 232串口的異步通信。由于RS 232早期是為促進(jìn)公用電話網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信而制定的標(biāo)準(zhǔn),其邏輯電平對地是對稱的,與TTL、MOS邏輯電平完全不同。邏輯0電平規(guī)定為+5~+15 V之間,邏輯1電平規(guī)定為-5~-15 V之間,因此,RS 232驅(qū)動器與TTL電平連接必須經(jīng)過電平轉(zhuǎn)換。

  2、控制軟硬件的技術(shù)參數(shù)

  本系統(tǒng)采用卓立漢光儀器有限公司生產(chǎn)的SC3步進(jìn)電機控制器及平移臺,實現(xiàn)平移臺的三維控制(x,y,z)。利用RS 232串口異步通信完成對步進(jìn)電機的單步和連續(xù)移動控制,并且把電機的實際位置數(shù)據(jù)反饋給PC機處理。

  電控平移臺的機械指標(biāo)如下:

  (1) 精密電控旋轉(zhuǎn)臺:型號RSA200用于x軸。轉(zhuǎn)動范圍>±40°;傳動比180∶1;小步距0.000 312 5°;臺面直徑Φ200;分辨率0.001 25°;重復(fù)定位精度<0.005°;最大速度25/s;中心最大負(fù)載60 kg。

  (2) 重載型電控平移臺:型號TSA300B,用于z軸。最小步距0.003 15 mm;重復(fù)定位精度<0.005 mm;加固定平移臺有效行程為150 mm。

  (3) 超薄型電控平移臺:型號TSA30C,用于y軸。最小步距為0.002 mm;重復(fù)定位精度<0.005 mm;有效行程30 mm。SC3步進(jìn)電機控制器設(shè)有手動和聯(lián)動方式,手動能設(shè)置的操作有:速度設(shè)定、歸零操作、方向設(shè)定、位移量設(shè)定等,聯(lián)機方式可以使電機的運動直接受應(yīng)用軟件控制。由于是進(jìn)行二次開發(fā),因此應(yīng)用程序必須嵌入原控制器的控制指令及協(xié)議。

  該指令系統(tǒng)主要有以下幾條:

  聯(lián)絡(luò)指令指令格式:“?R" & CHR$(13)

  該指令發(fā)出200 ms以內(nèi)SC3回送:“OK”& CHR$(10),表示聯(lián)絡(luò)成功。

  查詢指令指令格式:“?V”& CHR$(13)

SC3接到該指令后回送:“V number” & CHR$(10)。其中number為ASC碼表示的SC3當(dāng)前速度值。范圍0~255。

  坐標(biāo)查詢指令指令格式:“?X”& CHR$(13) 或“?Y”& CHR$(13)或“?Z”& CHR$(13)

SC3接到該指令后回送:“X+number” & CHR$(10),或“Xnumber” & CHR$(10),其他軸類似。其中number為以ASC碼表示的SC3當(dāng)前坐標(biāo)值,正負(fù)號代表當(dāng)前位置在開機位置(0位)的正負(fù)方向的位置。

  速度設(shè)置指令指令格式:“V”& number & CHR$(13)

其中number為以ASC碼表示的速度設(shè)置值。范圍0~255。

  歸零指令指令格式:“HX”& CHR$(13) 或“HY”& CHR$(13) 或“HZ”& CHR$(13)

 SC3接到此類指令后進(jìn)行歸零操作。完成歸零操作后回送:“OK”& CHR$(10),表示SC3歸零完畢。

  零狀態(tài)查詢指令指令格式:“?H”& CHR$(13)

  SC3接到此類指令后回送:“H000” & CHR$(10)

 其中000的含義:

  第一位數(shù)值:1表示z軸歸零成功,0表示z軸未歸零。

 第二位數(shù)值:1表示y軸歸零成功,0表示y軸未歸零。

  第三位數(shù)值:1表示x軸歸零成功,0表示x軸未歸零。

  運行指令指令格式:“Xdirectionnumber”& CHR$(13)或“Y directionnumber”& CHR$(13)或“Z directionnumber”& CHR$(13)

  3、軟件實現(xiàn)

  3.1 利用VC++提供的串行通信控件MSComm實現(xiàn)串行通信

 首先,在VC++的對話框中創(chuàng)建通信控件,若Control工具欄中缺少該控件,可通過菜單Project→Add to?Project→Components and Control插入即可,再將該控件從工具箱拉到對話框中。此時,你只需要關(guān)心控件提供的對Windows通信驅(qū)動程序的API函數(shù)的接口,即只需要設(shè)置和監(jiān)視MSComm控件的屬性和事件。

 在ClassWizard中為新建的通信控件定義成員對象(CMSComm m_Serial),通過該對象便可以對串口屬性進(jìn)行設(shè)置,MSComm控件共有27個屬性,其中主要包括:

  Commport:設(shè)置并返回通信端口號,缺省為COM1。
  Settings:以字符串的形式設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。
  PortOpen:設(shè)置并返回通信端口的狀態(tài),也可以打開和關(guān)閉端口。
  Input:從接收緩沖區(qū)返回和刪除字符。
  Output:向發(fā)送緩沖區(qū)寫入字符串。
  InputLen:每次設(shè)置Input讀入的字符個數(shù),缺省值為0,表明讀取接收緩沖區(qū)中的全部內(nèi)容。
  InBufferCount:返回接收緩沖區(qū)中已接收到的字符數(shù),將其置0可以清除接收緩沖區(qū)。
 InputMode:定義Input屬性獲取數(shù)據(jù)的方式(為0:文本方式;為1:二進(jìn)制方式)。
  RThreshold和SThreshold屬性,表示在OnComm事件發(fā)生之前,接收緩沖區(qū)或發(fā)送緩沖區(qū)中可接收的字符數(shù)。

 以下是通過設(shè)置控件屬性對串口進(jìn)行初始化的實例:

  打開所需串口后,需要考慮串口通信的時機。在接收或發(fā)送數(shù)據(jù)過程中,可能需要監(jiān)視并響應(yīng)一些事件和錯誤,所以事件驅(qū)動是處理串行端口交互作用的一種非常有效的方法。使用OnComm事件和CommEvent屬性捕捉并檢查通信事件和錯誤的值。發(fā)生通信事件或錯誤時,將觸發(fā)OnComm事件,CommEvent屬性的值將被改變,應(yīng)用程序檢查CommEvent屬性值并作出相應(yīng)的反應(yīng)。在程序中用ClassWizard為CMSComm控件添加OnComm消息處理函數(shù):

  3.2 系統(tǒng)初始化

  在執(zhí)行應(yīng)用程序時首先必須進(jìn)行初始化,其初始化程序框圖如圖2所示。

圖2 初始化程序框圖

  運行程序時,視圖執(zhí)行初始化操作函數(shù)OnInitialUpdate(),該函數(shù)內(nèi)要先打開串口1,通過設(shè)置對象m_ContrCom各成員函數(shù),設(shè)置好各通信參數(shù):

 然后經(jīng)過一個位置選擇對話框,通常選“保持原來的位置”,然后就發(fā)出詢問各軸的坐標(biāo)值的指令。流程如圖2所示。除x軸是直接發(fā)送坐標(biāo)詢問指令獲得坐標(biāo)數(shù)據(jù)外,其他2個軸都是通過連續(xù)的2個定時器來詢問坐標(biāo)的,定時器響應(yīng)后執(zhí)行圖3的程序。此后就進(jìn)入待操作畫面。

 3.3 運行操作的編程

  在電機運動操作區(qū)的各文本框內(nèi)輸入某一軸向的位移值、速度值,按下“運行”按鈕,則程序會把位移值轉(zhuǎn)化為字符型的實際要運行的步數(shù),通過串口送到SC3步進(jìn)電機控制器,控制對應(yīng)的軸的電機運行相應(yīng)的步數(shù)。運行結(jié)束后,SC3會返回一個“OK”字符至串口,PC機接受到這個字符后,就知道電機運行結(jié)束,然后向串口發(fā)送坐標(biāo)詢問指令,SC3會回送有關(guān)坐標(biāo)數(shù)據(jù),PC機接到這些數(shù)據(jù)后進(jìn)行處理運算并在文本框中顯示出來。這樣就結(jié)束了一個完整的運行操作。

  所有主要的PC機和SC3控制器的有關(guān)數(shù)據(jù)通信程序都在MSComm控件內(nèi)。包括所有的接受、識別返回字符,各軸向坐標(biāo)的運算和顯示。

 當(dāng)步進(jìn)運動完畢后,返回到PC機的數(shù)據(jù)為步進(jìn)電機已經(jīng)運行的步數(shù),根據(jù)這個步數(shù)要計算相應(yīng)的坐標(biāo),必須知道各軸的脈沖當(dāng)量。步進(jìn)電機每走一步,電移臺的位移等于脈沖當(dāng)量,即分辨率。

  坐標(biāo)值=初始坐標(biāo)+運行步數(shù)*脈沖當(dāng)量
  平移臺脈沖當(dāng)量=絲杠導(dǎo)程mm*步距角/(360*細(xì)分?jǐn)?shù))
  旋轉(zhuǎn)臺(x軸)的脈沖當(dāng)量(度)=步進(jìn)電機步距角/(傳動比*細(xì)分?jǐn)?shù))

  其中細(xì)分?jǐn)?shù)是由控制器后面板撥碼開關(guān)設(shè)置的。

  步進(jìn)電機的步距角都為1.8°,縱軸的絲杠導(dǎo)程為1 mm,橫軸為4 mm,旋轉(zhuǎn)軸傳動比為180∶1,細(xì)分?jǐn)?shù)為2,則根據(jù)以上公式可得出:

 縱軸(z)脈沖當(dāng)量=1/100
 橫軸(y)脈沖當(dāng)量=1/400
  旋轉(zhuǎn)軸(x)脈沖當(dāng)量=1/200

  4、結(jié)語

  在PC機和單片機之間實現(xiàn)串行通信控制是近幾年很受歡迎、較為流行的方法。本文介紹的運用MSComm控件來編制的由PC機對步進(jìn)電機直接控制的應(yīng)用軟件具有友好的人機交互界面,且編程簡便、工作可靠,是一種切實有效的方法。同時,這種串行控制方法和技術(shù)還可運用于相應(yīng)的工業(yè)控制場合。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉