這篇文章將為大家詳細(xì)講解有關(guān)ServerSuperIO分組提高交互負(fù)載平衡能力的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
目前創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、永安網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
ServerSuperIO原來(lái)在網(wǎng)絡(luò)通訊模式下,只有一個(gè)網(wǎng)絡(luò)控制器,在自控模式、并發(fā)模式和單例模式下時(shí)都是異步處理返回的數(shù)據(jù),并不會(huì)出現(xiàn)性能問(wèn)題。但是在輪詢模式下,一個(gè)網(wǎng)絡(luò)控制器要按順序逐一操作設(shè)備驅(qū)動(dòng)的發(fā)送和接收,這樣就會(huì)出現(xiàn)輪詢周期過(guò)長(zhǎng),達(dá)不到讀取數(shù)據(jù)頻率的情況。
為了解決上述問(wèn)題,現(xiàn)在對(duì)設(shè)備驅(qū)動(dòng)的參數(shù)增加了網(wǎng)絡(luò)控制器分組功能,網(wǎng)絡(luò)控制器會(huì)根據(jù)設(shè)備參數(shù)設(shè)置的分組名稱控制設(shè)備驅(qū)動(dòng)。例如輪詢模式下,有1000個(gè)設(shè)備驅(qū)動(dòng),可以每10個(gè)設(shè)備驅(qū)動(dòng)設(shè)置相同的分組名稱,這10個(gè)設(shè)備驅(qū)動(dòng)受控于同一個(gè)網(wǎng)絡(luò)控制器,如果每間隔1s讀取一次數(shù)據(jù),那么每個(gè)設(shè)備驅(qū)動(dòng)的輪詢周期是10s鐘,其他網(wǎng)絡(luò)控制器類似。
根據(jù)設(shè)置設(shè)備驅(qū)動(dòng)網(wǎng)絡(luò)參數(shù)的ControllerGroup,可以把設(shè)備驅(qū)動(dòng)分配到不同的網(wǎng)絡(luò)控制中運(yùn)行,并且適用于輪詢、自控、并發(fā)和單例控制模式。
順便提一下串口控制器,通過(guò)設(shè)置設(shè)備驅(qū)動(dòng)的串口號(hào)決定被分配到不同的串口控制器,該控制器只能適用于輪詢控制模式。
static void Main(string[] args) { string deviceID = "2"; DeviceDriver dev3 = new DeviceDriver(); dev3.DeviceParameter.DeviceName = "設(shè)備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 = "設(shè)備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 = "服務(wù)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(); } }
關(guān)于“ServerSuperIO分組提高交互負(fù)載平衡能力的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。