<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

多功能電能表用dl/t645通信協議進行通信的方法

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

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


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