物聯網建設中通訊互聯層的終極解決方案

来源:http://www.cnblogs.com/lsjwq/archive/2016/12/15/6185169.html
-Advertisement-
Play Games

1.自我介紹。2.占領腦袋和丟了腳3.物聯的現實困難4.效率與成本5.智能網關,跑Windows 10 IOT和Ubuntu Mate6.SuperIO到ServerSuperIO發展歷程和解決的實現問題7.一套設備驅動,支持多種IO通訊8.一套設備驅動,統一介面,多種平臺掛載運行9.物聯通訊的級聯... ...


1.自我介紹

      本人已經工作10年,一直在工業領域。在一線乾過實施,下過礦井;乾過項目,帶過團隊;乾過軟體研發,出過產品;乾過項目群管理,售前和市場也接觸過;期間在純軟體公司也乾過將近兩年的時間,熟悉軟體開發流程與管理。雖然沒有取得多大成績,也算經歷豐富了。

      互聯網“行業”如火如荼的發展,曾經也想過轉行去做“互聯網”,奈何猶豫太久,已然提不起太多興趣。憑藉當年的沉澱與積累,有個半成品的框架,在工作索然無味的情況下,毫不猶豫的投身到物聯網框架的開發與產品化的進程中。別人都說物聯網的時代來了,如果真的是這樣,也不知道是自己的選擇好,還是命好。

這方面的工作純屬個人愛好,業餘時間在乾,一般晚上21點到23點是自己的第二個工作時間。這兩年積極的投身到新的框架開發中,提高性能、統一介面、跨平臺……等方面的工作。也做了自己的基礎硬體產品,智能網關。

      有人會問,那你正式工作是乾什麼的?在某集團公司工業版塊負責大數據建設的相關工作。在沒有大數據、雲服務概念的時候,做過遠程E服務相關的項目。說實話,對於傳統行業來講,是很困難的一件事。但是作為企業來講,要麼等死,要麼在改變中死,完全在於自己的選擇。

2.占領大腦和丟了腳

      不知道從什麼時候,物聯網、大數據、雲服務、雲計算……等一批概念流行起來。大廠都在爭奪高制高點,大數據、雲服務、各種標準……,做這些事情都很有意義。但是我在想,大家都去占領大腦,腳就不重要了嘛?!顯然不是,應該是同等重要。華為設備部、中興儀器儀錶……對於基礎物聯層,也是很頭痛的一件事,這是大廈的根基,特別是工業領域。所以,我堅信對於我們的框架有很大的市場應用空間,創造的直接價值那是另外一回事。

3.物聯的現實困難

      對困難理解的前提是對現實世界的認知,有些傳統製造業都不具備物聯的基礎條件,更談不上物聯網、智能製造、智能工廠,但是至因為落後,才有廣闊的市場空間。就算有物聯的基礎,條件比較落後,底子比較薄,面臨四個多樣性:設備多樣性、協議多樣性、通訊機制多樣性、數據多樣性。這就是我們面臨的問題,難道問題有多大嗎?為了生存,企業都說能做。但是結構化的多樣性問題,要用結構化的手段或框架來解決,這是各方面保障的前提。

4.效率與成本

     接觸一家上海公司,有專人負責網關層的數據採集,有專人負責服務(雲)端的對接,不太穩定、經常出現問題。解決細節問題,不能用細節的思維方式去解決,而是要有更廣闊的思維、結構化思路才能夠徹底的、更好的解決問題。網關層、服務端是否可以使用同一套框架?並且框架之間是否可以無縫對接?如果可以實現,應用同一套框架,開發效率會提高,用人成本和時間成本會降低。好的組織結構、好的框架總之要解決效率和成本,否則沒有任何價值。

5.逆向思維

     大廠都在搞雲平臺、協議標準……,當然他們有資本和實力這樣搞,軟體用他們的、硬體用他們的,對於他們來講,養這麼多人,反而成本是最低的。他們奉行一流企業定標準,用這種思維模式去整合資源,競爭比的就是占領資源的多少。我們認真考慮一下,對於傳統企業來講,本來生存就很困難,和房地產、互聯網拿投資的沒法比,他們有能力一下子完全統一化的更新換代嘛?!參加上海工業博覽會,也進行了市場調查,簡直是開玩笑。我們再認真考慮一下,用框架性的東西去解決設備多樣性、協議多樣性、通訊機制多樣性、數據多樣性的問題,在物聯網和集成系統的建設中是否也是整合資源的一種手段?!先解決企業互聯監控的問題,再解決企業標準化的問題,這樣是否也是一種思維模式?!是的,我們就先這樣乾!

5.智能網關,跑Windows 10 IOT和Ubuntu Mate

     網關在物聯網和集成系統建設中是重要的一個環節,實現數據的初步整合(採集),再進行數據的轉發,形成體系層次清晰的級聯網路系統。市場的網關大至分為兩類:純硬體介面的轉換、搭載操作系統的小型機。當然也有在硬體基礎上搭載自己的軟體框架,但是不多見。在我們的智能網關上可以實現搭載我們ServerSuperIO物聯網框架,使軟體和硬體無縫結合,設備驅動的介面統一,可以開發一套驅動跑在不同的嵌入式操作系統上,Windows 10 IOT和Ubuntu Mate,對於系統建設的方案選擇更靈活。

     智能網關的硬體配置:

l  四核1.2GHz Broadcom BCM2837 64位CPU。

l  1GB RAM。

l  板載BCM43143 WIFI和藍牙低功能耗(BLE)。

l  40引腳擴展GPIO。

l  4個USB介面。

l  全盡寸HDMI,並且轉VGA介面。

l  微型SD卡埠,用於運行操作系統和存儲數據的介質。

l  升級切換的微型USB電源,高達2.5A。

l  可搭載的操作系統:Ubuntu Mate、Windows 10 IOT。

     智能網關實體機照片:

 

6.SuperIO到ServerSuperIO發展歷程和解決的實現問題

      SuperIO&ServerSuperIO最早的雛形於2010年開始開發,當時主要是解決公司內部硬體產品眾多、協議眾多、以前的軟體經常出問題、維護成本高、搞集成系統時各方面都很累。經過兩三年的發展,確實解決了公司內部的產品體系問題,所有硬體產品都可以掛載到平臺下運行。離開公司之後,感覺這個平臺從代碼、應用等方面還有很大發展空間,2014年逐步產品化後才形成了SuperIO(SIO)這個平臺。

     但是SIO也只是解決了設備驅動(眾多協議)插件式掛載的問題,不過只限於運行在Windows系列操作系統下,一般性的PC機和工控機上數據採集完全沒有問題。但是在運行效率方面還有很大提升空間、設備驅動的介面還可以進一步標準化(為了各層級都可以應用)、跨平臺運行必須攻剋、設備(驅動)之間信息交互與控制必須實現、框架在不同層級應用的級聯與控制必須實現、多服務實例的應用等等,一系列的框架和技術性問題還可以進一步完善。從整體物聯網建設的框架性方面考慮,從2015年初開始,基於SIO的核心思想重新開發新一代物聯網框架,也就是現在的ServerSuperIO(SSIO)框架,經過兩年多的發展,搭載在智能網關的基礎上,可以形成綜合性的解決方案。

7.一套設備驅動,支持多種IO通訊

     不管是zigbee、wifi、有線網路,還是RS485、RS232、RS422,總之主要分為兩種硬體介面:網口和串口。至於OPC協議,可以用SSIO服務介面的形成間接實現,形成服務插件的一部分。如果不結構化的設計IO,網口和串口獨立存在,隨著產品越來越多,是很頭痛的一件事,也不一定運行穩定。對於ServerSuperIO框架,在此基礎上開發一套設備驅動可以分別實現通過網口或串口與硬體設備(感測器)進行交互,非常方便。有人認為通訊很簡單,其實如果把眾多問題都考慮進去,那麼將變得很複雜。也有很多純網路通訊框架,業務場景、通訊機制的不同,純網路通訊框架也未必能夠完全的適用於現場環境。根據多年的工作經驗,針對SSIO增加了通訊機制與應用場景,參見:《連載 | 物聯網框架ServerSuperIO教程》1.4種通訊模式機制

     示意圖如下:

 

8.一套設備驅動,統一介面,多種平臺掛載運行

     針對ServerSuperIO框架的設備驅動介面進行標準化設計,另外針對ServerSuperIO框架本身進行了跨平臺運行的移植工作,所以一次開發設備驅動,可以在多種平臺下掛載運行。現在支持的平臺包括:Windows xp SP3以上的版本操作系統(包括Server)、Windows 10 IOT嵌入式操作系統、Ubuntu&Ubuntu Mate操作系統。

     示意圖如下:

 

9.通訊的級聯

      如果單單是採集硬體的數據與控制,也只能算是本地的系統,但是在物聯網和集成系統建設中,必須形成體系化、網路化框架。所以ServerSuperIO在採集本範圍內的數據信息與控制外,還要形成與上一級的ServerSuperIO進行數據交互,以及接收下一級的ServerSuperIO的交互數據,那麼ServerSuperIO之間就形成了級聯的關係,主要完成兩大職責:數據的級聯上傳和反向控制,進而對設備本身進行級聯控制。

      結構示意圖如下:

 

10.設備之間的通訊、控制

      採集與控制單個設備,在實際應用中還遠遠不夠,還要能夠設備與設備之間進行信息傳遞與控制,並且返回給發送控制源設備確認信息。例如:在監測流量計嚴重報警的情況下,是否應該調節或控制液體源頭的閥門。類似的例子很多。

     在ServerSuperIO最新的3.1版本中(還沒有發佈),支持設備向另一個設備發起傳遞信息和控制後,被控制設備是否立即返回確認信息,還是自主非同步決定返回確認信息。增加了非同步返回確認信息的功能,因為控制命令只是發給了另一個設備驅動,設備驅動還會進一步與實際的硬體設備進行交互,與實現硬體交互成功後,再返回確認信息給發起的源設備驅動。

     示意圖如下:

 

11.與雲端的交互、控制

     ServerSuperIO提供了服務驅動的介面,一些除設備驅動類的功能以外,都可以以服務驅動的方式存在,例如:多設備採集的數據的融合模型計算、與其他平臺或上層進行交互等等,在此僅以與服務端進行交互為實例進行介紹。與設備驅動之間的交互與控制不同的是,設備驅動主動把採集的數據信息傳遞給服務驅動,服務驅動與雲端進行交互,在接收雲端指令後,發起傳遞信息或控制設備驅動,設備驅動再返回確認信息給服務驅動。

     示意圖如下:

 

12.未來的規劃

     從大環境來講,肯定是有很廣泛的應用;從本公司來講,將來在工業基礎物聯層面,肯定也會用的上;從個人興趣來講,也樂意能夠繼續做這方面的工作,當然是除正式工作之外。

     從ServerSuperIO本身來講,3.1版本(未發佈)對代碼進行優化以及增加了非同步返回確認信息的交互能力。後期會增加對數據安全方案的驗證機制,以保障在工業領域應用數據交互與控制的安全性。另外從體繫結構來講,以ServerSuperIO框架為基礎,增加雲端的建設能力,例如:數據分散式持久化等。從嵌入式應用為講,要增加遠程可配置能力等。

13.結束語

     在現在的社會,長期堅持做一件事很不容易,做成產品級以及配合體系方案更不容易。慢慢往下走吧,希望機會會眷顧那些踏實、實幹的人。天道酬勤!!!


 

1.[連載]《C#通訊(串口和網路)框架的設計與實現》

2.[開源]C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)介紹

2.應用SuperIO(SIO)和開源跨平臺物聯網框架ServerSuperIO(SSIO)構建系統的整體方案

3.C#工業物聯網和集成系統解決方案的技術路線(數據源、數據採集、數據上傳與接收、ActiveMQ、Mongodb、WebApi、手機App)

5.ServerSuperIO開源地址:https://github.com/wxzz/ServerSuperIO

物聯網&集成技術(.NET) QQ群54256083 

 


連載教程:

1.4種通訊模式機制
2.服務實例的配置參數說明
3.設備驅動介紹
4.如開發一套設備驅動,同時支持串口和網路通訊
5.輪詢通訊模式開發及註意事項
6.併發通訊模式開發及註意事項
7.自控通訊模式開發及註意事項
8.單例通訊模式開發及註意事項
9. 協議過濾器,解決一包多發、粘包、冗餘數據
10.持續傳輸大塊數據流的兩種方式(如:文件)
11.實現設備(驅動)與設備(驅動)交互和級聯控制。
12.服務介面的開發,以及與雲端雙向交互
13.自定義視圖顯示介面開發,滿足不同的顯示需求
14.配製工具介紹,以及設備驅動、視圖驅動、服務實例的掛載


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目大意: 約翰的表哥羅恩生活在科羅拉多州。他近來打算教他的奶牛們滑雪,但是奶牛們非常害羞,不敢在游人如織的度假勝地滑雪。沒辦法,他只好自己建滑雪場了.羅恩的雪場可以劃分為W列L行(1≤W≤500;1≤L≤500),每個方格有一個特定的高度H(0≤H≤9999)。奶牛可以在相臨方格間滑雪,而且不能由 ...
  • #相當於對數據 加上 雙引號,$相當於直接顯示數據 1. #將傳入的數據都當成一個字元串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by " ...
  • 問題描述: 在case語句中,這樣寫,編譯時,會提示變數unsafe,解決編譯器報錯的方法有下麵兩個: 1、給unsafe的變數賦值 case get(?Player_LoopTaskInfo) of {TargetCnt, TaskStar, TaskExp} -> ok; _ -> Target ...
  • 一、Memcached Memcached 是一個高性能的分散式記憶體對象緩存系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中緩存數據和對象來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的 ...
  • 1041. 考試座位號(15) 每個PAT考生在參加考試時都會被分配兩個座位號,一個是試機座位,一個是考試座位。正常情況下,考生在入場時先得到試機座位號碼,入座進入試機狀態後,系統會顯示該考生的考試座位號碼,考試時考生需要換到考試座位就座。但有些考生遲到了,試機已經結束,他們只能拿著領到的試機座位號 ...
  • 1016. 部分A+B (15) 正整數A的“DA(為1位整數)部分”定義為由A中所有DA組成的新整數PA。例如:給定A = 3862767,DA = 6,則A的“6部分”PA是66,因為A中有2個6。 現給定A、DA、B、DB,請編寫程式計算PA + PB。 輸入格式: 輸入在一行中依次給出A、D ...
  • 1054. 求平均值 (20) 本題的基本要求非常簡單:給定N個實數,計算它們的平均值。但複雜的是有些輸入數據可能是非法的。一個“合法”的輸入是[-1000,1000]區間內的實數,並且最多精確到小數點後2位。當你計算平均值的時候,不能把那些非法的數據算在內。 輸入格式: 輸入第一行給出正整數N(< ...
  • 讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。 輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。 輸入樣例: 輸出樣例: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...