The documentation discusses this here.
I'll elaborate on that.
To prevent Data Type Override from changing a numerictype, set the property
DataTypeOverride = 'Off'
For example, change
This can also been done using a Blocks Data Type Assistant interface.
If all the data types in a subsystem are changed in this way, and we have Data Type Override set to Double model wide
then that subsystem's types will stay the same.
I've attached a example function that shows how to do this more automatically.
To use it, open the attached model
I saved to model to work as far back as R2015b. But 'DataTypeOverride','Off' is even older than that.
notice that Data Type Override to Single is in effect
and has forced all the types to single, even though fixed-point types are specified on the many blocks.
To prevent that on two of the subsystems, run the attached example function like, so
these scripts will attempt to set Data Type Override inheritance to Off for the data type parameters under these subsystems. Command window output will show what's happening such as
For block: example_DTO_inherit_off_R2015b/SubSys1/In1
Current value: Inherit: auto
For block: example_DTO_inherit_off_R2015b/SubSys1/Dbl-to-FixPt
Current value: fixdt(1,5,2)
New value : fixdt(1,5,2,'DataTypeOverride','Off')
For block: example_DTO_inherit_off_R2015b/SubSys2/Dbl-to-FixPt
Current value: fixdt(1,wl1,2)
New value : dtoInheritOffWrapper( fixdt(1,wl1,2) )
The two subsystems that were change now have Data Type Override inheritance Off. The 3rd subsystem is still reacting to Data Type Override to Single.