天天看點

《物聯網架構ServerSuperIO教程》-20.網絡通訊控制器分組,提高互動的負載平衡能力。v3.6.6 版本釋出

20.1     概述

     ServerSuperIO原來在網絡通訊模式下,隻有一個網絡控制器,在自控模式、并發模式和單例模式下時都是異步處理傳回的資料,并不會出現性能問題。但是在輪詢模式下,一個網絡控制器要按順序逐一操作裝置驅動的發送和接收,這樣就會出現輪詢周期過長,達不到讀取資料頻率的情況。

     為了解決上述問題,現在對裝置驅動的參數增加了網絡控制器分組功能,網絡控制器會根據裝置參數設定的分組名稱控制裝置驅動。例如輪詢模式下,有1000個裝置驅動,可以每10個裝置驅動設定相同的分組名稱,這10個裝置驅動受控于同一個網絡控制器,如果每間隔1s讀取一次資料,那麼每個裝置驅動的輪詢周期是10s鐘,其他網絡控制器類似。

20.2     網絡控制器示意圖

《物聯網架構ServerSuperIO教程》-20.網絡通訊控制器分組,提高互動的負載平衡能力。v3.6.6 版本釋出

      根據設定裝置驅動網絡參數的ControllerGroup,可以把裝置驅動配置設定到不同的網絡控制中運作,并且适用于輪詢、自控、并發和單例控制模式。

20.3     序列槽控制器示意圖

《物聯網架構ServerSuperIO教程》-20.網絡通訊控制器分組,提高互動的負載平衡能力。v3.6.6 版本釋出

         順便提一下序列槽控制器,通過設定裝置驅動的序列槽号決定被配置設定到不同的序列槽控制器,該控制器隻能适用于輪詢控制模式。

20.4     裝置驅動網絡控制器分組示例代碼

static void Main(string[] args)
        {
            string deviceID = "2";
            DeviceDriver dev3 = new DeviceDriver();
            dev3.DeviceParameter.DeviceName = "裝置2";
            dev3.DeviceParameter.DeviceAddr = 0;
            dev3.DeviceParameter.DeviceID = deviceID;
            dev3.DeviceParameter.DeviceCode = deviceID;
            dev3.DeviceDynamic.DeviceID = deviceID;
            dev3.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev3.DeviceParameter.NET.RemotePort = 9600;
            dev3.DeviceParameter.NET.ControllerGroup = "G2";
            dev3.CommunicateType = CommunicateType.NET;
            dev3.DeviceParameter.NET.WorkMode = WorkMode.TcpServer;
            dev3.Initialize(deviceID);
 
            deviceID = "3";
            DeviceDriver dev4 = new DeviceDriver();
            dev4.DeviceParameter.DeviceName = "裝置3";
            dev4.DeviceParameter.DeviceAddr = 0;
            dev4.DeviceParameter.DeviceID = deviceID;
            dev4.DeviceParameter.DeviceCode = deviceID;
            dev4.DeviceDynamic.DeviceID = deviceID;
            dev4.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev4.DeviceParameter.NET.RemotePort = 9600;
            dev4.DeviceParameter.NET.ControllerGroup = "G3";
            dev4.CommunicateType = CommunicateType.NET;
            dev4.Initialize(deviceID);

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "服務1",
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Loop,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = false,
                ClearSocketSession = true,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
            server.SocketConnected+=server_SocketConnected;
            server.SocketClosed+=server_SocketClosed;
            server.Start();
 
            server.AddDevice(dev3);
            server.AddDevice(dev4);
 
            while ("exit"==Console.ReadLine())
            {
                 server.Stop();
            }
        }
      

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 

下載下傳位址:

http://www.bmpj.net/thread-14-1-1.html 1.C#跨平台物聯網通訊架構ServerSuperIO(SSIO)介紹 《連載 | 物聯網架構ServerSuperIO教程》1.4種通訊模式機制。 《連載 | 物聯網架構ServerSuperIO教程》2.服務執行個體的配置參數說明 《連載 | 物聯網架構ServerSuperIO教程》- 3.裝置驅動介紹 《連載 | 物聯網架構ServerSuperIO教程》-4.如開發一套裝置驅動,同時支援序列槽和網絡通訊。 《連載 | 物聯網架構ServerSuperIO教程》- 5.輪詢通訊模式開發及注意事項。 《連載 | 物聯網架構ServerSuperIO教程》- 6.并發通訊模式開發及注意事項 《連載 | 物聯網架構ServerSuperIO教程》- 7.自控通訊模式開發及注意事項 《連載 | 物聯網架構ServerSuperIO教程》- 8.單例通訊模式開發及注意事項 《連載 | 物聯網架構ServerSuperIO教程》- 9. 協定過濾器,解決一包多發、粘包、備援資料 《連載 | 物聯網架構ServerSuperIO教程》- 10.持續傳輸大塊資料流的兩種方式(如:檔案) 《連載 | 物聯網架構ServerSuperIO教程》- 11.實作裝置(驅動)與裝置(驅動)互動和級聯控制。 《連載 | 物聯網架構ServerSuperIO教程》- 12.服務接口的開發,以及與雲端雙向互動 《連載 | 物聯網架構ServerSuperIO教程》- 13.自定義視圖顯示接口開發,滿足不同的顯示需求 《連載 | 物聯網架構ServerSuperIO教程》- 14.配制工具介紹,以及裝置驅動、視圖驅動、服務執行個體的挂載 《連載 | 物聯網架構ServerSuperIO教程》- 15.資料持久化接口的使用 《連載 | 物聯網架構ServerSuperIO教程》- 16.OPC Server的使用步驟 《連載 | 物聯網架構ServerSuperIO教程》- 17.支援實時資料庫,高并發儲存測點資料 《連載 | 物聯網架構ServerSuperIO教程》- 18.內建OPC Client,及使用步驟 《連載 | 物聯網架構ServerSuperIO教程》-19.裝置驅動和OPC Client支援mysql、oracle、sqlite、sqlserver的持久化

繼續閱讀