Forum: Mikrocontroller und Digitale Elektronik Bendrich CAN-Bus-Einheit


von Klaus Franke (Gast)


Lesenswert?

Hallo Forum!

Ich habe versucht, einige CAN-Bus-Einheiten (8 Ein-/ 6 Ausgänge, 24V) in 
Betrieb zu nehmen. Die Protokoll-Parameter und die Geräte-Adresse sind 
mit Hilfe eines Kurzdatenblattes richtig eingestellt. Leider verhalten 
sich diese Module komplett passiv, reagieren auf keine CAN-Botschaften 
und senden auch beim Einschalten nichts auf dem CAN-Bus.
Einen Defekt der Module kann man wohl ausschließen, da sich mehrere 
genau gleich verhalten. Einzig die Status-LEDs zeigen Veränderung an den 
Eingängen richtig an.
Deshalb die Frage: Hat jemand schon mit solchen Modulen gearbeitet? 
Kennt jemand eine eventuelle Initialisierungs-Botschaft oder hat sogar 
eine Unterlage dazu?
Bin für jeden Tipp dankbar und stehe natürlich für Kopierkosten von 
Unterlagen zur Verfügung ;-)

Grüße ans Forum!

von Mathias O. (m-obi)


Lesenswert?

Hallo,

ich bin auch im Moment dabei. Kannst du mal das Datenblatt hier 
bereitstellen? Ich finde nämlich nix über Google.

von Klaus F. (klaus_franke)



Lesenswert?

Hallo Mathias!

Sorry für die späte Antwort, ich habe dein Posting erst jetzt gesehen 
(hab die Dinger gerade wieder auf'n Tisch ;-).

Mittlerweile sendet und empfängt das Modul, ist schon merkwürdig. Ich 
denke im Moment ist es besser, die Module im Auslieferungszustand 
(=CAN-Speed 250 kBaud) zu betreiben.

Die Module werden unter folgenden Adressen erreicht: Lesen = ($400 + 
ModNr*2), Schreiben = ($401 + ModNr*2).

Mein Monitor empfängt Nachrichten beim anlegen einer 24V-Spannung an den 
Eingängen und sendet daraufhin ein Frame mit zwei Bytes Länge. Das erste 
Byte ist wohl ein Status, genaue Belegung habe ich noch nicht. Im 
zweiten Byte steht der entsprechende Wert der Eingänge.

Das schreiben von Werten und somit das setzen der Ausgänge funktioniert 
noch nicht. Aber das kann ja jetzt nicht mehr sooooo schwer sein ;-)

Im Anhang findest du Bilder von der Kurzanleitung, per Mail geht das 
besser ;-)


Grüße vom Klaus!

von Klaus Franke (Gast)


Lesenswert?

Habe heute noch ein bissl mit dem Modul gespielt und es lassen sich auch 
schon ein paar Ausgänge setzen. Das ganze ist aber noch ein ziemlich 
diffus und bedarf noch einer genauen Untersuchung.

Ach ja, sorry ans Board für die "grossen" Bilder. Mein CAM war noch auf 
hochauflösend eingestellt schäm

Grüße vom Klaus :-)

von Mathias O. (m-obi)


Lesenswert?

Hallo Klaus.

Lieber spät als nie. Hab es auch gerade dann nochmal alles rausgekramt 
und aufgebaut. Bei mir funktioniert es auch jetzt. Hatte vorher immer 
mit 125kBit probiert. Aber mit 250 funktioniert es.
Beim einschalten kommt:
1
04 00 02 2F 00
Wenn ich am Eingang 2 Spannung anlege kommt:
1
04 00 02 20 02
Also ist 400, so wie du sagtest schon der CAN-Identifier + 
Knotenadresse.
Dannach ist der DLC, also 2 Bytes Nutzdaten. Und die 20 steht 
wahrscheinlich für Eingang. Die 02 ist dann natürlich die Zustände der 
Eingänge. In dem Fall ist halt nur Eingang 2 true.
Wie setzt man denn die Ausgänge? Was muss denn dann statt der 20 da 
stehen?

von Klaus Franke (Gast)


Lesenswert?

Hallo Mathias!

Hey, schön das es bei dir auch klappt. Dann sind wir wohl beide auf den 
selben doofen Bug der Module reingefallen :-( Hab auch etliche Stunden 
bei 125 kBit versucht und versucht :-((

Wenn dein Modul auf $400 sendet, dann schick dem Ding mal eine Nachricht 
auf $401, zwei Bytes Länge, als Datenbytes $01 und $10. Das sollte dann 
den Ausgang A5 aktivieren. Beim verarbeiten der Nachricht blinkt dann 
auch endlich die BSY-Led, das passiert auch nur auf der richtigen 
Adresse und bei der richtigen Nachrichten-Länge ;-)

Jetzt kommt das Merkwürdige: Der Kontakt A5 kommt auch bei anderen 
Bytefolgen ($10,$40 - $11,$30....) und bei anderen Bytefolgen werden an 
meinem Modul auch A1,A4 und A6 gesetzt. Da müssen wir noch ein bissl 
dran feilen ;-))

Falls dein Modul das nicht macht, noch ein kleiner Hinweis. Ich hatte 
zuerst keine Reaktionen von dem Ding bekommen. Dann habe ich mal 128 
Nachrichten mit hochzählendem ersten Datenbyte geschickt. Vielleicht hat 
das Modul dadurch einen Initialisierungsbefehl bekommen...

Frage nebenbei: Was hast du eigentlich mit dem Modul vor? Ich wollte ein 
wenig Haussteuerung damit machen und dafür wäre es ganz gut geeignet :-)

Grüße vom Klaus

von Klaus Franke (Gast)


Lesenswert?

Übrigens, ganz vergessen. Im ersten Byte der Antwort scheinen die Bits 
3-0 einen (Fehler)-Status zu enthalten. Diese Bits werden scheinbar bei 
fehlerhaften Übertragungen/Befehlen gesetzt. Mir kommt es so vor, als 
dauert die Verarbeitung von unrichtigen Befehlen deutlich länger. 
Vollkommen inakzeptabel ist auch, dass bei manchen Sequenzen erst mal 
alle Ausgänge gesetzt werden :-(

Ich hoffe nur, dass die Module kein SPS-Ähnlichen Funktionen enthalten. 
Mir würde es vollkommen reichen, wenn ich die Ausgänge einzeln setzten 
und löschen kann.

von Mathias O. (m-obi)


Lesenswert?

Hey,

ich werde das heute Abend mal ausprobieren mit dem Ausgänge setzen.
Hast du mal jeden Ausgang einzeln durchgetestet? Also 01, 02, 04, 08, 
10, 20, 40, 80, das wäre dann von A1 bis A8 durch.

Wir setzen die Module auf der Arbeit ein in alten Robotersteuerungen. 
Und da wir noch davon so viele haben und die alten Roboter langsam 
abrüsten, weil neue raufkommen, wollten wir die Module evtl. noch wo 
anders verwenden.

Wieso SPS-ähnliche Funktionen? Das ist doch nur ein E/A-Modul was CAN 
spricht. Die SPS bist doch dann du quasi mit deinem Rechner.

von Mathias O. (m-obi)


Lesenswert?

Ich meine bis A6, der hat ja nur 6 Ausgänge.
Hab mal getestet mit
1
04 01 02 01 10
Aber da blinkt nur die BSY. Kein Asugang geht an.

von Mathias O. (m-obi)


Lesenswert?

Ich schätze mal ich häng noch im Pre-Operational fest und müsste ihn 
eigentlich mit Start_Remote_Node sozusagen in Operational schalten. 
Sowie man das z.B. bei Beckhoff (BK51x0) macht.

von Klaus Franke (Gast)


Lesenswert?

Shit! Das ist net schön :-( Dann wird wohl doch ein Aktivierungsbefehl 
erforderlich sein. Bei mir ging heute auch nix mehr mit schreiben, bis 
ich wieder die Hochzähl-Sequenz im ersten Byte (128 mal, jeweils +1) zum 
Modul geschickt habe. Danach wird nicht mehr A5 oder A1+A3+A4 gesetzt, 
sondern A3. Ich vermute, da müssen noch viele Kombinationen getestet 
werden, bevor wir die richtigen finden...

Hey, ihr habt die Dinger in der Firma laufen? Und du beschäftigst dich 
auch Zuhause damit?! Cool! Da scheint jemanden der Job aber richtig Spaß 
zu machen, was ;-))

Gibbet den in der Firma keine Unterlagen zu dem Modul? Sonst schlag doch 
mal im Archiv mit einem leckeren Stück Kuchen auf :-))))

Grüße vom Klaus

von Klaus Franke (Gast)


Angehängte Dateien:

Lesenswert?

So sieht es hier aus (manchmal) ;-)

von Mathias O. (m-obi)


Lesenswert?

Archiv???? Die Unterlagen wären bei uns in der Abteilung. Aber wir haben 
nix mehr davon. Und wenn, Protokollbeschreibungen wären sowieso nicht 
dabei. Mein Kollege hat schonmal mit dem Herrn Bendrich telefoniert. 
Aber der rückt nix raus. Ich hab nur zu Hause Zeit dafür, die Dinger zum 
laufen zu bringen.
Aber das stimmt schon Hobby=Arbeit.
Wir haben auf der Arbeit auch noch die Beckhoff-Module. Die sind ein 
wenig mehr Anwenderfreundlicher :).

von Klaus Franke (Gast)


Lesenswert?

Grrrr, und dabei könnte alles soooooo einfach sein :-((

Aber ok, was nicht is, dass is nich ;-)

Du muss dir unbedingt mal ansehen, was mit folgenden Sequenzen passiert:

Ich sende 32 mal 04 08 rüber, wobei ich bei jedem Durchlauf das erste 
Byte um den Wert +1 erhöhe, dann geht Ausgang A4 an (nach der Denkphase 
von ca. 3 Sekunden. in welche mehrere Ausgänge aktiv werden.

Ach Quatsch, ich schreib's lieber mal als Tabelle (Prinzip wie oben):

32*  04 08 setzt A4
     +1
32*  04 04 setzt A3 (ab dem zweiten Mal aber A5)
     +1
32*  04 10 löscht alle Ausgänge
     +1
32*  04 11 setzt A6 (danach abwechselnd A1 oder A6)

Im Moment erschließt sich mir darin noch keine umfassende 
Regelmäßigkeit...

von Mathias O. (m-obi)


Lesenswert?

Wann genau bei den 32 Läufen passiert denn was?
Bei deinen Bytefolgen passiert bei mir nix.
Aber ich mal was getestet.
Wenn eine Nachricht falsch ist, kommt anscheinend dies hier
1
04 00 02 2F 00
Ich hab dann mal dies gesendet
1
04 01 02 1E 08
da kam dann als Antwort
1
04 00 02 3E C2

von Klaus Franke (Gast)


Lesenswert?

Also wann da was passiert, kann ich dir so nicht sagen. Ich habe es mit 
verschiedenen Werten für die Anzahl der Durchläufe versucht (32, 16, 8), 
selbst dabei kommt teilweise ein unterschiedliches Verhalten heraus.

Ich versuche die Tabelle mal zu vervollständigen, damit jeder Ausgang 
mal alleine zu setzen ist. In meiner Vorstellung brauche ich sechs Bits 
für den Zustand der Pins und sechs Bits für eine Maske, welches Bit 
gerade verändert (gesetzt oder gelöscht) werden soll.
Was mich sehr stört, ist das während der Denkphase des Moduls mehrere 
Ausgänge eingeschaltet werden. Das braucht ja wohl niemand :-((

Hoffentlich haben wir es bei den Dingern nicht mit einem Zustandsautomat 
zu tun. Da gebe es noch eine Menge Möglichkeiten mehr :-( Ich überlege 
schon, sich vielleicht mal an die Firmware der Module heran zu machen. 
Das könnte ev. sogar zielführender sein...

von Mathias O. (m-obi)


Lesenswert?

Ich meine mich erinnern zu können, dass da drin ein PIC rumwerkelt. Und 
ich denk mal das Programm Fuse-geschützt.
In einem CAN-Device ist normalerweise ein Zustandsautomat enthalten. 
Aber der sollte nur zwischen Initialisierung, Pre-Operational, 
Operational und Stopped umherschalten. Die Ausgänge werden mit einer 
Bitmaske geschaltet, wahrscheinlich im 2 Byte der Nutzdaten. Genau wie 
im zweiten Byte der Status der Eingänge signalisiert wird. Dabei werden 
dann wahrscheinlich Bit 6 und 7 irrelevant sein, da es ja nur 6 Ausgänge 
sind. Also wir müssen momentan nur wissen, was im ersten Byte stehen 
muss und wie der Befehl Start-Remote-Node aussieht um ihn in Operational 
zu schalten.

Edit: Ich hab gerade nochwas entdeckt. Wenn ich
1
04 01 02 55 00
schicke. Blinkt die BSY in einer Tour. Als wenn ich irgendwas aktiviert 
habe.
Als Antwort:
1
04 00 02 35 00

von Klaus Franke (Gast)


Lesenswert?

Also die Sequenz 55 00 macht irgendwas böses :-( Mein Modul reagiert im 
Gegensatz zu vorher kaum noch auf die bisherigen Befehle und die 
Abarbeitungszeit ist enorm gestiegen. Bevor jetzt eine Antwort vom Modul 
kommt, vergehen locker 20 Sekunden (vorher drei).

Die Sequenz ist also eher unvorteilhaft...

von Klaus Franke (Gast)


Lesenswert?

Aber das ist reversibel ;-) Hab das Modul mit der Sequenz
32*  04 10 (mit +1 im ersten Byte bei jedem Durchlauf) wieder auf 
normale Antwortzeiten bekommen. Leider kann ich derzeit noch keine Pause 
zwischen diesen Wiederholungen anfordern, dass muss ich dem Monitor noch 
beibringen.

Hast du so ein Modul schon mal geschlachtet und gesehen, was für ein PIC 
darin arbeitet?

von Mathias O. (m-obi)


Lesenswert?

Neue Erkenntnisse.
Wenn ich mit
1
04 01 02 55 00
die BSY zum blinken bringe und dann
1
04 01 02 06 10
sende, wird A5 gesetzt und bleibt auch gesetzt, solange bis ich das 
dementsprechende Bit in der Maske wieder auf Null setze.
Das passiert auch mit den restlichen Ausgängen, sowie man es auch von 
anderen Herstellern kennt
1
A1 - 04 01 02 06 01
2
A2 - 04 01 02 06 02
3
A3 - 04 01 02 06 04
4
A4 - 04 01 02 06 08
5
A5 - 04 01 02 06 10
6
A6 - 04 01 02 06 20
7
alle an - 04 01 02 06 3F
Als Bestätigung kommt dann
1
04 00 02 26 3F
wenn alles an sind zum Beispiel.

Wenn ich nun aber die erste Nachricht oben nicht vorher sende, also die 
BSY nicht blinkt, werden die Ausgänge zwar gesetzt, aber die BSY blinkt 
zweimal und Ausgänge gehen dann auch wieder aus. Aber die bestätigung 
kommt hier tritzdem und danach kommt diese Nachricht
1
04 00 02 2F 00
Also der Fehlercode.

von Klaus Franke (Gast)


Lesenswert?

Also nachdem ich nichts davon nachvollziehen konnte, habe ich besser mal 
das Modul gewechselt --- und siehe da, mit einem anderen ging alles wie 
in deiner Beschreibung :-) Respekt!

Scheinbar hat das andere Modul schon etwas abbekommen, als ich es in den 
früheren Versuchen mit lauter unbekannten Sequenzen beschickt habe.

Bei dem ersten Modul hielt sich der Blink-Status der BSY-LED und ließ 
sich nur durch diese (Lösch)-Sequenz wieder aufheben.

Dann bleibt ja fast nur noch die Antwort vom Modul zu klären. Eventuell 
ist das 2F 00 ja auch kein Fehler. Vielleicht sind einige Bits dafür da, 
die Unterscheidung zwischen einer Antwort des Moduls oder einer vom 
Modul generierten Übertragung zu signalisieren. Der Unterschied von 20 
zu 2F sind immerhin vier Bits und bei dem knappen Übertragungsvolumen 
würde ein Bit für diese Info reichen. Eins könnte vielleicht noch eine 
Info über noch kommende Folgeübertragungen geben...bzw. von dem 
anstehenden rücksetzen der/des Bits, weil's nur temporär angeknipst 
wurde.

von Klaus Franke (Gast)


Lesenswert?

Fällt mir gerade noch so ein: Ein Bit sollte anzeigen, ob der Inhalt des 
zweiten Bytes (von der Antwort) den Inhalt des Eingangs- oder 
Ausgangs-Port darstellt. Und ein Bit für einen Überlauf des 
Empfangspuffers wäre bestimmt auch sinnvoll ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.