Hi, ich habe folgendes interessantes Problem: Ein mechatronisches System, dass ueber mehrere Microcontroller kontrolliert wird, die mit einem CAN Bus kommunizieren soll aus Matlab gesteuert und geregelt werden. Unter Linux und C funktioniert die CAN Kommunikation auch prima, nur wie verbinde ich das ganze nun mit Matlab. Zwei Moeglichkeiten schweben mir vor: 1. Ich binde in meinen Matlabcode entsprechende C basierte mex files ein. Hier habe ich aber das Problem, dass ich dann ja die CAN Kommunikation immer wieder anwerfen muss und drauf hoffen darf, genau den Zeitpunkt zu treffen, zudem die Nachrichten unterwegs sind. Oder gibt es sowas wie C Threads neben Matlab? 2. Ich bastle alles in C zusammen und nutze die Matlab-engine um Matlabquasi aus C fernzusteuern. 3. Ich simuliere ohne die Rueckkopplung vom realen System und uebersetze den ganzen Kram dann nach C und hoffe diesen Code dann irgendwie auf die Atmel zu bekommen. Dabei weiss ich allerdings nicht ob das ueberhaupt funktioniert. Da das ganze System recht kompliziert ist moechte ich nicht auf die Simulation unter Matlab verzichten und zB sofort irgendwelche Algorithmen in C hacken. Ihr habt doch sicher viel bessere Ideen! Danke
Ich habe gerade die Steuerung eines XYTisches mit ADC in Matlab realisiert. Matlab benutze ich nur zur Highlevelsteuerung. Also Motor1 an position y etc. Lies ADCwert von Kanal ... Die kommunkation mit dem PC ist über eine USBseriell Schnittstelle auf PC Seite ist ein ActiveX(COM) Server der die Kommunikation mit dem dem Tisch protokollmäßig macht. Matlab bekommt nur das COM-Object zu sehen das es als Client benutzt. Bsp: XYTisch=actxserver('XYTischdll.XYTisch'); // erstelle das COMObject XYTisch.Connect(4); // Connect mit Tisch COMPort 4 ADC0=XYTisch.ADC(0) // 1. ADC ist unter ADC0(mit 10 Kanälen) ansprechbar for I=1300:15:5800,XYTisch.Motor(0).Motorposition=I;while(XYTisch.Motor(0).M otorpositionAktuell~=I)end;A(uint16((I-1300)/15+1))=ADC0.Kanal(1);end; scanne eine Linie von 1300 bis 5800 raster 15 und speicher die Werte aus ADCkanal 1 in Array A Das COM Objekt wurde in Visual C geschrieben. Da können dann auch mehrere Threads drin laufen. Das stört in Matlab ja nicht weiter. Das COM Object kann ich auch in jeder anderen Programmiersprache verwenden und es kapselt die Steuerung vollständig. unter Linux wird das allerdings nichts.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.