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

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

Thema: Twincat 3 Ads Kommunikation Array of Strings

  1. #1
    Registriert seit
    29.08.2014
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    habe mich erst vor kurzem mit der Kommunikation über Twincat 3 ADS angefreundet.
    Der aktuelle Stand ist, dass das Auslesen und Schreiben von einfachen Datentypen wie Bool, Integer, ... alles wunderbar klappt.
    Das Auslesen von Arrays dagegen nicht

    Auf der Twincat Seite is folgendes implementiert:

    Code:
    LocationsGet : ARRAY [0..1] OF STRING := ['location1', 'location2'];
    Auf der C# Seite kann ich den Array zwar auslesen, aber mit vielen Sonderzeichen.


    Code:
    int numberOfElements = 80;
    int maxLengthOfNames = 20;
    String[] testArray = new String[numberOfElements];
    
    // AdsStream which gets the data
    AdsStream dataStream = new AdsStream(numberOfElements * maxLengthOfNames);
    BinaryReader binRead = new BinaryReader(dataStream,System.Text.Encoding.ASCII);
    
    int length = _tcAdsClient.Read(handle, dataStream);
    string text = new string(binRead.ReadChars(length));
    
    //read comlpete Array 
    int databytesRead = _tcAdsClient.Read(handle, dataStream);
    
    dataStream.Position = 0;
    Char[] testChar = binRead.ReadChars(length);
    Beide Varianten den Array zu lesen sind nicht sehr praktikabel.

    Kann ich mir jemand einen eleganteren Weg nennen?

    Vielen Dank für die Hilfe!

    Grüße
    Neuling 2014
    Zitieren Zitieren Twincat 3 Ads Kommunikation Array of Strings  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    es gibt entweder eine Methode, die dir den Variablen-Bereich gleich als .Net-String einliesst ... oder du mußt dir eine Methode dafür erstellen, die dein Byte-Array entsprechend umwandelt ...

    Gruß
    Larry

  3. #3
    Neuling2014 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.08.2014
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich

    Hallo Larry,

    was verstehst du unter Variablen-Bereich? Die Werte aus dem Array ...? also "Location1, Location2"?
    Wie sieht die entsprechende Methode aus?
    ... Schlimmstenfalls muß ich doch ein Byte-Array umwandeln ....

    Hmm... der nächste Schritt auf meiner Agenda wäre gewesen, einzelne Elemente des Arrays zu setzen. Ist das möglich?
    Alla
    Code:
    LocationsGet[10] = location10
    Grüße
    Neuling2014

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    ich kann dir hier nur auf .Net-Basis, nicht aber auf ADS-Basis helfen.
    Es erstaunt mich nur ein bißchen, dass dir SPS-Strings nicht gleich als .Net-Strings importiert werden können - also dass es keine Methode gibt, die dir das passende Objekt zurückliefert.
    Ein Array_of_String ist hier natürlich ein Sonderfall - müßte aber genauso gehen. Du fragst doch über ADS den Variablen-Namen an (auf den du dann einen Handle bekommst) ?

    Gruß
    Larry

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    ... ach ja - Variablen-Bereich bezog ich hier natürlich auf die SPS - in deinem Fall dann 'LocationsGet' ...

  6. #6
    Neuling2014 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.08.2014
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry,

    doch doch ... es ist möglich Strings über ADS auszulesen. Nur ein Array von Strings ist etwas problematisch.
    Zumindest habe ich keine besseren Methoden gefunden.... sagen wir es mal so.

    Ja genau. Über die ADS setze ich das handle für die zu lesende Variable.
    Und dann versuche ich die Werte auszulesen ... mit mäßigen Erfolg.

  7. #7
    Neuling2014 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.08.2014
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das Problem nachher ist nur, dass ich immer das komplette Array übergeben muss.
    Ist es möglich, einzelne Array Elemente per ADS an die plc zu senden? Das ist nachher der springende Punkt, warum ich eigentlich den ganzen Terz hier mache

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    ... dann muss ich doch noch einmal nachhaken :
    Wenn du dir einen Handle auf 'LocationsGet' setzt - was bekommst du dann zurück ?
    Ich könnte mir vorstellen, dass du dann ein Objekt erhältst, dass du auf dein .Net-String-Array umcasten kannst ...

  9. #9
    Neuling2014 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.08.2014
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ... hmm eigentlich nur einen Handle auf die Variable...
    wüßte jetzt nicht wie man den jetzt casten sollte ...

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... welche Methoden verwenden den das Handle und was geben die für einen Datentyp zurück ?

    Gruß
    Larry

Ähnliche Themen

  1. ADS DLL Byte in Array schreiben
    Von mkersch im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 26.05.2014, 11:43
  2. TwinCat ADS
    Von Bigchaqy im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 08.10.2011, 23:46
  3. Array von Strings beschreiben
    Von Fluffi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 30.04.2009, 16:48
  4. Twincat ads
    Von Simo im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 23.03.2009, 17:49
  5. Frage zu Elau Problem, ein Array in 2 Strings
    Von Trashman im Forum CODESYS und IEC61131
    Antworten: 14
    Letzter Beitrag: 21.09.2007, 17:54

Stichworte

Lesezeichen

Berechtigungen

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