Za pomocą karty DS1103 i Simulinka opracowałem układ sterowania do pewnego urządzenia energoelektronicznego. W skrócie działa ono jak falownik. Sygnały rzeczywiste pobierane są poprzez złącza BNC, a sygnał referencyjny wyznaczony przez model w Simulinku wypuszcza sygnały do rzeczywistego falownika.
I w czym jest konkretnie problem. Sam model wg mnie działa poprawnie. Podczas kompilacji nie wyświetlają się żadne warningi, czy errory. Karta bez problemu zostaje zaprogramowana. Poniżej dowód w postaci komunikatów, wyświetlanych w matlabowskim Command Window podczas kompilacji:
Problem pojawia się, gdy chcę podglądać sygnały w ControlDesku. Otwieram "experiment" - wszystko się ładnie ładuje tj. layout. Ładuję plik *.trc (open variable file)i wywala mi taki komunikat:
Gdy załaduję ten drugi plik, bodajże *.src (load aplication model) to również wywala ten komunikat:
Mimo to symulację daje się uruchomić. Ale nie widzę na "ploterach" przebiegów, które są na wejściu (BNC). Nawet, gdy dodam do modelu (gdzieś z boku) prosty subsytem: wejście, gain x razy, wyjście to tutaj również Control Desk nie wiedzieć czemu nie widzi sygnału i go nie wyświetla. W czym może być problem?
I w czym jest konkretnie problem. Sam model wg mnie działa poprawnie. Podczas kompilacji nie wyświetlają się żadne warningi, czy errory. Karta bez problemu zostaje zaprogramowana. Poniżej dowód w postaci komunikatów, wyświetlanych w matlabowskim Command Window podczas kompilacji:
----------------------------------------------------------------------
Starting build procedure with RTI 5.4 (RTI1103, 15-Mar-2007)
Model: "T1" (E:\robertp_LAB\TEST_STR\T1.mdl)
----------------------------------------------------------------------
*** Using configuration set : "Configuration1"
*** Working directory : "E:\robertp_LAB\TEST_STR"
*** Optional User System Description File t1_usr.sdf not available
*** Initializing code generation
### Starting Real-Time Workshop build procedure for model: T1
### Generating code into build directory: E:\robertp_LAB\TEST_STR\T1_rti1103
### Invoking Target Language Compiler on T1.rtw
tlc
-r
E:\robertp_LAB\TEST_STR\T1_rti1103\T1.rtw
d:\dspace\matlab\rti1103\tlc\rti1103.tlc
-OE:\robertp_LAB\TEST_STR\T1_rti1103
-Id:\dspace\matlab\rti1103\tlc
-ID:\Program Files\MATLAB\R2006b\toolbox\simulink\blocks\tlc_c
-IE:\robertp_LAB\TEST_STR\T1_rti1103\tlc
-ID:\Program Files\MATLAB\R2006b\rtw\c\tlc\mw
-ID:\Program Files\MATLAB\R2006b\rtw\c\tlc\lib
-ID:\Program Files\MATLAB\R2006b\rtw\c\tlc\blocks
-ID:\Program Files\MATLAB\R2006b\rtw\c\tlc\fixpt
-ID:\Program Files\MATLAB\R2006b\stateflow\c\tlc
-aEnforceIntegerDowncast=1
-aFoldNonRolledExpr=1
-aInlineInvariantSignals=0
-aInlineParameters=0
-aLocalBlockOutputs=0
-aRollThreshold=5
-aGenerateReport=0
-aGenCodeOnly=0
-aRTWVerbose=1
-aIncludeHyperlinkInReport=0
-aLaunchReport=0
-aForceParamTrailComments=0
-aGenerateComments=1
-aIgnoreCustomStorageClasses=1
-aIncHierarchyInIds=0
-aMaxRTWIdLen=31
-aShowEliminatedStatements=0
-aPrefixModelToSubsysFcnNames=1
-aIncDataTypeInIds=0
-aInsertBlockDesc=0
-aSimulinkBlockComments=1
-aInlinedPrmAccess="Literals"
-aTargetFcnLib="ansi_tfl_tmw.mat"
-aIsPILTarget=0
-aLogVarNameModifier="rt_"
-aGenerateFullHeader=1
-aExtMode=0
-aExtModeStaticAlloc=0
-aExtModeTesting=0
-aExtModeStaticAllocSize=1000000
-aExtModeTransport=0
-aRTWCAPISignals=0
-aRTWCAPIParams=0
-aGenerateASAP2=0
-aInitialSimState="RUN"
-aExecutionMode="real-time"
-aExecutionModeNonUI="RTSIM"
-aTimeScaleFactor="1.0"
-aTimeScaleFactorNonUI="OPTION_DISABLED"
-aAssertionMode="OFF"
-aTAStimulusEngineEnable=0
-aCCompilerCommonOpts=""
-aCCompilerOptimizationOptsPopup="Default (-O5 -D_INLINE)"
-aCCompilerOptimizationOpts=""
-aCCompilerOptimizationOptsNonUI="USE_DEFAULT"
-aLoadAfterBuild=1
-aLoadApplNonUI="ON"
-aPlatformSelectionPopup="Auto"
-aBoardName=""
-aBoardNameNonUI="OPTION_DISABLED"
-aNetworkClient=""
-aNetworkClientNonUI="OPTION_DISABLED"
-aSlaveObject=""
-aTRCMaskParameters=0
-aTRCGenerateLabels=1
-aTRCGenerateVirtualBlocks=1
-aTRCGenerateStates=0
-aTRCGenerateDerivatives=0
-aTRCApplySubsystemPermissions=0
-aTRCGenerateParamValues=0
-p10000
### Loading TLC function libraries
.....
### Initial pass through model to cache user defined code
...........
*** Postprocessing RTI blocks
*** Starting I/O block checking
*** Passed I/O block checking
### Caching model source code
...............................................................................
....................................................
### Writing header file T1_types.h
### Writing header file T1.h
### Writing source file T1.c
.
### Writing header file T1_private.h
### Writing header file rtmodel.h
### Writing source file T1_data.c
.
### Writing header file rt_nonfinite.h
### Writing source file rt_nonfinite.c
### TLC code generation complete.
### Generating TLC interface API.
......................................................................
*** Generating file T1_rti.c
.....
*** Generating file T1_rti.mk
*** Generating Variable Description File T1.trc
-------------------------------------------------------------------------------
NOTE: The following option in the Configuration Parameters dialog has been
used:
Optimization:
"Conditional input branch execution" On
This leads to code optimization in which blocks are not computed if their
outputs are not required in the simulation step, for example, if their
output values are used as input for a Switch block and the Switch
currently routes another signal. When the corresponding output signals
are displayed in ControlDesk, their values are static.
To ensure that the blocks are computed, turn off the
"Conditional input branch execution" option and rebuild the model.
-------------------------------------------------------------------------------
........................
*** Optional User Variable Description File T1_usr.trc not available
*** Found User-Code File T1_usr.c from 18-Oct-2011 15:29:06
*** Found User Makefile T1_usr.mk from 18-Oct-2011 15:29:06
.
### Processing Template Makefile: d:\dspace\matlab\rti1103\m\rti1103.tmf
### T1.mk which is generated from d:\dspace\matlab\rti1103\m\rti1103.tmf is up to date
### Building T1: dsmake -f T1.mk WORKINGBOARD=ds1103 GENERATE_REPORT=0 EXTMODE_STATIC_ALLOC=0 TMW_EXTMODE_TESTING=0 EXTMODE_STATIC_ALLOC_SIZE=1000000 EXTMODE_TRANSPORT=0
BUILDING APPLICATION (Single Timer Task Mode)
WORK DIRECTORY "E:\robertp_LAB\TEST_STR"
BUILD DIRECTORY "E:\robertp_LAB\TEST_STR\T1_rti1103"
TARGET COMPILER "D:\PPCTools20m"
COMPILING T1.c
COMPILING T1_data.c
COMPILING rt_nonfinite.c
COMPILING D:\dSPACE\MATLAB\RTI1103\C\rti_sim_engine.c
USING LIBRARY "D:\dSPACE\MATLAB\RTI1103\C\Lib\rtwlib_r2006b_ds1103.lib"
LINKING APPLICATION ...
LINKING FINISHED
LOADING APPLICATION "T1.sdf" ...
[#1] ds1103 - RTI: Initializing ... (720)
[#2] ds1103 - RTI: Initialization completed (721)
[#3] ds1103 - RTI: Simulation state: RUN (700)
LOADING FINISHED
MAKE PROCESS SUCCEEDED
### Successful completion of Real-Time Workshop build procedure for model: T1
*** Finished RTI build procedure for model T1
>> Problem pojawia się, gdy chcę podglądać sygnały w ControlDesku. Otwieram "experiment" - wszystko się ładnie ładuje tj. layout. Ładuję plik *.trc (open variable file)i wywala mi taki komunikat:
Gdy załaduję ten drugi plik, bodajże *.src (load aplication model) to również wywala ten komunikat:
Mimo to symulację daje się uruchomić. Ale nie widzę na "ploterach" przebiegów, które są na wejściu (BNC). Nawet, gdy dodam do modelu (gdzieś z boku) prosty subsytem: wejście, gain x razy, wyjście to tutaj również Control Desk nie wiedzieć czemu nie widzi sygnału i go nie wyświetla. W czym może być problem?
