
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Guten Tag zusammen. Ich würde mich sehr freuen, wenn mir hier jemand weiterhelfen kann, denn ich bin mit meinem Latein so ziemlich am Ende. Mein System: 1x C-Control Station I V2.0 Station als Master. 3x M-Unit 2.0 als Slave mit dem M20_IIC_SLAVE_PAGE0.s19-Treiber aus dem Downloadbereich von http://www.c-control-support.de - angepasst für Basic++ mit dem ich arbeite. Die M-Units treiben je einen Motor über Treiberbaustein und Leistungsstufe und sammeln dabei verschiedene Daten wie Antriebsposition, Strom etc. Der Master soll nun den Antrieben Aufgaben geben, indem er mittels des Treibers eine "Befehlsvariable" bei den Slaves beschreibt, die diese regelmäßig pollen, und so stets über neue Befehle informiert sind. Auf der anderen Seite soll der Master nun auch Daten von den Slaves auslesen. Eben die angesprochenen Daten Position, Strom usw. Meine Probleme: 1. Gibt man beim Master als Target-Variable im READ-Modus eine Variable an, die beim Slave als Word definiert ist, scheint sich der IIC-Bus aufzuhängen. Es reagiert anschließend keiner der drei Slaves mehr. Ich habe da ein Workaround vorgenommen, mit dem ich dieses Problem umgehen kann, aber ganz glücklich bin ich nicht damit... 2. Die Slaves bekommen unregelmäßig über den auf Ereigniszählung konfigurierten FREQ2-Port Impulse. Diese zählen sie zufriedenstellend, solange nicht während der Messung Busverkehr stattfindet. In dem Fall nämlich scheinen Impulse "verschluckt" zu werden. Könnte das mit dem Treiber zusammenhängen? 3. Wenn man zunächst mit dem einen Slave mit Adresse 120 (beinhaltet schon das einmalige Linksshiften um das letzte Bit für Write-Modus zu gewinnen) kommuniziert, und anschließend eine Kommunikation mit Slave 124 versucht, so stellt man fest, dass dieser Slave (124) auf die Anfrage des Masters nicht reagiert. Der Master erledigt hier seinen Teil, wie der Oszilloskopierung des Busses entnommen werden kann. Jedoch erfolgt vom Slave kein ACK, so dass der Master nicht weitermacht. Sendet man nun das Telegramm aber erneut, so reagiert der Slave wieder. d.h. ein Workaround bedeutet, dass man immer, wenn man die Slave-ID wechselt (masterseitig), das Telegramm doppelt senden muss. Das kann doch nicht sein, oder? Das Problem ist unabhängig von den verwendeten IDs. Ich habe nur konkrete Zahlen benutzt, um die Slaves eindeutig benennen zu können. 4. Stellenweise scheint es vorzukommen, dass ein Slave überhaupt nicht mehr auf Kommunikationsversuche des Masters reagiert. Er verhält sich dann völlig passiv, d.h. er scheint sich irgendwo aufgehängt zu haben. Schwierig zu sagen wo, da InCircuit- Debugging bei einer nackten M-Unit recht schwer ist... Meine zusätzlichen Fragen: - Weiß jemand, wo man mal Einblick in den SourceCode für das aktuelle CC I V2.0- Betriebssystem bekommen kann? Für die alte C-Control gabs mal ein Listing zum Download, das aber wohl kaum noch aktuell sein dürfte :-) - Hat jemand den Source-Code für den M20_IIC_SLAVE_PAGE0.s19 - Treiber? Eventuell hilft selbst der mir schon weiter... - Was brauch ich, wenn ich das Conrad-OS runterputzen, und an den Controller selbst ranwill? Idealerweise mit C/C++? Tut mir leid, der lange Post, aber ich wollte lange Nachträge zu wichtigen Details vermeiden - sorry, wenn dennoch was fehlen sollte. Vielen vielen Dank schon mal für eure Hilfe! Gruß, Thomas |
| Antwort schreiben |