新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VB和RS-485總線(xiàn)技術(shù)的變頻器遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)

基于VB和RS-485總線(xiàn)技術(shù)的變頻器遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2016-12-13 來(lái)源:網(wǎng)絡(luò) 收藏
  1 引言

  隨著電力電子技術(shù)、微電子技術(shù)的發(fā)展,變頻器已廣泛應(yīng)用于交流電動(dòng)機(jī)的速度控制上,尤其是近年來(lái)越來(lái)越多地利用rs232/rs485串行通訊和工業(yè)現(xiàn)場(chǎng)總線(xiàn)技術(shù)進(jìn)行變頻器的網(wǎng)絡(luò)通訊和遠(yuǎn)程監(jiān)控,以實(shí)現(xiàn)生產(chǎn)線(xiàn)設(shè)備之間的實(shí)時(shí)自動(dòng)控制及生產(chǎn)流程的實(shí)時(shí)監(jiān)控。為滿(mǎn)足應(yīng)用的需要,變頻器大多都帶有通訊接口。由于rs485網(wǎng)絡(luò)具有設(shè)備簡(jiǎn)單、容易實(shí)現(xiàn)、傳輸距離遠(yuǎn)、維護(hù)方便等優(yōu)點(diǎn)而被許多變頻器廠(chǎng)家所采用,用戶(hù)可通過(guò)上位機(jī)開(kāi)發(fā)通訊程序,監(jiān)控變頻器的運(yùn)行。本文以emerson(原 avansys)公司 td3000變頻器為例,介紹基于rs485總線(xiàn)的計(jì)算機(jī)對(duì)多臺(tái)變頻器的實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)。

本文引用地址:http://m.butianyuan.cn/article/201612/329547.htm

  2 系統(tǒng)的硬件連接

  td3000是 emerson公司推出的高性能矢量控制變頻器,能以很高的控制精度進(jìn)行寬范圍的調(diào)速運(yùn)行,它帶有內(nèi)置的標(biāo)準(zhǔn)rs485通訊口,通過(guò)轉(zhuǎn)換器可方便地與上位機(jī)進(jìn)行串行通訊,實(shí)現(xiàn)上位機(jī)對(duì)變頻器功能碼的快速修改及運(yùn)行狀態(tài)的直觀監(jiān)控,并實(shí)現(xiàn)組網(wǎng)監(jiān)控運(yùn)行[2]。本系統(tǒng)組成如圖1。

  

  圖1 系統(tǒng)配置圖

  計(jì)算機(jī)的rs-232口通過(guò)一個(gè)rs232/rs485轉(zhuǎn)換器轉(zhuǎn)換為rs-485構(gòu)成通訊網(wǎng)絡(luò),以td3000變頻器作為從機(jī)組成“單主多從”通訊控制網(wǎng)(單監(jiān)控主機(jī)多變頻器從機(jī)),通訊介質(zhì)為屏蔽雙絞線(xiàn),屏蔽層一點(diǎn)接地。變頻器串行通訊接口端子的接線(xiàn)如圖2。

  

  圖2 通訊端口接線(xiàn)圖

  3 td3000變頻器的串行通訊協(xié)議及相關(guān)參數(shù)設(shè)置

  td3000的通訊協(xié)議中,其上位機(jī)與變頻器的通信,通過(guò)上位機(jī)與變頻器之間交換命令和應(yīng)答實(shí)現(xiàn)的。

  (1) 物理接口

  rs485總線(xiàn)接口:異步、半雙工;

  總線(xiàn)上每段最多32個(gè)站(最多31個(gè)從站),可用中繼器擴(kuò)展至127個(gè)站(包含中繼器)。

  (2) 數(shù)據(jù)格式

  1位起始位、8位數(shù)據(jù)位、1位停止位、無(wú)校驗(yàn);

  1位起始位、8位數(shù)據(jù)位、1位停止位、奇校驗(yàn);

  1位起始位、8位數(shù)據(jù)位、1位停止位、偶校驗(yàn);

  默認(rèn):1位起始位、8位數(shù)據(jù)位、1位停止位、無(wú)校驗(yàn)。

  (3) 波特率

  9600bps、19200bps、38400bps、125kbps。

  默認(rèn): 9600bps。

  (4) 通信地址

  從機(jī)的本機(jī)地址設(shè)置范圍2~126。

  127號(hào)為廣播地址,主機(jī)廣播時(shí),從機(jī)不允許應(yīng)答。

  (5) 通信方式

  上位機(jī)為主機(jī),變頻器為從機(jī)。采用主機(jī)“輪詢(xún)”,從機(jī)“應(yīng)答”方式。

  (6) 協(xié)議類(lèi)型

  協(xié)議采用長(zhǎng)短幀結(jié)構(gòu):

  短幀—用于獨(dú)立傳送自動(dòng)控制系統(tǒng)所需的控制字和狀態(tài)字;

  長(zhǎng)幀—既包括控制字和狀態(tài)字又含有涉及到操作控制、觀測(cè)、維護(hù)以及診斷等的內(nèi)容(所具有的內(nèi)容受變頻器自身功能的限制);

  特殊報(bào)文—用于獲取從站的軟件版本和機(jī)器型號(hào)[3]。

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

  

  (7) td3000變頻器的參數(shù)設(shè)置

  使用通訊方式控制變頻器時(shí),應(yīng)對(duì)變頻器的通訊數(shù)據(jù)格式、波特率、通訊地址等進(jìn)行設(shè)置,具體通過(guò)設(shè)置相應(yīng)的功能碼來(lái)完成。下面是對(duì)td3000變頻器的參數(shù)設(shè)置:

  f0.03=6 頻率設(shè)定方式選擇“通訊給定”

  f0.05=2 運(yùn)行命令選擇“通訊控制”

  f9.00=3 串行通訊時(shí)的波特率設(shè)定為9600bps

  f9.01=0 串行通訊時(shí)的數(shù)據(jù)格式采用“n,8,1”,即1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)

  f9.02=2 本機(jī)地址設(shè)置2號(hào)從機(jī)

  4 數(shù)據(jù)幀結(jié)構(gòu)描述

  (1) 數(shù)據(jù)幀結(jié)構(gòu)為:幀頭、用戶(hù)數(shù)據(jù)、幀尾(見(jiàn)表1)。

  幀頭包括:起始字節(jié)(特殊報(bào)文:68h;短幀:7eh;長(zhǎng)幀:02h)

  從機(jī)地址(范圍2-126,127為廣播地址,0、1號(hào)地址保留)。

  幀尾包括:校驗(yàn)數(shù)據(jù)(異或校驗(yàn),計(jì)算方法為本幀數(shù)據(jù)字節(jié)的連續(xù)異或結(jié)果)。

  用戶(hù)數(shù)據(jù)包括:參數(shù)數(shù)據(jù)和過(guò)程數(shù)據(jù)兩部分(在短幀中沒(méi)有參數(shù)數(shù)據(jù))。其中參數(shù)數(shù)據(jù)包括:功能碼操作命令/響應(yīng)、功能碼號(hào)、功能碼設(shè)定/實(shí)際值。過(guò)程數(shù)據(jù)包括:主機(jī)控制命令/從機(jī)狀態(tài)響應(yīng)、主機(jī)運(yùn)行主設(shè)定/從機(jī)運(yùn)行實(shí)際值。當(dāng)主機(jī)發(fā)送時(shí)為“命令”或“設(shè)定值”,如對(duì)變頻器進(jìn)行開(kāi)機(jī)、關(guān)機(jī)、正反轉(zhuǎn)、頻率設(shè)置、參數(shù)讀取等,當(dāng)從機(jī)(變頻器)發(fā)送時(shí)為對(duì)主機(jī)命令的“響應(yīng)”或工作狀態(tài)及參數(shù)“實(shí)際值”的反饋。數(shù)據(jù)遵循先發(fā)高字節(jié),再發(fā)低字節(jié)的原則;如果功能碼操作不正確,則用低字節(jié)返回操作錯(cuò)誤代碼,此時(shí)高字節(jié)為0。

  (2) 變頻器的運(yùn)行控制既可以用長(zhǎng)幀實(shí)現(xiàn),也可以用短幀實(shí)現(xiàn)。本文中僅以長(zhǎng)幀為例進(jìn)行說(shuō)明,其幀格式如下:

  ● 計(jì)算機(jī)到變頻器:

  

  ●變頻器到計(jì)算機(jī):

  



  5 通訊程序及監(jiān)控界面的設(shè)計(jì)

  目前監(jiān)控系統(tǒng)上位機(jī)一般采用windows平臺(tái),windows平臺(tái)下的串行通訊程序設(shè)計(jì)一般有2種途徑:一是直接調(diào)用windowsapi函數(shù),響應(yīng)速度快,但程序設(shè)計(jì)較復(fù)雜;二是采用mscomm串行通訊控件,靈活性稍差,但控件的使用使得通訊程序設(shè)計(jì)大為簡(jiǎn)單。在一般控制要求并不太高的情況下,通過(guò)第二種途徑進(jìn)行程序開(kāi)發(fā)既能滿(mǎn)足控制要求,又能簡(jiǎn)化程序設(shè)計(jì)。

  visual basic以其面向組件的新技術(shù)及對(duì)硬件控制能力強(qiáng)而著稱(chēng),vb提供的mscomm控件是grescent sortware inc公司提供的activex控件,它通過(guò)串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能[1]。應(yīng)用時(shí)首先要求注冊(cè)它,把它放到表單上,然后設(shè)置其屬性:

  commport=1, 通訊端口號(hào)

  inbuffersize=1024, 收緩沖大小

  inputlen=0,

  outbuffersize=1024 發(fā)緩沖大小

  rthreshold=18, 串口接字符觸發(fā)事件

  rtsenable=false,

  setting=9600,n,8,1 (波特率為9600,校驗(yàn)碼為無(wú)校驗(yàn),8位數(shù)據(jù)位,1位停止位)。

  

  圖3 人機(jī)界面

  圖3是監(jiān)控系統(tǒng)的主控制界面,對(duì)td3000的開(kāi)機(jī)、關(guān)機(jī)、正轉(zhuǎn)、反轉(zhuǎn)、點(diǎn)動(dòng)正轉(zhuǎn)、點(diǎn)動(dòng)反轉(zhuǎn)、自由停車(chē)、緊急停車(chē)、故障復(fù)位等控制,通過(guò)點(diǎn)擊窗口上相應(yīng)的運(yùn)行控制按鈕來(lái)實(shí)現(xiàn);如果點(diǎn)擊右邊的“運(yùn)行參數(shù)”按鈕,即可進(jìn)入變頻器運(yùn)行參數(shù)監(jiān)控界面,實(shí)時(shí)監(jiān)視變頻器的運(yùn)行頻率、設(shè)定頻率、運(yùn)行轉(zhuǎn)速、設(shè)定轉(zhuǎn)速、輸出電流、輸出電壓、閉環(huán)反饋、閉環(huán)設(shè)定、變頻器當(dāng)前狀態(tài)等。

  下面以分別以“設(shè)定發(fā)送數(shù)據(jù)長(zhǎng)幀格式子函數(shù)”、“計(jì)算校驗(yàn)和子函數(shù)”以及“以50hz運(yùn)行2#變頻器”程序段為例加以說(shuō)明。

  表2 計(jì)算機(jī)向變頻器發(fā)送數(shù)據(jù)幀

  

  (1) 設(shè)定發(fā)送數(shù)據(jù)長(zhǎng)幀格式子函數(shù)

  public function sendlcode2(a as string)

  長(zhǎng)幀發(fā)送函數(shù)

  dim outdatabyte() as byte

  dim i as integer

  sendlcode2 = "02" + a

  redim outdatabyte(len(sendlcode2)/2)

  重新定義發(fā)送數(shù)組長(zhǎng)度

  for i = 1 to len(sendlcode2)/2

  outdatabyte(i) = cbyte(val("&h" & mid(sendlcode2, i * 2 - 1, 2)))

  把字符串變成字節(jié)數(shù)組

  next

  form1.mscomm1.output=outdatabyte 發(fā)送

  end function

  (2) 計(jì)算校驗(yàn)和子函數(shù)

  public function fcs(sendstr as string)

  校驗(yàn)和函數(shù)

  dim str

  dim i as integer

  str = val("&h" & mid(sendstr, 1, 2))

  i = 3

  do

  str = str xor val("&h" & mid(sendstr, i, 2))

  i = i + 2

  loop while i < len(sendstr)

  fcs = hex$(str)

  end function

  (3)以50hz運(yùn)行2#變頻器。

  td3000頻率的定標(biāo)為1:100,要使變頻器以50hz運(yùn)轉(zhuǎn),主設(shè)定應(yīng)為1388h(5000),故計(jì)算機(jī)向變頻器發(fā)送數(shù)據(jù)幀為(見(jiàn)表2):

  其對(duì)應(yīng)部分程序段為:

  private sub command1_click() 開(kāi)機(jī)命令

  mscomm1.portopen=true 打開(kāi)端口接入總線(xiàn)

  dim str1, sendstring,bcc 定義變量

  str1="0200000000047f1388" 賦值以50hz運(yùn)行2#變頻器的數(shù)據(jù)變量

  bcc=cstr(fcs(str1)) 調(diào)用異或校驗(yàn)函數(shù)生成校驗(yàn)碼

  sendstring=str1+bcc 生成完整待發(fā)送字符串

  sendlcode2 (sendstring) 調(diào)用長(zhǎng)幀格式函數(shù)把字

  符串變成字節(jié)并發(fā)送

  end sub

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

  本系統(tǒng)通過(guò)基于rs485總線(xiàn)的計(jì)算機(jī)對(duì)變頻器通訊,實(shí)現(xiàn)了上位機(jī)對(duì)多臺(tái)變頻器的控制及實(shí)時(shí)監(jiān)控功能,利用vb編制的人機(jī)界面使操作簡(jiǎn)便,取得了良好的實(shí)用效果。針對(duì)通訊過(guò)程中應(yīng)注意的事項(xiàng)總結(jié)如下:

  (1) 在實(shí)際的運(yùn)行過(guò)程中,長(zhǎng)幀和短幀的發(fā)送,有時(shí)會(huì)出現(xiàn)不能同時(shí)發(fā)送的情況,這是因?yàn)樽冾l器對(duì)指令的處理時(shí)間與我們所設(shè)置的波特率不協(xié)調(diào),以至不能辨認(rèn)數(shù)據(jù)幀,這時(shí)可以改變一下波特率,使之協(xié)調(diào)。

  (2) 兩個(gè)通信幀之間要保證有2個(gè)字節(jié)以上傳輸時(shí)間的間隔,確保準(zhǔn)確識(shí)別報(bào)文頭。

  (3) 在讀取參數(shù)時(shí),會(huì)出現(xiàn)所返回的數(shù)據(jù)不能夠穩(wěn)定地固定在某一個(gè)范圍內(nèi),返回錯(cuò)誤數(shù)據(jù)。這是因?yàn)榘l(fā)送數(shù)據(jù)與接收數(shù)據(jù)的間隔設(shè)置不當(dāng)引起的,以至于變頻器還沒(méi)有正確處理完數(shù)據(jù)時(shí),就已經(jīng)讀出錯(cuò)誤數(shù)據(jù)。

  (4) 使用mscomm控件時(shí),不能以數(shù)字串的形式直接發(fā)送,而是要以字節(jié)形式發(fā)送;同時(shí)在接收時(shí),要用二進(jìn)制的形式來(lái)取回?cái)?shù)據(jù),否則通訊就不能成功。

  參考文獻(xiàn)

  [1] microsoft corporation.visual basic 5.0 active x控件參考手冊(cè)[m]. 北京:科學(xué)出版社,1998.

  [2] 安圣電氣有限公司. td3000高性能矢量控制變頻器用戶(hù)手冊(cè)[m]. 深圳:安圣電氣有限公司,2001.

  [3] 安圣電氣有限公司. td3000變頻器串行通信協(xié)議[m]. 深圳:安圣電氣有限公司,2001.



評(píng)論


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

關(guān)閉