Can Adressierung von string

Coeschen
2008-03-11
2008-03-12
  • Coeschen - 2008-03-11

    Hallo werte Freunde von Codesys,

    ich habe mit Hilfe der Bibliothek serial_interface01.lib eine serielle Verbindung über die Klemme 750-650/003 000 hergestellt.Kann darüber erstmal zwischen 2 PC's kommunizieren.Der Zugriff auf den Wago controler erfolgt zur Zeit noch über die serielle Schnittstelle. Nun möchte ich den erhaltenen Receivestring = String(255) bzw. das ReceiveArray = ARRAY [0..255] OF BYTE über den CAN auf den PC schicken. Weiß jemand, wie ich diesen String als Can adressiere? Werde ihn zerlegen müssen, da can nur 8 Byte Nutzdaten hat.

    Bin für jede Hilfe dankbar. Am günstigsten wäre ein Auszug aus einem Quellcode. Bin ein Freund von Beispielen.

    Aufbau: PC1- (RS232-Schnittstelle 650/003)->Wagocontroler-(Can-Bus)->PC2

    Vielen Dank

    2008_03_11_SerialInterface.pro [28.29 KiB]

     
  • Erik Böhm - 2008-03-11

    Hallo

    Da hilft wohl nur Blockweises versenden. Also z.B. je Telegramm 7 Byte Nutzdaten und ein Byte als Adresse.

    Also z.B. '1,Byte1..7' -> '8,Byte8..14' usw.

    Und das ganze dann im Empfänger anhand der Adresse wieder zusammensetzen.

    Wenn die Strings länger als 255 werden, dann kannst du anstatt der Nummer des 1. Datenbytes auch eine Blocknummer benutzen.

    Also z.B.: '1,Byte1..7' -> '2,Byte8..14' usw.

    Dann hast du 7*255 Byte zur Verfügung.

    Mal davon abgesehen, dass das ganze reichlich umständlich ist...

    Warum nicht gleich von PC zu PC über CAN ? Muss der String im Wago bekannt sein, bzw verändert werden ?

    Gruss Erik

     
  • Coeschen - 2008-03-12

    Dank dir Erik für deine Antwort.

    Nun ja der 2. PC ist nur eine Übergangslösung. Er wird ersetzt durch eine Kraftstoffwaage, die nur ein seriellen Ausgang hat. Die direkte serielle Verbindung von PC1 zu Kraftstoffwaage ist auch nicht möglich, da der RS232 Ausgang von PC1 auf Antwortstelegramm (AK-Protokoll) wartet und so lange den CAN-Bus blockiert. Deshalb der Umweg über die Wago-Klemme.Also erst CAN dann seriell.

    Das ich den String zerlegen muss, war mir schon klar. Ich weiß halt nur nicht so recht wie?Bzw. wie ich die einzelnen Pakete als CAN adressiere und dann wieder zusammensetze?

    Grüsse Coeschen

     
  • Erik Böhm - 2008-03-12

    Mahlzeit

    Das heisst also, mein 1. Posting hat dir noch nicht weitergeholfen ?!

    Dann eben etwas ausführlicher.

    Zu versendender String: 'ABCDEFGHIJKLMNOPQ'

    Sender:

    1. Telegramm '1ABCDEFG'

    2. Telegramm '2HIJKLMN'

    3. Telegramm '3OPQ'

    Also Blockadresse + max. 7 Byte Daten

    Der Empfänger setzt den String dann anhand des 1.Bytes (als Block Adresse verwendet) wieder zusammen. z.B. mit CONCAT oder INSERT.

    Gruss

    Erik

     

Log in to post a comment.