|
|
PCAN Simulink Blöcke in Realt-Time Umgebung mit xPC Target |
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 09:35
Titel: PCAN Simulink Blöcke in Realt-Time Umgebung mit xPC Target
|
|
|
|
|
Hi,
ich will CAN messages in Matlab loggen. Dafür habe ich ein Simulink-Modell erstellt, in dem ich die PCAN-Blöcke nutze. Im normalen Simulationsmodus funktioniert das auch mehr oder weniger gut. Allerdings will ich das Modell auf dem Target PC mit xPC Target laufen lassen, d. h. ich benötige eine xPC Target kompatible S-Function der Blöcke. Meine bisherige Vorgehensweise war, dass ich nach Einstellung der Simulationsparameter den CAN_Read-Block (s. Dateianhang) mit Rechtsklick --> "Real-Time-Workshop" --> Generate S-Function transormiert habe. In dem neu enstandenen Modell habe ich dann den Simulationsmodus auf External gestellt und in den Configuration Parameters --> "Real-Time Workshop" --> "System Target File" rtwsfcn.tlc gewählt. Anschließend bilde ich das Modell. Den entstandenen RTW-Block kopiere ich in das Zielmodell, dass auf dem Target PC laufen soll.
Wenn ich dann das Zielmodell auf den Target-PC laden will, kommen folgende Fehlermeldungen:
"Zielmodellname.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_CAN_Read" in Funktion "_Zielmodellname_initialize".
Zielmodellname.dll : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
NMAKE : fatal error U1077: ""[...]\microsoft visual studio 9.0\VC\BIN\link.EXE"": Rückgabe-Code "0x460"
Stop.
The make command returned an error of 2
Der Befehl "An_error_occurred_during_the_call_to_make" ist entweder falsch geschrieben oder
konnte nicht gefunden werden."
Wo ist der Fehler?
Danke für eure Hilfe im Voraus...
P. S.: Die Fehlermeldung "Der Befehl "An_error_occurred_during_the_call_to_make" ist entweder falsch geschrieben oder
konnte nicht gefunden werden."
ist mein abosluter Favorit. Da fragt man sich doch: Was will mir der Dichter damit sagen?!
Beschreibung: |
Hier sind die CAN-Blöcke... |
|
Download |
Dateiname: |
Free-Version-Incl.SIMULINK-BLOCK.zip |
Dateigröße: |
96.21 KB |
Heruntergeladen: |
1099 mal |
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 06.06.2011, 14:35
Titel:
|
|
Es ist sehr schwierig einzugrenzen wo der Fehler liegt. Ich kannte PCAN und den Hersteller bisher nicht. Ein offizieller MathWorks-Partner scheint PEAKS jedenfalls nicht zu sein. Das ist erstmal nicht negativ, aber bringt mich dazu bei der Frage "Soll das herstellerseitig gehen?".
Danach komen jede Menge Standardfragen:
Welches MATLAB Release? Für 32 oder 64 Bit? Auf 32 oder 64 Bit Windows?
Passt der MSVC 9 als unterstützter Compiler?
Gehen andere C Compiler Aktionen wie Erstellung eines enfachen MEX Files?
Andreas
|
|
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 14:57
Titel:
|
|
Also, diese Fragen kann ich schnell beantworten:
Matlab R2009b, win32, MSVC 9 sollte als Compiler passen, da ich das Zielmodell ohne die PCAN-Blöcke einwandfrei aufs Target laden kann (mit MSVC 9 kompiliert). Die mexfiles sind ja bereits bei den PCAN-Blöcken dabei...
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 15:07
Titel:
|
|
Der Linker braucht noch die spezifische Library für die CAN-Funktionalität und deswegen kommt die Meldung "nicht aufgelöstes externes Symbol "_CAN_Read" in ....".
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 06.06.2011, 15:21
Titel:
|
|
|
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 15:55
Titel:
|
|
@ Gast: Aber die spezifische Library (PCAN_USB.lib) ist doch in dem Directory. Habe extra cd zu dem PCAN-Verzeichnis, in dem die c-Files, Header und Library sind. Habe die ganzen Dateien auch schon mal separat eingebunden in den Configuration Parameters. Das hat das Problem auch nicht behoben. Oder meinst du etwas anderes?!
@ Andreas: Aus dem peak-Forum habe ich die Blöcke. Allerdings war die Problemstellung dort eine etwas andere...
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.06.2011, 09:39
Titel:
|
|
Es sollte funz, aber sicher zu sein, bitte das makefile "xxx.mk" (im Code Verzeichnis) überprüfen. Dort sollte stehen wie:
S_FUNCTIONS_LIB = $(START_DIR)\blabla\PCAN_USB.lib
Falls nirgendwo "PCAN_USB.lib" steht, das Problem ist klar. Diese Zeile kommt vom Simulink Config -> Code Generation -> Custom Code -> Libraries.
Man könnte auch "quick & dirty" die "PCAN_USB.lib" Datei direkt in xxx.mk reinschreiben unter "LIBS = c:\blabla\PCAN_USB.lib" und über "xxx.bat" kompilieren. Bei Codegenerierung verschwindet aber diese Änderung, deswegen nur für Testzweck verwenden ..
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.06.2011, 14:16
Titel:
|
|
Das Lib-Verzeichnis steht da in der .mk-file:
S_FUNCTIONS_LIB = c:\blabla\PCANlib\PCAN_USB.lib
Matlab meckert immer noch:
C:\PROGRA~1\MATLAB\R2009b\rtw\c\src\cg_sfun.h(21) : error C2373: 'CAN_ResetFilter': Neudefinition; unterschiedliche Modifizierer
c:\blabla\pcanlib\PCAN_USB.h(251): Siehe Deklaration von 'CAN_ResetFilter'
Jetzt hängt es anscheinend am header...
Hat vielleicht noch jemand einen Tipp parat?
|
|
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.06.2011, 14:39
Titel:
|
|
Die Antwort eben war von mir.
Vielleicht ist das Problem, dass keine .tlc erstellt wird. Der c-Code und die mex-File sind ja da, aber für xPCTarget braucht es noch die .tlc
Vielleicht findet er auch einfach nicht die mex-File. Kann ich das auch irgendwo in eingeben?
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.06.2011, 15:08
Titel:
|
|
Das Problem ist beim Kompilierung, bwz. es passt Definition und Declaration zusammen - es ist nicht 100% identisch. Wenn da "unterschiedliche Modifizierer" steht, es fehlt irgendwo "const" bzw. "volatile". VS2010 ist relative strengt und erwartet alles richtg, was aber auch Sinn mach.
Bitte nach "CAN_ResetFilter" suchen und 100% vergleichen/anpassen. Es sollte in der CAN_USB.h Datei liegen (Zeile 251) und zweitemal in der cg_sfun.h Datei.
|
|
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.06.2011, 16:26
Titel:
|
|
so trivial ist das problem wohl leider nicht (vielleicht ist es aber auch viel trivialer ). bin mir ziemlich sicher, dass dort kein fehler ist...
sonst noch eine idee? guck dir unbedingt mal die c-codes an. eigentlich ist alles da. sieht nach einer klassischen s-function aus. diese sollte eigentlich ohne probleme auf dem target-pc laufen. eigentlich...
|
|
|
xPC |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.06.2011, 16:07
Titel:
|
|
@ Gast: Hast du eien Idee, wo genau MSVS meckert? Irgendwie ist das eine sehr intransparente Fehlermeldung...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|