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

Ergebnis 1 bis 2 von 2

Thema: String (Zeichenkette) Byteweise senden

  1. #1
    Registriert seit
    17.10.2012
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,
    Hab ein problem mit der Zeigeraritmetik von S7.

    Habe ein 4x20Zeichen großes Display, auf welches ich meldungen Anzeigen lassen will. Die Meldungen sind in einem Datenbaustein (DB6) vordefiniert und belegen jeweils 22Bytes im Speicher (Datentyp String [20] + 2Bytes Kopf)

    Das Display wird über Canopen angesteuert und mit SDO´s übertragen (Sende-Baustein). Leider muss ich hierfür jedes Byte(Zeichen) einzeln senden.

    Idee:
    Zeiger auf Anfangsaddresse der gewünschten Meldung( 0.0 , 22.0, 44.0 usw) und erstes Zeichen senden dann über eine Schleife den pointer um eins erhöhen und wieder senden.

    Frage:
    Wie schaut diese Schleife programmtechnisch aus?? Bekomme nur das erste Zeichen aber im nächsten durchlauf findet keine erhöhung des Zeigers statt


    AUF "Meldungen" // DB5
    L 0 // fehlerwort (z.B. 0...10)
    L 11
    *I
    L 2 // Offset wegen Kopf
    +I
    T #temp_x // Anfangsadresse
    T #temp_y // Speicherung für ende der Zeichenkette
    SLW 3
    LAR1

    n30: L DBB [AR1,P#0.0]
    T #Zeichen // Das gewünschte Zeichen zum Übertragen (1Byte)

    CALL "SDO Transfer" // Übertragung an Display mit Sende-Baustein
    Buchstabe:=#Zeichen
    Freigabe :="eins" // Anstoß zum senden

    L P#1.0 //erhöhen des pointers
    +AR1

    L #temp_x // Abfrage auf Zeichenende
    L 1
    +I
    T #temp_x

    L #temp_y
    L 20
    +I
    L #temp_x
    ==I
    sbbn n30

    Hoffe ihr könnt mir helfen
    Zitieren Zitieren String (Zeichenkette) Byteweise senden  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das geht so wahrscheinlich ohnehin nicht, du machst den gesamten Schleifendurchlauf in einem SPS-Zyklus. Ich vermute, der SDO-Transfer wird da auch nicht mitkommen. Das hängt aber davon ab, wie dder SDO-Transfer überhaupt arbeitet (synchron, asynchron, Start bei Flanke an Freigabe?, wie wird erkannt, dass das senden fertig ist ?????)
    Ansonsten macht es immer Sinn, das berechnete AR 1 in einem DWord zwischenzuspeichern und dann in diesem DWord den Pointer zu erhöhen, das DWord dann in AR1 zu laden und anschließend das DBB zu holen.

    Ich denke, abhängig von der arbeitsweise des SDO-Transfer, kannst du höchstens jeden 2. SPS-Zyklus ein neues Zeichen übertragen, um zwischendurch die Freigabe wieder auf False zu setzen und dann das nächste Zeichen zu schicken.

    PS. Noch was, nimm besser SLD 3
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. String ueber TCP verbindung senden
    Von Snoopy123123 im Forum Feldbusse
    Antworten: 27
    Letzter Beitrag: 31.05.2011, 10:47
  2. HEX String senden
    Von stef486 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 21.05.2010, 19:05
  3. String per Ethernet an Server senden
    Von Andy082 im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 19.05.2010, 20:55
  4. String über RS232 senden
    Von Syntaxfehler im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 07.02.2009, 17:10
  5. STRING an Drucker senden
    Von .nimrod im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 28.03.2007, 11:23

Lesezeichen

Berechtigungen

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