程保喜(山西省自動化研究所,山西 太原 030012)
基于Modbus協(xié)議的變頻器串行通信設計
程保喜(山西省自動化研究所,山西 太原 030012)
串行通訊在工業(yè)控制中有著廣泛的應用,Modbus協(xié)議是應用于電子控制器上的一種通用語言,它已經成為一種通用工業(yè)標準。本文針對變頻器與上位機之間需要進行通訊以方便數(shù)據(jù)處理的問題設計了基于Modbus協(xié)議的變頻器串行通訊程序,首先介紹了Modbus協(xié)議的工作原理,基于Modbus中的RTU模式在TMS320LF2407上使用匯編語言進行串行通信程序編寫,對設計中的關鍵程序通過程序流程圖的方式進行了重點分析,并通過硬件平臺驗證了方法的可行性,最終實現(xiàn)了變頻器和上位機的串行通信功能。
Modbus協(xié)議;RTU;變頻器;串行通信
變頻器是交流調速的一種重要手段,在工業(yè)生產中得到了越來越廣泛的應用。它本身所帶的顯示面板具有簡單、高效的特點, 但卻有專業(yè)化、操作不方便等缺點,而且在數(shù)據(jù)的處理、計算、保存等諸多方面不盡人意。通過變頻器與上位機的通信可以將數(shù)據(jù)上傳或下載,以便充分發(fā)揮上位機數(shù)據(jù)處理和操作方便的優(yōu)勢。
1.1 Modbus主從協(xié)議原理
Modbus最早由Modicon公司開發(fā),現(xiàn)在已是全球工業(yè)領域最廣為使用的協(xié)議。它支持RS-232/422/485及以太網設備。許多工業(yè)設備(如DCS、PLC及智能儀表)都將其作為通信標準。
Modbus數(shù)據(jù)通信采用半雙工的主從應答方式,在同一時刻,同一串行總線上,僅有一個主機和一個或多個從機連接。Modbus通信由主機端發(fā)送數(shù)據(jù)請求尋址到相應正確的從機,從機確認信息正確后發(fā)出應答信息傳輸給主機以響應請求,從機未收到來自主機的數(shù)據(jù)請求時,不會主動發(fā)送數(shù)據(jù)。Modbus協(xié)議只能夠在主從機間通信。主機有兩種發(fā)送數(shù)據(jù)請求模式即廣播模式和單播模式。廣播模式是主機對所有從機發(fā)送數(shù)據(jù)請求,而從機不需要有應答響應;單播模式是主機特定尋址某一從機,被尋址從機在接收到數(shù)據(jù)請求后,需要對主機做應答響應。
1.2 傳輸模式和幀格式
Modbus常見的通信協(xié)議有:Modbus RTU和Modbus ACSII兩種模式。本設計主要采用Modbus RTU模式,它主要是用于二進制數(shù)值且數(shù)據(jù)量較大的傳輸通信中。
在Modbus RTU模式中,數(shù)據(jù)幀包括起始位、地址碼、功能碼、數(shù)據(jù)區(qū)、CRC校驗位及停止位。為區(qū)分兩幀數(shù)據(jù),每幀報文之間間隔需要大于3.5個字符時間,圖1為Modbus RTU模式圖。其中,每幀報文必須采用連續(xù)的字符流發(fā)送且字符空閑間隔時間須小于1.5個字符時間,否則接收到的報文幀將被認為不完整而被丟棄。
圖1 Modbus RTU模式圖
Modbus RTU模式通信協(xié)議采用異步通信方式并規(guī)定了傳輸?shù)耐ㄐ判畔⒑屯ㄐ艛?shù)據(jù)幀格式及內容。通信信息采用11位的字格式;主機通信信息幀內容包括:地址碼、執(zhí)行功能碼、數(shù)據(jù)區(qū)及錯誤校驗,如表1所示。從機給主機的返回幀也是采用同樣結構,內容包括:動作確認,數(shù)據(jù)區(qū)和錯誤校驗等。如果從機在接收信息時發(fā)生錯誤,或未能執(zhí)行主機傳達的命令,它將給主機返回一個故障幀。
表1 通信數(shù)據(jù)的類型及格式
本方案中串行通訊采用RS485接口,RS485的電氣標準并不符合DSP芯片的電平要求,因此必須進行電平轉換。如圖2所示,本方案使用的電平轉換芯片是MAX483E,硬件設計簡單。RXD1和TXD分別接DSP的SCIRXD和SCITXD。
圖2 連接原理圖
本文串行通行設計使用的控制芯片是TI公司的TMS320LF2407,采用匯編語言編寫程序。
本文中通訊程序設計分為3個部分:SCI初始化程序、SCI中斷程序和SCI數(shù)據(jù)處理程序。
3.1 SCI初始化程序
SCI初始化程序主要是設置相應的SCI寄存器。下面是一些相應的寄存器設置代碼:
LDP #0E01H ;裝載數(shù)據(jù)頁
SPLK #0003H,MCRA ;選中SCI輸入引腳
LDP #0E0H ;裝載數(shù)據(jù)頁
SPLK #07H,SCICCR ;1位停止位,無校驗 ; 8位數(shù)據(jù),
SPLK #03H,SCICTL1 ;使能TX,RX;使能SCICLK
SPLK #02H,SCICTL2 ;使能RX中斷;禁止TX中斷
SPLK #02H,SCIHBAUD
SPLK #08H,SCILBAUD ;波特率9600bps
SPLK #023H,SCICTL1 ;復位放棄SCILDP#0
SPLK #0,GPR0 ;設置等待狀態(tài)發(fā)生器
3.2 SCI中斷程序
SCI接收和發(fā)送數(shù)據(jù)均采用中斷程序來實現(xiàn)。
SCI接收數(shù)據(jù)時,將按字節(jié)方式接收,每接收到一個字節(jié)數(shù)據(jù),就進入一次中斷。通過中斷重復接收,直到數(shù)據(jù)接收完畢。中斷模式中需要定時器實時監(jiān)測所接收每幀數(shù)據(jù)之間的時間間隔,當間隔大于3.5個字符時,說明準備接收新的一幀數(shù)據(jù)。每一幀數(shù)據(jù)接收完成后,從機將重新計算其CRC校驗值,并與所接收到的數(shù)據(jù)中的CRC值進行比較,與此同時,表明接收數(shù)據(jù)正確,從機將執(zhí)行數(shù)據(jù)幀中的功能碼,否則從機將向主機返回一條異常數(shù)據(jù)幀。
SCI中斷發(fā)送數(shù)據(jù)時,程序會記錄所發(fā)數(shù)據(jù)的長度,直至所有字符發(fā)送完畢。中斷程序默認的是接收狀態(tài),每當數(shù)據(jù)發(fā)送完畢后需清除發(fā)送標志位,關閉發(fā)送中斷,打開接收中斷。圖3是SCI中斷流程圖。
3.3 SCI數(shù)據(jù)處理程序
SCI數(shù)據(jù)處理程序的主要功能是根據(jù)已接收Modbus的正確命令碼來控制變頻器進行相應動作。每當變頻器接收到一條完整的數(shù)據(jù)幀后,首先判斷所接收數(shù)據(jù)幀的地址是否為本機或廣播地址,然后重新計算CRC校驗碼是否與接收的校驗碼一致及命令碼的合法性,在所有條件都滿足后,變頻器執(zhí)行操作命令。圖4為數(shù)據(jù)處理流程圖。
圖3 SCI中斷流程圖
圖4 數(shù)據(jù)處理流程圖
上位機通過串口調試工具發(fā)送數(shù)據(jù),測試結果如表2~表5所示。
表2 命令碼03H主機命令信息(RTU)
表3 命令碼03H從機回應信息(RTU)
表4 命令碼06H主機命令信息(RTU)
表5 命令碼06H從機回應信息(RTU)
本文所介紹的方案是通用變頻器設計的一部分。本文的設計在該裝置運行情況良好,達到了設計要求,實驗結果令人滿意。
[1] 劉和平, 嚴利平, 張學鋒, 等. TMS320LF240x DSP結構、原理及應用[M].北京: 北京航空航天大學出版社,2002.
[2] 金立江, 李文, 張繼和. 基于ModBus協(xié)議的變頻器VC++控制系統(tǒng)[J].自動化與儀表, 2008, (4):32-35.
[3] 梅銳, 牟永敏.基于Modbus協(xié)議的自動化設備之間通信實現(xiàn)[J]. 北京機械工業(yè)學院學報, 2006, (21):44-46.
[4] 王靖歐, 雷山鳳. Modbus協(xié)議在監(jiān)控系統(tǒng)串行通訊中的應用[J]. 湖北水力發(fā)電,2007, 10(1):18-20.
[5] 李宥謀, 房鼎益. CRC編碼算法研究與實現(xiàn)[J]. 西北大學學報, 2006, 36(1): 895-898.
[6] 郭鵬義, 楊耕. 基于DSP的變頻器與PC機串行通信的實現(xiàn)[J]. 電氣傳動,2004, (2): 45-47.
[7] 薛海濤, 和衛(wèi)星, 陳曉平. 數(shù)據(jù)采集系統(tǒng)中MODBUS協(xié)議的實現(xiàn)[J]. 微計算機信息, 2007, 23.
Serial Communication Design of Inverter Based on Modbus
Serial communication has been widely used in industrial control. The Modbus protocol is a common language which is applied to electronic control. Serial communication program is designed based on Modbus protocol in order to communicate between the inverter and the computer for data processing. This paper introduces the Modbus protocol and programs on TMS320LF2407 with assembly language based on RTU model in Modbus. The key point of design procedure is analyzed through flow chart and the feasibility of method is verified by hardware platform. The serial communication between inverter and PC is finally achieved.
Modbus protocol; RTU; Inverter; Serial communication
B
1003-0492(2015)02-0088-03
TP273
程保喜(1971-),男,山西太原人,本科,工程師,現(xiàn)就職于山西省自動化研究所,主要研究方向為電氣工程及其自動化。