基于RS485多機(jī)通信的四軸步進(jìn)電機(jī)同步控制系統(tǒng)
張五一, 羅冬冬, 程賓
(中原工學(xué)院, 鄭州 450007)
摘要:提出一種以STC89C58單片機(jī)為核心的四軸步進(jìn)電機(jī)控制系統(tǒng)。它由主機(jī)和4個(gè)從機(jī)構(gòu)成。主機(jī)通過(guò)U盤進(jìn)行數(shù)據(jù)下載,再利用RS485總線實(shí)現(xiàn)主機(jī)與從機(jī)之間的數(shù)據(jù)傳輸,從而實(shí)現(xiàn)主機(jī)對(duì)各個(gè)從機(jī)步進(jìn)電機(jī)的正反轉(zhuǎn)控制以及速度控制。該系統(tǒng)通用性強(qiáng),不同應(yīng)用場(chǎng)合的用戶通過(guò)修改U盤中的下載數(shù)據(jù)即可實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)各種運(yùn)行要求的控制。
關(guān)鍵詞:RS485多機(jī)通信;步進(jìn)電機(jī);同步控制
中圖分類號(hào):TM306
文獻(xiàn)標(biāo)志碼:A
DOI:10.3969/j.issn.1671-6906.2015.03.004
Abstract:This article describes a four-axis stepper motor control system which takes STC89C58 MCU as its core. This system consists of one main engine and four subordinate engines. The main machine completes reversing control and speed control of each stepper motor by downloading data from the U-disk and then taking use of the RS485 bus to data transfer from the host and the subordinate machine. This system has high generality, and accomplishes all kinds of operation requirements by users modify the download data in the U-disk on the basis of different applications.
收稿日期:2014-11-10
作者簡(jiǎn)介:楊森(1989-),男, 河南焦作人, 碩士生,主要研究方向?yàn)榱黧w傳動(dòng)CAD。
文章編號(hào):1671-6906(2015)03-0024-05
近年來(lái),國(guó)內(nèi)外對(duì)于步進(jìn)電機(jī)控制技術(shù)的研究主要有傳統(tǒng)的PID控制、矢量控制以及一些現(xiàn)代的智能控制理論。但這些研究?jī)H僅局限于對(duì)單個(gè)電機(jī)的控制。隨著對(duì)各種機(jī)械性能和產(chǎn)品質(zhì)量要求的逐漸提高,許多控制領(lǐng)域需要對(duì)多臺(tái)步進(jìn)電機(jī)進(jìn)行同步協(xié)調(diào)控制,如軍事、紡織、航空領(lǐng)域等。因此,深入研究步進(jìn)電機(jī)的多臺(tái)同步控制問題具有重要意義[1-2]。
對(duì)于多軸步進(jìn)電機(jī)控制系統(tǒng)的研究,許賢澤等曾提出了以DSP為核心的多軸聯(lián)動(dòng)系統(tǒng)[3],但該系統(tǒng)對(duì)于CPU造成的負(fù)擔(dān)很重,并且對(duì)步進(jìn)電機(jī)的控制數(shù)量也有限。本文提出了一種利用RS485多機(jī)通信方式實(shí)現(xiàn)步進(jìn)電機(jī)多軸控制的方法。RS485總線上最多可以掛載256個(gè)從機(jī)。為了簡(jiǎn)化實(shí)驗(yàn),本系統(tǒng)由一個(gè)主機(jī)和4個(gè)從機(jī)構(gòu)成。主機(jī)從U盤中讀取事先編碼的控制數(shù)據(jù),利用RS485通信將其下載到從機(jī)的外部存儲(chǔ)器中。根據(jù)下載的數(shù)據(jù),從機(jī)的定時(shí)器產(chǎn)生相應(yīng)的PWM波,作為步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)。同時(shí),以接近開關(guān)的輸出信號(hào)作為4個(gè)方向步進(jìn)電機(jī)運(yùn)行的同步信號(hào),可以有效解決步進(jìn)電機(jī)多臺(tái)同步問題。該系統(tǒng)的樣機(jī)已制作完成。經(jīng)試驗(yàn),在經(jīng)紗間距為0.3~0.4 mm的環(huán)境下,步進(jìn)電機(jī)所帶齒輪直徑為15 mm,每步精度達(dá)到0.1 mm,可牽引經(jīng)紗經(jīng)過(guò)停經(jīng)片、綜絲和鋼筘與經(jīng)軸接經(jīng)。該控制方法精度較高,運(yùn)行穩(wěn)定。
1系統(tǒng)硬件電路設(shè)計(jì)
本設(shè)計(jì)以STC89C58單片機(jī)為核心,電機(jī)采用三洋公司的兩相混合式步進(jìn)電機(jī),驅(qū)動(dòng)器為HSM20403B混合式步進(jìn)電機(jī)驅(qū)動(dòng)器,通過(guò)RS485總線搭建成一主多從結(jié)構(gòu)。主機(jī)由USB接口、3×3矩陣按鍵和LCD液晶顯示裝置構(gòu)成。其中:USB接口用來(lái)下載U盤中的電機(jī)控制數(shù)據(jù),包括電機(jī)的轉(zhuǎn)向和轉(zhuǎn)速;按鍵和液晶裝置使用戶可以更方便地控制整個(gè)系統(tǒng);主從機(jī)之間用RS485總線進(jìn)行通信。4個(gè)從機(jī)將主機(jī)從U盤中讀取的數(shù)據(jù)放入外部存儲(chǔ)器。當(dāng)接近開關(guān)產(chǎn)生同步信號(hào)時(shí),從機(jī)讀取存儲(chǔ)器的控制數(shù)據(jù),并根據(jù)讀取的數(shù)據(jù),利用定時(shí)器產(chǎn)生相應(yīng)的PWM波來(lái)控制電機(jī)的轉(zhuǎn)向和速度。為了提高系統(tǒng)的抗干擾能力,對(duì)單片機(jī)的控制信號(hào)與驅(qū)動(dòng)信號(hào)進(jìn)行光電隔離。該控制系統(tǒng)結(jié)構(gòu)如圖1所示。
1.1主機(jī)硬件系統(tǒng)設(shè)計(jì)
根據(jù)系統(tǒng)的設(shè)計(jì)要求,主機(jī)的主要功能是通過(guò)USB接口讀取U盤中步進(jìn)電機(jī)的控制數(shù)據(jù),并將數(shù)據(jù)通過(guò)RS485總線傳送到從機(jī)。其外設(shè)主要有USB接口、按鍵和液晶顯示器。主控單元不需要大量的I/O接口和存儲(chǔ)空間,對(duì)運(yùn)算能力和運(yùn)算速度要求都不是特別高,因此,綜合考慮后采用STC89C58單片機(jī)。STC89C58增強(qiáng)型的51系列單片機(jī),支持12時(shí)鐘和6時(shí)鐘操作,包含1 280字節(jié)的SRAM、32條I/O接口、3個(gè)16位定時(shí)/計(jì)數(shù)器,完全可以滿足本系統(tǒng)的需求。
圖1 控制系統(tǒng)結(jié)構(gòu)圖
1.2USB通信模塊方案設(shè)計(jì)
USB(通用串行總線)以其支持熱插拔和即插即用、占用系統(tǒng)資源少、無(wú)總線競(jìng)爭(zhēng)等性能特點(diǎn),被廣泛應(yīng)用于生產(chǎn)和生活中。能夠支持USB通信協(xié)議的芯片有很多,如CH372、CH376、PDIUSBD12等。其中,CH376支持USB設(shè)備方式和USB主機(jī)方式,并且內(nèi)置了USB通訊協(xié)議的基本固件,以及處理Mass-Storage海量存儲(chǔ)設(shè)備專用通信協(xié)議的固件;支持3 種通訊接口,即8位并口、SPI接口和異步串口。單片機(jī)/DSP/MPU等控制器可以通過(guò)上述任何一種通訊接口控制CH376芯片[4]。CH376芯片的最小系統(tǒng)如圖2所示。
圖2 CH376芯片系統(tǒng)圖
1.3從機(jī)硬件系統(tǒng)設(shè)計(jì)
本系統(tǒng)中從機(jī)的主要任務(wù)是接收主機(jī)發(fā)送的控制指令和主機(jī)從U盤中讀取的步進(jìn)電機(jī)控制數(shù)據(jù)。當(dāng)主機(jī)發(fā)送運(yùn)行指令時(shí),從機(jī)進(jìn)入運(yùn)行狀態(tài),在運(yùn)行狀態(tài)檢測(cè)到接近開關(guān)產(chǎn)生的同步信號(hào)時(shí),從外部存儲(chǔ)器中取出步進(jìn)電機(jī)的運(yùn)行數(shù)據(jù),根據(jù)取出的數(shù)據(jù)產(chǎn)生相應(yīng)的PWM波并送給步進(jìn)電機(jī)驅(qū)動(dòng)器。此外,用戶還可以通過(guò)按鍵來(lái)調(diào)節(jié)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角度,只需事先設(shè)計(jì)好步進(jìn)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)動(dòng)距離,將電機(jī)所需的脈沖數(shù)編碼為二進(jìn)制的運(yùn)行數(shù)據(jù),通過(guò)U盤下載到從機(jī)中就可以便捷地控制多個(gè)步進(jìn)電機(jī)的運(yùn)行。
用光電耦合器TLP521將單片機(jī)控制信號(hào)與驅(qū)動(dòng)信號(hào)進(jìn)行電氣隔離,可以有效防止電磁干擾。電機(jī)驅(qū)動(dòng)采用HSM20403B混合式步進(jìn)電機(jī)驅(qū)動(dòng)器。該驅(qū)動(dòng)器由8個(gè)撥碼開關(guān)設(shè)置參數(shù):第1、2、3位設(shè)置細(xì)分?jǐn)?shù);第5、6、7位設(shè)置電機(jī)相電流。本系統(tǒng)使用的是三洋公司混合式步進(jìn)電機(jī),細(xì)分?jǐn)?shù)設(shè)置為2,電流為2 A。采用細(xì)分驅(qū)動(dòng)方式減少了系統(tǒng)的低頻震動(dòng),使電機(jī)運(yùn)行更加平穩(wěn)。
2RS485多機(jī)通信系統(tǒng)設(shè)計(jì)
RS485總線傳輸距離遠(yuǎn)、速度快、抗干擾能力強(qiáng),是工業(yè)現(xiàn)場(chǎng)廣泛應(yīng)用的數(shù)字通信標(biāo)準(zhǔn)。RS485接口標(biāo)準(zhǔn)是:傳輸介質(zhì)為雙絞線,多點(diǎn)通信,平衡式發(fā)送,差分式接收;驅(qū)動(dòng)器輸出共模電壓范圍為-7~+7 V;接收器靈敏度為200 mV;最大總線負(fù)載為32個(gè);最大傳輸速率為10 Mb/s;最大傳輸距離為1 219.2 m[5]。
RS485總線屬于外部總線,用于外部設(shè)備進(jìn)行信息和數(shù)據(jù)交換,是設(shè)備級(jí)的總線。因此,其所具有的噪聲抑制能力、數(shù)據(jù)傳輸速率、電纜長(zhǎng)度及可靠性是其他標(biāo)準(zhǔn)無(wú)法比擬的。RS485總線可以掛載256個(gè)步進(jìn)電機(jī),為未來(lái)多步進(jìn)電機(jī)控制系統(tǒng)的研究指明了一個(gè)新的方向。
2.1RS485多機(jī)通信結(jié)構(gòu)設(shè)計(jì)
本設(shè)計(jì)構(gòu)成的多機(jī)通信系統(tǒng)采用主從結(jié)構(gòu),即1個(gè)主機(jī)控制4個(gè)從機(jī)。作為從機(jī)的單片機(jī)從不主動(dòng)向主機(jī)發(fā)送任何命令,一切均由主機(jī)控制;并且,為了保證通信的穩(wěn)定性,4個(gè)從機(jī)之間沒有相互通信。RS485構(gòu)成的多機(jī)通信原理如圖3所示。在總線末端接一個(gè)匹配電阻,可以吸收總線上的反射信號(hào),有效地抑制噪聲干擾,使得傳輸信號(hào)無(wú)毛刺。根據(jù)雙絞線特性,阻抗的大小匹配電阻值應(yīng)取為120 Ω。在總線上沒有信號(hào)傳輸時(shí),總線處于懸浮狀態(tài),易受到干擾信號(hào)影響,為此在總線的差分信號(hào)A、B端接上10 kΩ電阻。當(dāng)總線懸空時(shí),差分信號(hào)A與B間的電壓大約為1.6 V,即使有干擾也很難產(chǎn)生串行通信的起始信號(hào),可以有效提高總線的抗干擾能力[6]。
圖3 多機(jī)通信原理圖
2.2通信協(xié)議設(shè)計(jì)
為了保證多機(jī)通信,首先要給4個(gè)從機(jī)分配一個(gè)地址碼。系統(tǒng)中協(xié)議有3種幀格式:地址幀、應(yīng)答幀和指令幀。地址幀和指令幀由主機(jī)發(fā)出,應(yīng)答幀由從機(jī)發(fā)出。當(dāng)某一從機(jī)收到地址幀后,把本機(jī)地址發(fā)送回主機(jī);當(dāng)返回地址正確時(shí)主機(jī)向該從機(jī)發(fā)出控制指令,從機(jī)收到控制指令后,向主機(jī)回送該指令,然后執(zhí)行相應(yīng)動(dòng)作。
通信的關(guān)鍵不僅是能夠傳輸數(shù)據(jù),更重要的是能夠保證數(shù)據(jù)的準(zhǔn)確性。為此,本系統(tǒng)作如下優(yōu)化設(shè)計(jì):在通信過(guò)程中,對(duì)于主機(jī)發(fā)送的地址幀,如果從機(jī)沒有在規(guī)定時(shí)間內(nèi)響應(yīng),則主機(jī)重新發(fā)送地址;如果發(fā)送3次仍沒有從機(jī)響應(yīng),則主機(jī)認(rèn)為與該從機(jī)通信出現(xiàn)故障,進(jìn)行報(bào)警并繼續(xù)執(zhí)行其他任務(wù)。另外,該系統(tǒng)要通過(guò)USB接口進(jìn)行數(shù)據(jù)下載,為了避免通信頻繁造成的數(shù)據(jù)丟失,在通信協(xié)議中采用數(shù)據(jù)備份的方式,將長(zhǎng)度為N的緩沖區(qū)里的數(shù)據(jù)備份到長(zhǎng)度為2N的緩沖區(qū)中,傳輸過(guò)程中若傳輸失敗則將備份緩沖區(qū)的數(shù)據(jù)發(fā)送出去。這種方法很好地解決了大量數(shù)據(jù)在傳輸過(guò)程中丟失的問題,大大增強(qiáng)了通信的可靠性。
通信過(guò)程中主機(jī)發(fā)送的指令均為二進(jìn)制格式,因此需對(duì)控制電機(jī)方向和轉(zhuǎn)速的數(shù)據(jù)事先進(jìn)行二進(jìn)制編碼。其中末字節(jié)代表步進(jìn)電機(jī)要走的步數(shù),字節(jié)的最高位則代表電機(jī)轉(zhuǎn)動(dòng)的方向,字節(jié)的后7位則代表步進(jìn)電機(jī)所運(yùn)行的步數(shù)。例如:0x83代表步進(jìn)電機(jī)正向3步;0x04代表步進(jìn)電機(jī)反向走4步。此外,主機(jī)還可通過(guò)按鍵向從機(jī)發(fā)送控制指令。
3系統(tǒng)軟件設(shè)計(jì)
3.1主機(jī)軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)主要分為主機(jī)和從機(jī)兩個(gè)模塊的設(shè)計(jì)。主機(jī)為控制系統(tǒng)的核心,其主程序包括對(duì)系統(tǒng)的初始化,從U盤中讀取步進(jìn)電機(jī)控制數(shù)據(jù)(正/反轉(zhuǎn)、轉(zhuǎn)速、運(yùn)行步數(shù)),并根據(jù)不同的按鍵調(diào)用相應(yīng)的子程序,對(duì)從機(jī)發(fā)出指令。主機(jī)主程序流程如圖4所示。
圖4 主機(jī)主程序流程圖
3.2從機(jī)軟件設(shè)計(jì)
從機(jī)有運(yùn)行和設(shè)置兩種狀態(tài)。在設(shè)置狀態(tài)下,從機(jī)一直等待主機(jī)控制指令的到來(lái)。當(dāng)主機(jī)發(fā)送指令時(shí),從機(jī)產(chǎn)生串口中斷,執(zhí)行相應(yīng)的中斷服務(wù)程序。串口中斷服務(wù)程序如圖5所示。當(dāng)從機(jī)下載電機(jī)運(yùn)行的數(shù)據(jù)后,主機(jī)通過(guò)按鍵發(fā)送運(yùn)行指令,從機(jī)進(jìn)入運(yùn)行狀態(tài),并在運(yùn)行狀態(tài)下等待接近開關(guān)產(chǎn)生的外部中斷;若中斷產(chǎn)生,則執(zhí)行對(duì)電機(jī)控制的中斷子程序。從機(jī)外部中斷的流程如圖6所示。從機(jī)采用定時(shí)器產(chǎn)生PWM波的方法來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)。由于步進(jìn)電機(jī)的最高啟動(dòng)速度要比最高運(yùn)行速度低很多,并且在停止的時(shí)候由于慣性作用可能會(huì)發(fā)生過(guò)沖現(xiàn)象,因此步進(jìn)電機(jī)的速度是一個(gè)加速—?jiǎng)蛩佟獪p速—停止的過(guò)程。理想的步進(jìn)電機(jī)加減速曲線是非線性曲線。軟件設(shè)計(jì)采用梯形加減速的設(shè)計(jì)方法,這種方法加減速平穩(wěn)性好,適用于速度變化范圍較大的快速定位,并且編程實(shí)現(xiàn)簡(jiǎn)單。
圖5 從機(jī)串口中斷流程圖
圖6 從機(jī)運(yùn)行流程圖
4結(jié)語(yǔ)
采用RS485多機(jī)通信方式,以主從結(jié)構(gòu)控制多個(gè)步進(jìn)電機(jī)的控制系統(tǒng),較單獨(dú)的單片機(jī)控制而言,利用了RS485總線傳輸距離長(zhǎng)、掛載負(fù)載多的優(yōu)點(diǎn),使系統(tǒng)適應(yīng)性更廣。從機(jī)的外部存儲(chǔ)芯片可以存儲(chǔ)大量的步進(jìn)電機(jī)控制數(shù)據(jù),下載不同的數(shù)據(jù)便可使步進(jìn)電機(jī)達(dá)到不同的運(yùn)行要求,這使電機(jī)的控制更加靈活多樣。目前,該系統(tǒng)已在織機(jī)上裝配實(shí)驗(yàn)完成,經(jīng)試驗(yàn),在經(jīng)紗間距為0.3~0.4 mm的環(huán)境下,步進(jìn)電機(jī)所帶齒輪直徑為15 mm,其每步精度達(dá)到0.1 mm,可牽引經(jīng)紗經(jīng)過(guò)停經(jīng)片、綜絲和鋼筘與經(jīng)軸接經(jīng)。步進(jìn)電機(jī)在工作頻率內(nèi)定位精度高,運(yùn)行平穩(wěn)。
參考文獻(xiàn):
[1]尚文杰,宋偉剛. 基于USB接口的步進(jìn)電機(jī)控制系統(tǒng)[J].大連民族學(xué)院學(xué)報(bào), 2009, 11(3): 223—226.
[2]彭景春. 多步進(jìn)電機(jī)的同步精確運(yùn)動(dòng)控制研究[D].哈爾濱:哈爾濱理工大學(xué), 2009.
[3]許賢澤,喻佳,張立英. 步進(jìn)電機(jī)多軸聯(lián)動(dòng)DSP控制系統(tǒng)研究[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新, 2005, 18(5): 110—112.
[4]李萍,單葆悅,劉曉東. USB芯片CH376在智能儀表中的應(yīng)用[J].計(jì)量與測(cè)試技術(shù), 2011, 38(2): 9—10.
[5]程凱,孫克怡. RS—485總線理論的應(yīng)用與分析[J].青島海洋大學(xué)學(xué)報(bào), 2003, 33(5): 753—758.
[6]陳鐵軍,謝春萍. PC機(jī)與RS485總線多機(jī)串行通信的軟硬件設(shè)計(jì)[J].現(xiàn)代電子技術(shù), 2007(5): 103—105.
(責(zé)任編輯:王長(zhǎng)通)
A Four-axis Synchronous Control System of Stepping Motor Based
on RS485 Multi-machine Communication
ZHANG Wu-yi, LUO Dong-dong, CHENG Bin
(Zhongyuan University of Technology, Zhengzhou 450007, China)
Key words:RS485 multi-machine communication; stepper motor;synchronous control