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

Ergebnis 1 bis 5 von 5

Thema: Twincat 3, ADS.dll Kommunikation funktioniert nicht

  1. #1
    Registriert seit
    26.07.2015
    Beiträge
    6
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    für die persönliche Weiterbildung beschäftige ich mich aktuell mit der Programmierung mit TwinCAT 3 (verwendete Version: 3.1.4018.5)

    Für ein persönliches Projekt möchte ich die TcAdsDll.dll verwenden, um eigene Programme in Visual C++ (VisualStudio2013, Update5) schreiben zu können, die mit TwinCAT über Ads kommunizieren.
    Dazu habe ich mich zunächst der Beckhoff eigenen Beispiele mit Visual-C++ angenommen.

    Bereits die Beispiele 2 und 3 bereiten mir dabei Probleme, die ich mir nicht erklären kann.

    Ich möchte in der PLC1 (Port851) das Merkerdoppelwort an der Adresse 0 beschreiben und lesen. Dazu habe ich dieses Merkerdoppelwort in der PLC angelegt (MerkerDoppelWort1 AT%MD0: DWORD und die PLC gestartet.
    Möchte ich nun mithilfe des Beispiels 2 dieses Merkerdoppelwort beschreiben (IDGroup 0x4020, IDOffset 0x0, Länge 0x4), kann ich die Änderung des Merkerdoppelworts in der PLC nicht sehen.
    Das angelegte Beispiel 2 läuft jedoch ohne Fehlermeldung durch. Komisch ist auch, dass ich mit Beispiel 3 die mit Beispiel 2 geschriebene Information lesen kann.
    Dementsprechend tippe ich, dass Beispiel 2 etwas in einen Adressbereich schreibt, der jedoch nichts mit der Adresse 0 zu tun hat, obwohl ich die Adresse eigentlich korrekt anspreche (IDGroup 0x4020, IDOffset 0x0, Länge 0x4).

    Versuche ich in der PLC über den FB "ADSREAD" das Merkerdoppelwort auszulesen, gelingt dies auch nicht. Ich kann wieder nur den mit Beispiel 2 geschriebenen Wert lesen.

    Ich bedanke mich schonmal für die Hilfe.

    Sollten noch weitere Informationen benötigt werden, lasst es mich wissen.

    Mit freundlichen Grüßen

    Redria

    EDIT:

    Habe jetzt herausgefunden, dass die Merkeradressen bei IndexOffset 0x10 beginnen. (D.h., "MerkerDoppeltWort1 AT %D0: DWORD;" besitzt die IndexGroup 0x4020 und den Indexoffset 0x10)
    Woran kann das liegen? Nach Beckhoff Infosys müssten die Merkeradresse bei IndexOffset 0x0 beginnen und dann hochzählen.
    Geändert von redria (26.07.2015 um 18:25 Uhr)
    Zitieren Zitieren Twincat 3, ADS.dll Kommunikation funktioniert nicht  

  2. #2
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Hallo,

    Du hast ein x64 System oder? Sicherlich daher der Offset...

    Viele Grüße

  3. Folgender Benutzer sagt Danke zu Fx64 für den nützlichen Beitrag:

    redria (29.07.2015)

  4. #3
    Registriert seit
    10.08.2012
    Beiträge
    245
    Danke
    0
    Erhielt 70 Danke für 66 Beiträge

    Standard

    Der Offset von 0x10 ist tatsächlich mit der 4018.5 auf x64 Systemen zu beobachten (x32-Systeme verhalten sich wie erwartet). Das soll/darf aber so nicht sein und wird laut Support korrigiert.

  5. Folgender Benutzer sagt Danke zu Guga für den nützlichen Beitrag:

    redria (29.07.2015)

  6. #4
    Registriert seit
    05.07.2013
    Beiträge
    74
    Danke
    12
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Es liegt mit ziemlicher Sicherheit am Alignment
    http://infosys.beckhoff.com/index.ph...72171.html&id=

    Ein "{attribute 'pack_mode' := '1'}" am Beginn derStruktur oder Variablendeklaration behebt das und stellt Kompatibilität zu TC2 her.
    MfG
    Das Leben ist eines der Härtesten

  7. Folgender Benutzer sagt Danke zu jensemann für den nützlichen Beitrag:

    redria (29.07.2015)

  8. #5
    redria ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.07.2015
    Beiträge
    6
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Fx64 Beitrag anzeigen
    Hallo,

    Du hast ein x64 System oder? Sicherlich daher der Offset...

    Viele Grüße
    Zitat Zitat von Guga Beitrag anzeigen
    Der Offset von 0x10 ist tatsächlich mit der 4018.5 auf x64 Systemen zu beobachten (x32-Systeme verhalten sich wie erwartet). Das soll/darf aber so nicht sein und wird laut Support korrigiert.
    In der Tat habe ich ein x64 System. Es ist beruhigend zu hören, dass es nicht an mir lag sondern als Bug bekannt ist.
    Gibt es zu TwinCAT irgendwo eine Liste mit "known issues" oder muss ich mich tatsächlich stets an den Support wenden, wenn ein Sachverhalt auftritt der nicht wie dokumentiert abläuft?

    Zitat Zitat von jensemann Beitrag anzeigen
    Es liegt mit ziemlicher Sicherheit am Alignment
    http://infosys.beckhoff.com/index.ph...72171.html&id=

    Ein "{attribute 'pack_mode' := '1'}" am Beginn derStruktur oder Variablendeklaration behebt das und stellt Kompatibilität zu TC2 her.
    MfG
    Dieses Pragma zu Beginn der Variablendeklaration hat mir nicht weitergeholfen, der Offset bleibt bestehen.
    Aber dennoch Danke!

    Mit freundlichen Grüßen

    redria

Ähnliche Themen

  1. TwinCat ADS Kommunikation: Bytes verschoben?
    Von LMDaniel999 im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 26.01.2015, 09:19
  2. Twincat 3 Ads Kommunikation Array of Strings
    Von Neuling2014 im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 02.09.2014, 13:05
  3. Antworten: 11
    Letzter Beitrag: 14.11.2013, 14:14
  4. TwinCAT ADS WCF Dienst startet nicht
    Von J_Kapkan im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 15.06.2013, 15:59
  5. Schrittmotor an KL2541 über Twincat.Ads.dll ansteuern
    Von tubias im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 01.10.2011, 10:59

Lesezeichen

Berechtigungen

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