亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        電機(jī)控制系統(tǒng)的軟件設(shè)計(jì)與解決方案

        2016-03-16 09:26:02朱艷芳
        導(dǎo)航定位與授時(shí) 2016年6期
        關(guān)鍵詞:控制指令流程圖代碼

        楊 茜,朱艷芳,付 士,白 雷

        ( 湖北三江航天紅峰控制有限公司,湖北 孝感 432000)

        電機(jī)控制系統(tǒng)的軟件設(shè)計(jì)與解決方案

        楊 茜,朱艷芳,付 士,白 雷

        ( 湖北三江航天紅峰控制有限公司,湖北 孝感 432000)

        為防止電機(jī)輸出軸因意外信號(hào)或者人為過失導(dǎo)致電機(jī)輸出軸偏離預(yù)想位置,提出一種基于1553B總線數(shù)據(jù)傳輸?shù)碾姍C(jī)控制系統(tǒng)解決方案。本系統(tǒng)包括測(cè)試儀模塊、控制盒、被控電機(jī)及位置傳感器等。主要實(shí)現(xiàn)電機(jī)1輸出軸鎖緊、解鎖及采集電機(jī)2電壓反饋功能。

        數(shù)據(jù)傳輸;1553B bus;鎖緊;解鎖

        0 引言

        為防止電機(jī)輸出軸因意外信號(hào)或者人為過失導(dǎo)致電機(jī)輸出軸偏離預(yù)想位置,導(dǎo)致輸出軸連接表盤指針指示角度偏離預(yù)期值[1],本文提出一種基于1553B總線數(shù)據(jù)傳輸?shù)碾姍C(jī)控制系統(tǒng)解決方案。電機(jī)控制系統(tǒng)包括測(cè)試儀模塊、控制盒、被控步進(jìn)電機(jī)1、被控步進(jìn)電機(jī)2及位置傳感器,如圖1所示,其中測(cè)試儀模塊1553B總線控制器采用NI公司的PXI 6232板卡,控制盒采用DSP TMS320F2812。

        1 工作原理

        測(cè)試儀模塊發(fā)出鎖緊(解鎖)指令至控制盒,控制盒驅(qū)動(dòng)步進(jìn)電機(jī)1輸出軸自初始位置向外伸出或向內(nèi)縮進(jìn)。位置傳感器1及位置傳感器2實(shí)時(shí)采集步進(jìn)電機(jī)1輸出軸的位置狀態(tài),當(dāng)位置傳感器1感知到步進(jìn)電機(jī)1輸出軸到達(dá)鎖緊位置時(shí),DSP的GPIOF5口電平由1變?yōu)?;反之當(dāng)位置傳感器2感知到步進(jìn)電機(jī)1輸出軸到達(dá)解鎖位置時(shí),DSP的GPIOF4口電平由1變?yōu)?。

        當(dāng)系統(tǒng)處于解鎖狀態(tài)時(shí),測(cè)試模塊可以發(fā)送不同大小的控制角度信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī)2輸出軸作伸縮動(dòng)作。電機(jī)2的輸出軸在齒輪的作用下促使與之相連的表盤指針發(fā)生一定角度的偏轉(zhuǎn)。

        原控制方案中未用鎖緊裝置固定電機(jī),在外部干擾嚴(yán)重的情況下會(huì)導(dǎo)致偏轉(zhuǎn)電機(jī)發(fā)生不必要的偏轉(zhuǎn),使得控制角度偏離預(yù)期值。

        電機(jī)控制系統(tǒng)示意圖如圖1所示。

        圖1 電機(jī)控制系統(tǒng)示意圖Fig.1 The scheme of control system of motor

        2 控制軟件設(shè)計(jì)

        2.1 設(shè)計(jì)環(huán)境

        設(shè)計(jì)環(huán)境為CCStudio 3.1,編程語言為C語言。

        2.2 設(shè)計(jì)思路

        控制盒中的DSP軟件用C語言設(shè)計(jì)開發(fā),步進(jìn)電機(jī)控制采用控制DSP的I/O口輸出脈沖的方式實(shí)現(xiàn)。整個(gè)控制軟件是一個(gè)死循環(huán),在循環(huán)中接收1553B命令,根據(jù)CAN命令控制步進(jìn)電機(jī)運(yùn)動(dòng)完成鎖緊及解鎖控制功能。軟件采用多線程控制方式,實(shí)時(shí)地更新通過1553B總線發(fā)送的伺服機(jī)構(gòu)位置狀態(tài)信息[2]。

        2.3 設(shè)計(jì)流程

        控制主程序分為兩個(gè)分支,當(dāng)控制盒上電后,系統(tǒng)循環(huán)查詢DSP的GPIOA15的狀態(tài),如果GPIOA15電平為低電平則進(jìn)行電機(jī)2的旋轉(zhuǎn)控制;反之,進(jìn)行電機(jī)1的鎖緊解鎖控制。主程序設(shè)計(jì)流程圖如圖2所示。

        圖2 主程序流程圖Fig.2 The flow chart of main function

        電機(jī)2的旋轉(zhuǎn)控制流程如圖3所示。

        圖3 控制軟件旋轉(zhuǎn)功能流程圖Fig.3 The flow chart of rotate function of control software

        電機(jī)1的鎖緊解鎖流程如圖4所示。

        圖4 控制軟件鎖緊解鎖功能流程圖Fig.4 The flow chart of lock function of control software

        2.4 代碼編寫

        控制主程序[3]實(shí)現(xiàn)部分代碼如下所示:

        void main(void)

        {

        InitSysCtrl();

        ……//初始化系統(tǒng)

        while (1)

        {

        if(GpioDataRegs.GPADAT.bit.GPIOA15 == 0)

        { MyControlCircle(); }// 電機(jī)2旋轉(zhuǎn)動(dòng)作

        else { MyLockCircle();}//電機(jī)1鎖緊解鎖動(dòng)作

        }

        }

        電機(jī)1鎖緊解鎖功能實(shí)現(xiàn)部分代碼[4]如下所示:

        void MyLockCircle(void)

        {

        read_AD_With_Filter(AD_Val); //讀取AD通道采集信號(hào)

        Uk = AD_Val[0]; //取出對(duì)應(yīng)電機(jī)控制指令位數(shù)據(jù)

        DT = 1280 - (Uk / 3.2); //計(jì)算比較寄存器值

        if (DT >= 0){EvbRegs.CMPR4 = DT;}//PWM波輸出

        else {EvbRegs.CMPR4 = -DT;} //PWM波輸出

        }

        電機(jī)2旋轉(zhuǎn)控制部分代碼[5]如下所示:

        void MyControlCircle(void)

        {

        read_AD_With_Filter(AD_Val); //讀取AD通道采集信號(hào)

        Uk = AD_Val[0]; //取出對(duì)應(yīng)電機(jī)控制指令位數(shù)據(jù)

        Uf = AD_Val[2]; //取出對(duì)應(yīng)電機(jī)反饋指令位數(shù)據(jù)

        ek = Uk + Uf * 5 * 35 / 246; //誤差生成

        DT = -(ek * 6 / 2 - 1280); //計(jì)算比較寄存器值

        if (DT >= 0) {EvbRegs.CMPR4 = DT;} //PWM波輸

        else {EvbRegs.CMPR4 = -DT; } //PWM波輸

        }

        3 控制軟件設(shè)計(jì)

        3.1 設(shè)計(jì)環(huán)境

        設(shè)計(jì)環(huán)境為Microsoft Visual Studio 2005,編程語言為C語言。

        3.2 設(shè)計(jì)思路

        測(cè)試軟件用VS2005開發(fā),主要完成控制命令的發(fā)送以及轉(zhuǎn)位機(jī)構(gòu)位置信息的讀取。本測(cè)試儀通過NI公司的1553B總線控制器PXI6232[6]完成命令的發(fā)送和位置信息的獲取。

        3.3 設(shè)計(jì)流程

        鎖緊解鎖模塊控制電機(jī)1輸出軸動(dòng)作,實(shí)現(xiàn)系統(tǒng)鎖緊解鎖功能。測(cè)試軟件鎖緊解鎖功能實(shí)現(xiàn)流程圖如圖5所示。

        圖5 測(cè)試軟件解鎖鎖緊功能流程圖Fig.5 The flow chart of lock function of test software

        系統(tǒng)循環(huán)查看PXI6232板卡IO口P1.0及P1.1的狀態(tài)信息[7],并根據(jù)其狀態(tài)信息使能或禁止系統(tǒng)解鎖或鎖緊功能。當(dāng)系統(tǒng)提示已鎖緊后,電機(jī)2旋轉(zhuǎn)功能禁止,用戶需完成解鎖操作,當(dāng)系統(tǒng)提示已解鎖后,電機(jī)2旋轉(zhuǎn)功能使能。

        當(dāng)系統(tǒng)旋轉(zhuǎn)功能使能后,系統(tǒng)可以實(shí)現(xiàn)對(duì)電機(jī)2的旋轉(zhuǎn)控制。旋轉(zhuǎn)功能流程圖如圖6所示。

        圖6 測(cè)試軟件旋轉(zhuǎn)功能流程圖Fig.6 The flow chart of rotate function of test software

        3.4 代碼編寫

        鎖緊操作功能部分代碼[8]如下所示:

        void OnBnClickedSuojin() //鎖緊

        {

        CNiBoard *pPXI6232; //定義新的板卡操作對(duì)象指針

        bool ioflag_F4, ioflag_F5;//IO口電平標(biāo)志位

        pPXI6232 = new CNiBoard; //定義板卡操作對(duì)象

        pPXI6232->AOTaskConfig(_T("Dev1/ao0"));//配置控制指令輸出口

        pPXI6232->WriteSingleSample(1); //發(fā)送1°控制指令

        do {//解鎖位置

        ioflag_F4 = pPXI6232->IORead(_T("Dev1/port0/line0"));

        //鎖緊位置

        ioflag_F5 = pPXI6232->IORead(_T("Dev1/port0/line1")); }

        while (ioflag_F5);

        pPXI6232->WriteSingleSample(0); //發(fā)送零控信號(hào)

        MessageBox(_T("已鎖緊"), NULL, MB_OK); //提示“已鎖緊”信息

        }

        解鎖操作功能部分代碼如下所示:

        void OnBnClickedButton4() //解鎖

        {

        CNiBoard *pPXI6232; //定義新的板卡操作對(duì)象指針

        bool ioflag_F4, ioflag_F5;//IO口電平標(biāo)志位

        pPXI6232 = new CNiBoard; //定義板卡操作對(duì)象

        pPXI6232->AOTaskConfig(_T("Dev1/ao0"));//配置控制指令輸出口

        pPXI6232->WriteSingleSample(-1); //發(fā)送-1°控制指令

        do {//解鎖位置

        ioflag_F4 = pPXI6232->IORead(_T("Dev1/port0/line0"));

        //鎖緊位置

        ioflag_F5 = pPXI6232->IORead(_T("Dev1/port0/line1")); }

        while (ioflag_F4);

        pPXI6232->WriteSingleSample(0); //發(fā)送零控信號(hào)

        MessageBox(_T("已解鎖"), NULL, MB_OK); //提示“已解鎖”信息

        }

        電機(jī)2的旋轉(zhuǎn)控制過程中需要實(shí)時(shí)采集電機(jī)反饋角度信號(hào)[9],本設(shè)計(jì)中采取多線程[10]模式進(jìn)行反饋角度讀取操作。

        當(dāng)用戶點(diǎn)擊旋轉(zhuǎn)按鈕后系統(tǒng)執(zhí)行旋轉(zhuǎn)功能,部分代碼如下所示:

        void OnBnClickedXuanzhuan()

        {

        CString s;

        hDlg->GetDlgItem(IDC_TESTAMPLITUDE)->GetWindo-wText(s);

        double amplitude = atof(s.GetBuffer());//獲取“目標(biāo)角度”輸入值

        pPXI6232->AOTaskConfig(_T("Dev1/ao1"));//配置控制指令輸出口

        pPXI6232->WriteSingleSample(amplitude); //發(fā)送設(shè)計(jì)“目標(biāo)角度”

        OnBnClickedGetuf();//調(diào)用反饋獲取函數(shù)

        }

        當(dāng)用戶點(diǎn)擊采集反饋按鈕時(shí),觸發(fā)系統(tǒng)采集反饋角度功能,部分代碼如下所示:

        void OnBnClickedGetuf()

        {

        if (getukflag == true){return;} //采集反饋標(biāo)志位為真則跳出

        getukflag = true; //采集反饋標(biāo)志位置位

        GetDlgItem(IDC_GETUF)->EnableWindow(FALSE);//禁止采集反饋功能

        GetDlgItem(IDC_STOPGETUF)->EnableWindow(TRUE); //使能停止采集反饋功能

        xuanzhuan = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)XUANZHUAN, this, CREATE_SUSPENDED, &xuanzhuanid); //定義采集反饋角度的線程(其中xuanzhuanid為DWORD型變量,XUANZHUAN為反饋角度采集函數(shù))

        ResumeThread(xuanzhuan); //啟動(dòng)采集角度反饋線程

        }

        反饋角度采集函數(shù)如下所示:

        void XUANZHUAN(TestFormView *hWnd) //測(cè)試界面?zhèn)魅胄D(zhuǎn)線程

        {

        hWnd->pPXI6232->AITaskConfig(_T("Dev1/ai0"));//配置AI通道

        while (hWnd->getukflag) //當(dāng)采集反庫標(biāo)識(shí)置位時(shí)讀取反饋角度

        {

        hWnd->ukreadvector = hWnd->pPXI6232->ReadSingleSample();//讀取反饋角度值

        PostMessage(hWnd->m_hWnd, WM_SHOWUF, NULL, NULL);//發(fā)送消息置界面

        Sleep(500);//反饋角度獲取間隙為0.5s

        }

        }

        當(dāng)用戶點(diǎn)擊停止采集按鈕時(shí),觸發(fā)系統(tǒng)采集反饋角度功能,部分代碼如下所示:

        void OnBnClickedStopgetuf()

        {

        GetDlgItem(IDC_STOPGETUF)->EnableWindow(FALSE);

        GetDlgItem(IDC_GETUF)->EnableWindow(TRUE);

        getukflag = false;

        }

        3.5 用戶界面功能描述

        進(jìn)入電機(jī)控制界面時(shí),用戶可以對(duì)電機(jī)進(jìn)行解鎖鎖緊控制及旋轉(zhuǎn)控制,在電機(jī)旋轉(zhuǎn)過程中,用戶可以對(duì)反饋角度進(jìn)行采集。測(cè)試界面如圖7所示。

        圖7 測(cè)試界面示意圖Fig.7 The scheme of test interface

        當(dāng)圖7中鎖緊按鈕、旋轉(zhuǎn)按鈕、采集反饋按鈕及停止采集按鈕均被禁止時(shí),表示目前電機(jī)1輸出軸所處位置為鎖緊位置,系統(tǒng)僅可進(jìn)行鎖緊操作。

        當(dāng)點(diǎn)擊解鎖按鈕,測(cè)試軟件界面提示信息已解鎖(如圖8所示)后,用戶可在界面輸入目標(biāo)角度,并點(diǎn)擊旋轉(zhuǎn),電機(jī)2在控制信號(hào)作用下進(jìn)行相應(yīng)動(dòng)作,用戶可點(diǎn)擊采集反饋按鈕,系統(tǒng)可采集與電機(jī)2輸出軸相連接的表盤指針實(shí)際偏轉(zhuǎn)角度并顯示于界面內(nèi)。

        圖8 解鎖提示信息示意圖Fig.8 The scheme of hint of unlock

        點(diǎn)擊圖9中的停止按鈕時(shí),界面反饋停止更新,且停止采集按鈕被禁止,采集反饋按鈕被使能。

        圖9 測(cè)試界面示意圖Fig.9 The scheme of test interface

        3.6 數(shù)據(jù)對(duì)比

        在新控制方案鎖緊狀態(tài)下人為扳動(dòng)步進(jìn)電機(jī)2的輸出軸若干次,然后采集零位值ZeroNew,在舊控制方案中人為扳動(dòng)電機(jī)輸出軸若干次并采集輸出軸位置零位反饋值ZeroOld,結(jié)果如表1所示。

        表1 數(shù)據(jù)對(duì)比表

        由表1可知,鎖緊裝置有效地防止了電機(jī)因外力干擾而發(fā)生不必要的動(dòng)作所造成的偏離預(yù)期位置。

        4 結(jié)論

        本文針對(duì)電機(jī)輸出軸易因意外信號(hào)或者人為過失導(dǎo)致電機(jī)輸出軸偏離預(yù)想位置的問題,根據(jù)需求設(shè)計(jì)基于1553B總線數(shù)據(jù)傳輸?shù)碾姍C(jī)控制系統(tǒng),實(shí)現(xiàn)電機(jī)系統(tǒng)解鎖鎖緊操作,并能實(shí)時(shí)控制和采集電機(jī)偏轉(zhuǎn)角度。經(jīng)多組測(cè)試數(shù)據(jù)實(shí)驗(yàn)驗(yàn)證與對(duì)比,證明了所設(shè)計(jì)電機(jī)控制系統(tǒng)具有較高的精確度。該方案可以保證電機(jī)控制的實(shí)時(shí)性和準(zhǔn)確性,解決了因電機(jī)輸出軸意外偏離而導(dǎo)致測(cè)試結(jié)果與預(yù)期相差較大的問題。

        [1] 顧衛(wèi)鋼.手把手教你學(xué)DSP——基于TMS320X281x[M].北京:北京航空航天大學(xué)出版社2011:180-189.

        [2] TMS320F2810, TMS320F2812 Digital Signal Processors[R].Texas Instruments, 2003:68-69.

        [3] TMS320F28x Boot ROM Reference Guide (Rev.A)[R].Texas Instruments, 2003:31-36.

        [4] Hardware Design Guidelines for TMS320F28xx and TMS320F28xxx DSCs[R].Texas Instruments, 2008:11-17.

        [5] 蘇奎峰,呂強(qiáng).TMS320F2812 原理與開發(fā)[M].北京:電子工業(yè)出版社,2005:33-36.

        [6] 孫麗明.TMS320F2812原理及其C語言程序開發(fā)[M].北京: 清華大學(xué)出版社,2008:112-120.

        [7] TMS320F281x Assembly Language Tools User’s Guide[R].Texas Instruments, 2002:243-250.

        [8] TMS320F28xx28xxx DSCs模擬接口設(shè)計(jì)綜述[R].Texas Instruments,2008:11-14.

        [9] Running an Application from Internal Flash Memory on the TMS320F28xx DSP[R].Texas Instruments, 2008:10-19.

        [10] 張衛(wèi)寧.TMS320C28x系列DSP的CPU與外設(shè)(下)[M].北京:清華大學(xué)出版社,2005:180-200.

        Software Design and Solution for a Control System of Motor

        YANG Xi, ZHU Yan-fang, FU Shi, BAI Lei

        (Hubei Sanjiang Aerospace Hongfeng Control Co.,Ltd., Xiaogan, Hubei 432000,China)

        To provent the motor axis's departure from the expected position due to accidental signal or artificial fault, a solution for motor control system by using 1553B bus data transmission is put forward to realize locking/unlocking function of motor 1 and collect position state of motor 2 at the same time.

        Data transmission; 1553B bus; Lock; Unlock

        10.19306/j.cnki.2095-8110.2016.06.015

        2015-03-28;

        2015-07-01。

        楊茜(1987 - ),女,碩士,助理工程師,主要從事軟件測(cè)試方面的研究。E-mail: yangxi_88@163.com

        TP311.1

        A

        2095-8110(2016)06-0076-06

        猜你喜歡
        控制指令流程圖代碼
        城軌車輛控制指令試驗(yàn)裝置研制
        宏指令控制的多軸系統(tǒng)研究及實(shí)現(xiàn)
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        專利申請(qǐng)審批流程圖
        河南科技(2016年8期)2016-09-03 08:08:22
        專利申請(qǐng)審批流程圖
        河南科技(2016年6期)2016-08-13 08:18:29
        高速公路隧道通風(fēng)、照明聯(lián)動(dòng)控制方案探討
        科技視界(2016年13期)2016-06-13 23:11:43
        煤礦提升機(jī)控制系統(tǒng)中PLC技術(shù)的應(yīng)用
        把女邻居弄到潮喷的性经历 | 国产精品一级av一区二区| 亚洲精品一区二在线观看| 久久久久亚洲av成人人电影| 国产精品9999久久久久| 国产在线网址| 国产视频在线播放亚洲| 在线日本看片免费人成视久网| 久久精品99久久香蕉国产| 在线观看av中文字幕不卡| 国产高潮精品一区二区三区av | 一二三四中文字幕日韩乱码| 麻豆精品一区二区三区| 日本国产成人国产在线播放| 久久久久久国产精品美女| 第十色丰满无码| 熟女人妻一区二区三区| 无码熟妇人妻av影音先锋| 同性男男黄g片免费网站| 亚洲欧美香港在线观看三级片 | 日韩精品一区二区三区免费视频 | 人妻少妇精品无码系列| 日韩有码在线一区二区三区合集| 久久人妻无码一区二区| 国产精品一区二区久久| 国内精品人人妻少妇视频| 国产一区av男人天堂| 久久精品噜噜噜成人| 亚洲欧洲久久久精品| 国产av一区二区三区天美| 国产亚洲美女精品久久久2020| 中文字幕精品久久久久人妻红杏1| 国产亚洲曝欧美不卡精品| 丝袜美腿福利视频在线| 精品亚洲成a人片在线观看| 国产精品成人嫩妇| 搞黄色很刺激的网站二区| 国产午夜免费高清久久影院| 男女18禁啪啪无遮挡| 一本色道久久综合狠狠躁中文| 国产熟人精品一区二区|