利用MODBUS提高多CPU協(xié)同開發(fā)效率
在電力系統(tǒng)微機(jī)綜合保護(hù)和自控裝置以及其它工業(yè)自動(dòng)化控制領(lǐng)域,微控制器的應(yīng)用越來越廣泛,其裝置的復(fù)雜性也越來越高。為了解決其開發(fā)對(duì)象實(shí)時(shí)多任務(wù)性的要求,單CPU、單入開發(fā)的模式下在被多個(gè)、多類型CPU和多人協(xié)同開發(fā)的模式所代替。在這新的開發(fā)模式中,面臨一個(gè)新問題——在實(shí)施信息交互的過程中如何將實(shí)現(xiàn)CPU之間信息交互的軟硬件標(biāo)準(zhǔn)化,這是關(guān)系到該模式能否成功實(shí)施的關(guān)鍵。在眾多的通信方式中,基于UART的RS-485串行通信模式以其連線簡(jiǎn)捷、可靠性高和可帶動(dòng)多CPU、多設(shè)備級(jí)連的能力而被廣泛采用。在軟件通信協(xié)議的選擇上,MODBUS協(xié)議由于其通用、成熟的第三方標(biāo)準(zhǔn)測(cè)試軟件,為用戶使用提供了諸多優(yōu)勢(shì)。因此,在開發(fā)新型電動(dòng)機(jī)綜合保護(hù)裝置TH21-4M的過程中,采用RS-485串行通信方式和MODBUS通信協(xié)議,實(shí)現(xiàn)了多CPU之間的數(shù)據(jù)和控制命令的信息交互。為了增強(qiáng)串行通信的高效、協(xié)調(diào)性,筆者在通信機(jī)制的軟硬件結(jié)構(gòu)上采取了很多措施,并取得了很好的效果。在調(diào)試系統(tǒng)通信階段,使用了各CPU模塊先與MODBUS標(biāo)準(zhǔn)測(cè)試軟件通信,之后再互相聯(lián)調(diào)的方法,大大提高了協(xié)同開發(fā)的效率。實(shí)踐證明,該設(shè)計(jì)思想簡(jiǎn)化了系統(tǒng)的結(jié)構(gòu),大大提高了裝置的運(yùn)行效率和可靠性。本文將結(jié)合TH21-4M的設(shè)計(jì)思路,從硬件設(shè)計(jì)和軟件規(guī)劃兩方面,介紹如何利用MODBUS通信協(xié)議,實(shí)現(xiàn)多CPU結(jié)構(gòu)的協(xié)同開發(fā)。
1 TH21-4M電動(dòng)機(jī)綜合保護(hù)裝置的特點(diǎn)
TH21-4M電動(dòng)機(jī)綜合保護(hù)裝置綜合保護(hù)功能以外,兼有測(cè)量、遠(yuǎn)動(dòng)和通信的功能;大屏幕的漢字液晶顯示,可以實(shí)現(xiàn)友好的人機(jī)界面;利用CAN總線,與監(jiān)控主機(jī)進(jìn)行通信,從而構(gòu)成分級(jí)分散式的變電站綜合自動(dòng)化系統(tǒng)的子系統(tǒng)。
在設(shè)計(jì)上,由于裝置需要實(shí)現(xiàn)多任務(wù),為了優(yōu)化系統(tǒng)功能,采用了多CPU的系統(tǒng)結(jié)構(gòu)。其中一個(gè)CPU負(fù)責(zé)定時(shí)采樣脈沖發(fā)送;主CPU模塊負(fù)責(zé)數(shù)據(jù)處理、電量計(jì)算、故障判斷和開關(guān)操作;而板模塊上CPU負(fù)責(zé)人機(jī)交互,并實(shí)現(xiàn)與主保護(hù)模塊和監(jiān)控主機(jī)的通信任務(wù)。各個(gè)CPU模塊有明確的任務(wù)分工,研制時(shí)也容易實(shí)現(xiàn)多人協(xié)同開發(fā)。在整個(gè)構(gòu)成中,串行通信溝通了主CPU和面板CPU,使人機(jī)交互成為可能,因而點(diǎn)有重要的地位。建立合理的通信機(jī)制則是串行通信部分的核心的所在,它決定著通信的協(xié)調(diào)性和系統(tǒng)開發(fā)后期調(diào)試的效率。
2 通信機(jī)制介紹
2.1 通信機(jī)制硬件設(shè)計(jì)原理
本系統(tǒng)通信機(jī)制的提出以高效、可靠為目的。RS-485為半雙工結(jié)構(gòu),現(xiàn)場(chǎng)中比全雙工往往更接近于實(shí)用,在此采用只有2條信號(hào)線的最簡(jiǎn)型連接。系統(tǒng)接口電路圖由圖1所示。主保護(hù)模塊上的80C196單片機(jī)輸出的TTL邏輯電平通過光電隔離后,由MAX485芯片轉(zhuǎn)換為RS-495電平,再由面板模塊上的MAX485芯片轉(zhuǎn)換為TTL邏輯電平,由80C31單片機(jī)讀取;以之亦然。在80C196單片機(jī)一側(cè),使用并行輸入輸出口2(IO_PORT2)的一位P2.7對(duì)MAX輸入使能端RE、輸出使能端DE進(jìn)行控制。由圖1可知,當(dāng)P2.7輸出高電平時(shí),RE使能,單片機(jī)一側(cè)接收數(shù)據(jù);當(dāng)P2.7輸出低電平時(shí),DE使能,單片機(jī)一側(cè)發(fā)送數(shù)據(jù)。這樣,避免了盲目發(fā)送造成的數(shù)據(jù)疊加丟失現(xiàn)象,通信質(zhì)量高,通信速度也能得到保證。
2.2 通信協(xié)議介紹
為了保證保護(hù)裝置中兩個(gè)模塊之間能夠正確地傳遞數(shù)據(jù),必須有一套關(guān)于信息傳輸?shù)哪J?、?shù)據(jù)格式和內(nèi)容等的規(guī)定,即規(guī)約[1]或通信協(xié)議。雖然保護(hù)裝置內(nèi)部的通信相對(duì)簡(jiǎn)單,兩具模塊之間傳遞的數(shù)據(jù)也不是很多,但是自定義內(nèi)部通信協(xié)議的弊端是很明顯的。首先,自定義通信協(xié)議很難在時(shí)序、任務(wù)的協(xié)調(diào)上配合得很好,數(shù)據(jù)傳送的可靠性也難以保證;首次,由于沒有現(xiàn)成的較成熟的調(diào)試軟件,主CPU模塊基本是黑匣子,系統(tǒng)聯(lián)調(diào)時(shí)的困難較多且難以克服。因此,采用了當(dāng)前流行的MODBUS通信協(xié)議,并結(jié)合本裝置的特點(diǎn)加以簡(jiǎn)化,從而實(shí)現(xiàn)了模塊間的通信,事實(shí)證明效果很好。
MODBUS的通信方式為主從方式[2]。主方首先向從方發(fā)送通信請(qǐng)求指令,從方根據(jù)請(qǐng)求指令中的功能碼向主方發(fā)回?cái)?shù)據(jù)。每個(gè)從方都有自己獨(dú)立的地址。主方所發(fā)的請(qǐng)求幀和從方所發(fā)的應(yīng)答幀都是以從方地址開頭的。從方只讀發(fā)給自己的指令,對(duì)以其他從方地址開頭的報(bào)文不作應(yīng)答。這種一問一答的通信模式,大大提高了通信的正確率。但對(duì)于微機(jī)保護(hù)來說,該主從方式也存在著弊端,即當(dāng)保護(hù)主模塊進(jìn)行保護(hù)動(dòng)作后,無法立刻向上位機(jī)傳送故障信息,只能由上位機(jī)不斷向保護(hù)主模塊詢問保護(hù)是否動(dòng)作,若有,則再進(jìn)一步要求具體故障信息。
MODBUS有RTU(Remote Terminal Unit)和ASCII兩種傳送方式。為了保證較高的通信速度,采用了RTU方式,數(shù)據(jù)字節(jié)無奇偶校驗(yàn)位,加上起始、終止位后字節(jié)長(zhǎng)度為10bit,數(shù)據(jù)間隔在24bit以內(nèi),采用循環(huán)冗余檢驗(yàn)方式對(duì)報(bào)文進(jìn)行校驗(yàn)。
MODBUS典型的報(bào)文格式如下:
一個(gè)通信報(bào)文的具體內(nèi)容取決于該指令字符串的功能碼,MODBUS中定義的標(biāo)準(zhǔn)功能碼如表1所示。
評(píng)論