當(dāng)前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 運動控制 > 步進(jìn)電機
發(fā)布日期:2022-10-09 點擊率:70
摘要:步進(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è)計的控制程序簡單、易懂,工作可靠,且具有友好的人機交互界面。
關(guān)鍵詞:步進(jìn)電機;Visual C++;串行通信;MSComm控件
A Discussion of the Measure on the Controlling of Stepper Motor in VC++
CHEN Jiafeng,PENG Qisheng
(Department of Electronic and Information Engineering,Southcentral University for Nationalities,Wuhan,430074,China)
Abstract:Stepper motor is a kind of motor of translating electrical pulse into displacement Ordinarily,the software of control system for stepper motor is programmedby assemble or C language The paper introduces a method of programming realizing serial communication between PC and stepper motor in VC++6.0 based MSComm control by SC3 stepper motor contoller The basal process and method ofprogramming serial communication are introduced. The result shows that designed program is simple and understandable and higher reliability and friendly manmachine conversation interface
Keywords:stepper motor;Visual C++;serial communication;MSComm control
步進(jìn)電機是一種將電脈沖轉(zhuǎn)化為角位移的機電式數(shù)模轉(zhuǎn)換器,在控制系統(tǒng)中具有十分廣泛的用途,但傳統(tǒng)的步進(jìn)電機的控制通常都采用匯編語言或C語言進(jìn)行軟件開發(fā),本文利用VC++提供的串行通信控件MSComm實現(xiàn)PC機與步進(jìn)電機控制器之間的串行通信[1]。與 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)串行通信[2]一般有3種方法[3]:使用VC++提供的串行通信控件MSComm[4];在單線程中實現(xiàn)自定義的串口通信類;多線程下實現(xiàn)串行通信。結(jié)合實際情況,本系統(tǒng)采用VC++提供的串行通信控件MSComm來進(jìn)行軟件編程,可以很方便地管理與控制計算機串口。
1 系統(tǒng)組成
由PC機控制步進(jìn)電動機的系統(tǒng)如圖1所示。
本系統(tǒng)的電機控制采用通用的RS 232[5]串口的異步通信。由于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.00125°;重復(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++[5]的對話框中創(chuàng)建通信控件,若Control工具欄中缺少該控件,可通過菜單Project→Add toProject→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所示。
運行程序時,視圖執(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è)控制場合。
參考文獻(xiàn)
[1]李朝青.PC機及單片機數(shù)據(jù)通信技術(shù)M].北京:北京航空航天大學(xué)出版社,1999.
[2][美]Joe Campbell.串行通信C程序員指南[M].徐國定譯.北京:清華大學(xué)出版社,1995.
[3]Herbert Schildt,Schildt′sExpert C++[M].MCGrawHill,1998.
[4][美]Young Michael J.Visual C++6從入門到精通[M]邱仲潘,等譯.北京:電子工業(yè)出版社,1999.
[5]向世明.Visual C++數(shù)字圖像與圖形處理[M].北京:電子工業(yè)出版社,2002.
下一篇: 斷路器、隔離開關(guān)、接
上一篇: 索爾維全系列Solef?PV
型號:2011400034
價格:面議
庫存:10
訂貨號:2011400034
型號:103H8223-6340
價格:面議
庫存:10
訂貨號:103H8223-6340
型號:SM2862-5151
價格:面議
庫存:10
訂貨號:SM2862-5151
型號:103H8222-6340
價格:面議
庫存:10
訂貨號:103H8222-6340
型號:103H5208-0410
價格:面議
庫存:10
訂貨號:103H5208-0410
型號:P542-M481U-G17L82
價格:面議
庫存:10
訂貨號:P542-M481U-G17L82