Enumeration Code Generation with Embedded Coder (autosar.tlc)
조회 수: 38 (최근 30일)
이전 댓글 표시
Hello,
does anyone have a clue what causes the following error message and how I can overcome this problem? I have a Simulink model that uses the enumeration defined in "State_Car.m"
classdef State_Car < Simulink.IntEnumType
enumeration
PARKEN_BN_NIO(1)
PARKEN_BN_IO(2)
STANDFKT_KUNDE_NICHT_IM_FZG(3)
WOHNEN(5)
PRUEFEN_ANALYSE_DIAGNOSE(7)
FAHRBEREITSCHAFT_HERSTELLEN(8)
FAHREN(10)
FAHRBEREITSCHAFT_BEENDEN(12)
SIGNAl_UNBEFUELLT(15)
end
end
The error message I get during build process is:
### Build procedure for model: 'swc_heat_2017b' aborted due to an error.
The header file of the enumerated type State_Car, should be set to Rte_Type.h. To fix this error, update the getHeaderFile method of the enumeration type to return Rte_Type.h
댓글 수: 0
채택된 답변
Lucas Lebert
2018년 7월 5일
편집: Lucas Lebert
2020년 8월 20일
Hi Yu Zhao!
As per the AUTOSAR standard, all data types must have a definition generated in Rte_type.h. This is the reason for the error and it is not possible to use a different header when doing AUTOSAR code generation.
For data types used solely inside of a SWC (not in the definition of a port) you only need to specify the header file as Rte_type.h only if you want the data type to be exported as an IncludedDataTypeSet.
Here's a small example for the implementation of the getHeaderFile method:
classdef State_Car < Simulink.IntEnumType
enumeration
On(1)
Off(2)
end
methods (Static = true)
function retVal = getHeaderFile()
retVal = 'Rte_Type.h';
end
end
end
Have a great day!
~Lucas
댓글 수: 7
Hailin Ren
2020년 12월 9일
I will take this feedback to my colleagues to be considered as an enhancement.
Arian
2022년 9월 11일
I have added this method to my enumeration type but the Simulink could not compile the model for simulation ( after Ctrl + D).
추가 답변 (2개)
Manuel Stumpf
2018년 7월 16일
It looks like I have a similar problem: Is it possible to use a RTE data type inside a referenced subsystem (e.g. in state flow)? I want to use the same data types inside of referenced subsystems and the external interface of my SWC. Right now I keep getting error messages like above.
Regards, Manuel
댓글 수: 2
Lucas Lebert
2018년 7월 16일
Hi, Manuel!
I would need to have a closer look at this. Could you please submit a help request to support@mathworks.de so I or one of my colleagues can have a look at this?
Thanks! ~Lucas
Manuel Stumpf
2018년 7월 16일
Thanks Lucas,
your answer to Yu's question gave me the hint that I needed. Code generation for Autosar is successful now! Thanks again, Manuel
Zhenwei Sun
2018년 9월 11일
hi, i'm with same issues. i don't need the data def in "Rte_Types.h" due to this class is only for my SWC used. anyone have fix this problem?
댓글 수: 1
Tarun Jhamnani
2020년 8월 31일
classdef (Enumeration) EnColor < uint8
enumeration
Red (0)
Green (1)
Blue (2)
end
methods (Static = true)
function retValue = getDefaultValue()
retValue = EnColor.Red;
end
end
end
Define enum as above, you can change the base data type as you like. Secondly, What Lucas recommended setting.
Generated code will be something like below :
typedef uint8_T EnColor;
#define Red ((EnColor)0)
#define Green ((EnColor)1)
#define Blue ((EnColor)2)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!