從零開始理解IEC104協(xié)議之二——基礎(chǔ)知識

????????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é)以廠家資料為準屡萤。

????????本司主變電所采用雙機冗余(熱備用)+通道冗余(方式二)珍剑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市死陆,隨后出現(xiàn)的幾起案子招拙,更是在濱河造成了極大的恐慌,老刑警劉巖措译,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件别凤,死亡現(xiàn)場離奇詭異,居然都是意外死亡领虹,警方通過查閱死者的電腦和手機规哪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來塌衰,“玉大人诉稍,你說我怎么就攤上這事∽罱” “怎么了均唉?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肚菠。 經(jīng)常有香客問我舔箭,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任层扶,我火速辦了婚禮箫章,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镜会。我一直安慰自己檬寂,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布戳表。 她就那樣靜靜地躺著桶至,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匾旭。 梳的紋絲不亂的頭發(fā)上镣屹,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音价涝,去河邊找鬼女蜈。 笑死,一個胖子當著我的面吹牛色瘩,可吹牛的內(nèi)容都是我干的伪窖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼居兆,長吁一口氣:“原來是場噩夢啊……” “哼覆山!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泥栖,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤簇宽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后聊倔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡生巡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年耙蔑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孤荣。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡甸陌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盐股,到底是詐尸還是另有隱情钱豁,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布疯汁,位于F島的核電站牲尺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谤碳,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一溃卡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜒简,春花似錦瘸羡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卷仑,卻和暖如春峻村,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背系枪。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工雀哨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人私爷。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓雾棺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衬浑。 傳聞我的和親對象是個殘疾皇子捌浩,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容