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

来源:http://www.cnblogs.com/lsjwq/archive/2016/01/11/5122612.html
-Advertisement-
Play Games

目 錄工業物聯網和集成系統解決方案的技術路線... 1前言... 1第一章 系統架構... 31.1 硬體構架圖... 31.2 組件構架圖... 4第二章 技術選型與介紹... 52.1 開發環境... 52.2 數據源... 52.3 數據採集... 52.4 數據上傳服務... 62.5 消息...


目       錄

工業物聯網和集成系統解決方案的技術路線... 1

前言... 1

第一章           系統架構... 3

1.1           硬體構架圖... 3

1.2           組件構架圖... 4

第二章           技術選型與介紹... 5

2.1           開發環境... 5

2.2           數據源... 5

2.3           數據採集... 5

2.4           數據上傳服務... 6

2.5           消息中間件... 6

2.6           數據接收服務... 6

2.7           數據存儲... 6

2.8           數據介面... 7

2.9           Web業務系統... 7

2.10        手機移動終端App. 7

第三章           Demo的介紹... 8

3.1           目錄介紹... 8

3.2           Demo調試... 8

 

前言

    2000年以後,互聯網在中國的大地上如火如荼的發展,在這個行業競爭中比的是加速度。我清晰的記得《世界是平的》中有這樣一段話:在非洲,羚羊每天早上醒來時,它知道自己必須跑得比最快的獅子還快,否則就會被吃掉;獅子每天早上醒來時,它知道自己必須追上跑得最慢的羚羊,否則就會被餓死;不管你是獅子還是羚羊,當太陽升起時,你最好開始奔跑!我們奔跑的這10多年的時間里,互聯網技術帶動了各行各來的發展,同時也席卷了各行各來。

    2006年時,工業行業還在普遍使用電話線進行數據傳輸和遠程幫助。網路技術慢慢的在向各行各業傳導,工業行業也在發展,區域網、光纖乙太網、WIFI\3G\4G等已經應用很廣泛了。互聯網技術在推動製造業發展的同時,也帶動了眾多公司的與時俱進,升級技術、提供更好的服務。

    我們在思考,後互聯網時代將如何發展?將是互聯網與各行各業深度融合的過程,例如現在常被提及的物聯網,我認為它本質上是工業互聯網,是製造技術與互聯網技術無縫對接。不管是叫物聯網還是工業互聯網,未來物與物的交互、物與人的交互將無法避免。硬體與軟體的協同發展,更快的推動了這個進程,例如:智能晶元的發展、嵌入式操作系統的發展、智能感測器的發展等。

    大數據、分散式、雲計算等也在以驚人的速度發展,有些人可能認為這些東西離我們生活還比較遙遠。但是並非是這樣的,距離2006年只不過10年左右,現在的發展卻是以前你無法想象的,而這種加速度的發展方式,2年的發展可能是你過去10年的發展之和。不管這些技術現在是否能夠落地,但是這種趨勢是無法改變的。

    數據的流動可以變現,現金的流動可以增加GDP。技術的進步就是生產力的提升,將來組織結構和關係也勢必發生變化。不管是否懂技術技術、是否懂管理,思維方式不轉變肯定會被淘汰。

    下麵對物聯網和集成系統的解決方案的技術路線進行介紹,只對技術選型和系統流程,對於架構的演變以及技術哪個更好不做具體說明。只供參考!!!

第一章     系統架構

     架構圖這塊主要表達一個大概的結構化的意思,可以不太準確,希望大家能夠理解。作為一個系統來講還包括網路部署框架圖,根據應用場景和網路環境不一樣網路框架圖也不一樣,所以不在本文的討論範圍內。

1.1    硬體構架圖

 

1.2    組件構架圖

 

 

第二章     技術選型與介紹

文章不介紹代碼部分,在Demo事例中有完整的代碼和註釋,可以下載調試。

2.1    開發環境

開發語言:全部使用C#,配有少量的JS代碼。

開發工具:除App部分,所有組件都採用VS2012開發,App程式採用VS2015開發,VS2015是一個超級開發工具工廠,在Win10操作系統上開發IoT嵌入式程式,也沒有問題。

操作系統:Windows 8.1,用習慣了也不錯,聽說要停止服務了,不過還有人在使用XP呢,不必擔心。

2.2    數據源

    數據源也就是產生數據的東西,也有人把這塊統稱為感測器,但是我認為這個叫法不太準確,所以我一般把這塊統稱為數據源。

    數據源包括的內容很多,例如:各類感測器、大中小型設備、硬體電路、軟體組件等。各類數據源的通訊協議不同、通訊鏈路不同、通訊機制不同,在沒有統一標準的情況下,這部分的工作比重要。因為有了數據之後,你的業務系統才有應用的價值。

    數據源我是寫了一個模塊的小程式,包括串口通訊和網口通訊。至於通訊協議,請參見《C#通訊(串口和網路)框架的設計與實現(SuperIO)- 12.二次開發及應用》。

2.3    數據採集

     數據採集部分使用的是SuperIO框架,因為它支持串口和網口統一的插件式設備驅動開發,也就是說開發一個驅動可以支持串口和網口通訊。另外,可擴展性比較強,可以大大減小工作量。

     開發了一個驅動程式,在SuperIO平臺下增加兩個驅動實例,負責與數據源程式進行串口和網路通訊。

2.4    數據上傳服務

     數據上傳服務是在SuperIO平臺下開發的,可以繼承IAppService介面開發插件服務,並且掛載到SuperIO平臺下運行,設備驅動採集完數據後,可以通過介面傳遞到服務插件內,通過記憶體交互數據。如果涉及到數據完全性的數據交互,可以通過介質進行數據交互,例如:資料庫、文本文件等。

    數據上傳服務直接與消息中間件(ActiveMQ)進行交互,再由AcitveMQ進行消息轉發。數據上傳服務實際上是消息生產者的角色。

2.5    消息中間件

     消息中間件採用ActiveMQ,需要部署Java運行環境。可用的消息中間件比較多,例如:RabbitMQ、ZeroMQ等。

     根據應用場景不同,可以選擇的技術方案和技術路線也不一樣。消息中間件這塊也完全可以使用通訊組件來代替,例如:Netty和SuperSocket。

2.6    數據接收服務

     數據接收服務是在SuperIO平臺下開發的,可以繼承IAppService介面開發插件服務,並且掛載到SuperIO平臺下運行。

     數據接收服務直接與ActiveMQ進行交互,接收ActiveMQ轉發過來的消息,實際上是消息消費者的角色。

2.7    數據存儲

    數據存儲採用的是MongoDB,不太喜歡大而臃腫的東西,而且不需要ORM了,部署簡單,可以使用MongoVUE工具對資料庫進行管理。如果是大拿,可以直接cmd。

2.8    數據介面

    數據介面採用Web Api,符合RESTful風格的http協議,操作調用簡單、方便。拋棄了WebService的Soap協議,更沒有選擇WCF框架。

    這塊並沒有實現許可權、安全管理。

2.9    Web業務系統

    業務系統採用MVC框架,但是前端並沒有與後臺的控制器進行交互,而是與數據介面的WebAPI進行交互。前後端完全分離。

2.10     手機移動終端App

     手機移動端使用VS2015開發,使用Xamarin框架進行開發,這個框架支持跨平臺。Xamarin是個很不錯的東西,唯一的缺點就是需要付費,對於中國IT人員來講,這一點應該不是障礙。

第三章     Demo的介紹

3.1    目錄介紹

項目目錄介紹如下:

ClientService:上傳數據與交互組件。

DeviceDemo:設備驅動,負責採集數據。

DeviceExport:數據輸出組件,在Demo沒有使用。

DeviceShowUI:數據顯示視圖組件,負責顯示採集過來的數據信息。

FormTest:測試各部分的主工程。

ProtocolPackage:公用協議包。

ServerService:數據接收數據與交互組件。

SuperIO_App:移動APP端,需要VS2015打開。

SuperOPCClient:OPC客戶端組件。

SuperOPCServer:OPC服務端組件。

TestDevice:模擬客戶端測試程式。

WebAPI:WebAPI和Web業務端數據顯示。

3.2    Demo調試

 下載地址:http://pan.baidu.com/s/1pJ7lZWf

(1)    下載DEMO和工具

    下載SuperIO v2.2.7\SuperIO_Demo v2.rar;下載mongodb資料庫;下載ActiveMQ消息中間件。

(2)    啟動服務和程式

     啟動mongodb,mongodb-win32-x86_64-2008plus-3.0.3-1\start.bat,預設監聽埠為:2222。

     啟動ActiveMQ服務,apache-activemq-5.12.0\bin\win64\activemq.bat,需要JAVA運行環境。

     啟動SuperIO_Demo.sln解決方案,需要VS2012開發IDE,也可以轉成VS2015工程,重新編譯。

     啟動SuperIO_App.sln解決方案,需要VS2015開發IDE,如果使用VS自帶的模擬器,需要執行<adb connect 模擬器的IP>,才能把程式成功部署到模擬器,並且進行調試,否則VS工具一直處於部署階段。

(3)運行效果圖

 

(4)調試視頻

    youku視頻不是太清楚,請下載高清調試視頻,地址:http://pan.baidu.com/s/1pJ7lZWf中的【視頻演示】。

 

 

作者:唯笑志在

Email:[email protected]

QQ:504547114

.NET開發技術聯盟:54256083

文檔下載:http://pan.baidu.com/s/1pJ7lZWf

官方網址:http://www.bmpj.net


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

-Advertisement-
Play Games
更多相關文章
  • 1 #include"header_file.h" 2 using namespace std; 3 4 void swap(int a,int b) 5 { 6 int t; 7 t=a; 8 a=b; 9 b=t;10 }11 12 void quick_s...
  • 原文鏈接http://blog.csdn.net/joyhen/article/details/8500211最近在看委托,然後看到事件,以前一直很模糊,關於事件的觸發者和響應者的關聯。貼一個簡單的例子:1.新建一個類Control.csusingSystem;namespaceEventCompl...
  • 在今天的手機設備世界里,生活的節奏繼續加快,因此訪問你的網站的用戶的耐心也在漸漸失去。同時,我提供了非常多的特性,為了防止你的網站變得過時或者廉價,你必須跟上競爭對手。你想贏得訪問者的喝彩,但訪問者沒有在頁面停留足夠長的時間來載入頁面,不可能對頁面有很深的印象。這裡是導致網站性能緩慢和無法留住用戶的...
  • 1.局部變數的名稱要有意義,儘量用對應的英文命名,比如“用戶姓名”變數,不要用aa bb cc等來命名,而要使用userName。2.不要使用單個字母的變數,如i、n、x等。而要使用index、temp等。用於迴圈迭代的變數例外。3.應該使用Pascal命名法命名方法名、屬性名、類名和命名空間,且方...
  • 好了,前面所有的都是很簡單的例子,現在開始的是大型重構。對於大型重構來說,情況複雜多變,耗時也會很長,前面的簡單重構大多是在一個小時內可以完成,但是對於大型重構來說可能需要幾個月,甚至數年。如果是一個運行中的系統,重構起來只能每天一點點去慢慢重構。(恕我直言,在國內恐怕這樣的公司也很少。所以我們要自...
  • 描述剛剛使用EF,還沒搞明白,遇到下麵問題,記錄一下。都說EF好用,一直也沒用過,以前寫代碼都是ADO.NET,寫起來費時費力還沒什麼大進展,如果能把這些事簡化一下把精力放到邏輯或者更有用的地方豈不是更好。所以想使用EF。Code First,從字面的意思來看是先有代碼後有資料庫,通過Model來創...
  • 參考學習:第一篇:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html第二篇:http://www.jb51.net/article/50518.htm使用方法: 第一步:先引入jQuery與ajaxFileUpload插....
  • public partial class Form2 : Form { public Form2() { InitializeComponent(); } private Form1 jishiben; ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...