<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于VC環(huán)境的變頻器聯(lián)網(wǎng)控制

          基于VC環(huán)境的變頻器聯(lián)網(wǎng)控制

          作者: 時(shí)間:2011-03-26 來(lái)源:網(wǎng)絡(luò) 收藏

          4 計(jì)算機(jī)串口通訊編程

          對(duì)于的計(jì)算機(jī)串口通信編程可以用多種方法實(shí)現(xiàn)。MSComm控件通過(guò)串行端口傳輸和接收數(shù)據(jù),因此,可在編寫計(jì)算機(jī)串口通信程序時(shí)使用MSComm控件。MSComm控件使用時(shí)比較方便,只要完成簡(jiǎn)單的串口初始化設(shè)置,然后調(diào)用相應(yīng)的讀寫函數(shù)即可完成計(jì)算機(jī)串口通信操作。但是,使用MSComm控件在設(shè)置通信參數(shù)時(shí)是成批進(jìn)行的,即數(shù)據(jù)傳輸速率、奇偶校驗(yàn)、數(shù)據(jù)位數(shù)和停止位數(shù)是作為一個(gè)參數(shù)進(jìn)行設(shè)置的。這樣使通信參數(shù)的設(shè)置和修改不太靈活自如,因此,不采用MSComm控件進(jìn)行串行通信編程。利用Windows通信API函數(shù)進(jìn)行串口通信編程可以非常靈活地進(jìn)行串口參數(shù)的配置,但編程非常復(fù)雜,專業(yè)化程度較高,因此也沒(méi)有采用。利用的標(biāo)準(zhǔn)通信函數(shù)inp,inpw,inpd,outp,outpw,outpd等直接對(duì)串口進(jìn)行操作編程需要對(duì)硬件電路的結(jié)構(gòu)原理非常了解,但這里并不需要對(duì)計(jì)算機(jī)的串口電路非常了解,因此同樣沒(méi)有采用。最終程序中應(yīng)用的是第三方編寫的串行通信Cserial類。下面對(duì)CSerial類進(jìn)行解釋。

          CSerial::CSerial是類構(gòu)造函數(shù),不帶參數(shù),負(fù)責(zé)初始化所有類成員變量。

          CSerial::Open是打開(kāi)通信端口的成員函數(shù),帶兩個(gè)參數(shù),一個(gè)是串行端口號(hào),另一個(gè)是波特率。

          CSerial::Close是關(guān)閉通信端口的成員函數(shù)。類析構(gòu)函數(shù)調(diào)用這個(gè)函數(shù),因此可不用顯式調(diào)用這個(gè)函數(shù)。

          CSerial::SendData函數(shù)把數(shù)據(jù)從一個(gè)緩沖區(qū)寫到串行端口。它所帶的第一個(gè)參數(shù)是緩沖區(qū)指針,其中包含要被發(fā)送的資料。這個(gè)函數(shù)返回一些到端口的實(shí)際字節(jié)數(shù)。

          CSerial::ReadDataWaiting函數(shù)返回等待在通信端口緩沖區(qū)中的數(shù)據(jù),不帶參數(shù)。

          CSerial::ReadData函數(shù)從端口接收緩沖區(qū)讀入數(shù)據(jù)。第一個(gè)參數(shù)是緩沖區(qū)指針,第二個(gè)參數(shù)是個(gè)整數(shù)值,給出緩沖區(qū)的大小。

          將CSerial.cpp和CSerial.h添加入源程序,在串口通信程序部分調(diào)用CSerial類的函數(shù),可以很方便地完成通信功能。下面是在程序中用CSerial類編寫通信程序,完成的功能是按既定的通信協(xié)議向網(wǎng)絡(luò)下傳查詢指令,并接收從站返回的信息。如果連發(fā)三次都沒(méi)有接收到的應(yīng)答信息就顯示為離線狀態(tài)。

          CSerialSerial;

          inti;

          CStringm_mes;

          Unsignedcharsend[14]={0x02,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x80,0x00,0x00,0x00};

          for(i=1;i=m_slname;i++)

          {

          send[2]=i;

          unsignedcharu=send[0];

          for(intl=1;l13;l++)

          {

          u=u^send[l];

          }

          send[13]=u;

          showaf=send[10];

          if(Serial.Open(m_port,m_baudrate))

          {

          Serial.SendData(send,14);

          }

          Sleep(200);

          if(Serial.ReadDataWaiting())

          {

          Serial.ReadData(recieve,14);

          }

          else

          {

          Serial.SendData(send,14);

          Sleep(200);

          if(Serial.ReadDataWaiting())

          {

          Serial.ReadData(recieve,14);

          }

          else

          {

          Serial.SendData(send,14);

          Sleep(200);

          if(Serial.ReadDataWaiting())

          {

          Serial.ReadData(recieve,14);

          }

          else

          {

          m_mes.Format(%disoffline,i);

          m_recc.InsertString(-1,m_mes);

          }

          }

          }

          在與變頻器的通信中要求計(jì)算機(jī)的串口號(hào)和通信速率是可變的。Open函數(shù)的兩個(gè)參數(shù)就是計(jì)算機(jī)的串口號(hào)和通信速率,在調(diào)用該函數(shù)初始化串口時(shí),將這兩個(gè)參數(shù)按所希望的數(shù)賦值就可以正常通信了。如果要修改這兩個(gè)參數(shù),只要將修改值賦給這兩個(gè)參數(shù)的變量,再調(diào)用一次Open函數(shù)從新初始化計(jì)算機(jī)串口即可。在Open函數(shù)中僅初始化了串口號(hào)、通信速率和8位數(shù)據(jù)位這三個(gè)參數(shù),其它參數(shù)采用上一次串口初始化形成的參數(shù)數(shù)據(jù)。但是,在通信中還要求傳送的數(shù)據(jù)為二進(jìn)制數(shù)據(jù)、偶校驗(yàn)和有1位停止位,這就要求對(duì)Open函數(shù)進(jìn)行修改。對(duì)Open函數(shù)的修改主要是對(duì)其中設(shè)備快(DCB)的修改。只要將舊的DCB結(jié)構(gòu)改寫為以下結(jié)構(gòu)即可。

          GetCommState(m_hIDComDev,&dcb);

          dcb.BaudRate=nBaud;

          dcb.ByteSize=8;

          dcb.fParity=1;

          dcb.fBinary=1;

          dcb.Parity=EVENPARITY;

          dcb.StopBits=ONESTOPBIT;

          經(jīng)過(guò)上述修改后,用Open函數(shù)初始化的串口就符合傳送二進(jìn)制數(shù)、偶校驗(yàn)、8位數(shù)據(jù)位、1位停止位和波特率及端口可變的要求,計(jì)算機(jī)可以和變頻器進(jìn)行正常的通信了。

          5 組網(wǎng)實(shí)驗(yàn)

          遠(yuǎn)程軟件完成后進(jìn)行組網(wǎng)實(shí)驗(yàn)。網(wǎng)絡(luò)上用一臺(tái)計(jì)算機(jī)連接兩臺(tái)變頻器,對(duì)其中一臺(tái)變頻器執(zhí)行正轉(zhuǎn)起動(dòng)到30Hz的命令,軟件控制界面顯示如圖5所示。

          圖5 變頻器器起動(dòng)控制界面

          6 結(jié)語(yǔ)

          本文主要介紹了實(shí)現(xiàn)變頻器遠(yuǎn)程網(wǎng)絡(luò)控制的計(jì)算機(jī)控制軟件如何編寫。從軟件的功能框架,數(shù)據(jù)庫(kù)的操作和計(jì)算機(jī)串口通信3個(gè)方面進(jìn)行了闡述,詳細(xì)說(shuō)明了在下來(lái)編寫合乎我們要求的控制軟件的方法,具有一定的實(shí)際參考價(jià)值。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();