Error calling same reusable functions

15 views (last 30 days)
I have an algorithm developed in Simulink (Matlab 2013b) that I use to produce Embedded Code. Since I am using an IIR filter atomic blockset several times I decide to make this function reusable. I tried to implement 2 istances of the same fileter but I keep getting this error:
"The subsystems 'PM_drive/1ms_ISR/IdqefCalc/FilterSpeedRef2' and 'PM_drive/1ms_ISR/IdqefCalc/FilterSpeedRef1' have the same function name 'IIR_Filt'. This is not legal unless the systems are identical copies of each other. Please ensure that these subsystems will have different function names by either modifying the function name of one of them or modifying the 'Maximum identifier length' parameter on the Code Generation > Symbols pane of the Configuration Parameters dialog"
As sugegsted the 2 functions are identical (obtained but copy and paste). I don't understand why the error tells to ensure that the functions have different names when the purpose of reusable functions is to call the same function passing different parameters.
  1 Comment
Naty S
Naty S on 22 Mar 2015
I have got the same issue (Matlab 2015a), also tried copy pasting them.. even changed the name and it still does not work..
The subsystems 'Act_Model/ActuatorsModel/Servo_InvScaling16' and 'Act_Model/ActuatorsModel/Servo_InvScaling' have the same function name 'Servo_InvScaling'. This is not legal unless the systems are identical copies of each other. Please ensure that these subsystems will have different function names by either modifying the function name of one of them or modifying the 'Maximum identifier length' parameter on the Code Generation > Symbols pane of the Configuration Parameters dialog

Sign in to comment.

Accepted Answer

Aker
Aker on 8 Apr 2018
Edited: Aker on 8 Apr 2018
I get the same problem and solved it.
It's because the data types for the same of the different copy is different
then the coder wanna generate different function prototype to match the different inputs
As we set the function name to manual and have the same name
then the coder will thow an error.
Just use type convert in front of the input ports to solve this.

More Answers (1)

Sam Rajakumar
Sam Rajakumar on 14 Jan 2020
Right Click one of the block and select Block parameters,click code generation and change function name to solve the issue.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!