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

Ergebnis 1 bis 8 von 8

Thema: HEX String senden

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich bin noch relative unerfahren in der SPS Programmierung und habe ein kleines Problem.

    Ich will mit einer Wago 750 über die RS485 750-653 einen HEX String senden.

    Als Funktion benutze ich die SERIAL_INTERFACE mit der serial_interface*01.lib;

    Wenn ich den so deklariere SendString: STRING := '$AA'; dann kommt an der Gegenstelle folgendes an AA 0D 0A

    Wenn ich den so deklariere SendString: STRING := '$AA$AA'; dann kommt an der Gegenstelle folgendes an AA FD 0D 0A

    Wie kann ich eine String senden, der sich aus mehreren HEX Zeichen zusammensetzt?

    Gruß
    Stefan
    Zitieren Zitieren HEX String senden  

  2. #2
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Die Deklaration STRING := '$AA$AA' ist schon richtig. Ich vermute, dass bei der seriellen Kommunikation irgendwas anderes schief gelaufen ist. AA AA wird gesendet und AA FD kommt an. Vielleicht ist nur 1 Byte der IO-Daten zum COM-Port verknüpft? Oder stimmen die Kommunikationsparameter nicht überein (Baudrate, Handshake o.ä.)?

  3. #3
    Registriert seit
    02.01.2006
    Ort
    Leverkusen
    Beiträge
    51
    Danke
    0
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hi,

    wenn ich mich recht erinnere verwendet das Interface einen
    'Buffer of Bytes' und du must am Interfacebaustein die Anzahl der zu sendenden Bytes 'iBytes_To_Send' angeben.
    Vielleicht steht der Wert bei dir auf 1.

    Gruß Nitro
    Die Fähigkeit sprechen zu können macht nicht unbedingt intelligent. (Qui-Gon Jinn)

  4. #4
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard

    Hi


    Zeige doch mal das Code-Snipped.
    Karl

  5. #5
    Registriert seit
    16.11.2007
    Beiträge
    67
    Danke
    2
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Zitat Zitat von stef486 Beitrag anzeigen

    Wenn ich den so deklariere SendString: STRING := '$AA'; dann kommt an der Gegenstelle folgendes an AA 0D 0A

    Wenn ich den so deklariere SendString: STRING := '$AA$AA'; dann kommt an der Gegenstelle folgendes an AA FD 0D 0A
    AA OD OA -> AA / Zeilenrücklauf / Zeilenvorschub

    Offensichtlich wird das als Endeerkennung immer angehängt, läßt sich sicher irgendwo abstellen.
    Zitieren Zitieren Ist doch gar nicht so falsch  

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.311
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Zitat Zitat von Ingmar64 Beitrag anzeigen
    Ist doch gar nicht so falsch
    Wenn man richtig hinschaut, dann wird man sehen, daß nicht das "0D 0A" das Problem ist, sondern '$AA$AA' -> "AA FD 0D 0A".
    Zitat Zitat von Ingmar64 Beitrag anzeigen
    AA OD OA -> AA / Zeilenrücklauf / Zeilenvorschub
    Das ist auch "gar nicht so falsch" - für einen Menschen, der lesen kann. Eine Maschine erwartet da aber doch schon ein korrektes "0D 0A".

    Gruß
    Harald

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

    Standard

    Hi,

    habe heute eine frei konfigurierbare RS485 bekommen und habe etwas mit den Einstellungen gespielt. Hatte die falschen Schnittstelleneinstellungen.
    danke für eure Hilfe.

    Nun habe ich ein weiteres Problem ich muss für mein zu sendenden Code ne CRC bilden.
    In C habe ich das Programm geschrieben und es funktioniert auch, nun bekomme ich aber die passende Syntax für ST nicht zusammen. Vielleicht kann mir einer von euch dabei helfen?

    C Code---------------------------------------

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    unsigned int CRC_TAB[]={ /* CRC tab */
    0x0000, 0x1021, 0x2042, 0x3063……………..
    };
    unsigned char Check_crc(unsigned char *ptr, unsigned char len)
    {
    unsigned int crc;
    unsigned char dat;
    crc=0;
    while(len--!=0)
    {
    dat=crc>>8; /* */
    crc<<=8; /* */
    crc^=CRC_TAB[dat^*ptr]; /* */
    ptr++;
    }
    dat=crc;
    if((*ptr==(crc>>)&&(*(ptr+1)==dat))
    return(1);
    else
    return(0);
    }
    void Pack_crc(unsigned char *ptr, unsigned char len)
    {
    unsigned int crc;
    unsigned char dat;
    crc=0;
    while(len--!=0)
    {
    dat=crc>>8; /* */
    crc<<=8; /* */
    crc^=CRC_TAB[dat^*ptr]; /* */
    ptr++;
    }
    *ptr=crc>>8;
    ptr++;
    *ptr=crc;
    }
    }

  8. #8
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    www.oscat.de


    Da gibt es eine BIB mit Quellcode.


    CRC ist auch mit drinnen.
    Karl

Ähnliche Themen

  1. String ueber TCP verbindung senden
    Von Snoopy123123 im Forum Feldbusse
    Antworten: 27
    Letzter Beitrag: 31.05.2011, 10:47
  2. String per Ethernet an Server senden
    Von Andy082 im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 19.05.2010, 20:55
  3. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  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
  •