MATLAB: Error using SimulinkRe​alTime.tar​get/getsig​nal

getsignalsignalsSimulink Real-Time

I have already seen the answer to a similar question without success.
I'm using Simulink Real-Time and am trying to use the getsignal command to find the current value of a signal in the model. I have successfully used this for a number of other signals with no problems but a few of the recently added signals report the error "Error using SimulinkRealTime.target/getsignal Invalid Signal".
I have tried the following
  • Adding a unit gain block and reading the output of that signal
  • Making the signal a "Test Point"
  • Using the Data Inspector and logging the signals (they appear in the Data Inspector but not with getsignal)
When I show the signals for the target using
tg = slrt;
tg.ShowSignals = 'on';
The signals that I am looking for do not appear in the list.
What can I do to force the signals to be visible to the host PC?

Best Answer

Found the solution.
The signal was a scalar value from a CAN Read block which was of type uint32. The normal advice to get signals to be visible is to use a Gain block with a value of 1 and this approach had worked for other signals. However in this scenario Simulink was converting the data type from uint32 to a large fixed point value (128 bits) after the Gain block.
Checking all the data types and converting the value back to a double before the unity gain block and the subsequent scaling and offset made the signal visible using getsignal.
Any data type that takes up more than 64 bits, apparently won't be visible.