通信協議實例分析
前面我們對邏輯控制層的通信協議的相關概念簡單地引入了一下,根據上文所涉及的例子,我們這里在來詳細的講解一下。首先還是來回顧一下例子的基本情況。下面是一個實際應用例子——上位機與單回路控制器之間的通信協議(邏輯控制層)。
單回路控制器可用來實現對一個回路(含一個被控對象)的控制,一般由單片機和少量外加電路構成。圖12.30給出了用單回路控制器控制一個容器水位的示意圖。圖中容器的水位是被控對象。
單回路控制器通過A/D轉換器采樣差壓變送器反映的水位值,與事先設定的值進行比較,經過某種控制算法的運算輸出一個值,該值是數字量,經D/A轉換器變成電信號,再經過伺服放大器進行功率放大,作用于給水閥門。例如,當水位高于設定值時,一般情況下是將給水閥門的開度減小,以減少進水量,從而使水位降下來。這種采樣和控制是按一定周期重復進行的,從而可使實際水位與設定值之差在一規定范圍內。設定值可以是一個定值,也可隨時間變化。
一臺單回路控制器可控制一個回路。若一個被控系統中有多個回路,則可以選用相應數目的單回路控制器。為了對各個單回路控制器進行管理以及對整個系統進行優化,一般配一臺PC系列機,通常稱之為上位機(相應地可將單回路控制器稱為下位機)。
在本例中,上位機和各單回路控制器采用RS-485總線組成主、從式通信網絡。為了進行數據通信,需要制定通信協議。總的要求是:上位機可以下傳設定值和單回路控制器的參數(如采樣控制周期、算法選擇、算法參數等,共數十種),單回路控制器在收到上位機的報文后,上傳數據和參數。以下是通信協議的具體內容:
上位機發給單回路控制器的報文用兩種:詢問報文和設置報文。詢問報文周期性的發出,設置報文在需要時才發出。被尋址的單回路控制器在收到上位機的任一報文后,要回送一個報文。回文僅一種。上位機詢問報文讓指定的單回路控制器上傳數據和參數,其格式和含義如下:
每個字段上面的數字是該字段占用的字節數。起始符是兩個特定的字符,最后一個字節是累加和,它是前面的字節不計最高位進位累加的結果。目的站地址是要尋址的單回路控制器的編號。這里的命令字段取值為01H,表示是詢問報文。
上位機設置報文令指定的單回路控制器按報文中的命令和所帶數據重新進行設置,其格式和含義如下:
其中,命令字段是相應命令的編碼。例如,命令為02H時,表示被尋址的單回路控制器應按數據字段給出的值對設定值進行重新設置。數據字段為2個字節,是與命令相對應的數據,這里約定它采用整型數。若設定值或參數不是整型數,則組織報文時需進行轉換,單回路控制器收到后再還原。
當某臺單回路控制器收到上位機的任一種報文,且發現自己是被尋址對象時,回送一個報文。回文的格式和含義為:
回文的長度不是定值。這里同樣約定設定值、采樣值以及各個參數字段采用整型數。若原值不是整型數,則組織報文時需進行轉換,上位機收到后再還原。回文中的設定值是當前單回路控制器所采用的,如果此前上位機曾經發來過設定值,則就是該值(已按它進行設置)。
在該通信協議中還規定,如果上位機在發出報文后收不到回文或收到的是不確認回文(回文的確認碼為非0值)時,重發報文。最多重發兩遍,還不行,以出錯處理。