中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產品分類

當前位置: 首頁 > 工業控制產品 > 運動控制 > 步進電機

類型分類:
科普知識
數據分類:
步進電機

基于VC++的步進電機控制方法探討

發布日期:2022-10-09 點擊率:83

摘要:步進電機是一種將電脈沖信號轉換為線位移或角位移的電機,但步進電機的控制通常都采用匯編語言或C語言進行軟件開發,本文結合SC3步進電機控制器及平移臺的控制開發為例,介紹了一種如何在Windows平臺下利用Visual C++6.0提供的串行通信控件MSComm來實現PC機與步進電機控制器之間的數據通訊,最終實現由PC機直接控制步進電機的方法,并詳細介紹了編寫串行通信程序的基本步驟和方法。調試結果表明:設計的控制程序簡單、易懂,工作可靠,且具有友好的人機交互界面。
關鍵詞:步進電機;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

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

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

1 系統組成

由PC機控制步進電動機的系統如圖1所示。

本系統的電機控制采用通用的RS 232[5]串口的異步通信。由于RS 232早期是為促進公用電話網絡進行數據通信而制定的標準,其邏輯電平對地是對稱的,與TTL、MOS邏輯電平完全不同。邏輯0電平規定為+5~+15 V之間,邏輯1電平規定為-5~-15 V之間,因此,RS 232驅動器與TTL電平連接必須經過電平轉換。

2 控制軟硬件的技術參數

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

電控平移臺的機械指標如下:

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

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

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

該指令系統主要有以下幾條:

聯絡指令指令格式:“?R" & CHR$(13)
該指令發出200 ms以內SC3回送:“OK”& CHR$(10),表示聯絡成功。
查詢指令指令格式:“?V”& CHR$(13)
SC3接到該指令后回送:“V number” & CHR$(10)。其中number為ASC碼表示的SC3當前速度值。范圍0~255。
坐標查詢指令指令格式:“?X”& CHR$(13) 或“?Y”& CHR$(13)或“?Z”& CHR$(13)
SC3接到該指令后回送:“X+number” & CHR$(10),或“Xnumber” & CHR$(10),其他軸類似。其中number為以ASC碼表示的SC3當前坐標值,正負號代表當前位置在開機位置(0位)的正負方向的位置。
速度設置指令指令格式:“V”& number & CHR$(13)
其中number為以ASC碼表示的速度設置值。范圍0~255。
歸零指令指令格式:“HX”& CHR$(13) 或“HY”& CHR$(13) 或“HZ”& CHR$(13) 。
SC3接到此類指令后進行歸零操作。完成歸零操作后回送:“OK”& CHR$(10),表示SC3歸零完畢。
零狀態查詢指令指令格式:“?H”& CHR$(13)
SC3接到此類指令后回送:“H000” & CHR$(10)

其中000的含義:

第一位數值:1表示z軸歸零成功,0表示z軸未歸零。
第二位數值:1表示y軸歸零成功,0表示y軸未歸零。
第三位數值:1表示x軸歸零成功,0表示x軸未歸零。
運行指令指令格式:“Xdirectionnumber”& CHR$(13)或“Y directionnumber”& CHR$(13)或“Z directionnumber”& CHR$(13)

3 軟件實現

3.1 利用VC++提供的串行通信控件MSComm實現串行通信

首先,在VC++[5]的對話框中創建通信控件,若Control工具欄中缺少該控件,可通過菜單Project→Add toProject→Components and Control插入即可,再將該控件從工具箱拉到對話框中。此時,你只需要關心控件提供的對Windows通信驅動程序的API函數的接口,即只需要設置和監視MSComm控件的屬性和事件。

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

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

以下是通過設置控件屬性對串口進行初始化的實例:

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

3.2 系統初始化

在執行應用程序時首先必須進行初始化,其初始化程序框圖如圖2所示。

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

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

3.3 運行操作的編程

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

所有主要的PC機和SC3控制器的有關數據通信程序都在MSComm控件內。包括所有的接受、識別返回字符,各軸向坐標的運算和顯示。

當步進運動完畢后,返回到PC機的數據為步進電機已經運行的步數,根據這個步數要計算相應的坐標,必須知道各軸的脈沖當量。步進電機每走一步,電移臺的位移等于脈沖當量,即分辨率。

坐標值=初始坐標+運行步數*脈沖當量
平移臺脈沖當量=絲杠導程mm*步距角/(360*細分數)
旋轉臺(x軸)的脈沖當量(度)=步進電機步距角/(傳動比*細分數)

其中細分數是由控制器后面板撥碼開關設置的。

步進電機的步距角都為1.8°,縱軸的絲杠導程為1 mm,橫軸為4 mm,旋轉軸傳動比為180∶1,細分數為2,則根據以上公式可得出:

縱軸(z)脈沖當量=1/100
橫軸(y)脈沖當量=1/400
旋轉軸(x)脈沖當量=1/200

4 結語

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

參考文獻
[1]李朝青.PC機及單片機數據通信技術M].北京:北京航空航天大學出版社,1999.
[2][美]Joe Campbell.串行通信C程序員指南[M].徐國定譯.北京:清華大學出版社,1995.
[3]Herbert Schildt,Schildt′sExpert C++[M].MCGrawHill,1998.
[4][美]Young  Michael J.Visual C++6從入門到精通[M]邱仲潘,等譯.北京:電子工業出版社,1999.
[5]向世明.Visual C++數字圖像與圖形處理[M].北京:電子工業出版社,2002.

下一篇: 斷路器、隔離開關、接

上一篇: 索爾維全系列Solef?PV

中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          99re在线视频这里只有精品| 色哦色哦哦色天天综合| 欧美日韩成人综合| 91高清在线观看| 亚洲影院在线观看| 欧美日韩一级片在线观看| 97超碰欧美中文字幕| 欧美一区日韩一区| 精品一区二区在线看| 欧美猛男超大videosgay| 亚洲午夜久久久久久久久电影网| 欧美三级电影一区| 狠狠色综合日日| 国产精品高潮久久久久无| 国产盗摄精品一区二区三区在线| 久久久久久久久久看片| 欧美在线不卡一区| 国产精品77777| 亚洲综合色婷婷| 久久久久久免费网| 色视频成人在线观看免| 精品一区精品二区高清| 中文字幕中文字幕一区| 欧美一级二级在线观看| 国产91色综合久久免费分享| 亚洲一区二区三区四区五区黄 | 久久久久成人黄色影片| 日本精品视频一区二区三区| 日韩经典一区二区| 亚洲图片激情小说| 亚洲国产成人午夜在线一区| 欧美一区二区观看视频| 欧美日韩一二三| 成人免费黄色大片| 国产高清精品久久久久| 亚洲图片欧美视频| 亚洲黄色小说网站| 国产精品午夜电影| 精品久久久影院| 久久―日本道色综合久久| 欧美顶级少妇做爰| 欧美午夜精品理论片a级按摩| 波多野结衣中文一区| 成人免费视频播放| 狠狠色丁香婷综合久久| 美女精品一区二区| 日韩精品电影在线| 亚洲国产成人av网| 亚洲男人的天堂一区二区| 亚洲视频在线一区| 日韩精品免费专区| 日韩和欧美一区二区三区| 日韩中文字幕亚洲一区二区va在线 | av中文字幕亚洲| 国产精品99久久久久久有的能看| 国产成人精品午夜视频免费| 紧缚捆绑精品一区二区| 懂色av中文字幕一区二区三区| 成人永久免费视频| 欧美亚洲一区二区在线观看| 欧美一区午夜视频在线观看| 欧美精品一区二区高清在线观看| 久久亚洲精品国产精品紫薇| 麻豆成人综合网| 福利一区福利二区| 欧美日韩在线三级| 精品国产乱码久久久久久蜜臀 | 久久不见久久见免费视频1| 成人在线视频首页| 欧美日韩另类一区| 一区免费观看视频| 国产福利一区二区| 717成人午夜免费福利电影| 久久人人97超碰com| 一本高清dvd不卡在线观看| 欧美精品一区二区久久婷婷 | 精品一区二区三区的国产在线播放| 国产原创一区二区| 欧美成人aa大片| 日本不卡一二三区黄网| 91在线丨porny丨国产| 国产亚洲美州欧州综合国| 天天亚洲美女在线视频| 欧美色老头old∨ideo| 午夜视频一区在线观看| 精品视频全国免费看| 一级日本不卡的影视| 欧美日韩午夜影院| 日韩电影在线一区| 日韩欧美高清在线| 色婷婷激情久久| 日韩欧美一卡二卡| 亚洲综合区在线| 欧美日韩高清一区二区| 日本亚洲欧美天堂免费| 欧美精品一区二区三区久久久| 久久国产福利国产秒拍| 中文字幕精品—区二区四季| 99久久免费精品高清特色大片| 一区二区三区四区五区视频在线观看| 欧美巨大另类极品videosbest | 国产一区美女在线| 中文字幕欧美日本乱码一线二线| 国产伦精品一区二区三区视频青涩| 欧美大尺度电影在线| 粉嫩av一区二区三区| 亚洲国产高清在线| 国产成人精品亚洲777人妖 | 麻豆精品在线看| 欧美久久一二三四区| 日本一区二区电影| 亚洲一区二区黄色| 欧美一区日韩一区| jizz一区二区| 亚洲午夜视频在线观看| 成人高清视频在线观看| 中文字幕一区在线观看| 91社区在线播放| 国产酒店精品激情| 麻豆91精品视频| 亚洲精品一二三四区| 久久久.com| 久久综合国产精品| 欧美日本一区二区在线观看| 成人精品一区二区三区中文字幕| 青草av.久久免费一区| 亚洲一级二级在线| 国产精品二区一区二区aⅴ污介绍| 777久久久精品| 久久综合狠狠综合久久综合88| 欧美电影一区二区| 欧美在线一区二区| 91黄视频在线| 欧美在线免费观看亚洲| 91免费小视频| 99久久夜色精品国产网站| 国产在线播放一区三区四| 国产精品一二三区在线| 成人免费视频免费观看| av在线不卡电影| 91天堂素人约啪| 色老汉av一区二区三区| 欧美性欧美巨大黑白大战| 91麻豆swag| 欧美一区二区精品久久911| 欧美欧美午夜aⅴ在线观看| 色94色欧美sute亚洲13| 成人高清伦理免费影院在线观看| 成人三级在线视频| 99精品国产一区二区三区不卡| 国产乱码精品一品二品| 9色porny自拍视频一区二区| 色综合久久综合中文综合网| 亚洲免费观看高清完整版在线观看熊| 久久久三级国产网站| 五月婷婷久久综合| 色狠狠一区二区| 国产精品卡一卡二| 韩国视频一区二区| 色综合久久久久网| 中文一区一区三区高中清不卡| 日韩国产欧美一区二区三区| 北条麻妃国产九九精品视频| 91成人在线免费观看| 色综合久久综合网97色综合| 精品国产a毛片| 亚洲电影一级片| 欧美日韩高清在线| 又紧又大又爽精品一区二区| 99国内精品久久| 欧美成人官网二区| 日本成人在线不卡视频| 亚洲人成在线观看一区二区| 国产精品66部| 精品福利一二区| 国产精品福利一区二区三区| 国产成人亚洲精品狼色在线| 久久综合九色综合欧美98| 精品一区二区三区免费毛片爱 | 国产精品另类一区| 91福利在线观看| 日韩中文字幕亚洲一区二区va在线 | 寂寞少妇一区二区三区| 欧美精品丝袜久久久中文字幕| 国产精品女上位| 天天亚洲美女在线视频| 日韩国产在线观看| 国产亚洲短视频| 欧美国产视频在线| 韩国成人精品a∨在线观看| 精品理论电影在线观看| 毛片一区二区三区| 国产亚洲制服色| 国产精品成人午夜| 国内精品嫩模私拍在线| 欧美欧美欧美欧美| 国产一区二区0| 日韩一区二区三区电影| youjizz久久| 亚洲午夜国产一区99re久久|