ServerSuperIO hatte ursprünglich nur einen Netzwerkcontroller im Netzwerkkommunikationsmodus. Im automatischen Modus, im gleichzeitigen Modus und im Singleton-Modus werden die zurückgegebenen Daten asynchron verarbeitet, und es stellt sich keine Frage der Leistungsverbesserung. Im Abfragemodus muss ein Netzwerkcontroller jedoch das Senden und Empfangen des Gerätetreibers nacheinander ausführen, sodass der Abfragezyklus möglicherweise zu lang ist und die Häufigkeit des Datenlesens nicht erreicht werden kann.
Um die oben genannten Probleme zu lösen, wurde den Gerätetreiberparametern jetzt die Netzwerkcontroller-Gruppierungsfunktion hinzugefügt. Der Netzwerkcontroller steuert den Gerätetreiber entsprechend dem durch die Geräteparameter festgelegten Gruppennamen. Im Abfragemodus gibt es beispielsweise 1000 Gerätetreiber, und für alle 10 Gerätetreiber kann derselbe Gruppenname festgelegt werden. Wenn die Daten alle 1 Sekunde gelesen werden, erfolgt die Abfrage Der Zyklus des Gerätetreibers beträgt 10 Sekunden, ähnlich wie bei anderen Netzwerkcontrollern.
Gemäß der ControllerGroup, die die Netzwerkparameter des Gerätetreibers festlegt, kann der Gerätetreiber für die Ausführung in verschiedenen Netzwerksteuerungen zugewiesen werden. und ist anwendbar Für Abfrage-, automatische Steuerungs-, Parallelitäts- und Singleton-Steuerungsmodi.
Übrigens kann der Serial-Port-Controller verschiedenen Serial-Port-Controllern zugewiesen werden, indem die serielle Port-Nummer des eingestellt wird Gerätetreiber. Dieser Controller kann nur im Polling-Steuerungsmodus verwendet werden.
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(); } }
Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial zur Gruppierung von Netzwerkkommunikations-Controllern zur Verbesserung der interaktiven Lastausgleichsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!