摘 要:MicroMaster變頻器的RS-485通信協(xié)議,利用VC5.0中的ActiveX控件MSCOMM通信控件實(shí)現(xiàn)了Windows95下單臺(tái)微機(jī)與多臺(tái)變頻器的串行通信控制,并能實(shí)時(shí)檢測(cè)各變頻器的運(yùn)行狀態(tài)。 
  關(guān)鍵詞:工控PC機(jī) ActiveX控件 RS-485通信協(xié)議 變頻器控制
    工業(yè)場(chǎng)合中,經(jīng)常要用變頻器去控制交流電機(jī)">

      技術(shù)頻道

      如何通過RS-485控制多臺(tái)變頻器

        摘 要:MicroMaster變頻器的RS-485通信協(xié)議,利用VC5.0中的ActiveX控件MSCOMM通信控件實(shí)現(xiàn)了Windows95下單臺(tái)微機(jī)與多臺(tái)變頻器的串行通信控制,并能實(shí)時(shí)檢測(cè)各變頻器的運(yùn)行狀態(tài)。 
        關(guān)鍵詞:工控PC機(jī) ActiveX控件 RS-485通信協(xié)議 變頻器控制
          工業(yè)場(chǎng)合中,經(jīng)常要用變頻器去控制交流電機(jī)的轉(zhuǎn)速、轉(zhuǎn)向。在某些場(chǎng)合,需要用1臺(tái)工控PC機(jī)靈活地控制多臺(tái)變頻器,以達(dá)到控制各交流電機(jī)的目的。針對(duì)這一需要,一些公司(如德國(guó)西門子、日本東芝、三菱等公司)推出了帶有RS-485通信接口的變頻器,使用戶能方便靈活地選擇變頻器的強(qiáng)大功能來設(shè)計(jì)各自的工業(yè)控制系統(tǒng)。
          在Windows95下開發(fā)工控軟件,可利用Windows95的豐富資源,方便地生成各種菜單及美觀大方的圖形界面,軟件產(chǎn)品質(zhì)量高且開發(fā)周期短。Visual C++5.0是Microsoft公司最新推出功能最強(qiáng)的Windows開發(fā)軟件,由于只能在Win95下運(yùn)行開發(fā)32位的應(yīng)用程序,而在Windows環(huán)境下,系統(tǒng)完全接管了各種硬件資源,不允許用戶直接控制串行口的中斷管理,因此如何在Windows環(huán)境下開發(fā)微機(jī)的底層資源,已成為當(dāng)今工業(yè)控制軟件的一大熱點(diǎn)及難點(diǎn)。
          本文利用VC5.0的ActiveX控件——Microsoft Communication控件,方便地實(shí)現(xiàn)了Win95環(huán)境下與多個(gè)西門子MicroMaster變頻器的串行通信接口,成功地實(shí)現(xiàn)了用單臺(tái)工控PC機(jī)對(duì)多臺(tái)交流異步電機(jī)的靈活控制。  
        一、系統(tǒng)的總體設(shè)計(jì)  
         為系統(tǒng)的總體設(shè)計(jì)方框圖,這里只重點(diǎn)突出工控PC機(jī)與變頻器RS-485的接口部分。RS-485的驅(qū)動(dòng)器可帶32個(gè)接收器,在波特率為100Kb/s時(shí),通信距離可達(dá)到1200m;通信距離為15m時(shí),波特率可達(dá)10Mb/s。在工業(yè)現(xiàn)場(chǎng),RS-485是應(yīng)用較多的一種通信方式。圖中工控PC機(jī)通過485通信接口卡與多個(gè)變頻器相連接,最多可達(dá)到32臺(tái)。每個(gè)變頻器被賦予各自的地址碼用以識(shí)別身份,這樣上位機(jī)便能通過485通信線對(duì)掛在上面的所有變頻器進(jìn)行控制操作。
        二、變頻器的串口通信協(xié)議 
        對(duì)于西門子的MicroMaster變頻器,其通信方式為RS-485,波特率最高可達(dá)到19200b/s;1位起始位;8位數(shù)據(jù)位;1位偶校驗(yàn);1位停止位。變頻器接收控制的通信協(xié)議如下:
          與上位機(jī)向變頻器發(fā)送的控制字相比,變頻器回送的狀態(tài)字只是以ZSW代替了STW,HIW代替了HSW,其余的字的含義是一樣的。ZSW是16位的狀態(tài)字來指示變頻器的當(dāng)前運(yùn)行狀態(tài),各位的具體含義見說明書;HIW也是16位的字代表變頻器的輸出頻率,其定義與HSW是一樣的。
          因此,對(duì)于變頻器能通過面板按鍵設(shè)置的功能,通過以上的通信協(xié)議也一樣能實(shí)現(xiàn)。并且通過RS-485通信線最多能同時(shí)控制32臺(tái)變頻器,同時(shí)各變頻器的運(yùn)行狀態(tài)也能實(shí)時(shí)地回送給上位機(jī),這就大大方便了用戶,增加了控制系統(tǒng)的靈活性。
        
        三、Visual C++5.0下對(duì)變頻器進(jìn)行串行通信控制
        
        1、ActiveX控件Microsoft Comm Control 5.0
        
        在Windows環(huán)境下,操作系統(tǒng)完全接管了各種硬件資源,不允許用戶直接控制串行口的中斷管理。以往程序員只能通過數(shù)目眾多的API函數(shù)來控制串口。
          VC5.0下提供了1個(gè)ActiveX控件Microsoft Communication Control 5.0,簡(jiǎn)稱MSComm控件。用戶可以在自己的應(yīng)用程序中嵌入MSComm控件,利用它可以方便地進(jìn)行計(jì)算機(jī)串口的通信管理。VC5.0中的ActiveX控件MSComm與VC4.0中的OLE通信控件相比,增加了一些新的功能,其中最為有用的1個(gè)改進(jìn)是將Input(從緩沖區(qū)讀取接收數(shù)據(jù))的數(shù)據(jù)類型從CString改成Variant,同時(shí)新增1個(gè)屬性InputMode,使程序能方便地選擇從緩沖區(qū)讀取數(shù)據(jù)的格式:字符串格式或2進(jìn)制格式。
          在VC5.0開發(fā)環(huán)境中,選擇Microsoft Communication Control 5.0控件插入程序,則系統(tǒng)自動(dòng)為所插入的控件定義1個(gè)CMSComm類,與其相關(guān)的文件保存在mscomm.h和mscomm.cpp文件中。確認(rèn)以上菜單選擇后,則MSComm控件已嵌入到項(xiàng)目文件中。
          MSComm控件有許多屬性,其中一些重要的屬性如下:
          CommPort:設(shè)置串口號(hào),類型:short;
          Settings:設(shè)置串口通信參數(shù),類型:CString;
          PortOpen:設(shè)置或返回通信口的狀態(tài),類型:BOOL;
          InputMode:設(shè)置從緩沖區(qū)讀取數(shù)據(jù)的格式,類型:long;
          Input:從接收緩沖區(qū)讀取數(shù)據(jù),類型:VARIANT;
          Output:向發(fā)送緩沖區(qū)寫入數(shù)據(jù),類型:VARIANT;
          InBufferSize:接收緩沖區(qū)的大小,類型:short;
          InBufferCount:接收緩沖區(qū)的字節(jié)數(shù),類型:short;
          OutBufferSize:發(fā)送緩沖區(qū)的大小,類型:short;
          OutBufferCount:發(fā)送緩沖區(qū)中的字節(jié)數(shù),類型:short;
          InputLen:設(shè)置或返回Input每次讀出的字節(jié)數(shù),類型:short;
          CommEvent:串口事件,類型:short。
          其中串口號(hào)(CommPort)設(shè)置為1、2等表示COMM1、COMM2。參數(shù)設(shè)置(Settings)的格式為“B,P,D,S”,B表示波特率,P表示奇偶校驗(yàn)(N-無校驗(yàn),E-偶校驗(yàn),O-奇校驗(yàn)),D表示字節(jié)有效位數(shù),S表示停止位數(shù)。串口狀態(tài)(PortOpen)為BOOL變量,TRUE表示打開串口,F(xiàn)ALSE表示關(guān)閉串口。InputMode使程序能方便地選擇從緩沖區(qū)讀取數(shù)據(jù)的格式,設(shè)置為0時(shí)字符串格式,設(shè)置為1時(shí)表示2進(jìn)制格式。InputLen設(shè)置或返回的是用Input從緩沖區(qū)讀字符串時(shí)每次讀出的字符個(gè)數(shù),這個(gè)性質(zhì)對(duì)于讀出數(shù)據(jù)塊中定長(zhǎng)數(shù)據(jù)串非常有用。
          另外,MSComm控件提供了2種方法來處理串口通信,上面屬性的InBufferCount和OutBufferCount用于串口的查詢方式。對(duì)于較復(fù)雜的通信任務(wù),可通過SetCommEvent()函數(shù)設(shè)置串口要響應(yīng)的事件,當(dāng)相應(yīng)事件或串口錯(cuò)誤事件發(fā)生時(shí),系統(tǒng)會(huì)激活OnComm()事件,在OnComm()中添加用戶的處理代碼,則可實(shí)現(xiàn)類似DOS中斷的串口處理程序。
        
        2、變頻器串口通信控制檢測(cè)軟件的編制
        
        在項(xiàng)目文件嵌入MSComm控件的頭文件mscomm.h及實(shí)現(xiàn)文件mscomm.cpp之后,為了用該控件控制1個(gè)串口進(jìn)行通信操作,還必須在應(yīng)用程序中插入該控件。為此,我們?yōu)槌绦虻哪硞€(gè)對(duì)話框插入MSComm控件,控件ID為IDC_M(jìn)SCOMM1,并利用Class Wizard為其添加變量CCMSComm m_Coml,則程序中對(duì)串口的各種操作都可通過變量m_Coml來實(shí)現(xiàn)。
          MicroMaster變頻器回送的狀態(tài)信息1幀為14B。為此,程序編制上采用事件驅(qū)動(dòng)的通信方式,串口每接收14個(gè)字符便激活1個(gè)OnComm()事件,在OnComm()消息處理函數(shù)中加入相應(yīng)的處理代碼,用來讀取狀態(tài)字ZSW和HIW各位的狀態(tài)參數(shù),并作出相應(yīng)的處理,如顯示、報(bào)警等。下面簡(jiǎn)要給出用事件驅(qū)動(dòng)方式讀出變頻器回送狀態(tài)字的程序源代碼。設(shè)RS-485卡的口地址為工控PC機(jī)的串口4的地址,波特率為9600b/s。
          串口初始化程序如下:
          m_Coml.SetCommPort(4); //設(shè)置串口4
          if(! m_Coml.GetPortOpen())
            m_Coml.SetPortOpen(TRUE); //打開串口
          m_Coml.SetSettings(″9600,e,8,1″); //串口參數(shù)設(shè)置
          m_Coml.SetInputMode(1); //設(shè)置Binary緩沖輸入方式
          m_Coml.SetRThreshold(14); //每接收1個(gè)字符時(shí)//激發(fā)OnComm()事件
          工控PC機(jī)控制變頻器的參數(shù)通過類ColeVariant的構(gòu)造函數(shù)來實(shí)現(xiàn),ColeVariant可以接受各種類型的數(shù)據(jù)(如字符串、整數(shù)、浮點(diǎn)數(shù)等)并自動(dòng)將其轉(zhuǎn)換為符合VARIANT要求的數(shù)據(jù)。程序代碼如下:
          m_Coml.SetOutput(ColeVariant(″\x02″)); //發(fā)送起始//字符02H
          m_Coml.SetOutput(ColeVariant(″\x0C″)); //發(fā)送數(shù)據(jù)//長(zhǎng)度字符0CH
          ……      //發(fā)送其它的控制參數(shù)
          對(duì)于變頻器回送的狀態(tài)信息則利用Windows的消息處理函數(shù)OnComm()進(jìn)行處理。利用ClassWizard為MSComm控件IDC_M(jìn)SCOMM1添加消息處理函數(shù)OnOnCommMscomm1(),在OnOnCommMscomm1()中加入處理代碼如下(最后2個(gè)語句為添加的程序代碼,其余代碼由ClassWizard自動(dòng)生成):
          void CGpsdataDlg::OnOnCommMscomm1()
          {
          //TODO:Add your control notification handler //code here
          m_Coml.SetInputLen(0); //讀取串口緩沖區(qū)全//部數(shù)據(jù)
          VARIANT Parameter=m_Coml.GetInput(); //數(shù)據(jù)賦給VARIANT變量
          ……   //具體程序處理代碼
          }
        在消息處理函數(shù)OnOnCommMscomm1()中,將變頻器回送的14個(gè)狀態(tài)字每一次全部讀到VARIANT變量Parameter中,然后程序再?gòu)腣ARIANT類型的數(shù)組變量Parameter中分別讀取各狀態(tài)字節(jié),在屏幕上顯示、判斷并報(bào)警。
          本文利用VC5.0下的ActiveX控件和MicroMaster變頻器RS-485的串行通信功能,實(shí)現(xiàn)了在Windows95環(huán)境下用單臺(tái)工控PC機(jī)控制多臺(tái)變頻器的任務(wù),并能實(shí)時(shí)檢測(cè)各變頻器的運(yùn)行狀態(tài)。整個(gè)控制系統(tǒng)靈活方便,具有很大的實(shí)用性。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 亚洲一区二区三区在线观看蜜桃 | 国产亚洲一区二区精品| 精品人妻少妇一区二区三区不卡| 伦精品一区二区三区视频| 亚洲熟妇AV一区二区三区浪潮 | 精品少妇人妻AV一区二区| 国产精品高清一区二区人妖| 亚洲av永久无码一区二区三区| 日本精品视频一区二区三区 | 日韩精品无码视频一区二区蜜桃| 国产精品视频一区二区三区无码| 日韩一区二区久久久久久| 91一区二区视频| 国产一区二区三区精品久久呦 | a级午夜毛片免费一区二区 | 日韩国产免费一区二区三区| 国产日产久久高清欧美一区| 一区二区三区无码高清| 精品国产日产一区二区三区| 日本无卡码一区二区三区| 精品理论片一区二区三区| 中文字幕精品一区| 亚洲av无码片vr一区二区三区| 男人的天堂亚洲一区二区三区| 久久国产精品最新一区| 少妇一夜三次一区二区| 一区二区不卡久久精品| 日韩av无码一区二区三区| 国产成人av一区二区三区在线观看 | 欧美日韩精品一区二区在线视频 | 91久久精品无码一区二区毛片| 无码丰满熟妇浪潮一区二区AV| 国产自产V一区二区三区C| 人妻少妇精品视频三区二区一区 | 国产精品视频分类一区| 国产福利电影一区二区三区,日韩伦理电影在线福 | 在线播放偷拍一区精品| 中文字幕日韩人妻不卡一区| 亚洲av无码一区二区三区人妖| 亚洲一区二区三区AV无码| 国产成人高清亚洲一区91|