Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: .NET <--> ADS <--> SPS; sinnvolle Architektur

  1. #1
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Gemeinde!

    Ich bin Neuling in Sachen ADS-Kommunikation und möchte gerne einige Fragen an die Experten stellen.
    Es geht um die grungsätzliche Architektur der ADS-Kommunikation in einem VB.NET-Programm und des TwinCAT-Programms (CX1020).
    Ich versuche einen Fertigungsautomaten zu realisieren. Steuerung läuft in einem CX1020, jeweils 40 IOs, 3 Stepper und 3 Servoachsen, zusätzliche Saftyklemmmen. Dann nehme ich mal an 100 Variablen zur übertragen an den PC.
    Ich lehne mich an das Beckhoff-Beispielprogramm "Maschine" an in dem die Kommunikation eventgesteuert (Notification) erfolgt.

    Hier die (ersten) Fragen:
    1.)
    Ich denke es ist nicht sinnvoll einzelne Variablen über ADS zu übertragen
    Stattdessen könnt ich mir vorstellen Strukturen als Block zu übertragen.
    2)
    Ich könnte mir vorstellen die Strukturen so aufzubauen
    a) StrukturLesen_HohePriorität
    (z.B. Achspositionierung beendet, jetzt Aktion in .NET-Prog)
    b) StrukturLesen_GeringePriorität
    (z.B. Istpositionen nur zur Darstellung in Visu)
    c) Struktur_Schreiben
    3) gibt es einen Richtwert wieviel Information pro Struktur übertragen werden soll/kann. Ist es besser z.B. 10 "kleine" Strukturen zu übertragen oder eine "große" Struktur?
    4) gibt es irgendwo ein Beispielprojekt einer echt relisierten Anlage um deren Aufbau zu studieren und ggf. abzuspicken?

    Es fehlt mit im Moment einfach noch der Überblick.

    Vielen Dank!
    Zitieren Zitieren .NET <--> ADS <--> SPS; sinnvolle Architektur  

  2. #2
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Die ADS-Kommunikation belastet die SPS recht heftig und dafür hat die SPS auch einen extra Task.

    Unterscheide zwischen Variablen, die ständig ausgelesen werden müssen und solchen, wo es reicht, die z.B. nur einmla die Sekunde zu lesen.

  3. #3
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    ja genau...

    wenn es Zeitkritsche Werte gibt, die du z.B. alle 5ms brauchst (Aufzeichung oder so), dann leg alles in ein Array ab und lasse dir dann die Variable (Array) alle 5ms senden, nimmst es dann auseinander und fertig.

    Einzelne Variablen könnten eventuell zu spät bei dir ankommen. Einziger Trost dabei: Die Variablen werden dir mit Zeitstempel gesendet.

    Im Prinzip ist es egal ob du 1 Bit oder ein Array mit 1000 Real überträgst. Solange es "ein Paket" ist.

    Wichtig ist immer, die Verbindung ordentlich zu beenden (Händle).

    Strukturen lassen sich nicht so gut mit ADS mit dem OCX oder der dll behandeln.

    MfG CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

  4. #4
    twincatter ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Vielen Dank schon einmal!

    Ich hätte gerne Strukturen übertragen, habe es aber in Verbindung mit "tcClient.AddDeviceNotification" noch nicht geschafft. Strukturen zu übertragen wären meiner nach übersichtlicher und leichter erweiterbar.
    Wäre für Informationen wie dies funktioniert dankbar.

    Wird in der Praxis die eventgesteuerte Übertragung "OnNotification" verwendet oder ist die zyklische Übertragung besser? Ich denke bei der eventgesteuerten Übertragung tritt weniger Datenverkehr auf, bin aber bezüglich der Zuverlässigkeit unsicher. Kann es vorkommen, daß ein Event "verschlafen" wird?

    Außerdem habe ich seit 2 Tagen folgendes Verhalten
    Für die Ausführung des roten Codes (siehe unten) werden ca. 10 Sekunden benötigt, alle weitern Schritte werden praktisch unmittelbar ausgeführt. Bis vor ein paar Tagen wurde auch der erste Schritt schnell ausgeführt.
    Wie lange dauert es in der Regel bis AddDeviceNotifications durchgeführt sind?

    Vielen Dank!

    tcClient.Connect("172.16.5.60.1.1", 801)
    tcClient.Timeout = 20000
    symbolLoader = tcClient.CreateSymbolInfoLoader()
    Catch ex AsException
    MessageBox.Show(ex.Message)
    EndTry
    Try
    ' Initialisieren der Überwachung der SPS-Variablen
    ' Initializing the monitoring of the PLC variables
    hEngine = tcClient.AddDeviceNotification(".engine", dataStream, 0, 1, AdsTransMode.OnChange, 10, 0, DBNull.Value)
    hDeviceUp = tcClient.AddDeviceNotification(
    ".deviceUp", dataStream, 1, 1, AdsTransMode.OnChange, 10, 0, DBNull.Value)




  5. #5
    Registriert seit
    09.03.2011
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    zu 1) je schwächer der Prozessor desto weniger Kommunikation wäre eine solide Grundregel.

    zu 2a) Wenn von Achspositionierungen die Rede ist wird mit Sicherheit min. ein CX1010 bzw. CX5010 zum Einsatz kommen. Hier sollte genügend Rechenleistung vorhanden sein um sich keine Gedanke über die ADS-Kommunikation machen zu müssen.
    Fertigmeldungen bzw. Ereignisse sollten vielleicht als Notification angelegt werden um nicht permanent pollen zu müssen. So wird man zeitnah über eine Zustandsänderung informiert.

    zu 2b) Für den Anlagenstatus zur Visualisierung reicht es mMn aus eine Struktur alles 200ms zu lesen. Hier ist die Größe der Struktur weniger von Interesse.
    Der Einfachheit halber sollte man versuchen den Anlagenstatus ebenfalls über eine Notification abzurufen. Hierbei sollte vielleicht die cycleTime (AddDeviceNotification) vergrössert werden um nicht unnötig Events zu feuern.
    Sollte ADS-Kommunikationsaufwand zu groß werden kann ggbf. der Routerspeicher angepasst werden. Für 99% der Anwendungen ist dies aber nicht notwendig.

    zu 3) Ist einzig abhängig vom eingestellten Routerspeicher und der CPU-Leistung. Das ScopeView arbeitet ausschliesslich mit Notifications und sammelt Daten Zyklustreu ein.

    zu 4) Für alle Methoden gibt es Beispiele im InfoSys. Nur halt keine Fix-und-Fertig Lösung.

    Sofern in .Net programmiert wird sollte man vor jedem ADS Zugriff prüfen, ob der ADS-Router im Run-Mode ist und ob die ausgewählte Runtime immer noch im Run ist.

    Gruß

    MH

  6. #6
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 63 Danke für 62 Beiträge

    Standard

    Zitat Zitat von twincatter Beitrag anzeigen
    tcClient.Connect("172.16.5.60.1.1", 801)
    tcClient.Timeout = 20000
    symbolLoader = tcClient.CreateSymbolInfoLoader()
    Catch ex AsException
    MessageBox.Show(ex.Message)
    EndTry
    Try
    ' Initialisieren der Überwachung der SPS-Variablen
    ' Initializing the monitoring of the PLC variables
    hEngine = tcClient.AddDeviceNotification(".engine", dataStream, 0, 1, AdsTransMode.OnChange, 10, 0, DBNull.Value)
    hDeviceUp = tcClient.AddDeviceNotification(
    ".deviceUp", dataStream, 1, 1, AdsTransMode.OnChange, 10, 0, DBNull.Value)
    BÖSE BÖSE!!!
    Du hast die CycleTime auf 10ms gesetzt!! Das ist für eine Visualisierung viel zu hoch, es sollten 100ms oder ähnliches reichen.
    Der ganz dicke Fehler ist jedoch das MaxDelay auf 0 zu setzen. Hier solltest einen Wert wie 1s wählen!!
    Du hast die maximale Verzögerungszeit zwischen zwei Telegrammen auf 0ms gesetzt. Damit versucht der Server zu jedem Zeitpunkt eine neue Notification zu senden, sogar mehrmals pro Zyklus.

    Ich würde dir auch empfehlen die Methode ohne Offset und Length zu verwenden, dann werden die Daten automatisch an das Ende im Stream eingefügt.
    Geändert von Neals (10.03.2011 um 17:43 Uhr)

  7. #7
    twincatter ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    danke für die Tips.
    Ich hatte mich an ein original Beispiel von Beckhoff angelehnt.

    Zyklus und Delay-Time hatte ich 1:1 übernommen.

    http://infosys.beckhoff.com/index.ph...sample1.htm&id=

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.10.2011, 11:17
  2. Aufbau Bildfenster Architektur WinCC7.0
    Von Christian- im Forum HMI
    Antworten: 2
    Letzter Beitrag: 30.01.2011, 13:19
  3. [S7] Sinnvolle Nutzung aller Erstellersprachen
    Von LEDSsuck im Forum Programmierstrategien
    Antworten: 15
    Letzter Beitrag: 10.07.2010, 09:58
  4. Sinnvolle Kombination aus SCL/GRAPH?
    Von derbenny im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 10.12.2007, 13:30
  5. WinCC Server/Client Architektur
    Von comtec im Forum HMI
    Antworten: 7
    Letzter Beitrag: 29.03.2007, 07:01

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •