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

Ergebnis 1 bis 9 von 9

Thema: String innerhalb eines FBs kopieren?

  1. #1
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    wie kann ich in einem 300er FB einen String kopieren von z.B. Input zu Static. Weder mit dem Befehl Move noch mit Blkmov hab ich es hinbekommen.

    Andi
    Zitieren Zitieren String innerhalb eines FBs kopieren?  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Nimm SCL, da geht es, ohne daß man wissen muß wie.

    Ist der Zielstring groß genug?
    Ist in dem Zielstring die Maximallänge eingetragen?

    Ich habe mit TIA nur sehr wenig Erfahrung. Ich weiß nicht, ob in dem TIA das MOVE auch Strings kopiert, doch bei BLKMOV mußt Du aufpassen, wenn Du einen kürzeren Quellstring in einen längeren Zielstring kopierst - BLKMOV überschreibt nämlich die Maximallänge des Zielstrings!. Eigentlich müßte man LEFT oder CONCAT gut zum Kopieren von Strings verwenden können.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    DJMetro ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Kleiner Fehler, ich möchte von Input zu InOut kopieren. Das funzt nicht. Von Input zu Static mit Blkmov geht. Warum zu InOut nicht?

    Andi

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Du könntest den Ausgabestring in OUT statt IN_OUT deklarieren.

    Strings an IN_OUT werden nicht direkt sondern per Referenz als 6-Byte-Pointer übergeben, BLKMOV benötigt aber einen 10-Byte-ANY. Du müßtest alternativ zunächst aus der an IN_OUT übergebenen Adresse einen ANY in TEMP zusammenbasteln, danach kannst Du BLKMOV mit dem TEMP-Any benutzen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    DJMetro ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.08.2006
    Ort
    Münsterland
    Beiträge
    262
    Danke
    10
    Erhielt 6 Danke für 4 Beiträge

    Standard

    Hi, versteh ich jetzt nicht ganz. Ich hab am Input einen String mit einer Länge von 10 Zeichen deklariert. Am InOut habe ich einen UDT wo unter anderem ebenfalls ein String mit 10 Zeichen Länge drin ist. Wie bekomm ich den dann jetzt da rüber?

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.708
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    wie es dir Harald schon zu erklären versuchte.
    Das Beste und Einfachste wäre, du nämest SCL - das willst du aber wohl nicht. Somit bleibt dir nur der schwierige Weg ...
    Wenn du an deinem IN_OUT einen UDT dan hast dann ändert sich an Haralds Aussage mit dem Pointer dadurch nichts. Du hast da (in Wirklichkeit) einen Pointer, der dir die Adresse angibt, wo der UDT in Wirklichkeit steht. Du mußt dir also die Adresse laden, auf die der Pointer zeigt und ab der Adresse dann die 10 Bytes des AMY-Pointers des UDT's. Jetzt müßtest du auf diese Adresse noch die Offset-Verschiebung draufaddieren, die der String innerhalb des UDT's hat. Nun hättest du den ANY-Pointer auf den du mittels Blockmove deinen IN-Strings verschieben kannst.

    Gruß
    Larry

  7. #7
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    wie es dir Harald schon zu erklären versuchte.
    Das Beste und Einfachste wäre, du nämest SCL - das willst du aber wohl nicht. Somit bleibt dir nur der schwierige Weg ...
    Wenn du an deinem IN_OUT einen UDT dan hast dann ändert sich an Haralds Aussage mit dem Pointer dadurch nichts. Du hast da (in Wirklichkeit) einen Pointer, der dir die Adresse angibt, wo der UDT in Wirklichkeit steht. Du mußt dir also die Adresse laden, auf die der Pointer zeigt und ab der Adresse dann die 10 Bytes des AMY-Pointers des UDT's. Jetzt müßtest du auf diese Adresse noch die Offset-Verschiebung draufaddieren, die der String innerhalb des UDT's hat. Nun hättest du den ANY-Pointer auf den du mittels Blockmove deinen IN-Strings verschieben kannst.

    Gruß
    Larry
    Was bin ich froh, dass ich Codesys, .NET und C# normaler weise benutzen darf. Da gibt es solche Probleme nicht.
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Herrlich kompliziert  

  8. #8
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Zitat Zitat von DJMetro Beitrag anzeigen
    Hallo zusammen,
    wie kann ich in einem 300er FB einen String kopieren von z.B. Input zu Static. Weder mit dem Befehl Move noch mit Blkmov hab ich es hinbekommen.

    Andi
    Hiermit macht man das:
    "Einfache Anweisungen"/"Verschieben"/"Fill"

    EDIT:
    Achso, von Input zu INOUT willst du kopieren... ...ja, das geht nicht.


    Gruß,

    Ottmar
    Geändert von Ottmar (18.09.2014 um 09:32 Uhr)

  9. #9
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Auch KOP FUP und AWL können Strings kopieren. Dazu nehme man S_COPY.

    'n schön' Tach auch
    HB

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 19.05.2014, 10:35
  2. Antworten: 2
    Letzter Beitrag: 19.09.2012, 10:39
  3. Antworten: 3
    Letzter Beitrag: 11.08.2010, 22:09
  4. FBs in andere Projekte kopieren???
    Von KNEFI im Forum PC- und Netzwerktechnik
    Antworten: 5
    Letzter Beitrag: 27.01.2010, 14:14
  5. Ein String kopieren in einen anderen String
    Von CanYouHelpMe im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.09.2008, 17:21

Lesezeichen

Berechtigungen

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