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

Seite 8 von 21 ErsteErste ... 67891018 ... LetzteLetzte
Ergebnis 71 bis 80 von 207

Thema: 840D sl NCU Variablen und Antriebsparameter lesen/schreiben

  1. #71
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Lad dir die aktuellste Wireshark Version herunter, die kennt die NCK-Datenabfragen.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

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

    Standard

    Liefern denn die Drive-Funktionen andere Werte als die NCK-Funktionen?
    Rainer Hönle
    DELTA LOGIC GmbH

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

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

    Standard

    @Rainer

    Liefern denn die Drive-Funktionen andere Werte als die NCK-Funktionen?
    ich bin mir nicht sicher ob die Drives-Parameter-Nummern unbedingt zu den NC-Maschinendatum-Nr passen

    am einfachsten ist wohl Wireshark zu starten, und dann direkt auf die HMI-Seite mit dem gewünschten MDs zu wechseln, Werte im HMI anschauen (und zum finden im Log aufschreiben) - dann kann der Rainer oder Thomas relativ schnell sagen welche Variablen es sind - oder was falsch läuft

  4. #74
    Registriert seit
    17.11.2015
    Beiträge
    50
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    So, anbei der Wireshark Mitschnitt...
    Abgefragt habe ich mithilfe der NCK_Samples.exe die Motortemperatur (r35) des Antriebs der X-Achse (Index bzw. Unit = 1) und im 2. File der Spindel (Index bzw. Unit = .

    Folgende Einstellungen:
    Area: eNCKFeedDrive
    Block: eNCK_BlockM
    Länge: 4 (Byte)
    Spalte: 35
    Zeile: 1
    Zeilenanzahl: 1
    Einheit: 1 bzw. 8
    DDE-Typ: eNCK_LE_Float32
    MDB-Typ: eNCK_MDB_Float 32

    Ergebnis war:
    Datenbytes: 0,0,0,0
    Wert: 0

    im Wireshark Trace finde ich
    Data: 41b5999c bzw. 419b3331
    Keine Ahnung was das genau bedeutet bzw. wie ich da eine brauchbare Zahl rausbekommen soll, vermutlich jedenfalls nicht 0...
    Das HMI Zeigt für die Motortemperatur 19,4 °C bzw. 22,7 °C an.

    Außerdem habe ich die selbe Abfrage für Unit 4 gemacht. In meiner Maschine gibt es keine Achse mit dem Index 4, die Abfrage liefert einen unbekannten Fehler, Siehe Trace.

    Könnte mir bitte noch einer von euch erklären was es mit den 2 Datentypen DDE / MDB auf sich hat? Bzw. für was ich die unterschiedlichen Endian-Kodierungen brauche? Danke für eure Hilfe!
    Angehängte Dateien Angehängte Dateien

  5. #75
    Registriert seit
    17.11.2015
    Beiträge
    50
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Nachtrag:
    dem Hex to Float converter auf dieser Seite: http://gregstoll.dyndns.org/~gregstoll/floattohex/
    zufolge entspricht 0x419b3331 = 19.39999 also den 19,4 °C
    und 0x41b5999c = 22.700005 also den 22,7 °C.
    Die Werte sind also da, nur werden sie nicht richtig dargestellt bzw. umgewandelt.

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

    Standard

    #1
    Die Werte sind also da, nur werden sie nicht richtig dargestellt bzw. umgewandelt.
    ja das passt so mit den Float-Werten

    #2

    bekommst du das gleiche Verhalten wie von NCK_Samples auch in deinem eigenen Code?
    Zeig mal ein Minimal-Source-Beispiel/Auszug deiner Verarbeitung


    #3
    Außerdem habe ich die selbe Abfrage für Unit 4 gemacht. In meiner Maschine gibt es keine Achse mit dem Index 4, die Abfrage liefert einen unbekannten Fehler, Siehe Trace.
    Was ist genau der AGLink-Fehlercode? im Protokoll sehe ich als Fehler-Class/Code (0x82/0x01) - sieht aber OK aus - es gibt keinen besonderen Fehlercode fuer nicht vorhanden - oder eher ein paar Varianten die auftauchen können

  7. #77
    Registriert seit
    17.11.2015
    Beiträge
    50
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    In meinem eigenen Programm hab ich's noch nicht ausprobiert, die muss ich erst noch anpassen.. werde ich gleich testen.
    Der Fehlercode lautet: "Unbekannte Fehlermeldung vom AG (bitte melden!)"

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

    Standard

    In meinem eigenen Programm hab ich's noch nicht ausprobiert, die muss ich erst noch anpassen.. werde ich gleich testen.
    könnte mir vorstellen das im NCK_Sample ein Fehler drinn ist - bitte auch einen kurze Auszug aus deinem Code (C, C++, C#?) damit man sehen
    kann ob du es richtig machst

    "Unbekannte Fehlermeldung vom AG (bitte melden!)"
    Dann gibt es dafür noch keinen spezifischen AGLink-Fehlercode - ist aber nicht schlimm

  9. #79
    Registriert seit
    17.11.2015
    Beiträge
    50
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich teste die Abfrage mit meinem Programm, kann aber noch etwas dauern, muss da noch ein paar Sachen anpassen.

  10. #80
    Registriert seit
    17.11.2015
    Beiträge
    50
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe es nun mit meinem eigenen Programm getestet, mit dem selben Ergebnis.
    Der Code ist:

    Code:
    NCKDataRW RWNCK[1];       // Array mit RWNCK Strukturen
    LPNCKDataRW pRWNCK;      // Pointer auf RWNCK Struktur
    
    byte *pOut[1];                     // Array mit Pointer auf den Byte Puffer
    pRWNCK = &RWNCK[1];       // Pointer auf RWNCK Struktur
    
    
    // RWNCK Struktur initialisieren
    pRWNCK->DDEVarType = eNCK_LE_Float32;
    pRWNCK->BuffLen =4; 
    pOut[1]= (byte*)calloc(pRWNCK->BuffLen, sizeof(byte));
    pRWNCK->Buff = pOut[1];
    pRWNCK->Area = eNCK_AreaFeedDrive;
    pRWNCK->Block = eNCK_BlockM;
    pRWNCK-> Unit = 1;
    pRWNCK-> Row = 35;
    pRWNCK-> Line = 1;
    pRWNCK-> LineCount = 1; 
    
    // NCK Abfragen 
    int RetValNCK = AGL_NCK_ReadMixEx (pParasNCK->ConnNr, RWNCK, 1,1,0);
    
    // CSV Datei für Ausgabe erstellen
    ofstream output;
    output.open(test.csv, ios::out | ios::app);
    
    if (RetValNCK == AGL40_SUCCESS)
    {
          output << &pOut[1];
    }
    else 
    {
          output << "ERROR";
    }
    Die Werte die in der CSV Datei stehen sind auch immer 0. Wobei ich mir hier nicht sicher bin, wie ich korrekter weise eine Float-Zahl aus dem Hex-Wert im Byte-Puffer bekommen kann...
    Ich habe die Abfragen mit Wireshark überprüft, die Anfragen werden richtig gesendet und es kommen auch wie vorher die richtigen Werte zurück, es sollte also am Puffer bzw. der Konvertierung liegen.


    Ein weiterer seltsamer Fehler: Wenn ich mehrere Antriebs-Variablen aus der NCK abfrage, bekomme ich für alle den Wert der 1. abgefragten Variable.
    Beispiel: Ich habe die Motortemperatur (r35) für die Achsen X (unit = 1) Y (unit = 2) und Z (unit = 3) abgefragt.

    Werden die Werte einzeln aus der Steuerung gelesen erhalte ich für alle 3 unterschiedliche Werte, die den im HMI angezeigten entsprechen (z.B. 19,4 °C für die X-Achse, 23,5°C für die Y-Achse und 24,8°C für die Z-Achse. Also prinzipiell sind die Werte vorhanden und können ausgelesen werden.
    Starte ich nun aber eine NCKReadMixEx Abfrage mit allen 3 auf einmal, bekomme ich für alle 3 Variablen den gleichen Wert, nämlich den ersten gelesenen (hier 19,4 der X-Achse).
    Dies konnte ich sowohl mit der NCK_samples.exe als auch meinem eigenen Code reproduzieren.

    Mehr noch: Wenn ich bei der NCKReadMixEx Abfrage zuerst einen ganz anderen Bereich lese (ich habe testweise den Namen des NC-Programms gelesen), bekomme ich im Wireshark Log bei den r35 Werten (allen 3) die Fehlermeldung: "Object does not exist" und garkeine Werte zurück...

    Siehe die Traces. Traces2.zip
    Geändert von st_rupp (08.01.2016 um 16:22 Uhr)

Ähnliche Themen

  1. OPC Variablen via C++ lesen und schreiben
    Von AkrapovicSPS im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 12.09.2013, 08:38
  2. Variablen schreiben und lesen aus TwinCat3-Projekt
    Von patzer103040 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 08.04.2013, 12:11
  3. C#-Variablen in TwinCAT lesen und Schreiben
    Von kcirtap im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 29.11.2010, 10:18
  4. GUDs lesen und schreiben 840D
    Von PG710 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.12.2008, 12:12
  5. Antworten: 0
    Letzter Beitrag: 08.11.2008, 08:36

Stichworte

Lesezeichen

Berechtigungen

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