亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

多功能電能表用dl/t645通信協(xié)議進(jìn)行通信的方法

文檔序號:7759986閱讀:421來源:國知局
專利名稱:多功能電能表用dl/t645通信協(xié)議進(jìn)行通信的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法。
背景技術(shù)
《多功能電能表通信規(guī)約》—DL/T 645包括DL/T 645-1997和DL/T 645-2007,在 實際運用中,規(guī)約中的通用讀寫命令在程序設(shè)計中往往用if一else語句和case語句來進(jìn) 行命令的匹配判斷和處理,這種模式從程序可維護(hù)性角度來講有如下不足(1)幾十幾百 條的if一else或者case語句的嵌套,命令的查找和檢查顯得很繁雜;(2)每條命令中往 往涉及了變量在RAM中的地址,eeprom的地址,讀寫權(quán)限等級等,對于程序修改或者模塊移 植,由于變量分布在大量的if一else或者case語句中,對于程序的維護(hù)、升級、移植等等操 作無形之中增加了設(shè)計人員的工作量。而規(guī)約中的通用讀寫命令是規(guī)約處理的核心部分, 幾乎涉及了表計全部的參變量,為了增加程序的可讀性和可維護(hù)性,有必要將通用讀寫命 令的RAM地址、FLASH地址、EEPROM地址、讀寫屬性、涉參范圍及相關(guān)處理函數(shù)等屬性集中起 來對其進(jìn)行管理,若以表格形式對其進(jìn)行統(tǒng)一管理,則能大大增加程序的可讀性和可維護(hù) 性。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于查表法的多功能電能表用DL/T645通信協(xié)議進(jìn) 行通信的方法。本發(fā)明提供的這種多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,所述方法 是將每一條命令的相關(guān)屬性綜合在一個命令屬性表中,程序根據(jù)收到的有效數(shù)據(jù)幀確定其 在所述命令屬性表中的位置,命令處理函數(shù)根據(jù)所述命令屬性表提供的屬性值進(jìn)行相應(yīng)的 處理,所述每一條命令的相關(guān)屬性包括命令標(biāo)識符相關(guān)信息,命令所涉及參量的隨機(jī)存儲 器RAM地址或電可擦除式存儲器EEPROM地址,邏輯地址(記錄類數(shù)據(jù))、塊內(nèi)地址(記錄類數(shù) 據(jù)),數(shù)據(jù)協(xié)議要求長度,數(shù)據(jù)程序內(nèi)部實際長度,讀寫屬性,密碼等級,讀寫操作函數(shù)指針。對命令標(biāo)識符連續(xù)的、命令所涉及參量地址線性排列的多個命令當(dāng)作一個命令集 來處理。所述命令的處理包括如下三個步驟
(1)命令標(biāo)識符的匹配,確定接收到的命令對應(yīng)于所述命令屬性表的位置,根據(jù)其在所 述命令屬性表中的位置獲取其相應(yīng)的屬性值;
(2)根據(jù)所述命令屬性表的讀寫屬性和密碼等級確定是否響應(yīng)命令,不響應(yīng)則返回拒 絕信息;
(3)根據(jù)命令幀的讀寫操作,進(jìn)入命令屬性表中相應(yīng)的命令處理函數(shù)。在命令處理各級函數(shù)設(shè)立一個公共數(shù)據(jù)棧以簡化函數(shù)之間繁瑣的參數(shù)傳遞,所述 各級命令處理函數(shù)可從所述公共數(shù)據(jù)棧中獲得其所需的輸入數(shù)據(jù),同時其處理結(jié)果也體現(xiàn) 在數(shù)據(jù)棧中以供下級處理函數(shù)使用。對于同類命令可以調(diào)用同一個函數(shù),特殊命令調(diào)用單 獨的函數(shù)處理。
本發(fā)明由于以表格的形式對多功能電能表通信協(xié)議DL/T645中的通用讀寫命令 涉及表計變量的屬性進(jìn)行統(tǒng)一管理,即命令屬性表,該表直觀、明了,方便移植和修改,結(jié)合 命令處理公共數(shù)據(jù)棧來完成相關(guān)命令幀的處理,增加了程序的可移植性和可維護(hù)性。


圖1是通用讀寫命令的處理流程圖。圖2是目標(biāo)命令標(biāo)識符的匹配處理流程圖。
具體實施例方式本發(fā)明的基本思想是對DL/T645通信協(xié)議中的通用讀寫命令涉及表計變量的屬 性進(jìn)行分類管理,具體如下
typedef struct
{
unLong BaseCommandMark; unsigned char ChangeLacation; unsigned char ChangeLimit; unsigned int EepromAddress; unsigned char ^ptGlobalVarietyRam; unsigned char InDataLeng; unsigned char ExDataLeng;
unsigned long ValueLimit; unsigned char ReadWriteOpiton; unsigned char PasswardClass;
unsigned char (^WriteFun)(void ^inptUartInform); unsigned char (^ReadFun)(void ^inptUartInform); }stCommandProptey;
其主要由命令碼識別、數(shù)據(jù)邏輯地址和相對地址、數(shù)據(jù)屬性、命令操作權(quán)限及命令讀寫 操作函數(shù)5個部分組成,將每條/每系列命令的基本屬性綜合在一起,就形成了命令屬性 表。其中命令碼識別由BaseCommandMarKChangeLacation及ChangeLimit三個參數(shù)確定, 其中BaseCommandMark為基本命令相應(yīng)位置上的基值,ChangeLacation為目標(biāo)命令變化位 上的值,ChangeLimit為變化位上限值,該三個參數(shù)為必有屬性,目標(biāo)命令根據(jù)這三個參數(shù) 來進(jìn)行匹配判斷其在命令屬性表中的位置。數(shù)據(jù)邏輯地址和相對地址包括E印romAddress 和ptGlobalVarietyRam,這兩個參數(shù)屬于可選屬性,對于一些固定參數(shù),比如脈沖寬度,屬 于無效屬性;在非記錄數(shù)據(jù)中,這兩個參數(shù)結(jié)合命令變化位上的值與基本命令相應(yīng)位置上 的基值之差DO、數(shù)據(jù)在程序中的數(shù)據(jù)長度InDataLeng自動計算目標(biāo)命令所涉及參量RAM 及EEPROM中的地址;在記錄數(shù)據(jù)中,EepromAddress為記錄數(shù)據(jù)中某項數(shù)據(jù)在數(shù)據(jù)記錄塊 中的相對地址,ptGlobalVarietyRam為記錄信息塊地址,不同類型的命令所需的屬性值 是不同的,為了節(jié)省程序空間,不同的屬性值共用同一個屬性空間,也就是在不同的命令處 理函數(shù)中,同一類屬性空間表征不同的屬性。數(shù)據(jù)屬性包括ExDataLeng、InDataLeng及
4ValueLimit三個參數(shù),其中ExDataLeng是必有屬性,其為協(xié)議讀命令要求返回數(shù)據(jù)長度, InDataLeng為數(shù)據(jù)在程序中的數(shù)據(jù)長度。當(dāng)命令所涉參數(shù)為可變參數(shù)時,ValueLimit為 設(shè)置上限,當(dāng)命令所涉參數(shù)為固定值時,其存放固定參數(shù)(比如脈沖寬度等等),當(dāng)命令所涉 參數(shù)為記錄類數(shù)據(jù)時,其存放基本命令對應(yīng)的錄邏輯號,其中InDataLeng和ValueLimit 都為可選屬性。命令操作權(quán)限包括ReadWriteOpiton和PasswardClass兩個參數(shù),其中 ReadffriteOpiton為命令的讀寫權(quán)限,是必選屬性,PasswardClass為讀寫操作時的操作權(quán) 限等級(讀權(quán)限為擴(kuò)展保留項,目前沒有用到),是可選屬性。命令讀寫操作函數(shù)包括讀操作 函數(shù)和寫操作函數(shù),該兩個參數(shù)為可選項,讀寫函數(shù)有通用函數(shù)和專用函數(shù),根據(jù)命令特征 決定使用什么函數(shù)。 命令處理函數(shù)公共數(shù)據(jù)棧是基于以下三個方面而設(shè)立的(1)命令屬性表中提供 的數(shù)據(jù)不能直接使用(集合命令提供的只是首地址,需要轉(zhuǎn)換);(2)各級命令處理函數(shù)需要 命令幀的基本信息,比如讀命令返回數(shù)據(jù)的地址、寫命令設(shè)置數(shù)據(jù)地址和密碼數(shù)據(jù)地址、命 令幀所屬的信道等;(3)在各級命令處理函數(shù)設(shè)立一個公共數(shù)據(jù)棧,簡化函數(shù)之間繁瑣的 參數(shù)傳遞,各級命令處理函數(shù)的所需要的輸入數(shù)據(jù)均可以從該數(shù)據(jù)棧獲得,同時處理結(jié)果 體現(xiàn)在數(shù)據(jù)棧中,供下級處理函數(shù)使用。其中命令處理函數(shù)公共數(shù)據(jù)棧的格式如下
typedef struct
{
const stCommandProptey 氺ptTab;unsignedchar^ptUartBufferO;unsignedcharRW—Command;unsignedcharSerialNO;unsignedchar^ptPassward;unsignedchar^ptSetData;unsignedchar^ptReadRenAdd;unsignedcharRecordNum;unsignedcharMarkBytes;unsignedintEepromAddress;unsignedchar^ptGlobalVarietyRam
}stUartlnform;
其中ptTab指向不同的命令屬性表,將DL/T645-1997和DL/T645-2007分別建立命 令屬性表,一是為了程序的直觀處理,二是為了加速查表速度,PtUartBufferO為當(dāng)前處 理的信道緩沖區(qū)首地址,RW_Command為讀寫命令標(biāo)志,決定了調(diào)用讀函數(shù)還是寫函數(shù), SerialNO為目標(biāo)命令在命令屬性表所處的位置,用于取命令屬性表相關(guān)參數(shù),ptPassward 為設(shè)置命令的密碼數(shù)據(jù)地址,用于權(quán)限合法性判斷,PtSetData為命令的設(shè)置數(shù)據(jù)地 址,PtReadRenAdd為讀命令返回數(shù)據(jù)在信道命令幀的地址(兩種規(guī)約讀命令返回地址不 同),RecordNum為記錄類命令對應(yīng)的邏輯號(即最近第幾條記錄),MarkBytes為命令數(shù) 據(jù)標(biāo)志符的長度(DL/T645-1997兩個字節(jié),DL/T645-2007四個字節(jié)),EepromAddress, PtGlobalVarietyRam同上述命令屬性表中介紹,不同在于是此處地址可供讀寫處理函數(shù)直 接使用的。從接收到合法的讀寫命令幀之后,各命令處理函數(shù)需要將上述信息公共數(shù)據(jù)棧
5各信息根據(jù)命令屬性表和各信道命令幀標(biāo)注,供后續(xù)讀寫函數(shù)使用。讀寫函數(shù)具有靈活性、 可擴(kuò)展性和通用性,對于同類的命令可以調(diào)用同一個函數(shù),特殊命令的用單獨的函數(shù)處理, 不會改變命令屬性表的構(gòu)成。通用處理函數(shù)主要包括以下幾種數(shù)據(jù)(1)直接處理型通用 讀寫函數(shù),該類函數(shù)一般用于涉及狀態(tài)量等無需運算和判斷的命令;(2)Char/int/l0ng型 數(shù)據(jù)通用讀寫函數(shù),DL/T645規(guī)約中大部分的數(shù)據(jù)均以BCD碼的形式存在,而表計程序數(shù) 據(jù)運算往往以char/int/long型數(shù)據(jù),該類通用處理函數(shù)解決規(guī)約和程序數(shù)據(jù)不統(tǒng)一的問 題;(3)記錄類通用讀函數(shù)通用處理函數(shù)從公共數(shù)據(jù)棧中獲取目標(biāo)命令對應(yīng)的記錄邏輯 號和記錄信息,計算出相應(yīng)記錄塊EEPROM存儲地址,再結(jié)合命令屬性表中的塊內(nèi)偏移地址 和協(xié)議數(shù)據(jù)長度讀出目標(biāo)命令要求的數(shù)據(jù)。而特殊處理函數(shù)主要是針對特定的命令,他可 以調(diào)用通用處理函數(shù),并輔以特定數(shù)據(jù)處理算法。特殊處理函數(shù)在命令刪減和修改時是最 多的地方,也是最靈活的地方。圖1是通用讀寫命令的處理流程圖,該流程基于公共數(shù)據(jù)棧,首先判斷當(dāng)前命令 標(biāo)識符是否匹配,若命令標(biāo)識符匹配,則確定了 PtUartBufferO、ptPassward、ptSetData 、ptTab、ptReadRenAdd、Rff_Command 、RecordNum 、MarkBytes 、EepromAddress、 PtGlobalVarietyRam及SerialNO,若命令標(biāo)識符不匹配,則流程直接返回,之后判斷當(dāng) 前命令的讀寫權(quán)限是否滿足,其讀寫權(quán)限的判斷是根據(jù)PtUartBufferO、ptPassward和 SerialNO (用于查找命令屬性表對應(yīng)的讀寫屬性和權(quán)限級別)而判斷的,若當(dāng)前命令的讀寫 權(quán)限不滿足,則流程直接返回,若當(dāng)前命令的讀寫權(quán)限滿足則進(jìn)行讀寫數(shù)據(jù)的處理,其中處 理函數(shù)根據(jù)RW_Command決定調(diào)用讀函數(shù)還是調(diào)用寫函數(shù),所調(diào)用的函數(shù)根據(jù)公共數(shù)據(jù)棧 的信息來對數(shù)據(jù)進(jìn)行處理。圖2是目標(biāo)命令標(biāo)識符的匹配處理流程圖,首先是索引指針等相關(guān)變量的初始 化,對命令屬性表中的基本命令和接收到的通信命令分別進(jìn)行保存,之后判斷索引指針?biāo)?指對象是否為命令屬性表的結(jié)束符,若索引指針?biāo)笇ο蟛皇敲顚傩员淼慕Y(jié)束符,則接 著判斷規(guī)約的類型,若是DL/T 645-1997規(guī)約,則對DL/T 645-1997規(guī)約進(jìn)行形式分散化處 理,將其統(tǒng)一為DL/T 645-2007規(guī)約形式,之后讀取命令屬性表中的目標(biāo)命令變化位上的 值、基本命令相應(yīng)位置上的基值、變化位上限值,若是DL/T 645-2007規(guī)約則直接讀取命令 屬性表中的目標(biāo)命令變化位上的值、基本命令相應(yīng)位置上的基值、變化位上限值,再之后判 斷目標(biāo)命令變化位上的值是否在基本命令相應(yīng)位置上的基值和變化位上限值之間,若目標(biāo) 命令變化位上的值是在基本命令相應(yīng)位置上的基值和變化位上限值之間,則接著判斷目標(biāo) 命令的其他位與基本命令的其他位(除了變化位)是否相等,若相等,則保存目標(biāo)命令與基 本命令在變化位上的差值并更新公共數(shù)據(jù)棧相關(guān)數(shù)據(jù),若目標(biāo)命令變化位上的值不是在基 本命令相應(yīng)位置上的基值和變化位上限值之間或目標(biāo)命令的其他位與基本命令其他位(除 變化位)不相等,則索引指針自加,重新判斷索引指針?biāo)笇ο笫欠駷槊顚傩员淼慕Y(jié)束 符,直到目標(biāo)命令變化位上的值在基本命令相應(yīng)位置上的基值和變化位上限值之間及目標(biāo) 命令的其他位與基本命令其他位(除了變化位)相等為止,最后返回匹配結(jié)果。
權(quán)利要求
一種多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,其特征在于所述方法是將每一條命令的相關(guān)屬性綜合在一個命令屬性表中,程序根據(jù)收到的有效數(shù)據(jù)幀確定其在所述命令屬性表中的位置,命令處理函數(shù)根據(jù)所述命令屬性表提供的屬性值進(jìn)行相應(yīng)的處理,所述每一條命令的相關(guān)屬性包括命令標(biāo)識符相關(guān)信息、命令所涉及參量的隨機(jī)存儲器RAM地址或電可擦除式存儲器EEPROM地址、用于記錄類數(shù)據(jù)的邏輯地址、用于記錄類數(shù)據(jù)的塊內(nèi)地址、數(shù)據(jù)協(xié)議要求長度、數(shù)據(jù)程序內(nèi)部實際長度、讀寫屬性、密碼等級及讀寫操作函數(shù)指針。
2.據(jù)權(quán)利要求1所述的多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,其特征 在于對命令標(biāo)識符連續(xù)的、命令所涉及參量地址線性排列的多個命令當(dāng)作一個命令集來處理。
3.據(jù)權(quán)利要求1所述的多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,其特征在 于所述命令的處理包括如下三個步驟(1)命令標(biāo)識符的匹配,確定接收到的命令對應(yīng)于所述命令屬性表的位置,根據(jù)其在所 述命令屬性表中的位置獲取其相應(yīng)的屬性值;(2)根據(jù)所述命令屬性表的讀寫屬性和密碼等級確定是否響應(yīng)命令,不響應(yīng)則返回拒 絕信息;(3)根據(jù)命令幀的讀寫操作,進(jìn)入命令屬性表中相應(yīng)的命令處理函數(shù)。
4.根據(jù)權(quán)利要求1所述的多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,其特在 于在命令處理各級函數(shù)設(shè)立一個公共數(shù)據(jù)棧以簡化函數(shù)之間繁瑣的參數(shù)傳遞,所述各級命 令處理函數(shù)可從所述公共數(shù)據(jù)棧中獲得其所需的輸入數(shù)據(jù),同時其處理結(jié)果也體現(xiàn)在數(shù)據(jù) 棧中以供下級處理函數(shù)使用。
5.根據(jù)權(quán)利要求1所述的多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,其特征 在于對于同類命令可以調(diào)用同一個函數(shù),特殊命令調(diào)用單獨的函數(shù)處理。
全文摘要
本發(fā)明公開了一種多功能電能表用DL/T645通信協(xié)議進(jìn)行通信的方法,所述方法是將每一條命令的相關(guān)屬性綜合在一個命令屬性表中,程序根據(jù)收到的有效數(shù)據(jù)幀確定其在所述命令屬性表中的位置,命令處理函數(shù)根據(jù)所述命令屬性表提供的屬性值進(jìn)行相應(yīng)的處理。本發(fā)明由于以表格的形式對多功能電能表通信協(xié)議DL/T645中的通用讀寫命令涉及表計變量的屬性進(jìn)行統(tǒng)一管理,即命令屬性表,該表格直觀、明了,方便移植和修改,結(jié)合命令處理公共數(shù)據(jù)棧來完成相關(guān)命令幀的處理,大大增加了程序的可移植性和可維護(hù)性。
文檔編號H04L29/06GK101917451SQ20101028447
公開日2010年12月15日 申請日期2010年9月17日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者冉際華, 周勇, 樊堅, 陳維紅 申請人:威勝集團(tuán)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1