| |
|
|
GDL | Hi,
ich werde immer wieder, und nicht nur hier in der Community, gefragt wie ich es mit der Schnittstelle so handhabe.
DA GIBT ES NICHTS BESONDERES.ICH NUTZE AUCH NUR ROLANDS BEFEHLE. Roland beschreibt es ja eh so gut.
Die meisten Fehler(wo ich half) waren :
1.)Durch fehlendes Nutzen der Handshakeleitungn schwamm immer eine RS232 planlos im Datenstrom. 2.) Dann gibt es Schnittstellen, die wenn die Gegenstelle Pin1 und Pin6 nicht über Pullupwiderstände nach plus verfügen, absolut nicht mögen. 3.) Bei mehreren Datenbytes wird sich nicht an die Sendereihenfolge gehalten. 4.) Bei einer gewissen Relaiskarte eines bekannten Herstellers werden die Rlaisnummern nicht binär vergeben. 5. Für Prüfbytes werden die XOR Verknüpfungen falsch erzeugt.
Zu 1.) Da ich auch keine HsLeitungen benutze, beginnt eine Mehrbyteübertragung bei mir immer mit einer 255. 255 = Pfiff an die RS232: Es werden neue zusammenhängende Bytes übertragen.Ab jetzt Daten einsortieren.
Zu 2.) Bei mir haben alle Rs232 an Pin1 und Pin6 je einen 2k2 Widerstand nach plus.
Zu 3.) Hier hilft nur das Studieren des Pflichtenheftes .
Zu 4.) nur für diese eine Art Relaisarte
Relais1 = 0 abgefallen (ab) Relais1 = 1 angezogen (an) Relais2 = 0 ab Relais2 = 2 an Relais3 = 0 ab Relais3 = 4 an Relais4 = 0 ab Relais4 = 8 an Relais5 = 0 ab Relais5 = 16 an Relais6 = 0 ab Relais6 = 32 an Relais7 = 0 ab Relais7 = 64 an Relais8 = 0 ab Relais8 = 128 an
Wie wir sehen werden nur die AN-Werte beücksichtigt. Eine 00100101 bedeutet das (von rechts gelesen) Relais1;Relais3 und Relais6 angezogen sind und der Rest abgefallen ist. Dieses Binärbyte dann nach Dezimal umrechnen und nach Pflichtenheft senden.
Zu 5.)
ganz einfach
fehlerbyte%=xor(byte1% ,byte2%) fehlerbyte%=xor(fehlerbyte%,byte3%) fehlerbyte%=xor(fehlerbyte%,byte4%)
Alles keine Zauberei Servus Georg |
|
|
| |
|
|