????????104協(xié)議是101協(xié)議的網(wǎng)絡(luò)版自脯,101協(xié)議每次只能發(fā)送一個鏈路幀剩檀,而104協(xié)議可以連續(xù)發(fā)送多個鏈路幀澄干,其傳輸效率明顯高于101協(xié)議慧库,而且具有TCP/IP的沖突檢測和錯誤重傳機制(這里重傳是指斷開重連重傳)跷跪,具有比101協(xié)議更高的可靠性和穩(wěn)定性,另外對通信延時的限制更寬松齐板。
????????IEC104協(xié)議適用于廠站與調(diào)度主站間的以太網(wǎng)通訊(全雙工高速)吵瞻,位于OSI體系中的應(yīng)用層葛菇,其基本定義為端口號2404,調(diào)度站為客戶端橡羞,廠站端為服務(wù)器熟呛,平衡式傳輸,協(xié)議類型是滑動窗口協(xié)議尉姨。
說明:
????????1、平衡傳輸意為雙方都可以發(fā)起信息傳輸吗冤。104協(xié)議下又厉,一旦鏈路建立成功,變化信息除了響應(yīng)召喚應(yīng)答還可以主動發(fā)送而無需等待查詢椎瘟。
????????2覆致、對于基于TCP的應(yīng)用程序來說存在兩種工作模式,即服務(wù)器模式和客戶機模式肺蔚。它們之間的區(qū)別是:在建立TCP連接時煌妈,服務(wù)器從不發(fā)起連接請求,他一直處于偵聽狀態(tài)宣羊,當偵聽到來自客戶機的連接請求時璧诵,則接受此請求,由此建立一個TCP連接仇冯,服務(wù)器和客戶機就可以通過這個虛擬的通訊鏈路進行數(shù)據(jù)收發(fā)之宿。
????????3、協(xié)議類型有三種苛坚,問答式協(xié)議模式為一問一答比被,超時重傳,其特點是安全穩(wěn)定泼舱,效率低下等缀。簡單窗口協(xié)議模式為N問一答,超時重傳N個報文娇昙,其特點是效率相對提高尺迂,但浪費了A的發(fā)送⊙恼辏滑動窗口協(xié)議模式為A發(fā)送報文的同時枪狂,B發(fā)送確認幀進行確認;A記錄自己已經(jīng)被確認的報文宋渔,向前滑動最大可發(fā)送窗口州疾,B記錄有多少報文尚未確認,達到最大窗口或超時則發(fā)確認幀皇拣。A未確認窗口通常為B未確認窗口的1.5倍严蓖。其特點是效率高薄嫡。
⑴、小端模式
????????104規(guī)約一般小端模式颗胡,即是指在內(nèi)存的低地址中保存數(shù)據(jù)的低字節(jié)毫深。大小端模式,并不由規(guī)約本身決定毒姨,而取決于CPU及操作系統(tǒng)哑蔫。常見x86處理器(無論何種操作系統(tǒng))都是小端模式,而PPC處理器則都是大端模式弧呐。
????????而TCP/IP協(xié)議中所定義的網(wǎng)絡(luò)字節(jié)順序采用大端模式排序闸迷,而一般的讀寫順序為——數(shù)據(jù)按地址由低到高的寫入,由高到低寫出俘枫。這樣就造就了我們所看到的報文是低位字節(jié)在前腥沽,高位字節(jié)在后。
????????舉個例子在x86系統(tǒng)下鸠蚪,通過TCP/IP協(xié)議今阳,我們將0x1234從以0x0000開始的內(nèi)存寫出。其過程如下:
????????在x86系統(tǒng)中0x0000存儲數(shù)據(jù)為0x34茅信,0x0001存儲數(shù)據(jù)為0x12盾舌,即0x1234;經(jīng)過寫出后汹押,在網(wǎng)絡(luò)上傳輸?shù)淖止?jié)順序為0x0000存儲數(shù)據(jù)為0x12矿筝,0x0001存儲數(shù)據(jù)為0x34,即0x3412棚贾。
說明:
????????1窖维、既然數(shù)據(jù)分高字節(jié)、低字節(jié)妙痹,說明只有數(shù)據(jù)格式是2字節(jié)以上的铸史,才有大小端模式,比如word怯伊、dword等琳轿;而byte類型數(shù)據(jù)是不分大小端模式的。
⑵耿芹、重要參數(shù)
Ⅰ崭篡、K值和W值
????????104規(guī)約規(guī)定了兩個參數(shù)K和W,其取值為1到32767吧秕,其中K表示發(fā)送方在有K個I格式報文未得到對方的確認時琉闪,將停止數(shù)據(jù)發(fā)送;W表示接收方最遲在接收W個I格式報文后應(yīng)發(fā)出認可砸彬。104規(guī)約規(guī)定K和W的默認值分別為12個APDU和8個APDU颠毙,推薦關(guān)系式為w<k*2/3斯入。
????????在實際中,K和W的具體取值可以根據(jù)TCP連接雙方的數(shù)據(jù)通信量加以確定蛀蜜。對于從站RTU來說刻两,每收到一個調(diào)度端的I格式報文都應(yīng)立即響應(yīng),其W的取值實際上為1滴某,由于RTU端可以循環(huán)向主站發(fā)送遙信磅摹、遙測等信息,因此K的取值與其循環(huán)發(fā)送的定時周期有關(guān)霎奢,通常12到20個APDU就足夠了偏瓤;對于主站端,由于不停接收RTU數(shù)據(jù)椰憋,因此應(yīng)及時地給以確認,通常W取小于8個APDU的值赔退。
????????當未確認I格式APDU達到K個時橙依,發(fā)送方停止發(fā)送。如果t1超時仍未收到確認硕旗,則重啟鏈路。
Ⅱ、超時定義
????????為了能對TCP連接進行檢查和維護樱衷,104規(guī)定了幾個超時時間:t0膀曾、t1、t2墙基、t3软族。它們的取值范圍為1~255s,準確度為1s残制。
????????t0規(guī)定了主站和從站建立一次TCP連接的最大允許時間立砸,即主站端一直發(fā)出連接請求,在t0時間內(nèi)得不到連接建立成功的狀態(tài)下初茶,要向應(yīng)用層提示颗祝,說明無法建立連接,一般可設(shè)置進行多次連接恼布,當每次連接都超過t0無法建立成功時都應(yīng)給出提示螺戳。默認值30s。
????????t1規(guī)定發(fā)送一個I格式報文或U格式報文后折汞,必須在t1的時間內(nèi)得到接收方的認可倔幼,否則發(fā)送方認為TCP連接出現(xiàn)問題并應(yīng)重新建立連接。這個過程是雙向的字支,即對于廠站端和主站端當這個過程任一方發(fā)生時凤藏,兩方的連接都需關(guān)閉奸忽,重新建立連接。默認值15s揖庄。
?????????t2規(guī)定接收方在接收到I格式報文后栗菜,若經(jīng)過t2時間未再發(fā)送新的I格式報文,則必須向發(fā)送方發(fā)送S格式幀對已經(jīng)收到的I格式報文進行認可蹄梢,顯然t2必須小于t1疙筹。默認值10s。
????????t3規(guī)定主站或從站每接收一個I禁炒,S而咆,U報文將重新觸發(fā)計時器t3,若再t3內(nèi)未能接收到任何報文幕袱,將向?qū)Ψ桨l(fā)送測試鏈路報文(U幀)暴备。發(fā)送測試幀后,若在t1時間內(nèi)沒有收到測試確認们豌,則連接關(guān)閉涯捻,若達到t3時間,則再次發(fā)送測試鏈路報文(U幀)望迎。默認值20s障癌。
⑶、冗余機制
Ⅰ辩尊、通道冗余
方式一——鏈路冗余涛浙,應(yīng)用共享
????????鏈路冗余:所有鏈路互為主備,備用通道僅僅測試鏈路維持連接摄欲,通道的主備用是動態(tài)可切換的轿亮。
????????手動切換模式:在當前激活的邏輯連接上人工發(fā)送STOPDT-ACT停止應(yīng)用傳輸轉(zhuǎn)為測試維護,然后再新的邏輯上人工發(fā)送STARTDT-ACT予以激活胸墙,作為主連接哀托。
????????自動切換由主站判斷進行。連接初始化時劳秋,主站按某種邏輯關(guān)系選擇確定主仓手、備通道,例如先建立鏈路的為主通道或者誤碼率低的為主通道或者響應(yīng)快的為主通道或按自然順序選擇主通道玻淑。運行中的自動切換可以由主站根據(jù)目前主嗽冒、備連接的通信情況而定。
????????應(yīng)用共享:多個鏈路共用同一數(shù)據(jù)庫补履,并且數(shù)據(jù)緩存的入棧出棧只針對當前主連接有效添坊。
方式二——鏈路冗余,應(yīng)用冗余
????????鏈路冗余:與上文描述基本一致箫锤。
????????應(yīng)用冗余:即不同的鏈路不再共享數(shù)據(jù)庫贬蛙,各鏈路完全獨立運行雨女。這種方式的關(guān)鍵點是數(shù)據(jù)同步機制,用來實現(xiàn)數(shù)據(jù)的完整性和一致性阳准。
????????一般是將當前主連接中已經(jīng)被主站確認的數(shù)據(jù)點號和數(shù)量氛堕,告知其他所有備用連接,并對備用連接中的應(yīng)用數(shù)據(jù)進行實時整理野蝇,從而實現(xiàn)各鏈路數(shù)據(jù)庫的內(nèi)容動態(tài)一致讼稚。
????????綜上,方式二的模式實現(xiàn)了鏈路和應(yīng)用真正的獨立冗余绕沈,但內(nèi)存消耗較多锐想,程序較為復(fù)雜,同步機制的實施也會一定程度上影響數(shù)據(jù)的完整性乍狐。方式一赠摇,雖然各鏈路未能真正的獨立運行,但在數(shù)據(jù)完整性的方面有著高可靠性浅蚪。且編程復(fù)雜性較低蝉稳,問題較少。本司正線采用方式一掘鄙。
Ⅱ、雙機冗余
1嗡髓、冷備用
????????即當主機工作時操漠,備機處于待命狀態(tài),當主機故障或數(shù)據(jù)鏈路斷開時饿这,切換至備機浊伙。
????????此方式的問題為:當主機與某個子系統(tǒng)數(shù)據(jù)鏈路斷開無法連接時,將會使備機激活长捧,接管主機全部的數(shù)據(jù)鏈路進行重新連接嚣鄙,初次連接建立時會產(chǎn)生大量網(wǎng)絡(luò)傳輸。同時串结,在主機進行冗余切換而備機與子系統(tǒng)連接未完全建立時哑子,數(shù)據(jù)交互將會暫停,無法取得子系統(tǒng)中最新的數(shù)據(jù)進行交互肌割。
2卧蜓、熱備用
????????兩臺通信前置機fep同時處于工作狀態(tài),與所有子系統(tǒng)進行連接把敞。兩臺通信前置機fep通過串口連接弥奸,把各條鏈路的重傳次數(shù)、重要報文延遲時間等信息定義未每條鏈路的通信服務(wù)質(zhì)量權(quán)重奋早,然后進行質(zhì)量仲裁選擇數(shù)據(jù)存入實時庫盛霎,當其中一臺通信前置機fep故障或數(shù)據(jù)鏈路斷開時赠橙,則只取未故障通信前置機fep中的數(shù)據(jù)進行交互。
????????同時也可以根據(jù)通信服務(wù)質(zhì)量權(quán)重進行主備機的自動切換愤炸,這個過程從站(這時主備機通過串口傳輸通信服務(wù)質(zhì)量權(quán)重)與主站均可發(fā)起期揪。
????????此方式的問題為:兩臺通信前置機fep同時與所有子系統(tǒng)進行連接,數(shù)據(jù)量比較龐大時摇幻,將產(chǎn)生大量的網(wǎng)絡(luò)帶寬浪費(兩臺通信前置機fep均正常工作時横侦,只取其中一臺的數(shù)據(jù)),雙通道進行數(shù)據(jù)交互時還有可能造成子系統(tǒng)壓力較大從而造成數(shù)據(jù)接口不穩(wěn)定绰姻。并且部分子系統(tǒng)由于其接口特殊性枉侧,如串口通信,同時僅能一方與其進行數(shù)據(jù)交互狂芋,兩臺通信前置機fep無法同時與此類子系統(tǒng)接口進行數(shù)據(jù)交互榨馁。
????????綜上,可以看出冷備與熱備各有優(yōu)缺點帜矾,但上述內(nèi)容只是基礎(chǔ)知識翼虫,現(xiàn)在廠家針對這些問題在軟件方面都做了大量優(yōu)化,實際的技術(shù)細節(jié)以廠家資料為準屡萤。
????????本司主變電所采用雙機冗余(熱備用)+通道冗余(方式二)珍剑。