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