《物联网框架ServerSuperIO教程》-20.网络通讯控制器分组,提高交互的负载平衡能力。v3.6.6 版本发布

时间:2023-03-09 15:09:53
《物联网框架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的持久化