<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 變頻器與微機的串行通訊設計

變頻器與微機的串行通訊設計

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

0 引言

本文引用地址:http://dyxdggzs.com/article/201808/387514.htm

在工業(yè)電氣傳動(dòng)裝置中,變頻器因應用方便,性能可靠,所以被作為首選的電機器得到廣泛應用[1]。計算機技術(shù)與現代變頻器技術(shù)相結合,采用變頻器的標準RS485通訊接口和內置協(xié)議,可以方便地實(shí)現微機對下位機的集中,并且易于軟件實(shí)現,費用低廉,具有較高的可靠性和實(shí)用價(jià)值[2]。

為了便于操作和監控電動(dòng)機的運行工況,需要對其電壓、電流、頻率、轉速及工作狀態(tài)等關(guān)鍵信息進(jìn)行監測,并根據工作需要,修改相應的參數,調整電動(dòng)機的工作狀態(tài)。這些信息可通過(guò)變頻器(下位機)傳給微機(上位機),因此需要變頻器與微機進(jìn)行通訊,通過(guò)微機監控變頻器來(lái)控制、協(xié)調電動(dòng)機的運行。本文基于Visual C++下的MSComm控件來(lái)實(shí)現微機與變頻器的串口通訊。

1 變頻器通訊機制

1.1 系統硬件總體結構簡(jiǎn)圖

由于多數工業(yè)用變頻器提供的是符合RS485標準的串行通訊接口,而微機的通訊接口多為RS232C接口[3],因此在二者之間需要加接RS485-RS232C接口轉換器。這樣利用該接口通過(guò)軟件編寫(xiě)的通訊驅動(dòng)程序就可以實(shí)現微機與變頻器的信息交換。系統硬件總體方框圖如圖1所示。

1.2 串行通訊

串行通訊是指外設和計算機間使用一根數據信號線(xiàn)傳送數據,這些通訊數據在信號線(xiàn)上是按位進(jìn)行傳輸的,每一位數據都占據一個(gè)固定的時(shí)間長(cháng)度。

這種通訊方式的優(yōu)點(diǎn)是使用的數據線(xiàn)少,在遠距離通訊中可以節約通訊成本。當然,其傳輸速度比并行通訊慢。對于RS485 串行接口其最大傳輸速率為10 Mbit/s,最長(cháng)通訊距離為1 200 m。

1.3 通訊協(xié)議格式

串口通訊傳輸的基本思想基于幀傳輸方式,即在向串口發(fā)送數據時(shí)是逐幀發(fā)送。在每幀傳輸過(guò)程中采用應答方式[4]。具體為上位機發(fā)送命令參數,變頻器首先通過(guò)校驗判斷是否為正常幀,若校驗為正常幀,可以接收并做出應答。否則丟棄不予應答。

本文所舉例的變頻器的通訊幀格式如圖2 所示,每一幀都由幀頭、幀格式數據塊、校驗和、幀尾四部分構成。

EOT:起始位,1個(gè)字節;

DATA:數據塊,n 個(gè)字節,包括命令字、參數、工作狀態(tài)等內容;

BCC:校驗和,2個(gè)字節,為其前5 個(gè)字節數據之和,低位在前,高位在后;

ETX:結束,1個(gè)字節。

通訊協(xié)議的數據格式為:

1)串口幀采用10位幀,1位起始位,8位數據位,1位停止位,無(wú)奇偶校驗位,均為十六進(jìn)制數據,字長(cháng)為8 bit,采用COM1串口,波特率為9 600 bit/s;

2)變頻器根據上位機指令向上傳送相應數據;

3)應答發(fā)送,微機發(fā)出修改命令,變頻器接收命令后,修改參數,并把參數修改情況傳給上位機;

4)上位機發(fā)送其他命令如啟動(dòng)、停止等。

2 MSComm控件

Microsoft Communication Control(簡(jiǎn)稱(chēng)MSComm)是Microsoft 公司提供的在Windows下進(jìn)行串行通訊編程的ActiveX控件,它為應用程序提供了通過(guò)串行端口接收和發(fā)送數據的簡(jiǎn)便方法。

2.1 MSComm控件的引用

MSComm 控件的引用和其他ActiveX 控件的引用類(lèi)似,一般都是在Visual C++6.0環(huán)境下,新建一個(gè)工程,在“工程”菜單下,選擇“增加到工程”的Components

and Controls Gallery 選項,在彈出的對話(huà)框中打開(kāi)“Registered ActiveX Controls”,選擇“Microsoft Communications Control version 6.0”插入到工程中,這樣類(lèi)似電話(huà)機模樣的MSComm控件就出現在工具框中,用戶(hù)可以像使用內部控件那樣把它添加到窗體。

值得一提的是,該控件可以放在窗體的任一位置,在運行的時(shí)候對外是不可見(jiàn)的。

2.2 MSComm控件兩種處理通訊的方式

MSComm控件有兩種處理通訊的方式,包括事件驅動(dòng)方式和查詢(xún)方式[5,6]。在文獻[5,6]中對此做了詳細介紹。

2.3 MSComm控件的屬性

MSComm 控件中比較重要的幾個(gè)屬性如下:

CommPort 設置并返回通訊端口號,缺省值為COM1,可設置1~16個(gè);

Settings 以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位;

PortOpen 設置并返回通訊端口的狀態(tài),也可打開(kāi)和關(guān)閉端口;

Input 讀入并清除接收緩沖區的字符;

Output 將發(fā)送的字符串或數組寫(xiě)到發(fā)送緩沖區;

CommEvent 在通訊錯誤或事件發(fā)生時(shí)產(chǎn)生;

OnComm 事件,CommEvent 屬性存有該錯誤或事件的數值碼。

3 軟件實(shí)現

3.1 程序模塊

軟件實(shí)現主要包括上位機初始化程序模塊,串口事件處理模塊,數據校驗模塊,數據處理模塊等。

3.1.1 上位機初始化模塊

打開(kāi)串口并設置串口參數,同時(shí),預讀緩沖區以清空殘留數據,對串口初始化。設置的串口參數包括:串口號、波特率、奇偶校驗位、數據位、停止位等。

主要代碼如下:

If(m_ctrlComm.GetPortOpen())

m_ctrlComm.SetPortOpen(FALSE);// 檢查串口,如果是打開(kāi)的,則關(guān)閉

m_ctrlComm.SetCommPort(1); // 根據協(xié)議要求,選擇COM1端口

m_ctrlComm.SetSettings(“9 600,n,8,1”);// 設置波特率9 600,無(wú)校驗,8個(gè)數據位,1個(gè)停止位

m_ctrlComm.SetInputMode(1);//1:表示以二進(jìn)制方式檢取數據

m_ctrlComm.SetRThreshold(1);// 參數1表示每當串口接收緩沖區中有多于或等于1 個(gè)字符時(shí)將引發(fā)一個(gè)接收數據的OnComm事件

m_ctrlComm.SetInputLen(0);//設置當前接收區數據長(cháng)度為0,表示全部讀取

m_ctrlComm.GetInput ();// 先預讀緩沖區以清除殘留數據

3.1.2 串口事件處理模塊

該模塊主要是接收下位機發(fā)送來(lái)的數據包,并對數據包進(jìn)行數據類(lèi)型的轉換,以便于數據處理模塊和數據校驗模塊對其進(jìn)行處理。主要代碼如下:

switch(m_ctrlComm.GetCommEvent ())// 代表控件引起的事件

{

case 2: //comEvReceiv 事件,事件值為2 表示接收緩沖區內有字符

{

VARIANT variant_inp;

COleSafeArray safearray_inp;

LONG len,k;

BYTE rxdata[2048];

CString strtemp,m_str;

variant_inp=m_ctrlComm.GetInput();//讀緩沖區

safearray_inp=variant_inp;//VARIANT 型變量轉換為ColeSafeArray型變量

len=safearray_inp.GetOneDimSize ();// 得到有效數據長(cháng)度

for(k=0;k

safearray_inp.GetElement(k,rxdata+k);//轉換為BYTE型數組

}

for(k=0;k

BYTE bt=*(char*)(rxdata+k);

strtemp.Format(“%02X”,bt);// 將字符以十六進(jìn)制方式送入臨時(shí)變量strtemp存放,注意這里應加入一個(gè)空隔

m_str+=strtemp;

//加入接收編輯框對應字符串

}

// 微機控制變頻器的參數通過(guò)類(lèi)似COIeVariant的構造函數來(lái)實(shí)現,COIeVariant 可以接收各種類(lèi)型的數據(如字符串、整數、浮點(diǎn)數等)并自動(dòng)將其轉換為符合VARIANT要求的數據。然后就可以根據自己的通訊協(xié)議要求加入相應的處理代碼,實(shí)現數據的傳遞[6]。

…… //在此可以添加通訊協(xié)議代碼

}

}

3.1.3 數據校驗模塊

根據約定的通訊協(xié)議,對于上位機發(fā)送的命令,不符合協(xié)議格式(包括數據頭,尾,數據長(cháng)度等)時(shí),下位機將不予應答;對于下位機傳送給上位機的數據,處理方式相同。符合協(xié)議格式(包括數據頭,尾,數據長(cháng)度等)時(shí),計算校驗和,校驗和為其前5 個(gè)字節數據之和。校驗正確,則進(jìn)入數據處理模塊,否則,丟棄不予處理。

3.1.4 數據處理模塊

此模塊包括數據解包,數據提取,數據轉換,如將得到的十六進(jìn)制的頻率數據,以十進(jìn)制數據方式上傳至上位機顯示。

此外還有等待超時(shí)處理模塊,數據傳輸錯誤處理模塊等。

3.2 通訊協(xié)議編程實(shí)現

變頻器與微機進(jìn)行通訊時(shí),首先,作為下位機的發(fā)送方先將要發(fā)送的數據按協(xié)議規定的格式組成數據包,并求出檢驗和,然后連同包頭和包尾一同發(fā)送出去。作為上位機的接收方收到數據后,通過(guò)軟件實(shí)現通訊協(xié)議,主要流程如圖3所示。

在軟件實(shí)現通訊協(xié)議的過(guò)程中,處理和校驗數據時(shí),注意要將接收的數據格式轉換為合適的數據格式,否則在調試的時(shí)候就會(huì )出現錯誤,或者在上位機的控制界面上不能正確顯示。

3.3 界面實(shí)現

該軟件主要由靜態(tài)數據區和動(dòng)態(tài)數據區兩部分組成。靜態(tài)數據區包括串口參數的選擇和參數數據的顯示,并可選擇和修改參數命令;由于該變頻器采用應答式通訊,所以在動(dòng)態(tài)數據區中,顯示下位機傳送的數據,同時(shí),在靜態(tài)工作區可以導入導出參數;

在動(dòng)態(tài)工作區,可以根據需要,選擇是否進(jìn)行定時(shí)發(fā)送測量命令,從而實(shí)時(shí)監控下位機的工作狀況。靜態(tài)數據區和動(dòng)態(tài)數據區兩部分相互配合,實(shí)現對下位機的完整控制。如圖4所示。

4 結語(yǔ)

采用Visual C++環(huán)境下的MSComm控件對變頻器進(jìn)行軟件編程,通過(guò)變頻器的RS485串口通訊功能,可以實(shí)時(shí)監控和調整下位機的工作狀態(tài),實(shí)現對下位機的集中控制。軟件界面友好,操作方便,具有較強的實(shí)用性。



關(guān)鍵詞: 控制

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>