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

Ergebnis 1 bis 6 von 6

Thema: Beckhoff ADS-Protokoll

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hatte einmal über Probleme mit dem ADS-Protokoll berichtet, nämlich dass in der Soft-SPS TwinCAT Ressourcen nicht wieder freigegeben werden, wenn die Verbindung unerwartet gekappt wird. Mittlerweile glaube ich die Ursache erkannt zu haben. Ich habe auf Variable über den Namen zugegriffen:

    - Handle für Verbindung zur SPS holen
    - Hole ein Handle für jede Variable über das SPS-Handle und den Namen (String) der Variable.
    - Lese Variablen zyklisch

    Geht etwas schief muss man zuerst alle Variablen-Handle freigeben und dann die Verbindung, um dann alles neu wieder zu initialisieren.

    Ich möchte nun aber alle Variablen per direkter Adressierung erreichen, auch die, die nicht einem IO-Modul zugeordnet sind. Hat jemand eine Idee wie man die Adressen herausbekommt? Die IO-Variablen, die über den Systemmanager importiert werden, deren Adr. kann direkt im Sysmanager nachgelesen werden.

    Doc Funfrock
    Zitieren Zitieren Beckhoff ADS-Protokoll  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Um die Adressen zu wissen, habe ich für Variablen, die ich in der Kommunikation benötige, absolute Adressierung verwendet:
    VAR xyz WORD AT %M0020;
    VAR feld ARRAY [0..200] of REAL AT %M100;
    u.s.w.

  3. #3
    drfunfrock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Zitat Zitat von Zottel
    Um die Adressen zu wissen, habe ich für Variablen, die ich in der Kommunikation benötige, absolute Adressierung verwendet:
    VAR xyz WORD AT %M0020;
    VAR feld ARRAY [0..200] of REAL AT %M100;
    u.s.w.
    Ja ja, ich habe noch viel zu lernen. Es geht so einfach...
    Halt doch nicht, ich habe diverse Variablen in verschiedenen Funktionsblöcken (40 Stationen) zu lesen und hier die Adressen zu verteilen ist nicht so einfach, ohne hier das Programm unwartbar zu machen. Na ja, eigentlich ist es wartbar, aber ich hasse solche dafür anzufertigenden Dokus, die dann genau verzeichnet haben, wo welche Variable angelegt wurde.

    Doc Funfrock

  4. #4
    Registriert seit
    21.05.2004
    Beiträge
    418
    Danke
    31
    Erhielt 16 Danke für 8 Beiträge

    Standard

    Ich verwende zur Kommunikation auch den Merkerbereich.

    Somit auch den einfachen ADS Datenaustausch ohne Variablenname und CallBack...
    Die Variablen verwalte ich in einer Excel Liste. Da kann man schön die Definition zusammenbauen und erspart sich das Mitdenken mit den Nummer AT %Mxyz und sehr viel Tiparbeit.
    Da die Mxyz Nummer gerechnet wird, lässt sich auch einfach was einschieben oder rauswerfen.

    kurt

  5. #5
    drfunfrock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ich mittlerweile herausgefunden, dass man die Symbole mit allen Infos (Variablenname, Gruppe, Offset) in jedem Fall mit .Net einfach lesen kann. Damit sollte es auch möglich sein, eine Bibliothek unter Linux zu basteln, die zu jeder Variablen ein entsprechendes Symbol sucht und dann die Adresse entnimmt. Das gibt noch ein bischen Arbeit, aber das Problem ist prinzipiell gelöst. Schneller Hack:

    Code:
       ' Anmerkung: Me.txt ist eine Listbox
        Me.SymbolInfoColl = Me.SymLoader.GetSymbols(True)
    
        For Each sym As TcAdsSymbolInfo In Me.SymbolInfoColl
                Me.txt.Items.Add(sym.Name + " " + sym.IndexGroup.ToString+                    " "+sym.IndexOffset.ToString+" "+sym.Datatype.ToString)
            Next
        End Sub
    Doc Funfrock

  6. #6
    drfunfrock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kurt
    Ich verwende zur Kommunikation auch den Merkerbereich.

    Somit auch den einfachen ADS Datenaustausch ohne Variablenname und CallBack...
    Die Variablen verwalte ich in einer Excel Liste. Da kann man schön die Definition zusammenbauen und erspart sich das Mitdenken mit den Nummer AT %Mxyz und sehr viel Tiparbeit.
    Da die Mxyz Nummer gerechnet wird, lässt sich auch einfach was einschieben oder rauswerfen.

    kurt
    All diese Hilfmittel finde ich nicht akzeptabel. Ich bin hier in diesem Punkt etwas sehr eigen. Meinen Kode möchte ich - aus meiner Sicht - so sauber wie möglich halten. denn der umfasst einige tausend Zeilen und ich will keine Abhängigkeiten der Funktionsblöcke untereinander haben. Die Kommunikation über globale Variable soll, so weit wie möglich minimiert werden. Zustände und Nachrichten liegen so weit möglich immer in einem Funktionsblock.

    Weiter unten habe ich da evtl eine Lösung des Problems.

Ähnliche Themen

  1. Protokoll
    Von hoT im Forum HMI
    Antworten: 0
    Letzter Beitrag: 23.02.2011, 22:15
  2. S7-Protokoll
    Von Zapot im Forum Feldbusse
    Antworten: 8
    Letzter Beitrag: 21.08.2006, 11:17
  3. S7-Protokoll 2
    Von Zapot im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 21.08.2006, 09:37
  4. ISO-Protokoll
    Von carp&sps im Forum Feldbusse
    Antworten: 6
    Letzter Beitrag: 10.02.2006, 14:01
  5. MPI Protokoll
    Von arcis im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 17.01.2006, 11:54

Lesezeichen

Berechtigungen

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