Hinzufügen von SECS/GEM zu Ihrem Gerät oder Werkzeug

Dieser kurze Artikel zeigt, wie Sie SecsToHost.Net mit Visual C# in Ihre Anwendungssoftware integrieren können.

Das Hinzufügen von SECS/GEM-Funktionen zu Ihrer Gerätesteuerung muss nicht kompliziert sein. Mit SecsToHost.Net, Es bedeutet einfach 3 einfache Schritte (mit minimaler Programmierung), um dies in weniger als einer Stunde zu erreichen!

Schritt #1 - Dynamische Konfiguration

Verwenden Sie den Model Builder (im SDK enthalten), um Geräteparameter (wie Statusvariablen, diskrete Variablen oder Gerätekonstanten/-einstellungen), Ereignisse, Alarme, Remote-/Host-Befehle usw. hinzuzufügen oder zu definieren.

Sie können beliebig viele GEM-Datenelemente hinzufügen und diese Konfigurationen werden in der Datei EquipmentTemplate.xml gespeichert. (Der Dateiname kann geändert werden)

Um das Beispiel in diesem Artikel nachvollziehen zu können, müssen Sie diese GEM-Datenelemente definieren:

1.

StatusVariablen: "Druck" und "Temperatur" hinzufügen"

2.

CEIDs: "SensorDataChanged" hinzufügen"

3.

Alarme: "Alarm1" hinzufügen"

Alle GEM-Datenelement-IDs werden automatisch generiert.

Schritt #2 - Integrieren Sie SecsToHost.Net DLLs in Ihre Anwendung

Nachdem Sie in Schritt 1 alle erforderlichen GEM-Datenelemente definiert haben, fügen Sie diese DLLs zu Ihrer Projektreferenz hinzu.

Initialisieren Sie das GEMController-Objekt mit der in Schritt 1 erstellten EquipmentTemplate.xml.

				
					private GEMController gemController;

private void InitializeSecsToHost() {
    gemController = new GEMController();
    
    try {
        // Abonnieren Sie das Ereignis für den Übergang des Kommunikationsstatus
        gemController.CommunicationStateChanged += OnCommunicationStateChanged;
        
        // Abonnieren Sie das Ereignis für den Zustandswechsel der GEM-Steuerung
        gemController.ControlStateChanged += OnControlStateChanged;
        
        // Abonnieren des vom Host gesendeten GEM-Fernsteuerbefehls (S2F21, S2F41, S2F49)
        gemController.RemoteCommandIn += OnRemoteCommandIn;
        
        // Abonnieren des GEM-Rezept-Downloads Anfordern (S7F1)
        gemController.RecipeDownloadInquired += OnRecipeDownloadInquired;
        
        // Abonnieren des vom Host gesendeten GEM-Rezept-Downloads (S7F3)
        gemController.RecipeDownloadReceived += OnRecipeDownloadReceived;
        
        // Abonnieren der GEM-Rezept-Upload-Anforderung (S7F5)
        gemController.RecipeUploadRequested += OnRecipeUploadRequested;
        
        // Abonnieren der vom Host gesendeten GEM Terminalnachricht (S10F3).
        gemController.TerminalMessageReceived += OnTerminalMessageReceived;
        
        // GEM-Controller initialisieren
        gemController.Initialize("EquipmentTemplate.xml", @"C:\Temp");
    }
    catch (Exception ex) {
        Logger("Fehler: Initialisierung von SecsToHost.Net fehlgeschlagen");
    }
}
				
			

Die obigen Codes der Methode gemController.Initialize nehmen die Datei EquipmentTemplate.xml auf, um die GEM-Datenelemente zur Laufzeit zu laden.

Immer wenn sich der Parameterwert des Geräts ändert, rufen Sie die Methode gemController.SetAttribute auf, um seinen Wert zu aktualisieren.
Zum Beispiel, um die Parameter “Druck” und “Temperatur” zu aktualisieren:

				
					// Aktualisieren der SVID: Druck
gemController.SetAttribute("Druck", AttributeType.SV, "89");

// Aktualisieren der SVID: Temperatur
gemController.SetAttribute("Temperatur", AttributeType.SV, "122.8");
				
			
Zum Senden von Ereignisbenachrichtigungen an den Host:
				
					/// Auslösen der CEID: SensorDataChanged-Ereignisbenachrichtigung an den Host
gemController.SendCollectionEvent("SensorDataChanged");
				
			

Zum Auslösen eines Alarms oder zum Löschen einer Alarmmeldung an den Host:

				
					// ALID auslösen: Alarm1: Senden einer Benachrichtigung über den eingestellten Alarm an den Host
gemController.SetAlarm("Alarm1");

// ALID löschen: Alarm1: Senden einer Benachrichtigung zum Löschen des Alarms an den Host
gemController.ClearAlarm("Alarm1");
				
			
Um das Herunterladen von Rezepten vom Host zu empfangen, abonnieren Sie zunächst den RecipeDownloadReceived-Rückruf:
				
					// Abonnieren des vom Host gesendeten GEM-Rezept-Downloads (S7F3)
gemController.RecipeDownloadReceived += OnRecipeDownloadReceived;
				
			

Rufen Sie die Parameter recipeId und recipeBody im OnRecipeDownloadReceived-Ereignishandler ab:

				
					private void OnRecipeDownloadReceived(object sender, RecipeEventArgs e) {
    string recipeId = e.RecipeId;
    byte[] binPPBody = e.GetRecipeBody();
    
    // S7F4 ack an den Host senden.
    e.SetReply(ACKC7.Accepted);
}
				
			

Schritt #3 - Testen Sie Ihre GEM-Anwendung mit dem SWIFT-Simulator

SWIFT-Simulator ist ein weiteres Dienstprogramm, das mit dem SDK geliefert wird und zur Simulation des HOST verwendet werden kann.

Führen Sie den SWIFT-Simulator als HOST aus, um Ihre neu erstellte GEM-Anwendung zu testen:

Sobald Ihre GEM-Anwendung diese Codes aufruft:

				
					// Aktualisieren der SVID: Druck
gemController.SetAttribute("Druck", AttributeType.SV, "89");

// Aktualisieren der SVID: Temperatur
gemController.SetAttribute("Temperatur", AttributeType.SV, "122.8");
				
			

Senden Sie im SWIFT-Simulator den S1F3, um den Wert von “Druck (SVID: 1016)” und “Temperatur (SVID: 1017)” abzufragen, und GEMController antwortet Ihnen nahtlos mit dem S1F4.

Kategorien
Soziale Netzwerke

Unglaublich
und modern
Entwurf

Zeitgemäßes Theme, das speziell für Websites von Technologie- und Softwareentwicklungsunternehmen entwickelt wurde. Deon, ein neues Zeitalter des WP-Designs.