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

Seite 14 von 21 ErsteErste ... 41213141516 ... LetzteLetzte
Ergebnis 131 bis 140 von 207

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

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok, den letzten Post hab ich verstanden, das davor eher nicht so ganz..
    war nur geschnatter unter Leuten die das Protokoll genau kennen

    Außerdem ist offenbar die Anzahl der Variablen, die pro Anfrage von der PLC bzw. NCK gelesen werden können beschränkt, und zwar auf max. 18 Variablen.
    1. falsche Annahme von dir

    die maximale Anzahl pro PDU-Auftrag(=kleinste Einheit) ergibt sich aus:
    1. der groesse einer Variablenanfrage(12 bytes bei PLC, 10 bytes bei NC)
    2. der groesse der Daten im Ergebnis (1 Byte bei bool, 4 Byte bei Real, usw.)
    d.h. es gibt normalerweise keine feste Grenze sonder ist von der Mischung als auch von den Variablen-Typen abhängig
    bei z.B. einem 220 Byte String geht nur eine Variable weil die PDU dann schon voll ist

    Wie mein letzter Test gezeigt hat, splittet AGLink daher Aufträge mit mehr als 18 Variablen in mehrere Anfragen, sowohl bei der PLC wie auch bei der NCK.
    Ausnahme: Die V / H Bereiche der NCK.
    Aber warum? Kontrolliert die Funktion, die im AGLink das Splitting bewirkt, welcher Bereich abgefragt wird?
    Ich bin davon ausgegangen, dass die Aufträge einfach "doof" in 18er Blöcke zerlegt werden, ohne zu berücksichtigen welche Variablen aus welchen Bereichen gelesen werden sollen??!
    2. falsche Annahme von dir (basierend auf deiner 1. falschen Annahme)

    von deinen Float32 Werten passen einfach 22 Stueck in eine Anfrage/und Ergebnis rein (daher splittet AGLink auch nicht) - aber die NC mag das trotzdem nicht
    AGLink macht kein falsches Splitting und auch keine bereichsbezogene "Optimierung" - der 0x8x-Block verhaelt sich einfach anders, moeglicherweise wird das direkt auf einen anderen
    Kontroler durchgeroutet (das könnte die Endianess-Verdrehung erklären) der das einfach nicht kann/mag/will (warum auch immer)

    Ich habe die Tests mal noch etwas erweitert, und teste auch das Verhalten im BlockM, Ergebnisse folgen.
    dann kann man vielleicht ein Schema erkennen

    gut wäre es wenn du eine ganz kleine Bool/Byte-Variable und eine grosse String-Variable, Size > 8, findet wuerdest - dann koennte man damit einen Anzahl- und Datenmengen-Test machen

    Wäre es dann möglich im AGLink Mechanismen zu integrieren, die dafür sorgen, dass die Maximalzahl von 18 Variablen auch bei V/H nicht überschritten,
    und keine unterschiedlichen Units in einer Anfrage gemischt werden?
    wenn es sich bei deinen Tests definitiv zeigt das die 0x8x-Bloecke durchweg das Verhalten zeigen kann man bestimmt mit den Deltalogics drueber reden - aber
    wenn es nur ein kleiner Spezialfall ist (der auch noch nicht ordentlich Beurteilt wurde) kann ich mir kaum vorstellen das sie ihren Produktivcode aendern
    (da hängen ja auch andere Kunden drann)

    Ich mache das momentan recht umständlich (zahlreiche verschachtelte Schleifen) in meinem Code,
    was sicher auch zu meinen schlechten Timing-Ergebnissen beiträgt...
    Das kann ich mir nicht vorstellen - wenn du einen Algorithmus schreibst der die Unit und Anzahl-Zerlegung bei diesen Bloecken macht bist
    du immer noch um ein vielfaches schneller als die NC sein kann

    du musst ja "nur" die 0x8x-Bloecke rausfiltern und deren Anzahl begrenzen - fuer die anderen Bloecke funktioniert die optimierung von AGLink ja richtig
    Geändert von LowLevelMahn (25.01.2016 um 12:53 Uhr)

  2. Folgender Benutzer sagt Danke zu LowLevelMahn für den nützlichen Beitrag:

    Rainer Hönle (25.01.2016)

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

    Standard

    Ok, danke euch für die Erklärungen, jetzt hab ich's glaub ich auch verstanden...
    Im Anhang die neuen Ergebnisse, bei den Float32 scheint die Grenze bei 19 Vars zu liegen, 19 funktioniert noch, 20 nicht mehr.
    Ich versuche mal zum Vergleich in den 0x8Y Bereichen noch Parameter zu finden, die keine Floats sind und diese zu lesen.

    Test_Ergebnisse7.zip

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

    Standard

    du hast die Tests entfernt wo CNC_Prog und RP0 auch mal unten und nicht oben stehen - dieser Test zeigt ein weiteres Problem auf

    Ich versuche mal zum Vergleich in den 0x8Y Bereichen noch Parameter zu finden, die keine Floats sind und diese zu lesen.
    Es reicht wenn du den Test mit einer Schleife (wie bei 50xRPA[0]) auf die selbe Variable machst - dann musst du weniger schreiben

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

    Standard

    Das sollten eigentlich die Tests 6.X sein, und 7.X sein, aber da bin ich wohl beim Kopieren durcheinander gekommen.
    Korrigiere ich gleich nochmal.

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

    Standard

    jetzt sollte auch nur noch die 83.07.00 NC (Spinner) fuer die Tests reichen - die meldet schon mal Fehler wo die andere einfach nur Müll macht - also nutzen wir das schon mal als bessere Eingrenzung (damit kann man dann den Algorithmus bauen)
    damit wir erstmal in der Lage sind zu verstehen was die Eingrenzungen sind müssen wir herausfinden wann AGL40_WRONG_KONTEXT kommt

    bei bestimmten Blöcken, Breichen, Unit-Vermischung, Variableanzahl usw. - genau die Linie finden damit man ein Testprogramm schreiben kann das Zugriffe erstmal validiert - daraus ergibt sich dann später der "bessere" Split-Algorithmus

    Test 02.1 verstoesst schonmal gegen die Info aus der Doku - keine Unit-Vermischung in H und V-Breich - oder?

    -keine Unit-Vermischung in V bzw. H Area
    (https://cache.industry.siemens.com/d...3_PL_de-DE.pdf) Seite 2-100 in Achtung-Block
    Bei den Bereichen V bzw. H dürfen nicht verschiedene logische Achsnummern in einem
    Auftrag zugeordnet werden (bei Nichteinhaltung: Error:= TRUE, State:= W#16#02).


    eNCK_AreaFeedDrive = 5, // V: Vorschubantrieb
    eNCK_AreaMainDrive = 6, // H: Hauptantrieb


    UND:
    Beim Lesen von kanalspezifischen Variablen dürfen in einem Auftrag (FB 2-Aufruf)
    über Addr1 bis Addr8 nur Variablen von genau einem Kanal adressiert werden.


    UND:
    In einem Auftrag können NC-Variablen innerhalb einer Gruppe kombiniert werden:
    Bereich
    Gruppe 1 C[1] N B A T
    Gruppe 2 C[2] N B A T
    Gruppe 3 V[.] H[.]

    Für Kanal 3 bis Kanal 10 gelten die gleichen Regeln, wie in der vorstehenden Tabelle in
    Gruppe 1 und Gruppe 2 beispielhaft dargestellt wurden.
    also keine channel unit vermischung, keine v, h unit vermischung - sonst geht erstmal alles, bis auf deine anzahl-problematik

    kannst du das ein wenig testen
    Geändert von LowLevelMahn (25.01.2016 um 14:55 Uhr)

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

    Standard

    So, habe den Test jetzt noch um eine Abfrage von Int8 (d.h. BuffLen =1 Byte), Int16 (d.h. BuffLen =2 Byte) und Int32 (d.h. BuffLen =4 Byte, wie auch die Float32 Vars, die ich bisher drin hatte) erweitert.
    Wie's aussieht, sind die Datentypen / längen egal, es geht nur um die Anzahl. 19 funktionieren, 20 nicht...

    Test_Ergebnisse8.zip

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

    Standard

    jetzt ist nur die Frage ob die Menge-Eingrenzung bei allen 0x8x-Bloecken (oder auch anderen) - oder allgemein im Feed und MainDrive so ist
    mit dem 8,16,32...bit Typen - die restlichen Tests kann du mal auskommentieren, dann sieht es schon besser aus mit integration in AGLink ... die Deltalogics lesen bestimmt mit
    Geändert von LowLevelMahn (25.01.2016 um 16:53 Uhr)

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

    Standard

    Update von der Main
    -habe die Tests in einen Funktion gesteckt
    -Benchmarking hinzugefügt
    -das Variablen-lesen mit Option alle-Einzeln, alle-als-Block und Smart(mein Splitting) erweitert
    -noch ein paar Area-Variablen hinzugefügt
    -deinen Test deaktiviert - bringt jetzt erstmal nichts den laufen zu lassen

    die SMART-Version sollte funktionieren

    wenn nicht probier mal die

    split_vh_blocks = true -> unique Blöcke in V,H
    split_vh_max_items = true -> max 19 vars in V, H

    zu setzen
    Angehängte Dateien Angehängte Dateien
    Geändert von LowLevelMahn (28.01.2016 um 11:12 Uhr)

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

    Standard

    Heute bin ich nicht am Institut, morgen wieder... Dann teste ich noch, wie sich die anderen 0x8Y Blöcke und der Block M bei der Anzahl von Variablen verhalten.
    Welche anderen Blöcke sind den für die Bereiche V/H noch relevant?
    Und hast du noch eine Vermutung was in den anderen 0x8er Blöcken stehen könnte? Ich hab noch nichts gefunden was Sinn machen könnte, habe aber auch keine Idee wonach ich suchen soll.

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    nochmal das Internet durchforstet

    in einem PDF hab ich diese nackte Liste gefunden

    area=5 ist FeedDrive
    Block sind genau die Bloecke S,M,0x80-0x85

    Code:
    area    block    name
    5    1A    /DriveVsa/Drive/R0035
    5    1A    /DriveVsa/Drive/R0078
    5    1A    /DriveVsa/Drive/R0081
    --
    5    80    /DriveVsa/CuPre/4955
    5    80    /DriveVsa/CuPre/4956
    5    80    /DriveVsa/CU/P0009
    5    80    /DriveVsa/CU/P0972
    5    80    /DriveVsa/CU/P0976
    5    80    /DriveVsa/CU/P0977
    5    80    /DriveVsa/CU/P2106
    5    80    /DriveVsa/CU/R3996
    5    80    /DriveVsa/CU/R3988
    5    80    /DriveVsa/CuPre/103
    5    80    /DriveVsa/CuPre/3954
    5    80    /DriveVsa/CuPre/4950
    5    80    /DriveVsa/CuPre/4951
    --
    5    81    /DriveVsa/CuLinkPre/4951
    5    81    /DriveVsa/CuLinkPre/4950
    5    81    /DriveVsa/CuLinkPre/3954
    5    81    /DriveVsa/CuLinkPre/103
    5    81    /DriveVsa/CuLinkPre/4956
    5    81    /DriveVsa/CuLinkPre/4955
    --
    5    82    /DriveVsa/DcPre/4955
    5    82    /DriveVsa/DcPre/4956
    5    82    /DriveVsa/DcPre/103
    5    82    /DriveVsa/DcPre/3954
    5    82    /DriveVsa/DcPre/4950
    5    82    /DriveVsa/DcPre/4951
    5    82    /DriveVsa/DC/P0046
    5    82    /DriveVsa/DC/P0899
    5    82    /DriveVsa/DC/P9725
    5    82    /DriveVsa/DC/P9726
    5    82    /DriveVsa/DC/P9727
    5    82    /DriveVsa/DC/R0020
    5    82    /DriveVsa/DC/R0021
    5    82    /DriveVsa/DC/R0026
    5    82    /DriveVsa/DC/R0027
    5    82    /DriveVsa/DC/R0033
    5    82    /DriveVsa/DC/R0035
    5    82    /DriveVsa/DC/R1300
    5    82    /DriveVsa/DC/R1438
    5    82    /DriveVsa/DC/R9728
    5    82    /DriveVsa/DC/R9798
    5    82    /DriveVsa/DC/R9898
    --
    5    83    /DriveVsa/LM/P0899
    5    83    /DriveVsa/LmPre/4951
    5    83    /DriveVsa/LmPre/4950
    5    83    /DriveVsa/LmPre/3954
    5    83    /DriveVsa/LmPre/103
    5    83    /DriveVsa/LmPre/4956
    5    83    /DriveVsa/LmPre/4955
    --
    5    84    /DriveVsa/TbPre/4955
    5    84    /DriveVsa/TbPre/4956
    5    84    /DriveVsa/TbPre/103
    5    84    /DriveVsa/TbPre/3954
    5    84    /DriveVsa/TbPre/4950
    5    84    /DriveVsa/TbPre/4951
    --
    5    85    /DriveVsa/TmPre/4951
    5    85    /DriveVsa/TmPre/4950
    5    85    /DriveVsa/TmPre/3954
    5    85    /DriveVsa/TmPre/103
    5    85    /DriveVsa/TmPre/4956
    5    85    /DriveVsa/TmPre/4955
    
    und
    
    name    area    block
    /acx/drv_cu_pre/103    5    0x80
    /acx/drv_dc_pre_assistent/9    5    0x80
    /acx/drv_cu_pre/3954    5    0x80
    ---
    /acx/drv_culink_pre/103    5    0x81
    /acx/drv_culink_pre/3954    5    0x81
    ---
    /acx/drv_dc_pre/3954    5    0x82
    /acx/drv_dc_pre/103    5    0x82
    /acx/drv_dc_pre_assistent/10    5    0x82
    /acx/drv_dc_pre_assistent/301    5    0x82
    ---
    /acx/drv_lm_pre/103    5    0x83
    /acx/drv_lm_pre/3954    5    0x83
    ---
    /acx/drv_tb_pre/103    5    0x84
    /acx/drv_tb_pre/3954    5    0x84
    ---
    /acx/drv_tm_pre/103    5    0x85
    /acx/drv_tm_pre/3954    5    0x85
    vielleicht kannst du ja was mit den kuerzeln Anfangen

    wobei du ja schon folgendes herausgefunden hast - mit bisschen Ideen von mir

    0x80 --> "Control-Unit-MD" im HMI <-- hier steht in der obigen Liste immer was mit "CU" passt also zu "Control Unit"
    0x81 ??? <-- hier stehen in der Liste immer was mit "CULink"??? (irgendwas mit Topologie??? CU-Link-Kommunikations- Objekt???)
    0x82 --> "Antriebs-MD" im HMI <-- hier steht in der Liste immer was mit "DC" (Drive Components?)
    0x83 --> "Einspeisungs-MD" im HMI<-- in der Liste mit "LM" (Line Module?)
    0x84 ??? <-- in der Liste mit "TB" (Terminal Board?)
    0x85 ??? <-- in der Liste mit "TM" (Terminal Module?)

    zu "TB" und "TM"
    https://cache.industry.siemens.com/d...B2_0306_de.pdf (2-1) (TB = Terminal Board (SINAMICS))
    Mit Hilfe des am Antriebsbus ankoppelbaren "NCU-Terminalblock" können weitere digitaleNCK-Ein-/Ausgänge sowie analoge NCK-Ein-/Ausgänge angeschlossen werden(nachfolgend als externe NCK-E/A-Peripherie bezeichnet).
    Der "NCU-Terminalblock" dient als Trägerbaugruppe für maximal 8 DP-KompaktAufsteckmodule.Je NCU können bis zu 2 "NCU-Terminalblöcke" angeschlossen werden.
    TM = Terminal Module (SINAMICS)
    Geändert von LowLevelMahn (28.01.2016 um 10:02 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
  •