Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie Terminalsteuerungssensoren oder -geräte, um Schleifensteuerungsinstanzen zu bilden

Teilen Sie Terminalsteuerungssensoren oder -geräte, um Schleifensteuerungsinstanzen zu bilden

零下一度
零下一度Original
2017-06-23 15:58:221821Durchsuche

21.1 Übersicht

Die bisherige Arbeit von ServerSuperIO hat nach und nach den Grundstein für die Bildung einer Schleifensteuerung oder Kaskadensteuerung gelegt, beispielsweise die Entwicklung und Anwendung von Service-Anschlüssen und Gerätetreiber-Anschlüssen. Kurz gesagt, Befehle werden über verschiedene Formen an Steuergeräte (Treiber) oder Sensoren ausgegeben. Die Cloud steuert die Sensoren an Standorten oder Überwachungspunkten, die App oder andere Terminals steuern die Sensoren und steuert einen anderen Sensor basierend auf den vom Sensor erfassten Daten .

Im Folgenden wird beschrieben, wie die Cloud, App oder andere Terminals Sensorgeräte steuern (Sensorsteuerungssensoren sind ähnlich, siehe: 12. Entwicklung von Serviceschnittstellen und bidirektionale Interaktion mit der Cloud). Gemäß dem Kommunikationsprotokoll erfordert die strukturierte Lösung nicht zu viel Code, um die entsprechenden Funktionen auszuführen. Der Effekt ist wie folgt:

21.2 Strukturdiagramm

Das Steuerterminal initiiert einen Steuerbefehl und nutzt den ServerSuperIO Die Dienstschnittstelle zum Entwickeln eines einfachen Proxy-Dienstes interagiert mit dem Gerätetreiber über die IServiceConnector-Schnittstelle des Dienstanschlusses. Nach dem Empfang des Steuerbefehls sendet der Gerätetreiber ihn an das Gerät oder den Sensor, wartet auf die vom Steuerelement zurückgegebene Bestätigungsnachricht und führt ihn dann aus gibt es an das Steuerterminal zurück.

21.3 Kommunikationsprotokoll

Jemand hat gefragt, warum man nicht das MQTT-Protokoll verwenden kann, um mit den Protokollen verschiedener Geräte und Sensoren kompatibel zu sein. Aufgrund der tatsächlichen Situation in China ist es offensichtlich, dass das Niveau einheitlicher Standards nicht erreicht werden kann. Bei schlechten wirtschaftlichen Bedingungen ist es für Unternehmen unmöglich, in den Ersatz der ursprünglichen Hardwareausrüstung zu investieren. Es entspricht auch nicht dem Prinzip des ServerSuperIO-Designs, das darin besteht, Protokollunabhängigkeit zu erreichen, und jedes Standard- oder Nicht-Standard-Protokoll kann integriert werden. Wenn Sie einen Fluss überqueren möchten, müssen Sie die Brücke reparieren, die Seilbahn aufbauen und das Boot arrangieren ... Es liegt an Ihnen, zu entscheiden, wie Sie den Fluss überqueren.

Jemand hat gefragt, in welche Protokolle ServerSuperIO integriert ist? Die Antwort wurde oben gegeben, und ich möchte sagen, dass kein Framework alle Probleme lösen kann. Aus der entgegengesetzten Perspektive betrachtet, wie viel Wert möchte das Unternehmen dem Peer-to-Peer-Austausch geben, wenn ein Protokoll wie die Konfiguration hinzugefügt wird, sodass der Protokolltreiber jedem selbst überlassen bleibt.

Das von uns demonstrierte Protokoll lautet wie folgt:

21.4 Kontrollende

Das Kontrollende umfasst viele Arten: Die Cloud sendet Steuerbefehle Auf der unteren Ebene stellt eine App oder PC-Software eine Verbindung zum Dienst her, um Steuerbefehle usw. zu senden. Senden Sie Steuerbefehle wie unten gezeigt:

21.5 Proxy-Dienst (SSIO-Dienstschnittstelle)

Der Proxy-Dienst wird über die IService-Schnittstelle von ServerSuperIO implementiert und in verwendet Geerbte Klassen Der Singleton-Modus des ServerSuperIO-Frameworks selbst entwickelt den Proxy-Dienst. Der Code lautet wie folgt:

public override void StartService()
        {
            string devId = "ControlDeviceService";
            Driver dev = new Driver();
            dev.ReceiveRequestInfos += Dev_ReceiveRequestInfos;
            dev.DeviceParameter.DeviceName = "控制设备驱动器";
            dev.DeviceParameter.DeviceAddr = 0;
            dev.DeviceParameter.DeviceID = devId;
            dev.DeviceParameter.DeviceCode = "";
            dev.DeviceDynamic.DeviceID = devId;
            dev.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev.DeviceParameter.NET.RemotePort = 9600;
            dev.DeviceParameter.NET.ControllerGroup = "LocalGroup";
            dev.CommunicateType = CommunicateType.NET;
            dev.Initialize(devId);

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "控制设备服务",
                ListenPort=6670,
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Singleton,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = false,
                ClearSocketSession = false,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
            server.SocketConnected += server_SocketConnected;
            server.SocketClosed += server_SocketClosed;
            server.Start();

            server.AddDevice(dev);
        }

Das dev.ReceiveRequestInfos-Ereignis ist eine Ereignisschnittstelle, die der Steuertreiber von der RunDevice-Treiberklassenerweiterung im ServerSuperIO-Singleton-Modus erbt. Wenn es den Protokollstandards entspricht, werden die Dateninformationen zurückgesendet Die Communicate-Schnittstelle des Treibers. Das ReceiveRequestInfos-Ereignis. Die Dateninformationen werden an die Dev_ReceiveRequestInfos-Funktion des Proxy-Dienstes übergeben, der das Ereignis abonniert. Der Code ist wie folgt:

Die Dev_ReceiveRequestInfos-Funktion im Proxy-Dienst übergibt die Informationen entsprechend dem DeviceCode (addr) über die Service-Connector-Schnittstelle IServiceConnector an den entsprechenden Gerätetreiber . Der Code ist wie folgt:

Der Proxy-Dienst empfängt die Ergebnisinformationen, die vom Gerätetreiber über die Funktionsschnittstellen ServiceConnectorCallback und ServiceConnectorCallbackError zurückgegeben werden, wenn in der Mitte eine Ausnahme auftritt , wird der ServiceConnectorCallbackError aufgerufen. Wenn dies der Fall ist, wird die ServiceConnectorCallback-Funktion aufgerufen. Die ServiceConnectorCallback-Funktionsschnittstelle sendet das Ergebnis basierend auf der entsprechenden Beziehung zwischen dem aufgezeichneten Befehl und dem E/A-Kanal. Der ServiceConnectorCallback-Code sieht wie folgt aus:

Hier ist eines zu beachten: Der Gerätetreiber gibt die Bestätigungsinformationen des Steuerbefehls nicht innerhalb der angegebenen Zeit zurück Das heißt, der Sensor gibt keine entsprechenden Informationen zurück. In diesem Fall muss ein Timing-Erkennungsdienst hinzugefügt werden. Wenn nach dem Timeout keine Rückmeldung erfolgt, wird eine entsprechende Nachricht an die Steuerungsseite gesendet. Der Code ist wie folgt:

21.6 Gerätetreiber

Dieser Gerätetreiber entspricht dem Sensor und interagiert in Daten miteinander. Die RunServiceConnector-Schnittstelle des Gerätetreibers ist für den Empfang der Befehlsinformationen verantwortlich, die von der Proxy-Dienst-Funktion Dev_ReceiveRequestInfos (OnServiceConnector) übergeben werden. Der Code ist wie folgt:

Es gibt zwei Erklärungen: 1. Nach dem Empfang der Befehlsdaten können Sie die Dateninformationen sofort über die OnSendData-Funktion senden und verwenden Stellen Sie die IP ein, um den entsprechenden E/A-Kanal zu finden, der für den automatischen Steuerungsmodus geeignet ist. 2. Platzieren Sie die Befehlsdaten nach dem Empfang im Protokollcache this.Protocol.SendCache und warten Sie, bis der Befehl ausgegeben wird. Er ist für den Abfrage- und gleichzeitigen Modus geeignet.

Wenn der isAsyn-Parameter des zurückgegebenen Ergebnisobjekts ServiceConnectorCallbackResult wahr ist, bedeutet dies, dass die Ergebnisinformationen über den AsyncServiceConnectorCallback-Rückruf zurückgegeben werden. Dies bedeutet, dass Sie warten müssen, bis der Sensor Bestätigungsinformationen zurückgibt. und der Gerätetreiber empfängt sie, bevor er sie an den Agentendienst zurückgibt. Wenn sie falsch ist, wird die Beschreibung sofort an den Proxy-Dienst zurückgesendet, der für die Weitergabe von Dateninformationen geeignet ist, unabhängig davon, ob die Interaktion mit dem Sensor erfolgreich ist.

Sie können den Rückrufparameter in dieser Funktion vorübergehend speichern, darauf warten, dass der Sensor Bestätigungsinformationen zurückgibt, und dann in der Funktion „Kommunikation“ einen asynchronen Rückruf an den Proxy-Dienst auslösen. Der Code ist wie folgt:

21.7 Demo-Anweisungen

Öffnen Sie zwei TestDevice-Programme, eines als Gerätesensor und eines als Steuerungsende DeviceCode entsprechend sein; TestDeviceDriver Es ist ein Gerätetreiber und wird in die Dienstinstanz geladen. Ich verwende den TestSelfMain-Projekt und werde in TestSelfMain geladen. Einzelheiten entnehmen Sie bitte dem Projektcode: .

Hinweis: In Zukunft kann unsere Big-Data-Plattform über diesen Modus auch Steuerbefehle an die Site erteilen.


1. [Seriell] „Design und Implementierung des C#-Kommunikations-Frameworks (serielle Schnittstelle und Netzwerk)“

2. C# Cross Einführung in das Plattform-IoT-Kommunikationsframework ServerSuperIO (SSIO)

2. Die Gesamtlösung zum Aufbau eines Systems mit SuperIO (SIO) und dem plattformübergreifenden Open-Source-IoT-Framework ServerSuperIO (SSIO)

3.C# Industrial Things Technische Route für Vernetzung und integrierte Systemlösungen (Datenquelle, Datenerfassung, Daten-Upload und -Empfang, ActiveMQ, Mongodb, WebApi, mobile App)

5. ServerSuperIO Open-Source-Adresse:

Internet der Dinge und integrierte Technologie (.NET) QQ-Gruppe: 54256083

Download-Adresse:


1.C# Einführung in das plattformübergreifende IoT-Kommunikationsframework ServerSuperIO (SSIO)

„Serial | IoT Framework ServerSuperIO Tutorial“ 1.4 Kommunikationsmodusmechanismen.

"Seriell | Internet of Things Framework ServerSuperIO Tutorial" 2. Beschreibung der Konfigurationsparameter der Dienstinstanz

"Seriell | Internet of Things Framework ServerSuperIO Tutorial" - 3. Einführung in den Gerätetreiber

" Seriell|. Internet of Things Framework ServerSuperIO Tutorial“-4. Entwickeln Sie beispielsweise eine Reihe von Gerätetreibern, die sowohl die serielle Schnittstelle als auch die Netzwerkkommunikation unterstützen.

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 5. Entwicklung des Polling-Kommunikationsmodus und Vorsichtsmaßnahmen.

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 6. Entwicklung und Vorsichtsmaßnahmen für den gleichzeitigen Kommunikationsmodus

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 7. Entwicklung des autonomen Kommunikationsmodus und Vorsichtsmaßnahmen

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 8. Entwicklung und Vorsichtsmaßnahmen für den Singleton-Kommunikationsmodus

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 9. Protokollfilter zur Lösung von a Problem Mehrere Pakete, Sticky-Pakete, redundante Daten

"Serialisierung | Internet of Things Framework ServerSuperIO Tutorial" - 10. Zwei Möglichkeiten zur kontinuierlichen Übertragung großer Datenströme (z. B. Dateien)

"Serialisierung | „Internet of Things Framework ServerSuperIO Tutorial“ – 11. Implementieren Sie die Interaktion zwischen Gerät (Treiber) und Gerät (Treiber) sowie die Kaskadensteuerung.

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 12. Entwicklung von Serviceschnittstellen und bidirektionaler Interaktion mit der Cloud

"Serial | Internet of Things Framework ServerSuperIO Tutorial" - 13. Entwicklung einer benutzerdefinierten Ansichtsanzeigeschnittstelle, um unterschiedliche Anzeigeanforderungen zu erfüllen

„Serial | Internet of Things Framework ServerSuperIO Tutorial“ – 14. Einführung in Konfigurationstools und Mounten von Gerätetreibern, Ansichtstreibern und Dienstinstanzen

„Serial | Internet of Things Framework ServerSuperIO Tutorial“ – 15. Verwendung der Datenpersistenzschnittstelle

„Serial | Internet of Things Framework ServerSuperIO Tutorial“ – 16. Schritte zur Verwendung von OPC Server

„Serial | Internet of Things Framework ServerSuperIO Tutorial“ – 17. Unterstützung real -Zeitdatenbank, Messpunktdaten mit hoher Parallelität speichern

„Serial | Internet of Things Framework ServerSuperIO Tutorial“ – 18. Integrieren Sie den OPC-Client und die Verwendungsschritte

„Serial | Internet of Things Framework ServerSuperIO Tutorial“-19. Gerätetreiber und OPC-Client unterstützen die Persistenz von MySQL, Oracle, SQLite, SQLServer

„Internet of Things Framework ServerSuperIO Tutorial“-20 Netzwerkkommunikationscontroller werden gruppiert, um die interaktiven Lastausgleichsfunktionen zu verbessern. Version 3.6.6 veröffentlicht

Das obige ist der detaillierte Inhalt vonTeilen Sie Terminalsteuerungssensoren oder -geräte, um Schleifensteuerungsinstanzen zu bilden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn