李 陽
(山西欣奧特自動(dòng)化工程有限公司,山西 太原 030012)
變頻器因具備運(yùn)行可靠、穩(wěn)定和強(qiáng)抗干擾等特性,在現(xiàn)代工業(yè)生產(chǎn)中被廣泛使用,是電機(jī)交流調(diào)速的一種重要方法之一。變頻器設(shè)備本身帶有顯示面板具備操作簡單、快捷的特點(diǎn),但卻有不夠?qū)I(yè)化,數(shù)據(jù)顯示不夠直觀的缺點(diǎn),而且在控制數(shù)據(jù)的計(jì)算、處理、保存等諸多方面存在著不足。通過設(shè)計(jì)實(shí)現(xiàn)串行通信控制,變頻器數(shù)據(jù)上傳與上位機(jī)下載,實(shí)現(xiàn)控制程序的數(shù)據(jù)交互,充分發(fā)揮上位機(jī)數(shù)據(jù)處理和操作方便的優(yōu)勢(shì)。
Modbus串行鏈路協(xié)議是一個(gè)主從協(xié)議,作為通信行業(yè)的通信標(biāo)準(zhǔn),廣泛應(yīng)用于工業(yè)設(shè)備控制中。在同一時(shí)間內(nèi),只有一個(gè)設(shè)備主機(jī)連接于通信總線,同一個(gè)串行總線可連接一個(gè)或多個(gè)從機(jī)設(shè)備(最多為247)。采用Modbus通信總是由設(shè)備主機(jī)發(fā)起,從機(jī)只有在收到來自主機(jī)的請(qǐng)求時(shí),才主動(dòng)向主機(jī)發(fā)送數(shù)據(jù)。兩個(gè)從機(jī)之間沒有互相通信功能。主機(jī)在同一時(shí)刻只會(huì)發(fā)起一個(gè)Modbus事務(wù)處理。主機(jī)以單播模式和廣播模式兩種模式對(duì)從機(jī)發(fā)出Modbus請(qǐng)求。單播模式是一問一答式,設(shè)備主機(jī)以設(shè)定地址尋找某一從機(jī),從機(jī)接到尋訪并處理完請(qǐng)求工作后,將一個(gè)應(yīng)答返回主機(jī);廣播模式是主機(jī)同時(shí)向在線的所有從機(jī)發(fā)送請(qǐng)求,從機(jī)不需要返回應(yīng)答。
Modbus協(xié)議有ACSII和RTU兩種通信傳輸模式。本論文設(shè)計(jì)的Modbus串行通信采用RTU模式,RTU模式構(gòu)成如圖1所示。
圖1 RTU模式
在RTU模式,不同的兩個(gè)報(bào)文幀之間至少包含3.5個(gè)字符時(shí)間的時(shí)間間隔,用以程序區(qū)分不同幀數(shù)據(jù)。其中,報(bào)文幀發(fā)送時(shí)必須以連續(xù)的字符流發(fā)送,如果一個(gè)報(bào)文幀中兩個(gè)字符發(fā)送的空閑時(shí)間間隔大于1.5個(gè)字符時(shí)間,則該報(bào)文會(huì)被處理程序認(rèn)為不完整,從機(jī)會(huì)將收到的報(bào)文幀丟棄。RTU報(bào)文幀格式如表1所示。
表1 RTU報(bào)文幀
Modbus串行通信協(xié)議定義了串行通信中異步傳輸?shù)膸瑑?nèi)容及使用格式。其中包括:主機(jī)輪詢及廣播幀、從機(jī)應(yīng)答幀的格式;主機(jī)組織的幀內(nèi)容包括:廣播地址(或從機(jī)地址)、執(zhí)行功能的命令碼、命令數(shù)據(jù)內(nèi)容和CRC校驗(yàn)等。從機(jī)的響應(yīng)也是采用相同的結(jié)構(gòu),內(nèi)容包括:執(zhí)行功能確認(rèn),返回主機(jī)的應(yīng)答數(shù)據(jù)和CRC校驗(yàn)等。如果從機(jī)未能從主機(jī)接收到正確的幀數(shù)據(jù),或不能執(zhí)行主機(jī)下發(fā)的控制動(dòng)作,它將組織一個(gè)故障幀作為響應(yīng)反饋給主機(jī)。
本方案中應(yīng)用MAX483E,將RS485通信接口的電平轉(zhuǎn)換為適合DSP芯片的輸入電平,硬件電路設(shè)計(jì)結(jié)構(gòu)簡單、清晰明了,DSP控制芯片的SCITXD(傳輸)和SCIRXD(接收)管腳分別接TXD和RXD。硬件電路圖如圖2所示。
圖2 硬件電路原理圖
本文Modbus串行通信設(shè)計(jì)選用的是德州儀器TI公司生產(chǎn)的DSP控制芯片,型號(hào)為TMS320LF2407,程序編寫采用匯編語言。本文分為3個(gè)部分介紹實(shí)現(xiàn)串行通信功能,即SCI初始化程序、SCI中斷程序和SCI數(shù)據(jù)處理程序。
本部分主要是對(duì)SCI寄存器進(jìn)行相應(yīng)的控制位設(shè)置。下面為DSP控制芯片的部分寄存器設(shè)置實(shí)現(xiàn)代碼:
LDP #0E0H
SPLK #07H,SCICCR,數(shù)據(jù)位8,停止位1,無校驗(yàn)
LDP #0E01H;裝載數(shù)據(jù)頁
SPLK #0003H,MCRA;SCI引腳選擇
SPLK #02H,SCICTL2;TX中斷disable、RX中斷enable
SPLK #03H,SCICTL1;使能發(fā)送接收及時(shí)鐘管腳
SPLK #02H,SCIHBAUD
SPLK #08H,SCILBAUD;波特率9600bps
SPLK #023H,SCICTL1;復(fù)位
LDP #0
SPLK #0,GPR0;等待狀態(tài)發(fā)生器設(shè)置
中斷程序主要功能是數(shù)據(jù)中斷接收和中斷發(fā)送。中斷接收,當(dāng)檢測(cè)到與上一幀數(shù)據(jù)末尾字符的時(shí)間間隔大于3.5個(gè)字符時(shí)間的第一字節(jié)開始記錄,通過中斷循環(huán)接收,直到全部數(shù)據(jù)接收完畢。中斷發(fā)送,程序記錄發(fā)送的數(shù)據(jù)長度,直至數(shù)據(jù)發(fā)送完畢。SCI數(shù)據(jù)中斷程序處理流程圖如圖3所示。
圖3 SCI中斷流程圖
本部分主要功能是DSP芯片識(shí)別上位機(jī)通過Modbus通信發(fā)送過來的動(dòng)作命令碼并且根據(jù)接收到的命令碼控制變頻器進(jìn)行功能動(dòng)作。當(dāng)變頻器收到完整的一幀數(shù)據(jù)后,首先對(duì)幀數(shù)據(jù)分析,進(jìn)行地址判斷,確定是廣播地址還是本機(jī)地址,并進(jìn)行命令碼合法性判斷和CRC校驗(yàn)計(jì)算,當(dāng)滿足所有條件,命令碼正確后,變頻器執(zhí)行命令操作。數(shù)據(jù)處理流程圖如圖4所示。
測(cè)試過程中,變頻器主要命令碼數(shù)據(jù)由上位機(jī)的串口調(diào)試工具進(jìn)行發(fā)送。
1) 命令碼:03H,讀取N個(gè)幀數(shù)據(jù)(word)。
測(cè)試示例:從機(jī)變頻器地址設(shè)置為01H,寄存器內(nèi)存起始地址為0006,讀取2個(gè)字,則命令幀和應(yīng)答幀數(shù)據(jù)如表2,表3。
圖4 SCI數(shù)據(jù)處理流程圖
起始間隔標(biāo)志>3.5個(gè)字符時(shí)間間隔設(shè)備地址01H命令碼03H起始地址H位00H起始地址L位04H數(shù)據(jù)個(gè)數(shù)H位00H數(shù)據(jù)個(gè)數(shù)L位02HCRC校驗(yàn)L位85HCRC校驗(yàn)H位CAH結(jié)束間隔標(biāo)志>3.5個(gè)字符時(shí)間間隔
表3 從機(jī)回應(yīng)信息(RTU)
2) 命令碼:06H,寫入一個(gè)幀數(shù)據(jù)(word)。
測(cè)試示例:為變頻器02H的0008數(shù)據(jù)地址寫入1388H,則命令幀和應(yīng)答幀數(shù)據(jù)如表4,表5。
表4 主機(jī)命令信息(RTU)
表5 從機(jī)回應(yīng)信息(RTU)
本文所設(shè)計(jì)的Modbus串行通信是通用變頻器控制設(shè)計(jì)的關(guān)鍵一步,程序通過下載至TMS320LF2407芯片上控制設(shè)備運(yùn)行,其結(jié)測(cè)試結(jié)果令人滿意,變頻器運(yùn)行穩(wěn)定,完全符合設(shè)計(jì)需求。