Step 7 840D sl NCU Variablen und Antriebsparameter lesen/schreiben

Ich kann nur das Projekt als "NC variable file" .var speichern oder eine AWL-Quelle generieren / an S7 übertragen.

Kannst Du mir bitte so eine Var-Datei und eine AWL-Quelle erzeugen und zumailen oder hier posten?
Sind dort die Variablen enthalten, die Du suchst? Oder hast Du diese noch nicht im NC-Var-Selektor gefunden? Es sind dort übrigens auch nicht alle Variablen enthalten.
Wenn Du Deine gesuchten Variablen im Operate oder HMI anzeigen lassen kannst, dann mach von der Seite einen Screenshot und parallel dazu eine wireshark-Aufzeichnung. Normalerweise kann ich Dir dann sagen, wie Du die NCK_DataRW-Struktur parametrieren musst.
 
Kannst Du mir bitte so eine Var-Datei und eine AWL-Quelle erzeugen und zumailen oder hier posten?
Sind dort die Variablen enthalten, die Du suchst? Oder hast Du diese noch nicht im NC-Var-Selektor gefunden? Es sind dort übrigens auch nicht alle Variablen enthalten.

Variablen sind im NC-Var-Selektor vorhanden. Hab Sie auch mit FB2 schon gelesen.

Anhang anzeigen Dateien.zip
 
und was fehlt dir dann noch?

Beispiel:

Code:
V1_M_r0035_35:
   STRUCT
   SYNTAX_ID : BYTE  := B#16#82;
   bereich_u_einheit : BYTE := B#16#A1;
   spalte : WORD := W#16#23;
   zeile : WORD := W#16#1;
   bausteintyp : BYTE := B#16#1A;
   ZEILENANZAHL : BYTE := B#16#1;
   typ : BYTE := B#16#8;
   laenge : BYTE := B#16#4;
   END_STRUCT ;

Für AGLink muss man bereich_u_einheit in Breich und Einheit zerlegen

aus bereich_u_einheit = 0xA1 =>0b10100001
Bitmaske: aaauuuuu
a = bit [5-7] Area ==> 0b101 => 5
aus der Datei AGL_Defines.h im enum NCK_Area ergibt AGLink.Area = eNCK_AreaFeedDrive
u = bit [0-4] Unit ==> 0b00001 => 1
ergibt die AGLink.Unit = 1

Spalte = 0x23 => AGLink.Column: 35
Zeile = 1 => AGLink.Row = 1

bausteintyp => 0x1A
aus der Datei AGL_Defines.h im enum NCK_Block ergibt AGLink.Block = eNCK_BlockM

typ == 0x8 => eNCK_MDB_Float32

damit kannst du jetzt mit API-Guide die Variable lesen

aber man sollte vielleicht noch einen AWL, NCVAr-DB oder var-Quellen-Parser anbieten...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Anhand der Vorlage hab ich mehre Variablen aus dem NC-Bereich Allgemeine MD und Kanal MD gelesen, was auch funktioniert hat.
Die Variable aus dem Beispiel kann ich leider nicht lesen. Liegt wohl an "AGLink.Area = eNCK_AreaFeedDrive".

Somit bin ich wieder am Anfang.

Aber dennoch danke an alle, die sinnvolle Kommentare geschrieben haben!
 
Anhand der Vorlage hab ich mehre Variablen aus dem NC-Bereich Allgemeine MD und Kanal MD gelesen, was auch funktioniert hat.


mit AGLink oder welchem Tool?

Die Variable aus dem Beispiel kann ich leider nicht lesen.
Liegt wohl an "
AGLink.Area = eNCK_AreaFeedDrive".


wie kommst du darauf das die Area falsch ist?

Somit bin ich wieder am Anfang.


ich dachte bis auf eine klappt alles?



 
Zuviel Werbung?
-> Hier kostenlos registrieren
mit AGLink oder welchem Tool?

Ich verwende im Moment das NCK-Beispiel vom AGLink.

wie kommst du darauf das die Area falsch ist?

Area ist nicht fasch, sonder in dieser Area bekomme ich keine Werte.

In "
eNCK_AreaNCK" und "eNCK_AreaChannel" kann ich auf die MDs zugreifen.
In der Area "
eNCK_AreaFeedDrive" bekomme ich jedoch keine Rückgabewerte und auch keinen Fehler.
Result = 0; alle Buffer= 0


ich dachte bis auf eine klappt alles?

Alle benötigten Werte liegen im Antrieb.
 
Dann mach bitte vier wireshark-Logs: Jeweils eines wenn Du die Masken aus den Hardcopys offen hast und jeweils eies, wenn Du die entsprechenden Daten in ACCON-AGLink eingetragen hast und damit die Werte abfrägst. Irgendwo muss ein Unterschied da sein. Und wenn es über das HMI angezeigt wird, dann sollten wir das auch können ;-).
 
Im Log habe ich folgende Parametrierung entdeckt:
Area=eNCK_AreaFeedDrive(=eNCK_AreaV),unit=0x02,Block=eNCK_Block0x82,column=35,row=1,count=1
Dort wird der Wert 21.925785 zuzrückgeliefert, was zu den angezeigten 22.2 passt.
Die Blöcke 0x80 bis 0x85 sind bei uns noch nicht genauer bekannt und wir vermuten Antriebsvariablen oder Antriebsparameter dahinter. Kannst Du (oder sonst einer hier) noch etwas genaueres dazu sagen? Das Lesen und Schreiben funktioniert auch ohne die Kenntnis, wir würden nur gerne die genaue Bedeutung der Blöcke korrekt auflisten.
 
Ist das Lesen und Schreiben bereits implementiert?


erst seit ein paar Jahren
funktioniert mit 840D PL, SL und VNCK - mein grösster Test waren bisher 3500 Variablen lesen/schreiben (aus vielen Areas/Blöcken)
...ich habe die 3500-Variablen damals auch aus Rainers Wireshark-Log Anaylseprogramm bekommen - die Liste die er mir geschickt hat
war lang - aber ALLE Variablen haben funktioniert - also bin ich mir nicht sicher was bei deinem 1-Variable-Szenario so besonders sein soll


Hab die Parameter an AGLink übergeben, Rückgabewert + Buffer waren dennoch 0.


irgendwas machst du falsch -> stell mal ein Wireshark-Log von deinem Zugriffstest hier rein - dann kann Rainer schnell sehen woran es liegt
aber bitte auf der gleichen NC und mit den obigen Variablen-Parametern (Area=eNCK_AreaFeedDrive(=eNCK_AreaV),unit=0x02,Block=eNCK_Block0x82,column=35,row=1,count=1)


Es gibt keine Zugriffs-Unterschiede bei den NC-Variablen - wenn du eine lesen kannst - kannst du alle lesen die vorhanden sind
wenn die Parameter falsch sind kommt ein AGLink-Fehler auch die NC selbst meldet Zugriffe auf nicht vorhandene/erlaubte Variablen als Fehler, oder auch wenn dein Buffer zu klein ist
könnte es sein das der Wert zum Zeitpunkt des lesens wirklich 0 ist?

Ist es die selbe NC?, prüfst du das Ergebnis von AGL4.NCK_ReadMixEx und den Inhalt von AGL4.NckDataRW.Result?

hast du eine kleine Testapplikation C++/C# - stell mal den Code hier rein
oder probier es mal im API-Guide (habe gerade gesehen leider geht das nicht - da fehlt noch die Auswahl für die 0x80-0x85-Blöcke) und zeig ein Screenshot vom Ergebnis
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
erst seit ein paar Jahren
funktioniert mit 840D PL, SL und VNCK - mein grösster Test waren bisher 3500 Variablen lesen/schreiben (aus vielen Areas/Blöcken)
...ich habe die 3500-Variablen damals auch aus Rainers Wireshark-Log Anaylseprogramm bekommen - die Liste die er mir geschickt hat
war lang - aber ALLE Variablen haben funktioniert - also bin ich mir nicht sicher was bei deinem 1-Variable-Szenario so besonders sein soll

Geht natürlich um die AreaFeedDrive und eNCK_Block0x82.
Möchte eigentlich mehre Variablen aus dem selben Bereich lesen, aber solange es mit der einen nicht klappt brauch ich es mit den anderen nicht versuchen.

Variablen aus dem Bereich eNCK_AreaNCK funktionieren.


irgendwas machst du falsch -> stell mal ein Wireshark-Log von deinem Zugriffstest hier rein - dann kann Rainer schnell sehen woran es liegt
aber bitte auf der gleichen NC und mit den obigen Variablen-Parametern (Area=eNCK_AreaFeedDrive(=eNCK_AreaV),unit=0x02,Block=eNCK_Block0x82,column=35,row=1,count=1)

im Anhang

Es gibt keine Zugriffs-Unterschiede bei den NC-Variablen - wenn du eine lesen kannst - kannst du alle lesen die vorhanden sind
wenn die Parameter falsch sind kommt ein AGLink-Fehler auch die NC selbst meldet Zugriffe auf nicht vorhandene/erlaubte Variablen als Fehler, oder auch wenn dein Buffer zu klein ist
könnte es sein das der Wert zum Zeitpunkt des lesens wirklich 0 ist?

Ist es die selbe NC?, prüfst du das Ergebnis von AGL4.NCK_ReadMixEx und den Inhalt von AGL4.NckDataRW.Result?

hast du eine kleine Testapplikation C++/C# - stell mal den Code hier rein
oder probier es mal im API-Guide (habe gerade gesehen leider geht das nicht - da fehlt noch die Auswahl für die 0x80-0x85-Blöcke) und zeig ein Screenshot vom Ergebnis

siehe Anhang
 

Anhänge

  • Motortemperatur r0035_20141112.zip
    96,5 KB · Aufrufe: 44
der Request im Wireshark-Log passt, die Antwort war fehlerfrei und Wert: 22.017012 - soweit sieht es schon mal gut aus - ich sehe DEN (nicht deinen :)) Fehler noch nicht wirklich
 
Zuletzt bearbeitet:
Zurück
Oben