• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于QT平臺(tái)的雷達(dá)伺服調(diào)試系統(tǒng)

      2021-06-16 06:43:44翔,劉
      艦船電子對(duì)抗 2021年2期
      關(guān)鍵詞:伺服系統(tǒng)串口繪制

      宣 翔,劉 悅

      (1.中國(guó)電子科技集團(tuán)公司第三十八研究所,安徽 合肥 230088;2.長(zhǎng)鑫存儲(chǔ)技術(shù)有限公司,安徽 合肥 230601)

      0 引 言

      隨著現(xiàn)代雷達(dá)指標(biāo)的不斷提升,雷達(dá)伺服系統(tǒng)朝著高精度、高響應(yīng)方向不斷發(fā)展,伺服系統(tǒng)性能的提升不僅對(duì)伺服系統(tǒng)配套的電氣元件性能提出更高的要求,也對(duì)系統(tǒng)調(diào)試發(fā)起了更大的挑戰(zhàn)。傳統(tǒng)的雷達(dá)伺服調(diào)試由于缺乏人機(jī)交互界面,調(diào)試過(guò)程中更多依賴(lài)于工程人員的項(xiàng)目經(jīng)驗(yàn)和對(duì)電氣元件的理解從而給出輸出變量,且被控元件相應(yīng)的反饋信號(hào)只能依賴(lài)于工程人員通過(guò)控制軟件中的數(shù)據(jù)記錄分析以及通過(guò)示波器在通信端點(diǎn)完成曲線記錄。

      基于傳統(tǒng)雷達(dá)伺服調(diào)試過(guò)程中操作復(fù)雜、變量給定模糊不清且狀態(tài)反饋顯示困難等狀況,本文設(shè)計(jì)開(kāi)發(fā)的一種針對(duì)雷達(dá)伺服調(diào)試的系統(tǒng),通過(guò)控制器局域網(wǎng)絡(luò)(CAN)總線、串口通信等多種方式與外部元件進(jìn)行信息交互,繪制實(shí)時(shí)動(dòng)態(tài)曲線圖記錄電機(jī)轉(zhuǎn)速、電流等狀態(tài)信息,且在測(cè)試過(guò)程中實(shí)時(shí)編輯控制指令并發(fā)送。

      1 伺服調(diào)試系統(tǒng)界面結(jié)構(gòu)

      用戶(hù)界面是否美觀以及易操作是衡量一個(gè)UI界面友好與否的重要標(biāo)準(zhǔn),用戶(hù)界面部分作為本系統(tǒng)重要的組成部分,布局和設(shè)計(jì)均基于以上兩點(diǎn)完成。

      QT平臺(tái)作為當(dāng)今界面設(shè)計(jì)時(shí)常用的軟件平臺(tái),其采用的C++編程語(yǔ)言作為內(nèi)核語(yǔ)言,設(shè)計(jì)人員在編程時(shí)可以實(shí)時(shí)進(jìn)行效果仿真和調(diào)試。同時(shí),該平臺(tái)包含多種實(shí)用的外部庫(kù),設(shè)計(jì)人員通過(guò)庫(kù)的調(diào)用即可實(shí)現(xiàn)與計(jì)算機(jī)和驅(qū)動(dòng)之間的互連,并實(shí)現(xiàn)向程序添加圖片、多媒體等功能,操作簡(jiǎn)單。本系統(tǒng)基于QT平臺(tái)在界面開(kāi)發(fā)時(shí)的以上優(yōu)勢(shì),采用該平臺(tái)完成用戶(hù)界面的設(shè)計(jì)。本系統(tǒng)界面設(shè)計(jì)結(jié)構(gòu)主要包括如圖 1所示的部分,主頁(yè)面下包括測(cè)試模式和實(shí)驗(yàn)?zāi)J?種模式,測(cè)試模式主要包括用于顯示數(shù)字信號(hào)輸入輸出狀態(tài)的點(diǎn)燈模塊,曲線繪制模塊主要顯示如電流、電壓、速度等實(shí)時(shí)連續(xù)變化的變量用以記錄,而串口、CAN通信模塊則用于與外部元件實(shí)時(shí)通信,獲取對(duì)方狀態(tài)并下達(dá)相應(yīng)指令。實(shí)驗(yàn)?zāi)J较聟?shù)調(diào)整模塊用于改變用戶(hù)的自定義參數(shù),并通過(guò)指令下達(dá)模塊下達(dá)相應(yīng)的指令。

      2 界面顯示設(shè)計(jì)

      2.1 信號(hào)與槽機(jī)制

      信號(hào)與槽機(jī)制作為QT平臺(tái)的核心機(jī)制,它的本質(zhì)是一種用于對(duì)象之間通信的機(jī)制,當(dāng)對(duì)象改變其狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射出去,槽用于接收信號(hào),并在收到信號(hào)后立即執(zhí)行相應(yīng)的成員函數(shù),信號(hào)與槽取代了函數(shù)指針,使得通信程序的編寫(xiě)變得更加簡(jiǎn)潔明了。其中,信號(hào)與槽之間的關(guān)系可以描述為:多個(gè)信號(hào)可以連接到1個(gè)槽,1個(gè)信號(hào)可以連接到多個(gè)槽,圖2展示了信號(hào)與槽之間的關(guān)系。

      圖2 信號(hào)與槽關(guān)系模型

      QT中標(biāo)準(zhǔn)的信號(hào)與槽格式為:

      connect(Object1,Signal1,Object2,Slot1);

      2.2 點(diǎn)燈模塊

      本文設(shè)計(jì)了點(diǎn)燈模塊用于直觀地顯示如速度到達(dá)等數(shù)字變量,如條件滿(mǎn)足,則顯示為綠色,如條件不滿(mǎn)足顯示為紅色,或其他的一些警告性情況,呈紅黃色交替顯示。

      QT平臺(tái)常采用QpushButton類(lèi)按鈕用于變量狀態(tài)顯示,QpushButton本身為矩形,本文需要將其變?yōu)閳A形且顯示為特定的圖片,這里采用改變樣式表的方法,將需要顯示的圖片樣式添加到Button的樣式表中,并采用setStyleSheet函數(shù)進(jìn)行設(shè)定,例如setStyleSheet(“QpushButton{border-image:url(:/new/prefix1/green.ico);}”);即將Button設(shè)置為綠色圓形按鈕圖片。為實(shí)現(xiàn)數(shù)字變量改變時(shí)按鈕顯示狀態(tài)隨之改變的功能,本文采用了changeButtonico()函數(shù),代碼如下:

      void Button::changeButtonico()

      {

      if(speedIsOK)

      ui->button_speed->setStyleSheet(“QpushButton{border-image:url(:/new/prefix1/green.ico);}”);

      else

      ui->button_speed->setStyleSheet(“QpushButton{border-image:url(:/new/prefix1/red.ico);}”);

      為實(shí)現(xiàn)警告性情況按鈕狀態(tài)呈紅黃交替顯示,速度到達(dá)模塊報(bào)警,本文采用了QTimer類(lèi)timeout函數(shù),通過(guò)信號(hào)與槽機(jī)制將QTimer計(jì)時(shí)器與用于圖片交替顯示的icoChange()函數(shù)相連,實(shí)現(xiàn)代碼如下:

      connect(m_timer,SIGNAL(timeout()),this,SLOT(icoChange());

      m_timer=new QTimer(this);m_timer->start(10);

      在icoChange()函數(shù)中,采用了int m_count變量:

      m_count+=1;

      if(m_count%2)

      ui->button_speed->setStyleSheet(“QpushButton{border-image:url(:/new/prefix1/red.ico);}”);

      else

      ui->button_speed->setStyleSheet(“QpushButton{border-image:url(:/new/prefix1/yellow.ico);}”);

      if(m_count==100)

      m_count=0;

      通過(guò)整型變量隨時(shí)間計(jì)數(shù)器自加,并向2取余,實(shí)現(xiàn)交替改變,當(dāng)m_count到達(dá)既定數(shù)值時(shí)需要置位0,函數(shù)循環(huán)調(diào)用,從而實(shí)現(xiàn)狀態(tài)的循環(huán)顯示。

      2.3 雙緩沖機(jī)制

      QT中采用QPainter類(lèi)繪制圖形,當(dāng)控件重繪頻繁時(shí),例如實(shí)時(shí)采集到變量數(shù)值變化并繪制成曲線圖時(shí),由于屏幕高頻率刷新,從而引起屏幕閃爍,重回頻率越高,閃爍越明顯[1]。雙緩沖機(jī)制的原理是繪制控件時(shí),首先將要繪制的內(nèi)容繪制在1個(gè)圖片中,再將圖片一次性繪制到控件上,通過(guò)這種方式,可以使圖片的擦寫(xiě)過(guò)程在幕后進(jìn)行,避免閃爍的效果,原理如圖3所示。本文數(shù)據(jù)采集后繪制的曲線圖使得屏幕刷新頻率較高,因此需要采用雙緩沖機(jī)制繪制圖形。

      圖3 雙緩沖機(jī)制原理圖

      代碼的實(shí)現(xiàn)主要通過(guò)refreshPixmap()函數(shù),首先將當(dāng)前的pix圖像賦值給一個(gè)臨時(shí)的tmpPix圖像,然后采用QPainter類(lèi)將采集到的圖像信息以及固有的一些屬性如坐標(biāo)軸、刻度等在該臨時(shí)圖像上進(jìn)行繪制,隨后通過(guò)drawPixmap()函數(shù)將臨時(shí)圖像繪制到painter上,再通過(guò)事件event調(diào)用painter,從而實(shí)現(xiàn)了實(shí)時(shí)繪制曲線圖,擦寫(xiě)過(guò)程均在幕后完成。

      void Curve::refreshPixmap()

      {

      QPainter painter(this);

      tmpPix=pix;

      QPainter pp(&tmpPix);

      QPen pen;

      QColor color(Qt::white);

      pen.setColor(color)

      pen.setWidth(2);

      pp.setPen(pen);

      pp.senRenderHint(QPainter::Antialiasing,true);

      int pointx=45,pointy=620;//確認(rèn)坐標(biāo)軸起點(diǎn)

      int width=930-pointx,height=580;

      pp.drawRect(5,5,950-10,650-10);

      pp.drawLine(pointx,pointy,width+pointx,pointy);

      pp.drawLine(pointx,pointy-height,pointx,pointy);

      QPen penDegree;

      painter.drawPixmap(900,700,tmpPix);

      }

      2.4 工具欄設(shè)計(jì)

      伺服調(diào)試過(guò)程中通常需要實(shí)時(shí)記錄實(shí)驗(yàn)數(shù)據(jù),如曲線圖、儀表值等等,為滿(mǎn)足調(diào)試過(guò)程的需求,本系統(tǒng)添加了工具欄,列出了如文件保存、圖片打印、文本打印以及放大、旋轉(zhuǎn)等常用工具,如圖4所示。

      圖4 工具欄界面圖

      例如圖像打印只需要調(diào)用QPrinter以及QPrintDialog 2個(gè)類(lèi)即可調(diào)用打印機(jī)及其屬性,并將圖像打印到文件中。

      3 通信接口的實(shí)現(xiàn)

      3.1 串口調(diào)試模塊

      串口通信的概念是按位發(fā)送和接收字節(jié),其重要參數(shù)分為:波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。串口調(diào)試模塊需要利用到計(jì)算機(jī)串口驅(qū)動(dòng),通過(guò)設(shè)置串口參數(shù)實(shí)現(xiàn)與外部端口的通信。QT平臺(tái)提供了第三方串口庫(kù),只需要在QTpro添加QT +=serialport代碼即可在相應(yīng)的子程序引用庫(kù),使得代碼編寫(xiě)過(guò)程更為便捷[2]。在程序中實(shí)現(xiàn)自動(dòng)尋找可用的端口號(hào)用到以下代碼:

      foreach(const QSerial PortInfo::availablePorts())

      {

      QSerialPort serial;

      serial.setPort(info);

      if(serial.open(QIODevice::ReadWrite))

      {

      ui->portNameBox->addItem(serial.PortName());

      serial.close();

      }

      }

      UI界面設(shè)計(jì)中,調(diào)用QpushButton以及QTextEdit類(lèi),可以繪制文本輸入和接收框以及相應(yīng)的按鈕。按鈕是否可用通過(guò)setEnabel(bool)函數(shù)進(jìn)行設(shè)置,例如發(fā)送數(shù)據(jù)按鈕與其他設(shè)置參數(shù)按鈕不能同時(shí)操作,因此應(yīng)設(shè)置相應(yīng)的邏輯關(guān)系,按鈕通過(guò)addItem()函數(shù)即可增加選項(xiàng)用于選擇,完成后的串口界面如圖5所示。

      圖5 串口調(diào)試模塊界面圖

      3.2 CAN通信模塊設(shè)計(jì)

      CAN通信模塊是基于CAN總線協(xié)議設(shè)計(jì)的,CAN總線的概念是控制器局域網(wǎng),其特點(diǎn)主要包括節(jié)點(diǎn)不分主從,通過(guò)報(bào)文ID進(jìn)行過(guò)濾,速度較快且具備錯(cuò)誤檢測(cè)功能。

      CAN通信模塊通過(guò)QLineEidt類(lèi)進(jìn)行設(shè)計(jì),由于該類(lèi)采用的數(shù)據(jù)是QString類(lèi)型,而QString類(lèi)型數(shù)據(jù)為了清晰展示,通常采用空格符對(duì)數(shù)據(jù)進(jìn)行分割,從而增加了數(shù)據(jù)的長(zhǎng)度。本文為避免數(shù)據(jù)傳輸過(guò)程冗長(zhǎng),采用了將QString類(lèi)轉(zhuǎn)換為char型數(shù)據(jù)進(jìn)行傳輸,從而減少串口傳輸?shù)臄?shù)據(jù)量。

      通過(guò)分析雷達(dá)伺服調(diào)試過(guò)程中可能要采集的數(shù)據(jù)以及需要下達(dá)的指令數(shù)據(jù),系統(tǒng)需要的有效數(shù)據(jù)可能多達(dá)10個(gè)字節(jié),包括電流、速度、電壓數(shù)值等等。因此,數(shù)據(jù)包結(jié)構(gòu)設(shè)計(jì)如表1所示。

      表1 數(shù)據(jù)包結(jié)構(gòu)表

      為保證數(shù)據(jù)完整性,CAN通信模塊通常采用一種算法對(duì)原始數(shù)據(jù)計(jì)算出1個(gè)校驗(yàn)值,并將校驗(yàn)值一同發(fā)出,接收方用相同的方法計(jì)算出校驗(yàn)值進(jìn)行數(shù)據(jù)校驗(yàn),本文采用了目前行業(yè)內(nèi)比較常用的CRC循環(huán)校驗(yàn)法,該方法具有偵錯(cuò)能力強(qiáng)、系統(tǒng)消耗小等優(yōu)點(diǎn),適用于本系統(tǒng),主要實(shí)現(xiàn)代碼如下:

      void CAN_com::CRC_check()

      {

      if (enable==1)

      {

      for(int i=0;i

      {

      crc=data[i]^crc;

      for(int j=0;j<7;j++)

      {

      tmp1=crc &&0X 0001;

      if (tmp1=0X0001)

      crc=crc》1^0XA001;

      else

      crc=crc》1;

      }

      }

      }

      }

      3.3 參數(shù)調(diào)整和指令下達(dá)模塊

      參數(shù)調(diào)整和指令下達(dá)模塊即變量輸入輸出模塊,根據(jù)雷達(dá)伺服系統(tǒng)常用的參數(shù),參數(shù)調(diào)整和指令下達(dá)模塊通常包括速度設(shè)定,電流門(mén)限、電壓門(mén)限、使能、比例、積分、微分(PID)參數(shù)調(diào)整等。本系統(tǒng)通過(guò)在界面上提供輸入框改變變量值,并通過(guò)串口或CAN通信方式送達(dá)可編程邏輯控制器(PLC)或其他被控元件,實(shí)現(xiàn)參數(shù)變更和指令下達(dá)的功能[3]。

      4 應(yīng)用實(shí)例

      在某項(xiàng)目中,采用本系統(tǒng)進(jìn)行雷達(dá)伺服系統(tǒng)調(diào)試,通過(guò)串口通信建立雷達(dá)伺服系統(tǒng)和本軟件調(diào)試系統(tǒng)的連接,計(jì)算機(jī)端采用USB轉(zhuǎn)串口模塊,PLC通過(guò)IO量與多種被控元件如接近開(kāi)關(guān)、水平傳感器等建立連接,通過(guò)CAN總線建立與伺服電機(jī)的連接從而接收伺服電機(jī)各項(xiàng)反饋量并向其下達(dá)控制指令,各被控元件及伺服電機(jī)結(jié)合傳動(dòng)結(jié)構(gòu)件集成為雷達(dá)伺服系統(tǒng),系統(tǒng)組成圖如圖6所示。

      圖6 系統(tǒng)組成圖

      系統(tǒng)上電后,打開(kāi)串口界面,搜索串口端口號(hào),建立串口連接。通過(guò)數(shù)據(jù)采集,接收到伺服電機(jī)電壓為380 V,通過(guò)加載使能,給定相應(yīng)速度,收集并繪制伺服系統(tǒng)某關(guān)節(jié)部分位置曲線,曲線顯示其完成循環(huán)往復(fù)運(yùn)動(dòng),與實(shí)際運(yùn)動(dòng)狀態(tài)擬合。同時(shí),調(diào)試系統(tǒng)采集到各被控元件的狀態(tài)信息,并通過(guò)伺服調(diào)試系統(tǒng)界面的各點(diǎn)燈模塊加以顯示。經(jīng)分析,本系統(tǒng)實(shí)時(shí)采集了被控元件的狀態(tài)信息,并繪制了相應(yīng)變量的狀態(tài)曲線,通過(guò)參數(shù)調(diào)整和指令下達(dá)模塊可以實(shí)時(shí)改變輸出變量的狀態(tài)從而實(shí)現(xiàn)控制被控元件的功能。系統(tǒng)簡(jiǎn)單明了,操作簡(jiǎn)易,適合伺服調(diào)試人員現(xiàn)場(chǎng)調(diào)試。系統(tǒng)調(diào)試界面如圖7所示。

      圖7 雷達(dá)伺服調(diào)試系統(tǒng)界面

      通過(guò)實(shí)際應(yīng)用可以發(fā)現(xiàn),本系統(tǒng)信息顯示和人工操作完全可以滿(mǎn)足雷達(dá)伺服系統(tǒng)調(diào)試的需要。

      5 結(jié)束語(yǔ)

      本文通過(guò)QT平臺(tái)設(shè)計(jì)了一款用于雷達(dá)伺服系統(tǒng)調(diào)試的系統(tǒng),該系統(tǒng)包含了伺服系統(tǒng)常用的參數(shù)設(shè)定、通信方式和狀態(tài)顯示,極大簡(jiǎn)化了伺服調(diào)試人員調(diào)試過(guò)程。此外,該系統(tǒng)性能穩(wěn)定且價(jià)格低廉,具有一定的發(fā)展前景。

      猜你喜歡
      伺服系統(tǒng)串口繪制
      Art on coffee cups
      北京航空航天大學(xué)學(xué)報(bào)(2022年6期)2022-07-02 01:59:46
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      基于復(fù)合前饋模糊PID的位置伺服系統(tǒng)研究
      放學(xué)后
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于自適應(yīng)反步的DGMSCMG框架伺服系統(tǒng)控制方法
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
      消除彈道跟蹤數(shù)據(jù)中伺服系統(tǒng)的振顫干擾
      在轉(zhuǎn)變中繪制新藍(lán)圖
      饶平县| 广宁县| 和平区| 玛纳斯县| 文成县| 衡阳市| 沁阳市| 邢台县| 故城县| 扎兰屯市| 越西县| 高清| 阿瓦提县| 探索| 浦东新区| 凤台县| 交城县| 若羌县| 防城港市| 克拉玛依市| 馆陶县| 手游| 孙吴县| 阿图什市| 临漳县| 盖州市| 伊通| 成都市| 高邮市| 黄浦区| 临湘市| 房山区| 通道| 呼伦贝尔市| 饶河县| 溧水县| 永年县| 石楼县| 青浦区| 宜宾县| 桃江县|