這個產(chǎn)品是職業(yè)開始時候做的杭攻。當(dāng)時沒有IoT和云計算的概念棍弄,所以當(dāng)時就是叫做透明傳輸終端檬嘀,遠(yuǎn)沒有現(xiàn)在的IoT網(wǎng)關(guān)這么‘高大上’和‘時髦’。
應(yīng)用場景
首先介紹use case握侧。用戶是做工業(yè)系統(tǒng)監(jiān)控的蚯瞧,產(chǎn)品主要是SCADA的場景。當(dāng)時參與國家的重大的天然氣項目的管道系統(tǒng)監(jiān)控部分藕咏。要監(jiān)控幾十状知,幾百,甚至上千公里長的燃?xì)夤艿赖倪\行情況孽查,沒有網(wǎng)絡(luò)是做不到的饥悴。所以,當(dāng)時的想法就是沿著管道線路鋪設(shè)一條電信的數(shù)據(jù)專線用于數(shù)據(jù)傳輸盲再。每隔一段距離把管道的數(shù)據(jù)收集并且上傳到管理中心西设,并且通過管理中心對相應(yīng)的管道單元實施遠(yuǎn)程控制。
在2000年前后答朋,一條64kbps的線路可是不便宜贷揽!況且天然氣管道往往遠(yuǎn)離人口密集/經(jīng)濟(jì)發(fā)達(dá)區(qū)域,盡量選擇偏僻的地段梦碗。這樣的地方基礎(chǔ)設(shè)施差禽绪,鋪設(shè)專線的價格更是不菲。
因此洪规,客戶當(dāng)時考慮把作為備用通信通道的無線網(wǎng)絡(luò)“轉(zhuǎn)正”印屁,也就是利用廣域無線網(wǎng)絡(luò)提供數(shù)據(jù)通信支持。當(dāng)時的無線通信網(wǎng)絡(luò)就是GSM網(wǎng)絡(luò)的GPRS和CDMA 2000斩例。
用戶于是調(diào)研并試用了國內(nèi)的無線傳輸終端雄人,結(jié)果效果很不好。典型的問題就是網(wǎng)絡(luò)連接的可靠性(reliability)問題念赶,經(jīng)常是連接建立幾十分鐘之后就再也收不到數(shù)據(jù)了础钠,必須把傳輸終端重啟(騎著摩托車開幾十公里),之后再能工作幾十分鐘叉谜。這個問題的原因和當(dāng)時GPRS的網(wǎng)絡(luò)速度和可靠性都有關(guān)系旗吁。
所以用戶找到我們首先提出來的就是連接的可靠性問題,用戶也知道無線網(wǎng)絡(luò)連接的穩(wěn)定性不好停局,因此說可以掉線阵漏,但是掉線之后要盡快恢復(fù)連接驻民,以保證業(yè)務(wù)的可用性(availability)。
所以履怯,總結(jié)下來就是,以廣域無線網(wǎng)絡(luò)把SCADA系統(tǒng)和遠(yuǎn)端的控制中心連接起來裆泳,實現(xiàn)雙向的數(shù)據(jù)通信叹洲。
該網(wǎng)關(guān)的下行接口是串口,連接SCADA設(shè)備工禾,上行端口是TCP/IP运提,通過運營商的數(shù)據(jù)網(wǎng)絡(luò)連接到控制中心。
所以這就是一個典型的IoT網(wǎng)關(guān)加私有云的應(yīng)用闻葵。
具體可參考下圖(源自網(wǎng)絡(luò))民泵。下圖的云服務(wù)器在當(dāng)時的環(huán)境里就是用戶的管理控制中心,APP遠(yuǎn)程監(jiān)控就是運行在服務(wù)器上的監(jiān)控軟件槽畔。
產(chǎn)品選型
該產(chǎn)品要求具有PPP/TCP/IP的支持栈妆,所以一般單片機(jī)是不行的。
PPP的撥號功能來自單獨的模塊厢钧,需要外購鳞尔,它與網(wǎng)關(guān)的控制單元之間是通過RS232接口連接,就像當(dāng)時PC上網(wǎng)一樣早直,串口加一個撥號的modem寥假。
還有一個串口需要接下行的SCADA設(shè)備。
另外還需要一個設(shè)備管理接口霞扬,用于本地管理配置該網(wǎng)關(guān)糕韧。
概括下來,這個網(wǎng)關(guān)的控制單元需要比較多的IO喻圃,而且軟件要支持PPP/TCP/IP萤彩。最后選了一個基于Z80的MCU,其軟件棧支持PPP/TCP/IP级及。
當(dāng)然乒疏,為了支持GPRS和CDMA2000,無線模塊的選型也有技巧饮焦。那就是選擇同一個廠家的模塊怕吴,可以做到pin-pin兼容,這樣的好處是生產(chǎn)和庫房只要維護(hù)一個BOM就可以了县踢,這樣減少了生產(chǎn)和庫房的維護(hù)成本转绷,降低了出錯率。但是軟件增加了復(fù)雜性硼啤,需要自動識別和配置不通的模塊和軟件议经。
操作系統(tǒng)不是必需。
架構(gòu)設(shè)計
架構(gòu)設(shè)計上,因為是MCU的系統(tǒng)煞肾,512KB FLASH ROM咧织,存放系統(tǒng)軟件和配置參數(shù),512KB SRAM作為系統(tǒng)內(nèi)存籍救。
沒有使用操作系統(tǒng)习绢,而是采用狀態(tài)機(jī)(FSM)作為程序運行的主流程。
根據(jù)系統(tǒng)運行的階段蝙昙,定義不同的狀態(tài)闪萄,根據(jù)事件驅(qū)動狀態(tài)的變化。例如奇颠,modem配置->PPP撥號->IP軟件棧初始化->TCP連接請求->TCP連接建立->數(shù)據(jù)收發(fā)(連接狀態(tài)檢查)败去。
與遠(yuǎn)程管理中心的連接使用TCP協(xié)議,而不是UDP協(xié)議(為什么烈拒?)
上行數(shù)據(jù)和下行數(shù)據(jù)使用不同環(huán)形隊列圆裕,不同的TCP連接使用不同的上行隊列。因為是8bit的MCU嵌入式系統(tǒng)缺菌,系統(tǒng)內(nèi)存最大512KB葫辐,因此在預(yù)留了一部分內(nèi)存作為管理功能用以外,其余內(nèi)存基本都留給了數(shù)據(jù)緩沖區(qū)使用伴郁。
網(wǎng)絡(luò)連接可靠性(reliability)耿战,依靠TCP keepalive功能,并根據(jù)用戶配置設(shè)置其間隔(實時性和流量焊傅,性能和成本)剂陡。
網(wǎng)絡(luò)連接的可用性(availability),即網(wǎng)絡(luò)斷開之后恢復(fù)狐胎。從開銷最小的層次開始恢復(fù)鸭栖,逐級向下。即從TCP socket重建連接開始握巢,到IP協(xié)議棧的reset晕鹊,最后直到設(shè)備reset。就是說如果檢測到數(shù)據(jù)連接丟失暴浦,那么會從最高的應(yīng)用層開始恢復(fù)溅话,逐級向下,直到系統(tǒng)級的恢復(fù)歌焦。
網(wǎng)關(guān)設(shè)備的管理飞几。支持通過RS232接口的本地管理。如前所述独撇,僅有本地管理是不夠的屑墨,因為這些設(shè)備都是間隔幾十公里躁锁,而且在人跡罕及的地區(qū),單靠本地配置管理是不行的卵史。
因此通過TCP/IP建立管理連接战转,實現(xiàn)遠(yuǎn)程管理功能。
附加功能(與同類產(chǎn)品的差異)是支持系統(tǒng)軟件的在線升級程腹。針對這個典型的MCU的嵌入式系統(tǒng)的軟件升級有幾種方式匣吊,第一種是通過TCP的管理連接進(jìn)行軟件下載并升級。第二種是支持通過本地的串口進(jìn)行升級寸潦。這兩種是可以做到業(yè)務(wù)在線的情況下進(jìn)行升級。第三種方式是在系統(tǒng)軟件無法啟動(brick了/磚了)的情況下社痛,采用類似JTAG燒寫FLASH的模式重新刷寫系統(tǒng)軟件见转。這個需要運維人員到現(xiàn)場連接設(shè)備特定接口進(jìn)行升級。
架構(gòu)對比
與當(dāng)時市場的其他同類商品對比下來的特點有如下幾點蒜哀。
系統(tǒng)的連接可靠性/可用性(實時性)最好斩箫。
系統(tǒng)的應(yīng)用范圍比較廣泛,不僅僅適用于天然氣一個應(yīng)用場景撵儿。
支持兩種運營商網(wǎng)絡(luò)GPRS或CDMA2000乘客,軟件自適應(yīng)。
設(shè)備管理功能豐富淀歇,支持本地和遠(yuǎn)程管理易核,支持軟件在線升級。
支持多個管理控制中心浪默,類似目前云計算的2地三中心牡直,最多支持3個管理控制連接。
系統(tǒng)功能可配置性纳决,提供配置機(jī)制給用戶碰逸,由用戶根據(jù)自己的應(yīng)用場景和成本預(yù)算達(dá)成適合其自身的SLA(網(wǎng)絡(luò)可靠性/可用性)。
產(chǎn)品亮點
上面說了架構(gòu)和產(chǎn)品特點阔加。這里說的是亮點饵史。
最大亮點在于在線升級。這是一個8bit的MCU嵌入式系統(tǒng)胜榔,通常軟件都是運行在FLASH ROM (RIP)胳喷,數(shù)據(jù)存放在RAM當(dāng)中。但是這個產(chǎn)品采用了全球首創(chuàng)的方式苗分,在沒有鏈接器(linker)來指定image layout的情況厌蔽,在硬件不支持internal RAM的情況下,巧妙地采用了一種通用的方法實現(xiàn)了把代碼和數(shù)據(jù)都放到RAM當(dāng)中的實現(xiàn)摔癣,大大提高了運行的性能奴饮。
比較遺憾纬向,當(dāng)時沒有發(fā)專利。
其實方法很簡單戴卜,但是當(dāng)時搞了4個星期逾条。有些人得知了設(shè)計思路之后會很不屑地一笑然后來一句“哦,原來這么簡單”投剥。這是典型的“站著說話不腰疼”师脂,而且暴露了那一絲絲“羨慕嫉妒恨”。
好了扯遠(yuǎn)了江锨。
另一個亮點是采用了同一家的無線模塊吃警,所以做到了pin-pin兼容∽挠看似不重要酌心,其實對于生產(chǎn)部門的料單管理和庫房管理非常重要,這大大節(jié)省了他們的維護(hù)成本和出錯概率
第三個亮點是產(chǎn)品的管理維護(hù)挑豌,包括軟件升級的三種方式安券,都是盡量保證在遠(yuǎn)距離的可靠性一般的廣域網(wǎng)絡(luò)環(huán)境下能方便地管理設(shè)備,并且在出現(xiàn)系統(tǒng)軟件崩潰的情況下氓英,運維工程師一根線侯勉,一個軟件工具,一個.rom文件就可以現(xiàn)場恢復(fù)铝阐,無須返廠維修址貌。這節(jié)約了用戶的時間,節(jié)省了工廠的運維成本饰迹。
所以芳誓,研發(fā)不是只要設(shè)計出產(chǎn)品就行,還要考慮生產(chǎn)是否簡單高效啊鸭,是否易于售后維護(hù)锹淌。要做“系統(tǒng)”工程師,要考慮產(chǎn)品的“全生命期”赠制。
實際運行情況回顧
總體來說運行反饋良好赂摆,也拓展了其他領(lǐng)域,例如能源方面钟些。
運行大約4個月烟号,險險出了一個大事故。當(dāng)年春節(jié)政恍,一個在市區(qū)外70公里處的燃?xì)忾y門故障汪拥,導(dǎo)致高壓燃?xì)庵苯油{下游的幾萬戶居民。運維中心在發(fā)現(xiàn)故障之后篙耗,立即啟動關(guān)閉閥門操作迫筑,同時疏散當(dāng)?shù)鼐用裣芨稀陌l(fā)現(xiàn)故障到關(guān)閉故障閥門一共不到2分鐘,也就是說一個環(huán)回的時間不到2分鐘脯燃。甲方得到了當(dāng)?shù)卣穆≈乇碚寐蓿⑹盏疆?dāng)?shù)卣拖嚓P(guān)部門的表揚信。為了感謝我們提供的IoT網(wǎng)關(guān)在這次故障處理當(dāng)中的優(yōu)異表現(xiàn)辕棚,甲方特地表達(dá)了對我們的感謝欲主。
寫在最后
這個產(chǎn)品是公司里面獨一無二的數(shù)據(jù)通信類產(chǎn)品,而且從談需求到交付一共用了3個月逝嚎。參與的人其實就是我一個人扁瓢,從原理圖,到外觀布局补君,到軟件涤妒,到說明書,都是一個人來赚哗。另一個同事幫我做了windows上面的管理軟件。參與了整個產(chǎn)品的立項硅堆,聯(lián)調(diào)屿储,售前,到售后的全部階段渐逃。
所以够掠,雖然過去了很多年,這里面的很多細(xì)節(jié)茄菊,特別是那些特點仍然記憶猶新疯潭。
說到這里,其實還是有一個小小的遺憾面殖。竖哩。。脊僚。相叁。。
你懂的辽幌。