您好,欢迎访问一九零五行业门户网

网络通讯控制器分组,提高交互的负载平衡能力实例教程

20.1     概述     serversuperio原来在网络通讯模式下,只有一个网络控制器,在自控模式、并发模式和单例模式下时都是异步处理返回的数据,并不会出现性能问题。但是在轮询模式下,一个网络控制器要按顺序逐一操作设备驱动的发送和接收,这样就会出现轮询周期过长,达不到读取数据频率的情况。
     为了解决上述问题,现在对设备驱动的参数增加了网络控制器分组功能,网络控制器会根据设备参数设置的分组名称控制设备驱动。例如轮询模式下,有1000个设备驱动,可以每10个设备驱动设置相同的分组名称,这10个设备驱动受控于同一个网络控制器,如果每间隔1s读取一次数据,那么每个设备驱动的轮询周期是10s钟,其他网络控制器类似。
20.2     网络控制器示意图 
      根据设置设备驱动网络参数的controllergroup,可以把设备驱动分配到不同的网络控制中运行,并且适用于轮询、自控、并发和单例控制模式。
20.3     串口控制器示意图 
         顺便提一下串口控制器,通过设置设备驱动的串口号决定被分配到不同的串口控制器,该控制器只能适用于轮询控制模式。
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(); } }
以上就是网络通讯控制器分组,提高交互的负载平衡能力实例教程的详细内容。
其它类似信息

推荐信息