田陽杰,易亞軍,秦 龍
(武漢華中數(shù)控股份有限公司,武漢 430223)
隨著電力電子技術(shù)的不斷突破與越來越多的高性能微處理器在控制系統(tǒng)中的應(yīng)用,伺服驅(qū)動系統(tǒng)也向著智能化方向發(fā)展。智能化的一個重要的特點表現(xiàn)為伺服驅(qū)動系統(tǒng)具備良好的人機交互界面,用戶可以實時修改參數(shù)、監(jiān)視系統(tǒng)的運行狀態(tài)[1]。因此本文設(shè)計了一款通過RS232串口總線實現(xiàn)與伺服驅(qū)動系統(tǒng)通信的上位機,通過Modbus上層協(xié)議實現(xiàn)對伺服參數(shù)設(shè)置與狀態(tài)顯示等功能。實現(xiàn)了上位機與伺服驅(qū)動系統(tǒng)間高效、可靠的通信。
Modbus協(xié)議是一種單主/多從的通信協(xié)議,通信總是由主設(shè)備發(fā)起,從設(shè)備間不能相互通信。Modbus可以作為應(yīng)用層協(xié)議用于TCP/IP網(wǎng)絡(luò)上,也可以用于串行鏈路連接。后者存在2個變種,分別是ASCII模式與RTU模式。ASCII模式是每個8 bit的字節(jié)都將作為2個ASCII字符發(fā)送,而RTU模式是直接用原本的十六進制數(shù)據(jù)進行傳輸[2]。相對來說,RTU模式的傳輸速率更高。且DSP是直接識別原本的十六進制數(shù)據(jù),所以采用RTU模式無疑更為合適。
為了適應(yīng)多種傳輸模式,Modbus在協(xié)議數(shù)據(jù)單元(PDU,Protocol Data Unit)上引入附加域,組成了應(yīng)用數(shù)據(jù)單元(ADU,Application Data Unit),以實現(xiàn)完整而準確的傳輸。PDU與基礎(chǔ)通信層無關(guān),包括功能碼與數(shù)據(jù),功能碼占一個字節(jié),數(shù)據(jù)則根據(jù)具體的情況而定。附加域包括地址域和差錯校驗,與基礎(chǔ)通信層有關(guān)。在使用RS232串口通信、RTU模式下,地址域占1個字節(jié),地址范圍是1~247,差錯校驗為CRC校驗,占2個字節(jié)[3~5]。通用Modbus幀結(jié)構(gòu)如圖1所示。
圖1 通用Modbus幀結(jié)構(gòu)
在RTU通信中,Modbus報文放置在已知起始點和結(jié)束點的消息幀中,必須明確報文的起始點與結(jié)束點,由于RS232串口通信時單字節(jié)發(fā)送,數(shù)據(jù)域的字節(jié)數(shù)有很大的不確定性,所以還要能夠檢測報文的完整性,且能夠設(shè)置錯誤標識。
在實際使用時,設(shè)備不斷地偵測網(wǎng)絡(luò)總線,計算字符間的停頓間隔時間,判斷消息幀的起始點。從接受符合設(shè)備的地址的報文開始,到最后一個傳輸字符結(jié)束,間隔至少3.5個字符停頓時間標志著此消息幀的結(jié)束,而另一個消息可在停頓后開始。在一幀報文的傳輸過程中字符流必須是連續(xù)的,且字符間空閑間隔要小于1.5個字符時間,否則認為此報文不完整,將被丟棄。RTU消息幀的格式如圖2所示。
圖2 Modbus RTU幀式
交流伺服驅(qū)動單元實現(xiàn)了交流伺服電機的位置、速度、轉(zhuǎn)矩閉環(huán)伺服控制,可靠性高、性能優(yōu)良,是本文上位機監(jiān)控系統(tǒng)的監(jiān)控對象。且提供關(guān)于速度、位置、轉(zhuǎn)矩的基本參數(shù),同時設(shè)有二十多種狀態(tài)顯示用于觀察所選擇方式下的伺服驅(qū)動單元的狀態(tài)信息。交流伺服單元設(shè)有RS232接口,利用RS232串行總線將HSV_190E交流伺服驅(qū)動單元與計算機連接上,用Modbus協(xié)議完成雙向通訊,構(gòu)成一個完整的交流伺服驅(qū)動系統(tǒng)上位機監(jiān)控系統(tǒng),結(jié)構(gòu)圖如圖3所示。
本文交流伺服驅(qū)動單元接口方式為RS232,異步,全雙工;8位數(shù)據(jù)位,無奇偶校驗,2位停止位,波特率為57 600 bit/s。
上位機與交流伺服驅(qū)動單元進行通訊的過程中采用了3種數(shù)據(jù)幀格式,分別是命令幀、狀態(tài)幀、錯誤幀。命令幀為交流伺服驅(qū)動單元從上位機接受到的命令,狀態(tài)幀是伺服單元在收到命令幀并將其處理以后返回給上位機的狀態(tài)數(shù)據(jù)。當(dāng)伺服驅(qū)動單元不能夠正常的處理命令幀時,將返回給上位機帶有故障碼的狀態(tài)數(shù)據(jù)。具體的通信流程如圖4所示。
圖3 上位機監(jiān)控系統(tǒng)結(jié)構(gòu)
圖4 通信流程圖
上位機實現(xiàn)了伺服驅(qū)動系統(tǒng)的控制功能與顯示功能,不僅能直觀地顯示系統(tǒng)狀態(tài)及電機相關(guān)參數(shù),還可以省去用戶在面板上的繁瑣操作,直接在參數(shù)界面對系統(tǒng)進行設(shè)置。本文使用Visual Studio 2012軟件編程平臺的Visual C#.NT語言來進行上位機的開發(fā)與設(shè)計[6~7],同時結(jié)合了zedGraph控件繪制速度指令、速度反饋、位置偏差、電流檢測等信號的實時曲線。zedGraph控件的兼容性好,曲線設(shè)計多樣實用。使用前需要在所用到的工程中引用zedGraph的動態(tài)庫文件。
設(shè)計時采用了模塊化設(shè)計的思想,各個功能模塊彼此獨立,減少了上位機軟件出錯的概率。整個上位機由登陸模塊、通信模塊、參數(shù)設(shè)置模塊、示波器功能模塊、參數(shù)自調(diào)諧模塊、位置抑制模塊、速度抑制模塊等組成。系統(tǒng)的軟件結(jié)構(gòu)如圖5所示。
圖5 系統(tǒng)軟件結(jié)構(gòu)圖
其中參數(shù)設(shè)置模塊、參數(shù)自調(diào)諧模塊、位置、速度抑制模塊集中體現(xiàn)了上位機對伺服單元的控制功能,示波器模塊則具備了顯示設(shè)備信息狀態(tài)的功能。
上位機不同模塊間對交流伺服驅(qū)動單元的控制過程類似,以參數(shù)設(shè)置模塊為例:在進行參數(shù)設(shè)置時,運行上位機軟件進入登陸界面,輸入登錄密碼進入軟件主界面。首先選擇與伺服單元相連的串口,選擇合適的波特率,點擊連接按鈕,串口打開成功以后,軟件下方狀態(tài)顯示“串口通信”,其他功能可選。電機進入?yún)?shù)設(shè)置,進入設(shè)置頁面如圖6所示。雙擊參數(shù)行,進行參數(shù)設(shè)置,設(shè)置完成后,上位機啟動通信模塊,通信模塊對設(shè)置的值進行命令幀封裝、發(fā)送,待下位機解析完成后對狀態(tài)幀接受、處理然后將返回的數(shù)據(jù)更新為選定參數(shù)的當(dāng)前值。
圖6 參數(shù)設(shè)置頁面
上位機示波器模塊有觸發(fā)采樣與實時采樣兩個采樣模式。觸發(fā)采樣的過程與控制功能中的操作流程類似。實時采樣則采用了Timer模式,首先進行采樣配置,包括信號、IO口選擇、與采樣周期的設(shè)置,然后通信模塊向伺服單元發(fā)送封裝好的采樣配置幀,完成配置設(shè)定。點擊開始采樣,上位機將以設(shè)定的采樣時間周期性地向伺服單元發(fā)送指令,并對返回的數(shù)據(jù)進行解析后,以逐點連線并刷新的方法將曲線繪制于zedGraph控件上,完成當(dāng)前選定信號的實時顯示。
本文所設(shè)計開發(fā)的上位機用于某交流伺服驅(qū)動單元對電機的調(diào)試,調(diào)試可在示波器功能中進行實時或者觸發(fā)采樣,繪制當(dāng)前電機的反饋速度、位置偏差值、電流檢測值等波形圖。在參數(shù)設(shè)置中修改位置比例增益、速度比例增益、轉(zhuǎn)矩低通濾波器參數(shù)和陷波器參數(shù)來提高伺服響應(yīng)性。如圖7(a)、(b)所示分別為指令速度200 r/min、位置比例增益為100 Hz、速度比例增益為50 Hz的觸發(fā)采樣與實時采樣圖,圖7(c)、(d)所示分別為位置比例增益為150 Hz、速度比例增益為100 Hz觸發(fā)采樣與實時采樣圖。對比發(fā)現(xiàn)伺服的響應(yīng)性增加,電機速度波動減小。同時也驗證了設(shè)計達到了對伺服控制和顯示的需求,而且在長時間的調(diào)試過程中其可靠性也得到了驗證。
圖7 指令/反饋速度實時波形
上位機調(diào)試軟件連接方便,提供方便、便捷操作的調(diào)試功能,且采集數(shù)據(jù)信息豐富,滿足伺服系統(tǒng)各項運動狀態(tài)的監(jiān)控。同時設(shè)計所采用的模塊化思想,便于該軟件的后期維護與功能添加。實際應(yīng)用中也證明該軟件運行穩(wěn)定、測試準確、人機界面友好,達到設(shè)計要求。