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!
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!
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 :-)
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?
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
Ü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.
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.
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.
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
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 :).
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...
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
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...
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:
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...
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?
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
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.
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 ;-)