本設(shè)計限制可使用的地址為1。247,其它地址保留。智能開關(guān)柜操控裝置(從機(jī))可以利用按鍵修改儀表地址,也可以通過主機(jī)修改特定從機(jī)的儀表地址。
1.3.2功能碼
功能碼表示主機(jī)本次通訊要求從機(jī)執(zhí)行的動作,功能碼占1個字節(jié),表2列出了儀表支持的Modbus協(xié)議規(guī)定的標(biāo)準(zhǔn)功能碼及其定義和具體操作。
一般Modbus協(xié)議規(guī)定讀取內(nèi)部數(shù)字量保持寄存器和外部輸入數(shù)字量寄存器采用不同的功能碼,分別為01H和02H,讀取內(nèi)部模擬量保持寄存器和外部模擬量寄存器亦采用不同的功能碼,分別為03H和04H14j。對于相關(guān)系統(tǒng)和設(shè)備的調(diào)研表明,傳統(tǒng)協(xié)議區(qū)分內(nèi)部量和外部量的做法完傘不適合于智能配電系統(tǒng)。因此本儀表采用兼容設(shè)計方案,不區(qū)分內(nèi)部模擬量和外部模擬量,功能碼03H和04H通用。同時,為了提高數(shù)據(jù)傳輸效率,本協(xié)議把每16位二進(jìn)制開關(guān)輸入量組織成為一個字寄存器,并使之與模擬量或系統(tǒng)參數(shù)的讀取采用相同的功能碼。
即功能碼03H或04H為讀寄存器,此功能允許主機(jī)獲得儀表采集的模擬量數(shù)據(jù)、開關(guān)量數(shù)據(jù)以及系統(tǒng)參數(shù)。讀寄存器個數(shù)不能超出允許地址范圍。Modbus通訊規(guī)約允許主機(jī)一次請求的最大寄存器個數(shù)為60個。
功能碼10H為寫寄存器,主機(jī)利用此功能將數(shù)據(jù)(或系統(tǒng)參數(shù))保存到儀表的寄存器。要求寫入的寄存器必須可寫,個數(shù)不能超出允許地址范圍。Modbus通訊規(guī)約允許一次最多保存60+寄存器。同樣,開關(guān)量輸出、模擬量輸出和系統(tǒng)參數(shù)的保存均采用相同的功能碼,但每個開關(guān)量寄存器只控制一個開關(guān)設(shè)備以提高遙控可靠性。
1.3.3數(shù)據(jù)區(qū).
數(shù)據(jù)區(qū)隨功能碼不同而不同。功能碼03H/04H(讀寄存器)的主機(jī)命令數(shù)據(jù)區(qū)包含要讀取寄存器的起始地址(2個字節(jié))及讀取長度(2個字節(jié)),從機(jī)應(yīng)答數(shù)據(jù)區(qū)包含數(shù)據(jù)字節(jié)量(1個字
節(jié))以及數(shù)據(jù)列表。
功能碼10H(寫寄存器)的主機(jī)命令數(shù)據(jù)區(qū)包含要寫入寄存器的起始地址(2個字節(jié))、寫入長度(2個字節(jié))以及寫入數(shù)據(jù)列表,從機(jī)應(yīng)答數(shù)據(jù)區(qū)包含寫入寄存器的起始地址以及寫入長度。
1.3.4校驗碼
校驗碼用于主機(jī)或從機(jī)判斷接收到的數(shù)據(jù)是否出錯,使系統(tǒng)通訊更可靠。Modbus—RTU協(xié)議采用CRC一16(16位循環(huán)冗余校驗碼)校驗方法,包含16位二進(jìn)制。CRC校驗碼由發(fā)送端計算,放置于發(fā)送信息的尾部。接收端重新計算接收到的信息的校驗碼,并與接收到的校驗碼相比較,如果二者不相符,則表明通訊出錯。
CRC一16校驗碼的計算方法:
(1)預(yù)置16位寄存器全為1,即寄存器CRC=0FFFFH;
(2)把8位數(shù)據(jù)信息與CRC碼的低8位數(shù)據(jù)進(jìn)行異或,送回CRC寄存器;
(3)計算結(jié)果向右移一位,用0填補(bǔ)最高位;
(4)如果移出位為l,把CRC寄存器的內(nèi)容與預(yù)置數(shù)(OA001H)相異或,如果移出位為0,不進(jìn)行異或運算;
(5)重復(fù)第三步和第四步直到移位8次,處理完成一個字節(jié);
(6)重復(fù)第二步至第五步直到所有字節(jié)處理結(jié)束。
2 寄存器地址分配及出錯處理
2.1寄存器地址分配
功能碼采取簡化兼容設(shè)計方案以后,寄存器的地址分配非常重要。根據(jù)開關(guān)柜運行和操作實際,把寄存器地址分為以下四類,其中每個寄存器存儲16位二進(jìn)制數(shù)。
地址0000H~00FFH為系統(tǒng)參數(shù)區(qū),寄存器可讀可寫。內(nèi)容主要包括儀表參數(shù)設(shè)置密碼、加熱控制上限、加熱控制下限、濕度控制上限、濕度控制下限、排風(fēng)控制上限、排風(fēng)控制下限、儀表Modbus通訊地址和RS485通訊波特率選擇等。
如果主機(jī)把數(shù)據(jù)(1-247)寫入從機(jī)儀表通訊地址寄存器,從機(jī)正確執(zhí)行該指令以后將以新的從機(jī)地址進(jìn)行應(yīng)答;如果主機(jī)把數(shù)據(jù)(0~4)寫人從機(jī)波特率選擇寄存器(o代表1200波特、1代表2400波特、2代表4800波特、3代表9600波特、4代表1 9200波特),從機(jī)正確執(zhí)行該指令以后將以新的波特率進(jìn)行應(yīng)答。
地址0100H~01FFH為運行參數(shù)區(qū),寄存器只可讀取,不能寫入。內(nèi)容主要包括三相電壓有效值及平均值、i相電流有效值及平均值、三相有功功率及總和、三相無功功率及總和、三相視在功率及總和、三相功率因數(shù)及總功率因數(shù)(定義為總有功功率與總視在功率之比)、頻率、電能數(shù)據(jù)等電氣參數(shù),l#和2#溫濕度傳感器的溫度和濕度測量值等非電氣參數(shù),以及開關(guān)量狀態(tài)指示、高壓帶電指示、面板按鍵指示和加熱狀態(tài)指示等開關(guān)量參數(shù)。
地址0200H~02FFH為控制信息區(qū),寄存器只可寫入。內(nèi)容包括斷路器遠(yuǎn)方操控、遠(yuǎn)方強(qiáng)制排風(fēng)降溫、遠(yuǎn)方強(qiáng)制加熱/風(fēng)除濕等控制功能。
地址0500H一05FFH為廠家保留區(qū),用于標(biāo)識儀表類別、型號以及儀表測試。
2.2出錯處理
當(dāng)儀表檢測到了校驗碼出錯以外的錯誤時,將向主機(jī)回送信息,功能碼的最高位置為1.即從機(jī)返送給主機(jī)的功能碼是在主機(jī)發(fā)送的功能碼的基礎(chǔ)上加128。從機(jī)返回的錯誤信息幀格式如表3所示。
其中錯誤碼定義如下:
01H一非法的功能碼,表示接收到的功能碼儀表不支持;
02n--t乍法的寄存器地址,表示接收到的寄存器地址超出儀表的范圍;
03H一非法的數(shù)據(jù)值,表示接收到的數(shù)據(jù)值超出儀表允許的數(shù)值范圍。
3 通訊協(xié)議的上位機(jī)程序設(shè)計
Vc++6.0程序設(shè)計語言有專門基于串口程序設(shè)計的MSeomm控件。使用MScomm的查詢法實現(xiàn)串口通信,具體設(shè)計步驟如下:
(1)初始化串口:用Settings設(shè)置串口參數(shù),包括串口選擇,波特率、數(shù)據(jù)位、奇偶校驗位和停止位;
(2)讀取運行參數(shù):用SetCommPort打開串口,產(chǎn)生OnComm事件,定時器,Se,tTimer每隔1秒產(chǎn)生OnTimer事件,發(fā)出一系列讀取命令讀取全部運行參數(shù)。發(fā)送每條命令時上位機(jī)計算CRC校驗碼一并發(fā)送,從機(jī)響應(yīng)命令后發(fā)出應(yīng)答數(shù)據(jù)。MScomm控件根據(jù)GetCommEvent獲得CommEvent判斷屬性。如果CommEvent=2,則接收下位機(jī)發(fā)送的應(yīng)答數(shù)據(jù)和校驗碼并重新計算接收數(shù)據(jù)的校驗碼,若校驗碼正確則存儲并顯示相應(yīng)的數(shù)據(jù);
(3)修改系統(tǒng)參數(shù)/遠(yuǎn)方操控:根據(jù)應(yīng)用程序界面的菜單命令或按鈕命令向下位機(jī)發(fā)出數(shù)據(jù)讀取或?qū)懭胫噶,讀取或修改系統(tǒng)參數(shù),或者向下位機(jī)發(fā)送遠(yuǎn)方操控指令。同樣,MSeomm控件根據(jù)GetCommEvent獲得CommEvent半1]斷屬性,如果CommEvent'-I,則向下位機(jī)發(fā)送系統(tǒng)參數(shù)修改命令或開關(guān)柜遠(yuǎn)方操控指令。
4 結(jié)束語
智能開關(guān)柜是智能配電網(wǎng)的基本操作單元,采用現(xiàn)場總線可以組成靈活的配電網(wǎng)信息采集與監(jiān)控系統(tǒng)。
基于Modbus—RTU通信規(guī)約設(shè)計的智能開關(guān)柜操控裝置Modbus—RTU通訊協(xié)議簡化了傳統(tǒng)協(xié)議的功能碼,既符合開關(guān)柜采集信息的種類和特點,又提高了上位機(jī)監(jiān)控軟件的兼容性。
據(jù)此協(xié)議設(shè)計的上位機(jī)軟件能夠在主控計算機(jī)和智能開關(guān)柜操控裝置之間有效地進(jìn)行數(shù)據(jù)傳輸和操控命令下發(fā)。采用CRCl6位冗余校驗可以保證數(shù)據(jù)傳輸?shù)目煽啃院筒倏孛钕逻_(dá)的準(zhǔn)確性。