104協議是101協議的網路版,101協議每次只能傳送一個鏈路幀,而104協議可以連續傳送多個鏈路幀,其傳輸效率明顯高於101協議,而且具有TCP/IP的衝突檢測和錯誤重傳機制(這裡重傳是指斷開重連重傳),具有比101協議更高的可靠性和穩定性,另外對通訊延時的限制更寬鬆。
IEC104協議適用於廠站與排程主站間的乙太網通訊(全雙工高速),位於OSI體系中的應用層,其基本定義為埠號2404,排程站為客戶端,廠站端為伺服器,平衡式傳輸,協議型別是滑動視窗協議。
說明:
1、平衡傳輸意為雙方都可以發起資訊傳輸。104協議下,一旦鏈路建立成功,變化資訊除了響應召喚應答還可以主動傳送而無需等待查詢。
2、對於基於TCP的應用程式來說存在兩種工作模式,即伺服器模式和客戶機模式。它們之間的區別是:在建立TCP連線時,伺服器從不發起連線請求,他一直處於偵聽狀態,當偵聽到來自客戶機的連線請求時,則接受此請求,由此建立一個TCP連線,伺服器和客戶機就可以透過這個虛擬的通訊鏈路進行資料收發。
3、協議型別有三種,問答式協議模式為一問一答,超時重傳,其特點是安全穩定,效率低下。簡單視窗協議模式為N問一答,超時重傳N個報文,其特點是效率相對提高,但浪費了A的傳送。滑動視窗協議模式為A傳送報文的同時,B傳送確認幀進行確認;A記錄自己已經被確認的報文,向前滑動最大可傳送視窗,B記錄有多少報文尚未確認,達到最大視窗或超時則發確認幀。A未確認視窗通常為B未確認視窗的1.5倍。其特點是效率高。
⑴、小端模式
104規約一般小端模式,即是指在記憶體的低地址中儲存資料的低位元組。大小端模式,並不由規約本身決定,而取決於CPU及作業系統。常見x86處理器(無論何種作業系統)都是小端模式,而PPC處理器則都是大端模式。
而TCP/IP協議中所定義的網路位元組順序採用大端模式排序,而一般的讀寫順序為——資料按地址由低到高的寫入,由高到低寫出。這樣就造就了我們所看到的報文是低位位元組在前,高位位元組在後。
舉個例子在x86系統下,透過TCP/IP協議,我們將0x1234從以0x0000開始的記憶體寫出。其過程如下:
在x86系統中0x0000儲存資料為0x34,0x0001儲存資料為0x12,即0x1234;經過寫出後,在網路上傳輸的位元組順序為0x0000儲存資料為0x12,0x0001儲存資料為0x34,即0x3412。
1、既然資料分高位元組、低位元組,說明只有資料格式是2位元組以上的,才有大小端模式,比如word、dword等;而byte型別資料是不分大小端模式的。
⑵、重要引數
Ⅰ、K值和W值
104規約規定了兩個引數K和W,其取值為1到32767,其中K表示傳送方在有K個I格式報文未得到對方的確認時,將停止資料傳送;W表示接收方最遲在接收W個I格式報文後應發出認可。104規約規定K和W的預設值分別為12個APDU和8個APDU,推薦關係式為w<k*2/3。
在實際中,K和W的具體取值可以根據TCP連線雙方的資料通訊量加以確定。對於從站RTU來說,每收到一個排程端的I格式報文都應立即響應,其W的取值實際上為1,由於RTU端可以迴圈向主站傳送遙信、遙測等資訊,因此K的取值與其迴圈傳送的定時週期有關,通常12到20個APDU就足夠了;對於主站端,由於不停接收RTU資料,因此應及時地給以確認,通常W取小於8個APDU的值。
當未確認I格式APDU達到K個時,傳送方停止傳送。如果t1超時仍未收到確認,則重啟鏈路。
Ⅱ、超時定義
為了能對TCP連線進行檢查和維護,104規定了幾個超時時間:t0、t1、t2、t3。它們的取值範圍為1~255s,準確度為1s。
t0規定了主站和從站建立一次TCP連線的最大允許時間,即主站端一直髮出連線請求,在t0時間內得不到連線建立成功的狀態下,要嚮應用層提示,說明無法建立連線,一般可設定進行多次連線,當每次連線都超過t0無法建立成功時都應給出提示。預設值30s。
t1規定傳送一個I格式報文或U格式報文後,必須在t1的時間內得到接收方的認可,否則傳送方認為TCP連接出現問題並應重新建立連線。這個過程是雙向的,即對於廠站端和主站端當這個過程任一方發生時,兩方的連線都需關閉,重新建立連線。預設值15s。
t2規定接收方在接收到I格式報文後,若經過t2時間未再發送新的I格式報文,則必須向傳送方傳送S格式幀對已經收到的I格式報文進行認可,顯然t2必須小於t1。預設值10s。
t3規定主站或從站每接收一個I,S,U報文將重新觸發計時器t3,若再t3內未能接收到任何報文,將向對方傳送測試鏈路報文(U幀)。傳送測試幀後,若在t1時間內沒有收到測試確認,則連線關閉,若達到t3時間,則再次傳送測試鏈路報文(U幀)。預設值20s。
⑶、冗餘機制
Ⅰ、通道冗餘
方式一——鏈路冗餘,應用共享
鏈路冗餘:所有鏈路互為主備,備用通道僅僅測試鏈路維持連線,通道的主備用是動態可切換的。
手動切換模式:在當前啟用的邏輯連線上人工傳送STOPDT-ACT停止應用傳輸轉為測試維護,然後再新的邏輯上人工傳送STARTDT-ACT予以啟用,作為主連線。
自動切換由主站判斷進行。連線初始化時,主站按某種邏輯關係選擇確定主、備通道,例如先建立鏈路的為主通道或者誤位元速率低的為主通道或者響應快的為主通道或按自然順序選擇主通道。執行中的自動切換可以由主站根據目前主、備連線的通訊情況而定。
應用共享:多個鏈路共用同一資料庫,並且資料快取的入棧出棧只針對當前主連線有效。
方式二——鏈路冗餘,應用冗餘
鏈路冗餘:與上文描述基本一致。
應用冗餘:即不同的鏈路不再共享資料庫,各鏈路完全獨立執行。這種方式的關鍵點是資料同步機制,用來實現資料的完整性和一致性。
一般是將當前主連線中已經被主站確認的資料點號和數量,告知其他所有備用連線,並對備用連線中的應用資料進行實時整理,從而實現各鏈路資料庫的內容動態一致。
綜上,方式二的模式實現了鏈路和應用真正的獨立冗餘,但記憶體消耗較多,程式較為複雜,同步機制的實施也會一定程度上影響資料的完整性。方式一,雖然各鏈路未能真正的獨立執行,但在資料完整性的方面有著高可靠性。且程式設計複雜性較低,問題較少。本司正線採用方式一。
Ⅱ、雙機冗餘
1、冷備用
即當主機工作時,備機處於待命狀態,當主機故障或資料鏈路斷開時,切換至備機。
此方式的問題為:當主機與某個子系統資料鏈路斷開無法連線時,將會使備機啟用,接管主機全部的資料鏈路進行重新連線,初次連線建立時會產生大量網路傳輸。同時,在主機進行冗餘切換而備機與子系統連線未完全建立時,資料互動將會暫停,無法取得子系統中最新的資料進行互動。
2、熱備用
兩臺通訊前置機fep同時處於工作狀態,與所有子系統進行連線。兩臺通訊前置機fep透過串列埠連線,把各條鏈路的重傳次數、重要報文延遲時間等資訊定義未每條鏈路的通訊服務質量權重,然後進行質量仲裁選擇資料存入實時庫,當其中一臺通訊前置機fep故障或資料鏈路斷開時,則只取未故障通訊前置機fep中的資料進行互動。
同時也可以根據通訊服務質量權重進行主備機的自動切換,這個過程從站(這時主備機透過串列埠傳輸通訊服務質量權重)與主站均可發起。
此方式的問題為:兩臺通訊前置機fep同時與所有子系統進行連線,資料量比較龐大時,將產生大量的網路頻寬浪費(兩臺通訊前置機fep均正常工作時,只取其中一臺的資料),雙通道進行資料互動時還有可能造成子系統壓力較大從而造成資料介面不穩定。並且部分子系統由於其介面特殊性,如串列埠通訊,同時僅能一方與其進行資料互動,兩臺通訊前置機fep無法同時與此類子系統介面進行資料互動。
綜上,可以看出冷備與熱備各有優缺點,但上述內容只是基礎知識,現在廠家針對這些問題在軟體方面都做了大量最佳化,實際的技術細節以廠家資料為準。
本司主變電所採用雙機冗餘(熱備用)+通道冗餘(方式二)。
104協議是101協議的網路版,101協議每次只能傳送一個鏈路幀,而104協議可以連續傳送多個鏈路幀,其傳輸效率明顯高於101協議,而且具有TCP/IP的衝突檢測和錯誤重傳機制(這裡重傳是指斷開重連重傳),具有比101協議更高的可靠性和穩定性,另外對通訊延時的限制更寬鬆。
IEC104協議適用於廠站與排程主站間的乙太網通訊(全雙工高速),位於OSI體系中的應用層,其基本定義為埠號2404,排程站為客戶端,廠站端為伺服器,平衡式傳輸,協議型別是滑動視窗協議。
說明:
1、平衡傳輸意為雙方都可以發起資訊傳輸。104協議下,一旦鏈路建立成功,變化資訊除了響應召喚應答還可以主動傳送而無需等待查詢。
2、對於基於TCP的應用程式來說存在兩種工作模式,即伺服器模式和客戶機模式。它們之間的區別是:在建立TCP連線時,伺服器從不發起連線請求,他一直處於偵聽狀態,當偵聽到來自客戶機的連線請求時,則接受此請求,由此建立一個TCP連線,伺服器和客戶機就可以透過這個虛擬的通訊鏈路進行資料收發。
3、協議型別有三種,問答式協議模式為一問一答,超時重傳,其特點是安全穩定,效率低下。簡單視窗協議模式為N問一答,超時重傳N個報文,其特點是效率相對提高,但浪費了A的傳送。滑動視窗協議模式為A傳送報文的同時,B傳送確認幀進行確認;A記錄自己已經被確認的報文,向前滑動最大可傳送視窗,B記錄有多少報文尚未確認,達到最大視窗或超時則發確認幀。A未確認視窗通常為B未確認視窗的1.5倍。其特點是效率高。
⑴、小端模式
104規約一般小端模式,即是指在記憶體的低地址中儲存資料的低位元組。大小端模式,並不由規約本身決定,而取決於CPU及作業系統。常見x86處理器(無論何種作業系統)都是小端模式,而PPC處理器則都是大端模式。
而TCP/IP協議中所定義的網路位元組順序採用大端模式排序,而一般的讀寫順序為——資料按地址由低到高的寫入,由高到低寫出。這樣就造就了我們所看到的報文是低位位元組在前,高位位元組在後。
舉個例子在x86系統下,透過TCP/IP協議,我們將0x1234從以0x0000開始的記憶體寫出。其過程如下:
在x86系統中0x0000儲存資料為0x34,0x0001儲存資料為0x12,即0x1234;經過寫出後,在網路上傳輸的位元組順序為0x0000儲存資料為0x12,0x0001儲存資料為0x34,即0x3412。
說明:
1、既然資料分高位元組、低位元組,說明只有資料格式是2位元組以上的,才有大小端模式,比如word、dword等;而byte型別資料是不分大小端模式的。
⑵、重要引數
Ⅰ、K值和W值
104規約規定了兩個引數K和W,其取值為1到32767,其中K表示傳送方在有K個I格式報文未得到對方的確認時,將停止資料傳送;W表示接收方最遲在接收W個I格式報文後應發出認可。104規約規定K和W的預設值分別為12個APDU和8個APDU,推薦關係式為w<k*2/3。
在實際中,K和W的具體取值可以根據TCP連線雙方的資料通訊量加以確定。對於從站RTU來說,每收到一個排程端的I格式報文都應立即響應,其W的取值實際上為1,由於RTU端可以迴圈向主站傳送遙信、遙測等資訊,因此K的取值與其迴圈傳送的定時週期有關,通常12到20個APDU就足夠了;對於主站端,由於不停接收RTU資料,因此應及時地給以確認,通常W取小於8個APDU的值。
當未確認I格式APDU達到K個時,傳送方停止傳送。如果t1超時仍未收到確認,則重啟鏈路。
Ⅱ、超時定義
為了能對TCP連線進行檢查和維護,104規定了幾個超時時間:t0、t1、t2、t3。它們的取值範圍為1~255s,準確度為1s。
t0規定了主站和從站建立一次TCP連線的最大允許時間,即主站端一直髮出連線請求,在t0時間內得不到連線建立成功的狀態下,要嚮應用層提示,說明無法建立連線,一般可設定進行多次連線,當每次連線都超過t0無法建立成功時都應給出提示。預設值30s。
t1規定傳送一個I格式報文或U格式報文後,必須在t1的時間內得到接收方的認可,否則傳送方認為TCP連接出現問題並應重新建立連線。這個過程是雙向的,即對於廠站端和主站端當這個過程任一方發生時,兩方的連線都需關閉,重新建立連線。預設值15s。
t2規定接收方在接收到I格式報文後,若經過t2時間未再發送新的I格式報文,則必須向傳送方傳送S格式幀對已經收到的I格式報文進行認可,顯然t2必須小於t1。預設值10s。
t3規定主站或從站每接收一個I,S,U報文將重新觸發計時器t3,若再t3內未能接收到任何報文,將向對方傳送測試鏈路報文(U幀)。傳送測試幀後,若在t1時間內沒有收到測試確認,則連線關閉,若達到t3時間,則再次傳送測試鏈路報文(U幀)。預設值20s。
⑶、冗餘機制
Ⅰ、通道冗餘
方式一——鏈路冗餘,應用共享
鏈路冗餘:所有鏈路互為主備,備用通道僅僅測試鏈路維持連線,通道的主備用是動態可切換的。
手動切換模式:在當前啟用的邏輯連線上人工傳送STOPDT-ACT停止應用傳輸轉為測試維護,然後再新的邏輯上人工傳送STARTDT-ACT予以啟用,作為主連線。
自動切換由主站判斷進行。連線初始化時,主站按某種邏輯關係選擇確定主、備通道,例如先建立鏈路的為主通道或者誤位元速率低的為主通道或者響應快的為主通道或按自然順序選擇主通道。執行中的自動切換可以由主站根據目前主、備連線的通訊情況而定。
應用共享:多個鏈路共用同一資料庫,並且資料快取的入棧出棧只針對當前主連線有效。
方式二——鏈路冗餘,應用冗餘
鏈路冗餘:與上文描述基本一致。
應用冗餘:即不同的鏈路不再共享資料庫,各鏈路完全獨立執行。這種方式的關鍵點是資料同步機制,用來實現資料的完整性和一致性。
一般是將當前主連線中已經被主站確認的資料點號和數量,告知其他所有備用連線,並對備用連線中的應用資料進行實時整理,從而實現各鏈路資料庫的內容動態一致。
綜上,方式二的模式實現了鏈路和應用真正的獨立冗餘,但記憶體消耗較多,程式較為複雜,同步機制的實施也會一定程度上影響資料的完整性。方式一,雖然各鏈路未能真正的獨立執行,但在資料完整性的方面有著高可靠性。且程式設計複雜性較低,問題較少。本司正線採用方式一。
Ⅱ、雙機冗餘
1、冷備用
即當主機工作時,備機處於待命狀態,當主機故障或資料鏈路斷開時,切換至備機。
此方式的問題為:當主機與某個子系統資料鏈路斷開無法連線時,將會使備機啟用,接管主機全部的資料鏈路進行重新連線,初次連線建立時會產生大量網路傳輸。同時,在主機進行冗餘切換而備機與子系統連線未完全建立時,資料互動將會暫停,無法取得子系統中最新的資料進行互動。
2、熱備用
兩臺通訊前置機fep同時處於工作狀態,與所有子系統進行連線。兩臺通訊前置機fep透過串列埠連線,把各條鏈路的重傳次數、重要報文延遲時間等資訊定義未每條鏈路的通訊服務質量權重,然後進行質量仲裁選擇資料存入實時庫,當其中一臺通訊前置機fep故障或資料鏈路斷開時,則只取未故障通訊前置機fep中的資料進行互動。
同時也可以根據通訊服務質量權重進行主備機的自動切換,這個過程從站(這時主備機透過串列埠傳輸通訊服務質量權重)與主站均可發起。
此方式的問題為:兩臺通訊前置機fep同時與所有子系統進行連線,資料量比較龐大時,將產生大量的網路頻寬浪費(兩臺通訊前置機fep均正常工作時,只取其中一臺的資料),雙通道進行資料互動時還有可能造成子系統壓力較大從而造成資料介面不穩定。並且部分子系統由於其介面特殊性,如串列埠通訊,同時僅能一方與其進行資料互動,兩臺通訊前置機fep無法同時與此類子系統介面進行資料互動。
綜上,可以看出冷備與熱備各有優缺點,但上述內容只是基礎知識,現在廠家針對這些問題在軟體方面都做了大量最佳化,實際的技術細節以廠家資料為準。
本司主變電所採用雙機冗餘(熱備用)+通道冗餘(方式二)。