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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: AGLink reagiert nicht mehr

  1. #1
    Registriert seit
    05.05.2011
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Cool


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    wir benutzen den neuen AGLink64. Ist alles auch soweit alles in Ordnung. Aber wir bereiten gerade ein neues Projekt vor. Kein Problem, die Anwendungen sind ferting und arbeiten
    auch ganz gut. Aber wenn die Anwendung längere Zeit, Zeit nicht genau bekannt, auf Handshake wartet (pollt) an Adresse 0 (Handshake), reagiert die Anwedung nicht mehr.

    Wir verwenden TCP/IP und die Verbindung wird bei Programmstart aufgebaut und bein Beenden wieder getrennt. Der Handshake sthet im DB, die Anwendung pollt auch auf die richtige Adresse,
    aber nichts passiert. Starte ich die Anwendung neu, geht alles.

    Hat jemand eine Idee dazu.

    Danke Torsten
    Zitieren Zitieren AGLink reagiert nicht mehr  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Brauche dazu mehr Infos:
    - welche Programmiersprache wird verwendet?
    - welche Version von ACCON-AGLink kommt genau zum Einsatz?
    - wie wird zugegriffen, synchron oder asynchron?
    - was bedeutet reagiert nicht mehr? Kommt keine Antwort? Kommt die falsche Antwort? Wir wird das geprüft?
    - gibt es ein wireshark-Log zum Fehler?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    ToSchum ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2011
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wir verwenden die aktuelle Win64 Version von AGLink 4.5. Als Programmiersprache kommt c# zum Einsatz. Reagiert nicht mehr bedeutet, dass das Programm seit dem Programmstart immer auf den Handshake reagiert und seinen Teil erfüllt. Steht das Programm nun eine Weile, Fördertechnik usw. wird überarbeitet, reagiert das Programm eben nicht mehr auf diesen Handshake, soll heissen,
    beim Debuggen kommen wir in die Funktion rein, es gibt keinen Fehler aber der Handshake(4) wird nicht erkannt sondern einen 0. Schauen wir in den DB rein steht dort eine 4. Starte ich das Programm neu wird dieser Handshake sofort erkannt. Die Connr ist gültig und alles stimmt. Ist hat komisch.

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Bitte restlichen Fragen auch noch beantworten und außerdem:
    - was bedeutet: das Programm steht eine Weile? Wird da nicht kommuniziert?
    - Welche Funktion wird zum Lesen verwendet?
    - Wie sieht der Rückgabewert der Funktion aus?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    ToSchum ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2011
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Morgen Herr Höhnle,
    ich dachte dass habe ich beschrieben. Aber gut:
    Das Programm läuft an einem PC oder Server außerhelb der Produktion und ist per Etehernet verbunden. Es pollt ca alle 500ms einen DB auf Adresse 0.0 und soll
    dort mit ReadDataBytes einen Handshake auslesen.
    Code:
    AGL4.WriteDataBytes(connnr, dbnr, start, bytes.Length, bytes, timeout);
    Rückgabe ist ein Integer.
    Das funktioniert auch sehr gut. Aber wenn die Linie lange gestanden hat, weil Material, Produkt oder Reparaturen durchgeführt werden, dann reagiert zwar der Timer weiter, aber die Funktion
    liefert immer 0 zurück, obwohl der erwartete Wert an der Adresse steht. Nach einem Neustart geht alles wie gewohnt. Die Netzwerkverbindung ist natürlich beständig.
    In Connr steht auch ein gültiger Wert. Ich verstehe es halt nicht.

    mfg
    Torsten
    Geändert von ToSchum (08.12.2011 um 08:52 Uhr)

  6. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Ich gehe davon aus, dass die Lese- und nicht die Schreibfunktion aufgerufen wird.
    - wird diese synchron oder asynchron aufgerufen? Welcher Timeoutwert wird beim Aufruf angegeben?
    - welchen Wert gibt diese Funktion zurück (ich weiß, dass der vom Typ Integer ist)? Mich interessiert nicht der Variablenwert sondern der Rückgabewert der Funktion.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #7
    ToSchum ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2011
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Der Result der Funktion ist 0. Der Timeout ist 30000. Da ich immer auf AGL4.AGL40_SUCCESS prüfe und er keinen Fehler meldet sollte das OK sein.
    Code:
    rv = AGL4.ReadDataBytes(connnr, dbnr, start, num, bytes, timeout);
    if (rv == AGL4.AGL40_SUCCESS)
            Data = AGL4.ReadInt16(ref bytes[0]);
                {
    Geändert von ToSchum (08.12.2011 um 09:06 Uhr)

  8. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Dann besten den ausführlichen Quellcodeausschnitt und idealerweise ein wireshark-log zu meinen Händen an support AT deltalogic.de schicken. Werde mir dann mal die Kommunikation ansehen.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  9. #9
    ToSchum ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2011
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Was ist in ein wireshark-log?

    Ein Timer führt alle 500 ms folgende Funtion aus:
    Code:
          Private Int32 LeseSPS()
         {
              if ((db.LeseHandshake() == EleConst.c_SPS_Daten_in_DB) && (IsBusy == false))
              {
                //Tuwas
              }
    
         }
    :cool:
    
            public Int32 LeseHandshake()
            {
                Int32 res = AGL4.AGL40_PARAMETER_ERROR;
                Int32 Data = 0;
                res = AGL4ReadInteger(SPSConNr, SPSTimeout, KommDB, 0, 2, out Data);
                if (res == AGL4.AGL40_SUCCESS)
                {
                    return Data;
                }
                return res;
            }

  10. #10
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    if ((db.LeseHandshake() == EleConst.c_SPS_Daten_in_DB) && (IsBusy == false)) { //Tuwas }
    und wie erkennst du die Fehlersituation wenn du den Fehlercode oder das Ergebnis zurückgibst?

    ich würder erstmal den Code aufräumen

    Code:
     Private Int32 LeseSPS()
    {
      Int32 data = 0;
      if( db.LeseHandshake(out data) == AGL4.AGL40_SUCCESS )
      {
         if( ( data == EleConst.c_SPS_Daten_in_DB ) && (IsBusy == false))
         {
         }
      }
      else
      {
         MessageBox.Show("LeseSPS -> db.LeseHandshake(out data) != AGL4.AGL40_SUCCESS");
      }
    }
    
    public Int32 LeseHandshake(out Int32 the_Data)
    {
      Int32 data=0;
      Int32 res = AGL4ReadInteger(SPSConNr, SPSTimeout, KommDB, 0, 2, out data);
      the_Data = data;
      return res;
    }
    Geändert von LowLevelMahn (08.12.2011 um 14:06 Uhr)

Ähnliche Themen

  1. CPU 315-2PN/DP reagiert nicht mehr auf PING
    Von rrauch im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 07.12.2010, 10:44
  2. Antworten: 13
    Letzter Beitrag: 22.10.2010, 22:22
  3. TP reagiert nicht mehr
    Von Lorenzi im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 21.01.2010, 22:08
  4. Antworten: 1
    Letzter Beitrag: 21.11.2008, 07:04
  5. WinCC 6.2 eingabefeld reagiert nicht
    Von mertens2 im Forum HMI
    Antworten: 10
    Letzter Beitrag: 05.08.2008, 06:58

Lesezeichen

Berechtigungen

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