- 相關推薦
紡機中的微機遠程多電機同步傳動控制系統
在紡織、印染、造紙等生產中,多電機同步傳動應用的十分廣泛。其中,印染聯合機的工藝及控制原理圖如圖1所示,采用西門子MICROMASTER Vector, 即MMV變頻器,電機1(M1)至電機4(M4)為三相交流電機。
圖1 印染聯合機的工藝及控制原理圖
b變頻調速以其顯著的節能效益、優異的調速與起制動性能、高功率因數、安全性能及其它許多優點而被認為是非常有發展前途的調速方式。交流電機和變頻器配合,能獲得與直流電機相似甚至更好的控制性能。并且交流電機低,結構簡單,容量和電壓范圍廣。采用RS485標準總線,通過USS通訊協議組成網絡,遠程控制變頻器,進而控制電機,可以監控生產線,遠離對人體有害的工作現場,保存數據,出錯參數自動回傳,縮短診斷時間和維修時間,節省大量物力。工控機通過RS-232/RS-485接口轉換器接入RS485網絡,可遠程控制31臺變頻器,當數據傳輸率<100kbit/s時,距離可達到1200m。接口轉換器采用Model 2485BR隔離型接口轉換器,它能完成RS-232/RS-485隔離型接口轉換,支持不同通訊速率及格式,最多可連接32個485終端設備。
2 軟件的總體設計
VC有ClassWizard、SourceBrowser、Visual SourceSafe等一系列工具,它所帶的MSDN更是讓軟件人員感到十分方便。而且VC應用程序對系統有極好的兼容性和穩定性。用VC從底部開發,雖然開發周期稍長,但能根據用戶的需要進行編程,編出的軟件的功能和風格適合用戶的習慣。綜合考慮開發周期和用戶要求等因素,軟件采用VC編寫。軟件的總體設計框圖見圖2。
圖2 軟件總體設計框圖
3 軟件開發過程
3.1 建立窗體顯示項目
選擇項目類型MFC AppWizard(exe),令主要的視圖類從基類CFormView派生。
3.2 添加MScomm控件
Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,通過串行端口傳輸和接收數據,為應用程序提供串行通訊功能。MSComm控件在串口編程時非常方便,程序員不必去花時間去了解較為復雜的API函數,而且在VC、VB、Delphi等語言中均可使用。它提供了兩種處理通信問題的方法;一是事件驅動(Event-driven)方法,一是查詢法。本軟件采用事件驅動方式。
(1) MSComm 控件的常用屬性
MSComm 控件有很多屬性,幾個重要的屬性有;
●CommPort 設置并返回通訊端口號;
● Settings 以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位;
● PortOpen 設置并返回通訊端口的狀態,也可以打開和關閉端口;
● Input 從接收緩沖區返回和刪除字符;
● Output 向傳輸緩沖區寫一個字符串。
(2) 添加MSComm 控件
選擇Project菜單下Add To Project子菜單中的 Components and Controls選項,在彈出的對話框中雙擊Registered ActiveX Controls項,則所有注冊過的ActiveX控件出現在列表框中。選擇Microsoft Communications Control,單擊Insert按鈕將它插入到我們的Project中來,接受缺省的選項。另外,添加2個控件,1個List Box控件,用于改變通訊端口號,1個Edit Box控件,用于改變波特率、奇偶校驗、數據位、停止位。
(3) 設置MSComm串口參數
可以在需要的時候打開串口,例如在程序中做一個開始按鈕,在該按鈕的處理函數中打開串口。現在我們在主對話框的CSCommTestDlg::OnInitDialog()打開串口,加入如下代碼;
// TODO: Add extra initialization here
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //選擇com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打開串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,e,8,1");
//波特率9600,偶校驗,8個數據位,1個停止位
m_ctrlComm.SetInputModel(1);
//1;表示以二進制方式檢取數據
m_ctrlComm.SetRThreshold(1);
串口初始化程序如下;
m_Coml.SetCommPort(1); //設置串口1
if(! m_Coml.GetPortOpen())
m_Coml.SetPortOpen(TRUE); //打開串口
m_Coml.SetSettings(″9600,e,8,1″);
//串口參數設置
m_Coml.SetInputMode(1);
//設置Binary緩沖輸入方式
m_Coml.SetRThreshold(14);
//每接收14個字符,激活一次OnComm()事件
3.3 添加控制電機運行所需的各種控件
添加垂直滾動條List Box,對應于USS協議的地址ADR,表述為變頻器號:1-31直接列出,廣播式的32用“全部”代替。添加垂直滾動條List Box,對應于USS協議的STW,表述為電機動作方式:啟動,停止等。添加垂直滾動條List Box,對應于USS協議的PKE, 表述為要回顯的運行參數。添加開始發送按鈕、緊急起動按鈕、緊急停車按鈕等等。
3.4 USS協議
USS協議是profibus的一個子集。USS通信協議有各種長度,視所要滿足的功能多少而定,且因所用設備類型而有所不同。協議規定如表1所示;
表1 USS協議的規定
(1) 下傳的規定;
● STX(start of text);起始字符,為02H。
● LGE(telegram length);發送報文的字節數,可以變化。總報文的實際長度比LGE多兩個字節,這是因為開始的2個字節(STX和LGE)不被計入LGE中。只有net字符、ADR字節和BCC字符計入LGE中。具體為;總報文最長256字節,總報文= STX+LGE+LGE=2+LGE,1d LGE d 254,LGE=ADR+n+BCC=1+n+1,nd254(設net字符數n)。
● ADR(address byte);變頻器的地址碼,取值范圍為0~31(Bit;0~4位),第5位為1時為廣播發送。
● net character(或稱net data)段分為2個區;PKW區和 PZD區, 如表2所示。
表2 PKW區和 PZD區的規定
a)PKW (parameter ID value);參數標識值,定義了處理2個通訊設備之間參數傳遞的機制。例參數的讀和寫,參數的定義等。包含PKE、IND、PKW elements3個內容。MM3的PKW長度為3個字,MM4的PKW長度為4個字, 如表3所示。
表3 MM4的PKW定義
PKE;為一16位的字,用來控制變頻器的運行參數設置,各Bit的含義如表4所示;
表4 PKE各Bit的含義
控制位(15-12) 0(11) 變頻器的參數值(10-0)
對于MMV變頻器,控制位為0000時,無動作;控制位為0001時,讀變頻器的參數;控制位為0010時,寫參數到變頻器的RAM,控制位為1110時,寫參數到變頻器的EEPROM。
IND;為16位的字。用于讀寫參數說明,讀寫一維數組值,讀寫報文的信息內容。
PKW element(PKWE):信息,與任務或響應有關。假如在net data區只傳送PZD data時,可以長度為0。
PKE與PKWE的使用舉例。下傳變頻器參數PKE=(0001,0000,0101,1100)=105Ch(即要求上傳P092(串口連接波特率)),PKWE =0000。若上傳變頻器參數為PKE=105Ch,PKWE=0006,又由于MMV變頻器規定P092為3時是1200bit,為4時是2400bit,為5時是4800bit,為6時是9600bit,為7時是19200bit,則說明此時串口連接波特率為9600bit。
b) PZD (process data);過程數據,如表5所示。包含了自動操作所需的信號;從主機到從站的控制字和定位點,從從站到主機的狀態字和實際值。最長16個字,最短0字。
表5 PZD的定義
PZD1為控制字,PZD2為主要定位點,PZD3... PZD16為定位點或輔助控制字;
PZD1;為控制字,16位的字,用來控制變頻器的運行動作;
PZD2;為主要定位點,16位的字,用來控制變頻器的輸出頻率,滿頻的值為16384(4000H)對應100%的輸出頻率,最大值為32767,即200%的輸出頻率。當取值為32768~65535時,表示反向的輸出頻率從0%~200%變化,電機反轉。
● BCC;校驗字符,為前面所有字節的異或和。
上傳規定與下傳規定基本相同,只是上傳的一般為實際值。
3.5 數據的處理
這里以發送數據中輸出頻率的處理為例,假設軟件界面輸出頻率編輯框(對應變量m_strFreData)填寫50,程序將“50”以字符形式取出,通過編寫的函數String2Dec將字符“
50”轉換為十六進制字節數“32”即50D,由于USS發送協議中變頻器的輸出頻率HSW為16位的字,所以 要將字節擴展成對應的字。50D通過擴展后對應的字為4000H。25D通過擴展后對應的字為2000H。以此類推運算。設輸出頻率50D,示范程序如下:
CByteArray hexdata;// hexdata為十六進制數組,m_strFreData為輸出頻率的十進制變量
int len=String2Dec(m_strFreData,hexdata);
// 輸出頻率m_strFreData=50D轉換為十六進制的hexdata[0]= 0X32
LONG NUM1,NUM2;//實型精確一些
INT NUM3;
hexdata.SetSize(14);
NUM1=hexdata[0];//得到0X32(=50D)
NUM2=( NUM1*4*16)/50;//字節擴展成對應的字,得到字節50D對應的字4000H的高字節NUM2=0X40
NUM3=NUM2;//實型變整型
hexdata[11]=NUM3;
hexdata[12]=( NUM1*0X4000- NUM3*256*50)/50+1;
//得到字節50D對應的字4000H的低字節NUM3=0X00,
4 軟件調試結果
軟件主界面如圖3所示。
圖3 軟件主界面
運行中,遇到異常情況時,可進行緊急停車。電機在需要單獨啟動時,可以個別設置。需要同步啟動時,可以以廣播式啟動全部電機。變頻器參數可全部或部分上傳,遠程監控電機的運行情況。
5 結束語
本軟件通過USS通訊協議,用VC6.0的通訊控件MSCOMM,實現了單臺工控機遠程串口控制多臺變頻器,并且對數據轉換和數據輸出算法進行了改進,有些地方進行了補償,控制更準確,運行狀況比較滿意。
參考文獻
[1] 張承慧,萬 軍,李洪斌. 利用PCC開發變頻器串行協議[J].電氣傳動,2003,(1).
[2] 孫志剛,朱德森. USS協議和Modbus協議的實現.與[J]. 2001,(5).
[3] [美]Michael J.Young著,邱仲潘等譯.Visual C++ 6 從入門到精通[M]. 北京:電子出版社,1999.
[4] SIEMENS.USS protocol (Universal Serial Interface Protocol), 1994(9)
【紡機中的微機遠程多電機同步傳動控制系統】相關文章:
基于交流永磁同步電機的全數字伺服控制系統03-19
工業Ethernet在遠程實時控制系統中的具體應用03-18
步進電機驅動控制系統設計11-22
遠程機房電源控制系統設計03-07
基于GPRS遠程電機監控系統的設計03-07
無刷同步發電機交流勵磁機的設計03-07
基于DSP感應電機變頻調速控制系統設計03-07
同步電機試驗自動控制與數據采集系統的設計03-07